Page tree
Skip to end of metadata
Go to start of metadata

ER-diagram of the intermediate schema tables is available here: https://dbdiagram.io/d/5fca9ba19a6c525a03b9da84

General Requirements

Data migration from other billing systems is carried out via making tables for an intermediate dataset in the CSV format.

  • Encoding is UTF-8 without BOM
  • Field separator is a semicolon
  • Field values are enclosed in double quotation marks (including empty values as empty quotes (;"";)
  • Field names for the table are entered in the first row
  • Primary keys (ID fields) and external keys (*_ID fields) should be numeric
  • Every table should be exported as a separate CSV file. The filename is equal to the table name and filename extension is csv.
  • All of the exported files have to be packed into a ZIP archive. The archive may contain only the exported files in CSV format.

Example — file ACCOUNTS.csv:

"ID";"USER_ID";"ACC_NUM";"ACC_TYPE_ID";"CUR_ID";"BANK_ID";"BALANCE";"CREDIT";"CREDIT_END_DATE";"BALANCE_DATE"
"1001";"101";"123456";"1";"1";"";"926,07";"500";"";"23.09.2017 23:59:59"

Next, using a special tool, the CSV files are uploaded to the Hydra Billing for further reference data matching and the actual database migration.

For the fields of Date and Time type, two formats are possible:

  • With time portion: 26.04.2009 13:04:55 (in Oracle — DD.MM.YYYY HH24:MI:SS). Time can be specified without minutes or seconds, the missing values are considered to be equal to zero.
  • Without time portion: 26.04.2009 (in Oracle — DD.MM.YYYY). In this case, time is considered to be equal to midnight.

Date type fields accept only one format: 26.04.2009 (in Oracle — DD.MM.YYYY).

Simplifications and Assumptions

  1. Organizations and individuals are stored in the same table (USERS) and can be differentiated by a special feature (USERS.JUR field).
  2. Only the name of an organization is shown from its address and bank details, the rest is to be input manually (if necessary, add custom fields with the details to the table).
  3. The current amount of consumed services (traffic, minutes) does not migrate, but the end date of the current billing period does.
  4. Service providing settings (recurrence, quotas, units, costs, etc.) do not migrate, they should be input manually and then matched.

Exporting From the Old Billing System

You can add the REM custom field to each table for exporting useful text data. The data exported into it will become a comment to the corresponding entity: a customer, an equipment, a contract, etc.


The primary key in each table is always named ID

Matching Tables Obligatory for Exporting 

Listed in this section are the tables with the data which is not migrated, but is used for matching the values in the Migration application of the system being migrated against customer statuses in Hydra. 

The Customer Statuses Registry

The STATUS table 

Field

Description

ID

The ID of a status

NAME

The name of a status

In the simplest case, there are only two statuses in the registry (activated, deactivated). 

The Network Services Registry 

The NS_LIST table 

ID

The ID of a network service

NAME

The name of a network service

Notethis registry is created manually and contains a list of network services: RADIUS, Customer Self-Care Portal, telephony, email, etc. To access them, a customer requires a password and a login.

The Units Registry 

The UNITS_LIST table 

ID

The ID of a unit

NAME

The name of a unit

Note: the values are matched against the units registry in Hydra.

The Services and Price Plans Registry 

The SERVICES table 

ID

The service ID (the price plan ID)

NAME

The service name (the price plan name)

TYPE

The price plan feature (Y for a price plan; N for a service)

UNIT_ID

The unit ID — with the reference to UNITS_LIST.ID

Note: the values stored in this registry are not migrated, but they are matched against the Product catalog entries (TYPE = "Y" entries are to be matched with Everything → Price plans group items, and TYPE = "N" entries — with Everything → Services ones).

The Currency Registry 

The CURRENCY table

ID

The currency ID

NAME

The currency name

Note: the values are matched against the units registry in Hydra. 

The Types of Equipment Registry 

The EQUIP_TYPE table

ID

The type ID

NAME

The equipment name

Note: the values are matched against the product catalog entries, typically against those in the Active equipment section.

The Provider Equipment Registry

The OP_EQUIP table

FieldDescriptionComment

ID

The equipment ID


EQUIP_TYPE_ID

The equipment type ID

A link to EQUIP_TYPE.ID

CODE

The equipment code


IP

The management IP address


FIRM_ID

The division ID

A link to FIRMS.ID. Used only in case of a multi-subsidiary migration

Note: The table is used for correct bindings to provider equipment already exported into the system. When starting the migration section of the provider equipment the matching is carried out based on the exported data.

The Customer Groups Registry 

The GROUPS table

ID

The group ID

NAME

The group name

Note: the values are matched against the groups registry. If there are no groups in your system, it still makes sense to add such values in the registry, and bind all customers to groups depending on their categories, for example, Individuals, Organizations, Employees, etc. 

The Bank Registry 

The BANKS table 

ID

The bank ID

NAME

The bank name

Note: the values are matched against the bank registry. Consequently, the banks that come up while exporting should be added into Hydra manually.

The Account Types Registry 

The ACC_TYPES table 

ID

The account type ID

NAME

The account type

Note: the values are matched against the account types registry. 

The Identification Document Types Registry 

The AUTH_DOC_TYPES table

ID

The document type ID

NAME

The document type

Note: the values are matched against the identification document types registry

Optional Matching Tables

When setting up correct default control values, it is not obligatory to export tables from this section.

The Phone Number Types Registry 

The PHONE_TYPES table 

ID

The phone number binding type ID

NAME

The binding type (Mobile, Home, Office, etc.)

Note: the values are matched against the address types registry.

The Street Address Binding Types Registry 

The FACT_ADDR_BIND_TYPES table

ID

The street address binding type ID

NAME

The binding type (Street, Service address, etc.)

Note: the values are matched against the address types registry. 

The Payment Types 

The PAYMENT_TYPE table

ID

The payment type ID

NAME

The payment type name

VIRTUAL

Select "Y" if this is an adjustment payment

Note: the registry is used for differentiating payments of different types (adjustment payments, cash, bank transfer, JSIP, Visa, Webmoney, etc.) which is useful for creating reports.

The Multi-Subsidiary Structure

In case of a multi-subsidiary structure, you should use the subsidiaries registry to which the FIRM_ID fields in the USERS and OP_EQUIP tables are linked.

The FIRMS table

ID

The subsidiary ID

NAME

The subsidiary name

It is matched against the company structure.

Tables Containing Data for Migration

Use the data in the following tables when migrating to create entities of the necessary type. 

The Customers and Basic Subjects Registry 

The USERS table 

FieldDescriptionComment

ID

The customer ID


STATUS_ID

The customer status ID

A link to STATUS.ID. A basic subject is always created with the Active status.

BASE_ID

The basic subject ID

A link to USERS.ID of a basic subject (a separate entry in the table). It is usually exported empty in order to create bindings automatically.

LOGIN

The customer code

A unique short name used to identify a customer.

JUR

Individual or organization (0 — individual, 1 — organization).


NAME

Full name (for an individual)/ Name (for an organization).


ADDR

The street address format is: <City>,<Street>,<Building>,<Entrance>,<Floor>,<Apartment>,<Intercom code>

If some data is not available then leave empty between commas, for example, Pittsburgh city of, Harrow Hill Rd., 5,,,78,5apt234
The street number can be used together with the building number: Pittsburgh city of, Harrow Hill Rd., 5 bld. 7 ,,,78,5apt234
ADDR_REM

Comments to a subject's address


AUTH_DOC_TYPE_ID

The ID document type

A link to AUTH_DOC_TYPES.ID

AUTH_DOC_SERIAL

The document series


AUTH_DOC_NO

The document number


AUTH_DOC_DATE

The document issue date

The DD.MM.YYYY date format.

AUTH_DOC_ISSUE

Issued at/by


D_BIRTH

The date of birth

The DD.MM.YYYY date format.
BIRTH_PLACE

The place of birth


INN

Individual Taxpayer Identification Number (ITPN / TIN / Tax Id)


OPF

The legal form of an organization, for example, sole proprietorship, LLC

The legal forms are not matched. The value from the legal forms registry is matched by the name.

W_PHONE

Contact office phone number

Digits only, starting with a country code, e.g. 78122128506. It is possible to enter several numbers separated by a comma.

H_PHONE

Contact home phone number

Digits only, starting with a country code, e.g. 78122128506. Only for individuals that have 0 in the JUR column. It is possible to enter several numbers separated by a comma.

M_PHONE

Contact mobile phone number

Digits only, starting with a country code, e.g. 78122128506. It is possible to enter several numbers separated by a comma.

EMAIL

Contact Email address

It is possible to enter several addresses separated by a comma.

FIRM_ID

The subsidiary ID

The link to FIRMS.ID. Is used only for migration with multiple subsidiaries.

Note: the list of customer personal data attributes is extendable if necessary.

The Accounts Registry

The ACCOUNTS table

Field

Description

Comment

ID

The account ID


USER_ID

The customer ID

A link to USERS.ID

ACC_NUM

The account number


ACC_TYPE_ID

The account type ID (a personal account, an operating account, etc.)

A link to ACC_TYPES.ID

CUR_ID

The currency ID

A link to CURRENCY.ID (if the system uses only the Russian ruble, then it is not necessary to specify)

BANK_ID

The bank ID

A link to BANKS.ID (for personal accounts - leave empty).

BALANCE

The account balance


CREDIT

The current credit of a customer

Fill in if a credit is required. If not — leave empty.

CREDIT_END_DATE

The credit limit end date and time.

If empty, but the credit value is entered in CREDIT, then the credit is permanent.

BALANCE_DATE

The date and time for the balance to be calculated.

DD.MM.YYYY HH24:MI:SS
Note that all payments from PAYMENTS that arrive after the date and time specified here will be added to the balance specified in ACCOUNTS.BALANCE.

Grouping Customers

The GROUPLINK table

FieldDescriptionComment

ID

The linking record ID


USER_ID

The customer ID

A link to USERS.ID

GROUP_ID

The group ID

A link to GROUPS.ID

MAIN

The main group feature - 'Y'

It is used to mark the main group when linking a customer to several groups. There should be only one main group.

Note: if there are no groups in the system used for exporting, then at least you should divide all exported customers into three groups: organizations, individuals, and employees. I.e. you need to add these three groups to the GROUPS table and specify links to them (specify who to add to a group according to certain criteria when exporting)

The Customer Premises Equipment

The EQUIP table

FieldDescriptionComment

ID

The equipment ID


USER_ID

The customer ID

A link to USERS.ID

EQUIP_TYPE_ID

The CPE type ID

A link to EQUIP_TYPE.ID

OP_EQUIP_ID

Provider equipment ID

A link to OP_EQUIP.ID

OP_EQUIP_PORT

Provider equipment port number (code)


OP_EQUIP_PORT_TYPEProvider equipment type codeThe value is matched by code as similar port types of different equipment are considered different entities in the system structure
NS_IDID of the network service for equipment managementA link to NS_LIST.ID. Typically not used - leave empty

CODE

The equipment code 

A unique short name used to identify equipment

MAC

The MAC address formatted as 01-23-45-67-89-AB

Separate multiple values with a comma

IP

The IPv4 address or subnet (CIDR notation)

Separate multiple values with a comma

IP6

The IPv6 prefix

Separate multiple values with a comma

PHONE

The customer phone number

Digits only, starting with a country code, e.g. 78122128506. Separate multiple values with a comma

ADDR

The service address

The address is unloaded in the same format as USERS.ADDR 
ADDR_REM

Comments to the service address


NoteOP_EQUIP_IDOP_EQUIP_PORTOP_EQUIP_PORT_TYPE fields are used for specifying the CPE binding to provider’s equipment and are optional.

The Customer Subscriptions to Network Services and Applications Access Credentials

The NETSERV table

FieldDescriptionComment

ID

The binding ID


USER_ID

The customer ID

A link to USERS.ID

NS_ID

The network service ID

A link to NS_LIST.ID

EQUIP_ID

The customer equipment ID

A link to EQUIP.ID
It is filled in only for subscriptions to services which require specifying equipment. In the application access rows (for example, to the Customer Self-Care Portal) this field should be empty. 

LOGIN

The login

The login should be unique in terms of the network service. 

PASSWORD

The password 

Plaintext password or its hash.

PASS_TYPE

The password hashing type

Leave empty for plaintext.

Encryption types are not matched. The value from the registry of supported hash types for passwords is matched according to the name: SHA1, MD5, etc.

Note: the login and passwords for VPN, Customer Self-Care Portal, SIP account and other resources controlled by the Billing are exported into this table. For security reasons, during test exporting, passwords can be substituted with asterisks or random rows. Authentic passwords are to be exported only once, during the final migration.

The Contracts

The CONTRACTS table

FieldDescriptionComment

ID

The contract ID


USER_ID

The customer ID

A link to USERS.ID

NUM

The contract number


D_DOC

The date of the contract


D_BEGIN

The begin date of the contract


D_END

The end date of a contract


Subscribing Customers to Services

The SUBSCR table

FieldDescriptionComment

ID

The subscription ID 


ACC_ID

The account ID

A link to ACCOUNTS.ID

CONTRACT_ID

The contract ID

A link to CONTRACTS.ID

TARIFF_ID

The service (price plan) ID

A link to SERVICES.ID

EQUIP_ID

The customer equipment ID

A link to EQUIP.ID

D_BEGIN

The subscription begin date and time

The date and time when a customer subscribed to this price plan or service

D_END

The subscription end date and time

Leave empty if this is the latest chosen price plan

QUANT

The scheduled amount of service

For price plans - leave empty

PAY_DAY

The charging day

When the charging day is not fixed, leave empty

Note: services and the price plan are exported for the next period. If you have a fixed charging day bound to the 1st day of a month, then export as PAY_DAY = 1 (typically used by organizations).

The Payments

The PAYMENTS table

Field   DescriptionComment

ID

The operation ID


ACC_ID

The personal account ID 

A link to ACCOUNTS.ID

BANK_ID

The bank ID

A link to BANKS.ID. The provider is to have an operating account at this bank.

D_OPER

The date and time of the operation (payment)


PAYMENT_SUM

The amount of payment multiplied by 100 (an even number)


PAYMENT_TYPE_ID

The payment type

A link to PAYMENT_TYPE.ID. When left empty, the default payment types are used

The Chargings

The WRITEOFFS table

Field  DescriptionComment
ID

The operation ID 


ACC_ID

The account ID

A link to ACCOUNTS.ID

CONTRACT_ID

The contract ID 

A link to CONTRACTS.ID

D_OPER

The date and time of the operation (charging)

It must lie within the charging period specified in D_BEGIN и D_END

TARIFF_ID

The service (price plan) ID 

A link to SERVICES.ID

EQUIP_ID

The CPE ID

A link to EQUIP.ID

SUM

The charged amount multiplied by 100

The total amount to be charged, not the service price.

D_BEGIN

The begin date and time of the charging period


D_END

The end date and time of the charging period


USED

The amount multiplied by 100 

In measuring units specified for the service as per TARIFF_ID entered in Hydra 

The amounts in the WRITEOFFS table should not be negative - only positive or 0. This table is used for exporting chargings over previous charging periods (executed charge logs) and details on current billing period of customers (charge logs in force).

Additional Tables

The Multiple Comments

Loading multiple comments to customers and CPE is supported.

The COMMENT_TYPES table

IDThe comment type ID
NAMEThe comment name

It is matched against the Comment Types Registry

The USER_COMMENTS table

IDИдентификатор
USER_ID

A link to USERS.ID

COMMENT_TYPE_ID

A link to COMMENT_TYPES.ID

CL_COMMENT

The comment text

D_OPER

The date and time of creation

D_SIGNAL

The reminder date and time

D_EXEC

The execution date and time

The EQUIP_COMMENTS table

ID

The identifier

EQUIP_ID

A link to EQUIP.ID

COMMENT_TYPE_ID

A link to COMMENT_TYPES.ID

CL_COMMENT

The comment text

D_OPER

The date and time of creation

D_SIGNAL

The reminder date and time

D_EXEC

The execution date and time

Addresses

During the migration process some of the fields are decomposed, and the data from them is recorded into additional tables. Particularly, an address in USERS.ADDR undergoes parsing and is then recorded in the PARSED_USER_ADDRESSES table. Thus, if the billing that undergoes data exporting stores decomposed information on the address it is not necessary to write it in one row as you can fill in the table instead.

Parsed addresses for basic subjects

The PARSED_USER_ADDRESSES table

FieldDescriptionComment

USER_ID

The corresponding ID from the USERS table 

A link to USERS.ID
ADDR_BIND_TYPE_ID

The address type

A link to FACT_ADDR_BIND_TYPES.ID
An optional field. By default, the actual address is used.

VC_ORIGINAL

The row with the address from USERS.ADDR. When filling in manually it is optional.


VC_DISTRICT

District

Fixed type of region – with code REGION_TYPE_District

VC_CITY

The locality name


VC_CITY_TYPE

The locality type

A short name of the region type:"c.", "t."...

VC_STREET

The street name


VC_STREET_TYPE

The street type

A short name of the region type:"str.", "av.."... 

VC_HOUSE

The street number


VC_BUILDING

The pavillion number


VC_CONSTRUCTThe structure number
VC_OWNERSHIPThe property number

VC_ENTRANCE_NO

The entrance number


VC_FLOOR

The floor

Only numeric values allowed 

VC_FLAT

The apartment


VC_DIS_CODE

The intercom code


VC_CUSTOM_ADDRESS

The custom address


VC_REM

The comment


Parsed CPE addresses

The PARSED_EQUIP_ADDRESSES table 

Field          

Description

Comment

EQUIP_ID

The corresponding ID from the EQUIP table

A link to EQUIP.ID
ADDR_BIND_TYPE_ID

The address type

A link to FACT_ADDR_BIND_TYPES.ID.
An optional field. By default, the service address is used. 

VC_ORIGINAL

The row with the address from EQUIP.ADDR. When filling in manually it is optional.


VC_DISTRICT

District

Fixed type of region – with code REGION_TYPE_District

VC_CITY

The locality name


VC_CITY_TYPE

The locality type

A short name of the region type:"c.", "t."...

VC_STREET

The street name


VC_STREET_TYPE

The street type

A short name of the region type:"str.", "av.."...

VC_HOUSE

The street number


VC_BUILDING

The pavillion number


VC_CONSTRUCTThe structure number
VC_OWNERSHIPThe property number

VC_ENTRANCE_NO

The entrance number


VC_FLOOR

The floor

Only numeric values allowed 

VC_FLAT

The apartment


VC_DIS_CODE

The intercom code


VC_CUSTOM_ADDRESS

The custom address


VC_REM

The comment


Parsed phone numbers of basic subjects

The USER_PHONES table

USER_IDThe corresponding ID from the USERS table
PHONE_TYPE_IDThe corresponding ID of the phone number binding type to the subject from the PHONE_TYPES table
PHONEThe phone number
REMThe comment

Matching exported customers against those in Hydra

During the latter migration it may be useful to load the customer contents from the exported data into the contents of the already existing customer in Hydra. To do so you should fill in the USER_MAPPINGS table.

The USER_MAPPINGS table

USER_IDThe ID of the exported customer from the USERS table
USER_DST_CODEThe existing customer code from Hydra

Division employees

Oftentimes, the number of employees is quite big to be entered manually. You need to do it by adding employees as customers into the USERS table, then granting the permission to access applications with the help of NETSERV (similarly to granting them access to the Customer Self-Care Portal) and filling in the following tables.

The DEPARTMENTS table

FieldDescription
IDThe department identifier
FIRM_IDA link to the division from FIRMS.ID
NAMEThe department name

The EMPLOYEE_TYPES table

FieldDescription
IDThe identifier
NAMEThe name

The EMPLOYEES table

FieldDescriptionComment
IDThe identifier
USER_IDThe customerA link to USERS.ID
FIRM_IDThe employer division of the customerA link to FIRMS.ID
DEPARTMENT_IDThe department (can be used in Hydra to distinguish permissions) A link to DEPARTMENTS.ID
EMPLOYEE_TYPE_IDThe employee type (can be used in Hydra to distinguish permissions) A link to EMPLOYEE_TYPES.ID
NAME_GENITIVEThe full name
APPOINTMENTThe position
APPOINTMENT_GENITIVEThe position
ACT_AUTHORITYActing on the basis of authority 
TAB_NOThe employee code 
D_BEGINThe date of hire
D_FIREThe date of leaving
REMThe comment
  • No labels