Миграция из биллинга UTM 5 делается через промежуточный набор таблиц в формате DBF . Таблицы выгружаются из UTM с помощью специального скрипта на Python или Perl . Далее с помощью специального инструмента DBF-файлы загружаются в , где происходит сопоставление справочников и выполняется собственно миграция данных.

Упрощения и допущения

  1. Юрлица и физлица находятся в одной таблице и отличаются только специальным признаком.
  2. Из реквизитов юрлица выгружается только его название, остальное требует ручного ввода.
  3. У абонента максимум 1 IP-адрес и максимум 1 MAC-адрес.
  4. У абонента максимум 1 абонентский телефонный номер.
  5. Текущий объём потреблённых услуг (трафик, минуты) никак не мигрирует, поэтому трафика включенным абонентам в момент миграции придётся накинуть как будто начался новый учётный период, соответственно нужно будет переместить и дату начала периода.
  6. Подробности тарифов (периодичность, пороги, единицы измерения, стоимость и т.д.) не мигрируют, а перебиваются вручную и затем сопоставляются. Системы тарификации в UTM и отличаются слишком сильно, и автоматическая миграция при небольшом числе тарифных планов приведёт к бОльшим трудозатратам, нежели полуавтоматическая. То же касается и других небольших справочников, таких как классы трафика, валюты и т.д.

Проблемы

  1. Что делать с датой начала учётного периода? Если ставить всем один день, то все будут ломиться каждый месяц в этот день платить деньги, а если ставить её не в один день, то как?
  2. В UTM абонент может одновременно находиться в нескольких группах, тогда как в — только в одной. Кроме того, в UTM с помощью групп сделаны многие настройки (разделение на физических и юридических лиц, привязка к файрволам и другому оборудованию). У нас это реализовано по-другому, нужно найти правильный подход.
  3. Нужно разобраться, откуда лучше брать данные для привязки абонента к DHCP-серверу и файрволам. Можно, например, смотреть прямо по группе, к которой принадлежит абонент, а можно включить в привязки.

Таблицы, выгружаемые из UTM

Звёздочкой помечены идентификаторы, по которым связываются таблицы. Выделены исключительно для наглядности.

Справочник состояний абонента

  1. ID состояния*
  2. Наименование состояния

Справочник валют

  1. ID валюты*
  2. Название валюты

Справочник сетевых служб

  1. ID сетевой службы
  2. Название сетевой службы

Справочник групп абонентов

  1. ID группы*
  2. Название группы

Справочник услуг и тарифных планов

  1. ID тарифного плана*
  2. Название тарифного плана

Справочник лицевых счетов

  1. ID лицевого счёта*
  2. Номер лицевого счёта
  3. ID валюты*
  4. Баланс счёта
  5. Кредитный лимит

Привязки абонента к сетевым службам

  1. ID привязки*
  2. ID абонента*
  3. ID сетевой службы*
  4. Логин
  5. Пароль

В эту таблицу выгружаются логины и пароли на VPN, на личный кабинет и на другие ресурсы, которые контролирует биллинг. Кроме того

Участие абонентов в группах

  1. ID записи об участии*
  2. ID абонента*
  3. ID группы*

Подписка абонентов на услуги

  1. ID подписки*
  2. ID лицевого счёта*
  3. ID услуги (тарифного плана)*

Справочник абонентов

  1. ID абонента*
  2. ID состояния абонента*
  3. Физическое или юридическое лицо
  4. Номер договора
  5. ФИО (физлица) / Наименование (юрлица)
  6. Домашний адрес
  7. Номер паспорта
  8. Контактный телефон
  9. Контактный email
  10. IP-адрес
  11. MAC-адрес
  12. Абонентский телефонный номер
  13. Комментарий

Список атрибутов для личных данных абонента может быть расширен по необходимости.