This article in Russian: Миграция абонентов в Гидру версии 6.2+ |
Customers are migrated to Hydra from other billing systems via an intermediate set of tables (intermediate data schema) represented by CSV files:
|
To debug the process of data export and the migration itself, all work is first performed iteratively on a test instance of Hydra:
|
|
Archive with a complete set of files containing only header lines with no data:
Use this archive as a template for data export |
Sample content of the ACCOUNTS.csv file for the ACCOUNTS table:
"ID";"CUSTOMER_ID";"ACCOUNT_NUMBER";"ACCOUNT_TYPE_ID";"CURRENCY_ID";"BANK_ID";"BALANCE";"CREDIT";"CREDIT_END_DATE";"BALANCE_DATE";"REMARK" "10";"1";"14170";"1";"643";"";"802.00";"";"";"29.02.2024 23:59:59";"" "11";"1";"14170★";"3";"999";"";"560";"";"";"29.02.2024 23:59:59";"Opened upon signing the contract.Bonuses may only be redeemed with the consent of Bilbo Baggins."¶ |
Archive with simplified data export, including only the basic data set:
Archive with an advanced data export, including optional tables and fields:
For current billing periods, during migration, charge logs are generated by Hydra core, based on configured service providing schemes and price specifications, taking into account exported start dates of billing periods and subscriptions to services.
To better understand the relationships of the tables, we recommend that you check the ER diagram of the intermediate data schema. |
|
Mandatory tables and columns in the following description are marked with a Tables and columns that can be left blank to simplify export are marked with a By agreement, additional tables and extra columns of standard tables can be added to the schema. |
This section lists tables whose data is not migrated but is used to map reference records of the source system with similar records in Hydra.
If the names in the export and in Hydra match, the entries correspondence can be automatically set by the data migration application. |
Correspondences are preserved between migration iterations if the identifiers and names of records do not change. |
At least customer accounts are required for the ACCOUNTS table.
Column | Description |
|---|---|
ID | Account type identifier. |
NAME | Account type name. |
| REMARK |
In Hydra: Master Data → Reference Data → Account types.
Examples: Customer account, Settlement (current) account.
Leave the table blank if you are not exporting the identity details of individual customers.
Column | Description |
|---|---|
ID | Document type identifier. |
NAME | Document type name. |
| REMARK |
In Hydra: Master Data → Reference Data → ID types.
Examples: Passport, Driving license.
Leave the table blank if you are not exporting settlement (current) accounts и payments history.
Column | Description |
|---|---|
ID | Bank identifier. |
NAME | Bank name. |
| REMARK |
In Hydra: Master Data → Banks.
Examples: NatWest International, Stripe, PayPal.
Leave the table blank if you are not exporting extended comments to customers or to their equipment.
Column | Description |
|---|---|
ID | Comment type identifier. |
NAME | Comment type name. |
| REMARK |
In Hydra: Master Data → Reference Data → Comment types.
Examples: Technical support request, Customer feedback, Service outage.
At least one currency is required, which is used for payments and charges on customer accounts.
Column | Description |
|---|---|
ID | Currency identifier. |
NAME | Currency name. |
| REMARK |
In Hydra: Master Data → Reference Data → Currencies.
Examples: Gibraltar pound, Bonus.
At least primary groups required.
Column | Description |
|---|---|
ID | Group identifier. |
NAME | Group name. |
| REMARK |
In Hydra: Master Data → Groups → Subject group type: Customer.
Examples: Residential, Business, Enterprise, Employees.
At least two statuses are required: for active and disconnected customers customers.
Column | Description |
|---|---|
ID | Status identifier. |
NAME | Status name. |
| REMARK |
In Hydra: Master Data → Customers → Status.
Examples: Active, Suspended manually, Disabled.
At least one type of customer premises equipment (service providing point) is required.
Specify only the types of customer equipment if you are not exporting its connections to the provider equipment.
Column | Description |
|---|---|
ID | Equipment type identifier. |
NAME | Equipment type name. |
| REMARK |
In Hydra: Master Data → Product Catalog → Material assets.
Examples: Terminal equipment, STB, ONU, ZTE OLT C300.
Leave the table blank if there is only one firm in your Hydra (single-division setup).
Column | Description |
|---|---|
ID | Division identifier. |
NAME | Division name. |
| REMARK |
In Hydra: Master Data → Organizational Structure.
Examples: Offline Telecom, Cloud Express.
At least Customer Self-Care Portal is required.
Column | Description |
|---|---|
ID | Network service identifier. |
NAME | Network service name. |
| REMARK |
In Hydra: Equipment → Network Services.
Examples: Customer Self-Care Portal, PPPoE (Internet), SIP (VoIP), SMS-notifications.
Leave the table blank if you are not exporting payments history at all or are only exporting real payments and do not want to separate them by type (the common type from the migration application settings will be used).
Column | Description |
|---|---|
ID | Payment type identifier. |
NAME | Payment type name. |
| VIRTUAL | Y for virtual types and N — for real ones. |
| REMARK |
In Hydra:
Examples: Cash (real), Payment System (real), Correction (virtual), Bonus (virtual).
Leave the table blank if you are not exporting the contact numbers of individuals and organizations to a separate CUSTOMER_PHONES table.
Column | Description |
|---|---|
ID | Phone number purpose identifier. |
NAME | Phone number purpose name. |
| REMARK |
In Hydra: Master Data → Reference Data → Address purposes.
Examples: Mobile, Home, Notification, Work.
At least current customers price plans and their additional recurrent services are required if you are not exporting the charges history.
Column | Source of values | Description |
|---|---|---|
ID | Product identifier. | |
NAME | Product name. | |
| TYPE | Y for price plans, N — for the rest. | |
| UNIT_ID | UNITS.ID | Measurement unit identifier for quantitative services from the UNITS table. Must correspond to the measurement unit of the respective Hydra product catalog item.
|
| REMARK |
In Hydra:
Examples: Ultimate (price plan), STB rent fee (service), Refund (adjustment).
Leave the table blank if you are not exporting CPE's connections to the provider equipment for inventory or AAA purposes (e.g. DHCP Option 82 based IPoE authentication).
Column | Source of values | Description |
|---|---|---|
ID | Equipment identifier. | |
| EQUIPMENT_TYPE_ID | EQUIPMENT_TYPES.ID | Equipment type identifier. |
CODE | Equipment code. Used for automatic matching. | |
| IP | ||
| FIRM_ID | FIRMS.ID | Firm identifier for multi-division Hydra setup.
|
| REMARK |
In Hydra: Equipment → Active Equipment.
Examples: OLT/Lomas/150645320095, SW-Cisco-C2950-24/12345.
Leave the table blank if you are not exporting street addresses to separate CUSTOMER_STREET_ADDRESSES and EQUIPMENT_STREET_ADDRESSES tables.
Column | Description |
|---|---|
ID | Street address purpose identifier. |
NAME | Street address purpose name. |
| REMARK |
In Hydra: Master Data → Reference Data → Address purposes.
Examples: Actual address, Permanent residency address, Registered office, Service address.
Leave the table blank if you are not exporting quantitative services.
Column | Description |
|---|---|
ID | Measurement unit identifier. |
NAME | Measurement unit name. |
| REMARK |
In Hydra:
Examples: Piece, Meter, Megabyte, Minute, Megabits per second.
The data from these tables is used during migration to create Hydra entities of the corresponding type.
If the described intermediate data schema is insufficient for transferring all necessary details to Hydra, please contact Hydra Team to discuss extra columns or additional tables. |
The main table, to which all others are linked in one way or another.
As a rule, each entry in this table corresponds to a single independent customer. If you need to combine multiple customers within a common basic subject (individual or organization), in addition to separate entries for each customer, export entries for their base subject, linking them to each other via PARENT_ID. In this case, the IDs of customers must be positive, and IDs of basics subjects must be negative. |
| Column | Source of values | Description |
|---|---|---|
ID |
Subscribers must have positive identifiers, while basic subjects (individuals and organizations) must have negative identifiers. | |
STATUS_ID | CUSTOMER_STATUSES.ID |
|
| PARENT_ID | CUSTOMERS.ID | Basic subject identifier when exported separately.
|
CODE |
| |
ORGANIZATION | ||
NAME |
| |
| SECOND_NAME |
| |
| SURNAME |
| |
ADDRESS | The actual street address of an individual or organization in the format If some details are missing, leave only commas. For example: The house number can be supplemented with the corpus number:
| |
| ADDRESS_REMARK | Actual street address remark.
| |
AUTH_DOC_TYPE_ID | AUTH_DOC_TYPES.ID |
|
AUTH_DOC_SERIAL |
| |
AUTH_DOC_NUMBER |
| |
AUTH_DOC_DATE |
| |
AUTH_DOC_ISSUING_AUTHORITY |
| |
| BIRTH_DATE |
| |
| BIRTH_PLACE |
| |
TAX_ID_NUMBER |
| |
LEGAL_FORM_CODE | Code or name of the legal form. For example: SP or Sole proprietor, LLC or Limited liability company. All variants must be configured in Hydra beforehand: Master Data → Reference Data → Business entity types.
| |
W_PHONE | Contact work phone number in E.164 format: no spaces, hyphens, plus signs, or parentheses — only digits. You can specify multiple numbers by separating them with commas.
| |
H_PHONE | Contact home phone number in E.164 format: no spaces, hyphens, plus signs, or parentheses — only digits. You can specify multiple numbers by separating them with commas.
| |
M_PHONE | Contact mobile phone number in E.164 format: no spaces, hyphens, plus signs, or parentheses — only digits. You can specify multiple numbers by separating them with commas.
| |
| ||
FIRM_ID | FIRMS.ID | Firm identifier for multi-division Hydra setup.
|
| REMARK |
Each customer must be a member of at least one group.
| Column | Source of values | Description |
|---|---|---|
| ID | ||
| CUSTOMER_ID | CUSTOMERS.ID | |
| GROUP_ID | CUSTOMER_GROUPS.ID | |
| PRIMARY |
Each customer must have only one primary group. | |
| REMARK |
Multipart notes to customers, categorized by type, will be available on the Comments tab of the customer page in Hydra.
| Column | Source of values | Description |
|---|---|---|
| ID | ||
| CUSTOMER_ID | CUSTOMERS.ID | |
| COMMENT_TYPE_ID | COMMENT_TYPES.ID | |
| COMMENT_TEXT |
| |
| CREATED_DATE | ||
| REMINDER_DATE | ||
| EXECUTION_DATE |
To be filled in only for the migration of additional details to previously created customers.
| Column | Source of values | Description |
|---|---|---|
| CUSTOMER_ID | CUSTOMERS.ID |
Primary key in this table: only one record is possible here for each exported subscriber.. |
| CUSTOMER_DST_CODE | ||
| REMARK |
Extended version of assigning contact phone numbers of different kinds (purposes) with optional notes.
If you don't need notes and the standard purposes (Work, Home, Mobile) are sufficient — leave this table empty and use W_PHONE, H_PHONE, and M_PHONE columns of the CUSTOMERS table instead.
| Column | Source of values | Description |
|---|---|---|
| ID | ||
| CUSTOMER_ID | CUSTOMERS.ID |
When exporting customers and basic subjects separately — the identifier of the basic subject. |
| PHONE_TYPE_ID | PHONE_TYPES.ID | |
| PHONE | ||
| REMARK |
Extended version of assigning street addresses of different kinds (purposes) to basic subjects.
If one actual street address in simplified format is sufficient, leave this table blank and use ADDRESS and ADDRESS_REMARK columns of the CUSTOMERS table instead.
| Column | Source of values | Description |
|---|---|---|
| ID | ||
| CUSTOMER_ID | CUSTOMERS.ID |
When exporting customers and basic subjects separately — the identifier of the basic subject. |
| ADDRESS_PURPOSE_ID | STREET_ADDRESS_PURPOSES.ID |
|
| DISTRICT | ||
| CITY | ||
| CITY_TYPE |
All variants must be configured in Hydra beforehand: Master Data → Reference Data → Region types. | |
| STREET | ||
| STREET_TYPE | All variants must be configured in Hydra beforehand: Master Data → Reference Data → Region types. | |
| HOUSE | These four columns collectively define the building:
| |
| BUILDING | ||
| CONSTRUCT | ||
| OWNERSHIP | ||
| ENTRANCE | ||
| FLOOR | ||
| FLAT | ||
| INTERCOM_CODE | ||
| CUSTOM_ADDRESS | ||
| REMARK |
Each customer must have at least one customer account in order to render services: an electronic wallet in the billing system, to which payments are credited and funds are debited for the provision of services.
| Column | Source of values | Description |
|---|---|---|
ID |
| |
CUSTOMER_ID | CUSTOMERS.ID |
|
ACCOUNT_NUMBER |
Should be unique. | |
ACCOUNT_TYPE_ID | ACCOUNT_TYPES.ID |
|
CURRENCY_ID | CURRENCIES.ID |
|
BANK_ID | BANKS.ID |
|
BALANCE |
A positive value indicates a deposit has been made, while a negative value indicates there is outstanding debt. | |
CREDIT |
Positive values only. | |
CREDIT_END_DATE |
| |
BALANCE_DATE |
The migrated closing balance will differ by the difference between PAYMENTS table and CHARGES table entries that occurred after the specified date. | |
| REMARK |
Each customer must have at least one contract in order to render services.
| Column | Source of values | Description |
|---|---|---|
| ID | ||
| CUSTOMER_ID | CUSTOMERS.ID | |
| CONTRACT_NUMBER |
Should be unique. | |
| SIGNATURE_DATE | ||
| START_DATE |
This usually is the same as the date of signing. | |
| END_DATE |
For current contracts, this is usually not specified: the contract is valid indefinitely until terminated on purpose. | |
| REMARK |
Customer equipment in Hydra is necessary for keeping the servicing address, CPE technical details, automatic provisioning and access control (AAA).
The necessity of certain technical requirements depends on the configured integrations with external services and hardware, i.e. the specifics of customer authorization and service access management.
| Column | Source of values | Description |
|---|---|---|
| ID | ||
| CUSTOMER_ID | CUSTOMERS.ID | |
| EQUIPMENT_TYPE_ID | EQUIPMENT_TYPES.ID | |
| PROVIDER_EQUIPMENT_ID | PROVIDER_EQUIPMENT.ID |
Leave blank if binding is not required. |
| PROVIDER_EQUIPMENT_PORT_CODE |
Leave blank if the CPE binding should be to the provider equipment itself, rather than to its component (port). | |
| PROVIDER_EQUIPMENT_PORT_TYPE |
Leave blank if the provider equipment components has unique codes. | |
| CODE | ||
| MAC |
Must be individual (unicast). You can specify multiple addresses by separating them with commas. | |
| IP |
You can specify multiple addresses by separating them with commas. | |
| IP6 |
You can specify multiple subnets by separating them with commas. | |
| PHONE |
You can specify multiple phone numbers by separating them with commas. | |
| VLAN | ||
| ADDRESS | The service providing street address in the format If some details are missing, leave only commas. For example: The house number can be supplemented with the corpus number:
| |
| ADDRESS_REMARK | Service providing street address remark
| |
| REMARK |
Multipart notes to CPE (service providing points), categorized by type, will be available on the Comments tab of the customer equipment in Hydra.
| Column | Source of values | Description |
|---|---|---|
| ID | ||
| EQUIPMENT_ID | EQUIPMENT.ID | |
| COMMENT_TYPE_ID | COMMENT_TYPES.ID | |
| COMMENT_TEXT |
| |
| CREATED_DATE | ||
| REMINDER_DATE | ||
| EXECUTION_DATE |
Extended version of assigning street addresses of different kinds (purposes) to customer equipment.
If one service street address in simplified format is sufficient, leave this table blank and use ADDRESS and ADDRESS_REMARK columns of the EQUIPMENT table instead.
| Column | Source of values | Description |
|---|---|---|
| ID | ||
| EQUIPMENT_ID | EQUIPMENT.ID |
|
| ADDRESS_PURPOSE_ID | STREET_ADDRESS_PURPOSES.ID |
|
| DISTRICT | ||
| CITY | ||
| CITY_TYPE |
All variants must be configured in Hydra beforehand: Master Data → Reference Data → Region types. | |
| STREET | ||
| STREET_TYPE | All variants must be configured in Hydra beforehand: Master Data → Reference Data → Region types. | |
| HOUSE | These four columns collectively define the building:
| |
| BUILDING | ||
| CONSTRUCT | ||
| OWNERSHIP | ||
| ENTRANCE | ||
| FLOOR | ||
| FLAT | ||
| INTERCOM_CODE | ||
| CUSTOM_ADDRESS | ||
| REMARK |
Leave the table blank if you do not want to provide customers with access to the customer portal, and no credentials (i.e. usernames and passwords) needed for Hydra to manage access to services.
| Column | Source of values | Description |
|---|---|---|
| ID | ||
| CUSTOMER_ID | CUSTOMERS.ID | |
| NETWORK_SERVICE_ID | NETWORK_SERVICES.ID | |
| EQUIPMENT_ID | EQUIPMENT.ID | Customer equipment identifier.
|
| LOGIN | Login (username). Must be unique within the network service (application).
| |
| PASSWORD | Password in plain text. In test exports, you can specify the same stub value for all of them for security reasons..
| |
| PASSWORD_HASH_TYPE | ||
| REMARK |
Service subscription represents that the customer wants to get particular service for certain period of time, paying for this from a specific customer account and under a specific service contract.
It is sufficient to export only current and future subscriptions; charges history migration does not use these subscriptions.
| Column | Source of values | Description |
|---|---|---|
| ID | ||
| ACCOUNT_ID | ACCOUNTS.ID | |
| CONTRACT_ID | CONTRACTS.ID | |
| PRODUCT_ID | PRODUCTS.ID |
Only recurrent services can be subscribed to. |
| EQUIPMENT_ID | EQUIPMENT.ID | Customer equipment (i.e. service providing point) identifier.
|
| START_DATE | ||
| END_DATE | Subscription end date and time in DD.MM.YYYY HH24:MI:SS format, i.e. when the service should end.
| |
| QUANTITY | The quantity of the service ordered in the PRODUCTS.UNIT_ID unit of measurement. This is a multiplier for the price of the service. For example, to render two STBs rent fee at $20 each, set 2 as quantity and the subscription fee will then be 2 × $20 = $40.
| |
| BILLING_DATE | Fixed monthly billing date — a natural number from 1 to 28. For business subscribers it's usually 1, i.e. billing periods are strictly tied to calendar months.
| |
| REMARK |
Populating this table is not critical for migration, however, it is generally expected to contain at least the current billing periods for all customers subscriptions to services. To migrate current charge logs properly, you must ensure that subscriptions to all current services are in the SUBSCRIPTIONS table: with appropriate validity period and with identical customer account, contract, product, and equipment. If it is impossible to export this details, be sure to discuss options for initial charge logs issuing in Hydra with Hydra Team. By default, when running scheduled tasks after migration, Hydra will start providing services based on subscriptions from the current moment. |
As a rule, it is sufficient to export charges history from the beginning of the current year in order to make financial reports from a single billing system. The charges history migrates “as is” in the form of archived charge logs, i.e. no historical price specifications and subscriptions required for this.
| Column | Source of values | Description |
|---|---|---|
| ID | ||
| ACCOUNT_ID | ACCOUNTS.ID | |
| CONTRACT_ID | CONTRACTS.ID | |
| CHARGE_DATE |
During migration, it will be matched with ACCOUNTS.BALANCE_DATE to determine the final balance of the customer account. As a rule, it's identical to either start or end date of the billing period, however may differ. Must be within the billing period. | |
| PRODUCT_ID | PRODUCTS.ID |
|
| EQUIPMENT_ID | EQUIPMENT.ID | Customer equipment identifier. For current billing periods, it must match the one specified for this service in SUBSCRIPTIONS.EQUIPMENT_ID.
|
| AMOUNT |
Negative values are only allowed for adjustments that increase the balance of the customer account, e.g. refunds. | |
| CHARGING_PERIOD_START_DATE |
The time part for regular recurrent services is usually 00:00:00, i.e. midnight. For instant one-time services and balance adjustments, this should be equal to CHARGE_DATE value. | |
| CHARGING_PERIOD_END_DATE | The time part for regular recurrent services is usually 23:59:59, i.e. the very last second of the day. For instant one-time services and balance adjustments, this should be equal to CHARGE_DATE value. | |
| QUANTITY | The quantity of the service rendered in the PRODUCTS.UNIT_ID unit of measurement, multiplied by 100.
| |
| REMARK |
As a rule, it is sufficient to export payment history from the beginning of the current year in order to make financial reports from a single billing system.
| Column | Source of values | Description |
|---|---|---|
| ID | ||
| ACCOUNT_ID | ACCOUNTS.ID | |
| BANK_ID | BANKS.ID | |
| TRANSACTION_DATE |
During migration, it will be matched with ACCOUNTS.BALANCE_DATE to determine the final balance of the customer account. | |
| PAYMENT_AMOUNT | ||
| PAYMENT_TYPE_ID | PAYMENT_TYPES.ID | Payment type identifier.
|
| REMARK |