Data Migration - Customer Data Import
- 1 Summary
- 2 XML Format
- 3 Importing Owner Accounts
- 4 Importing User Accounts
- 5 Importing Child Accounts
- 6 Importing Account Invoices
- 7 To Add Credits
- 8 For Payments
- 9 Importing Opening Balances
- 10 Importing Account Payments
- 11 Importing UserPackage
- 12 Importing UserAttributes
- 13 Importing UserServiceAttributes
- 14 Importing Payment Methods
Summary
This article covers the recommended and proper order for importing customer data into EngageIP. When importing large amounts of data it is recommended to use the DataMigration Utility.
Before you can proceed with any import process here please follow the article: Data Migration – Import Methods and Configuration.
XML Format
Warning: Format is important. XML files for the migrator are case sensitive for element names and element values (those of which are being matched to data already in the system such as bill groups, or credit rating items).
Special Characters Note: If you have special characters ( % ^ & * # @ ! ) in  usernames for example when importing and its causing issues, you can replace the special character with its ASCII code and it will import as the correct symbol.
Importing Owner Accounts
See the System Configuration Import kb article for details on importing Owner accounts.
Importing User Accounts
<User Name="test_customer" Password="test" Owner="admin" Role="Admin" Culture="English" Currency="USA" Language="English" CreatedDate="1/15/2007 12:00:00 AM" StatusType="MyCustomAccountStatusType" TaxCode="Residential" BillGroup="Default" CreditRating="Default" BillDay="1" DisableReason="Cancelled"/>
Name | Name of user, can be alpha numeric, any unique identifier for customers, companies or accounts | ‘Bob McCowan’ or ‘CUST2838382’ or ‘3334445555’ etc. |
Password | Password belonging to the user account for login to the AdminPortal | ‘password’ or ‘FidDz73Ds’ |
Owner | Name of the Owner the country belongs to | this will be based on previous import |
Role | The intended role of the account once in the system | Predefined by previous import, Customer role or Admin role |
Culture | Culture of account | Predefined in database table called 'Culture'. The name of the culture needs to exist so that it can look up the name and enter the ID in the USER table. |
Currency | The alpha character currency of account | ‘USA’ or ‘USD’ for United States or ‘CAD’ for Canada, or ‘EUR’ |
Language | The primary language of the account, to be used when determining the language the interface displays in | ‘English’, ‘Spanish’, etc. |
CreatedDate | The creation date of the account if it exists, or enter the same date for all accounts | ‘10/10/2006 11:00:14 AM’. Format based on system configuration, mm/dd/yyyy or dd/mm/yyyy depending on regional settings on the SQLserver |
StatusType | Status of the account on import, this is a configured account status type | These are based on already imported values in the interface. May be ‘Enabled’, ‘Active’, see your previously imported StatusTypes for this. |
TaxCode | Name of the customers intended taxcode | This is predefined in EngageIP by previous import |
BillGroup | Name of the billgroup customer should be using | This is predefined in EngageIP by previous import |
CreditRating | Name of credit rating in system | This is predefined in EngageIP by previous import |
BilllDay | Day on which to bill customer recurring | this is a numeric value, 1, 2, through 28 (no 29, 30, 31). This is the day on which the customer will bill every month |
Disable Reason | This is a cancelation reason which is not used anymore | Â Can be left blank |
Importing Account Contacts
<Contact User="billingtest" ContactName="test test" ContactFirstName="test" ContactLastName="test" ContactTitle="Billing Contact" ContactType="Billing Contact" ContactCompany="CompanyName" />
User | 'jsmith' or '5192490508' or 'Company X' | Â |
ContactName | Customer name or contact name | 'John Smith' |
ContactFirstName | First name of contact | 'John' |
ContactLastName | Last name of contact | 'Smith' |
ContactTitle | Title of contact | 'CEO' or 'Network Administrator' or 'Director of Marketing' |
ContactType | Contact type as defined in interface | Predefined contact type on setup tab, usually 'Billing Contact' or 'Technical Contact' or 'Administrative Contact' but not limited to those. |
ContactCompany | Company Name | 'Logisense Corporation' or Company X |
Importing Account Contact's Email Address
<ContactEmail User="billingtest3" ContactName="test test" Email="testcontact@logisense.com" ContactType="Billing" />
'Email Address' contact point type must exist, no other names will be found by the system
Contact Name = Firstname + Lastname on the contact
User | Account identifier | 'jsmith' or '5192490508' or 'Company X' |
ContactName | Customer name or contact name. This name needs to exist already on original Contact.xml file | Preexisting value here based on contact.xml. 'John Smith' |
Email address of contact | 'username@domain.com' | |
ContactType | Contact type as defined in interface | Predefined contact type on setup tab, usually 'Billing Contact' or 'Technical Contact' or 'Administrative Contact' but not limited to those |
Importing Account Contact's Phone Number
User | Account identifier | 'jsmith' or '5192490508' or 'Company X' |
ContactName | Customer name or contact name | 'John Smith' |
Phone | Phone number for billing contact in this case | 5192490508 or '011 345 4565 6765' |
ContactType | Contact type as defined in interface | Predefined contact type on setup tab, usually 'Billing Contact' or 'Technical Contact' or 'Administrative Contact' but not limited to those |
ContactPointType | Name of contact point type | This should exist already in the system 'Work Phone' |
Importing Account Contact's Fax Number
Importing Extra Contact Data
If you need to make more contact points besides the ones already available, of if you want to rename them, you can use this below xml to import differently named or extra contact points.
Logisense Corporation = Your owner
ContactPointType = the name of your contactpoint you want to add, ie, Phone Number, Email Address, Extra Info
Value = the data to be added on customer
ContactID = the id of the contact on the customer account you need this added to, i.e. hover over the billing contact link on the contact page to find its ID
Importing Company Details on Contacts
User | Name of user account this applies to | bsmith |
Company | Name of the company to import | 'LogiSense Corporation' (note: Import does not allow '&' ampersand. Replace with 'and') |
Importing Child Accounts
Sets up child account relationships between accounts. This can be at any level.
Alert: this approach is only to be used for initial import. If this import is used after a parent account has transactions / invoices, the invoices will not transfer and display correctly on the new parent. This should never be used on accounts where transactions / invoices exist. If it has been used in this fashion, you can 'reset' the invoices by using the tools page on the account to move it back up to a parent and back down as the child, this executes the logic to move the invoices as expected to the new parent account.
Name | Name of sub account | 'Sally Jones' (where this is the name of a daughter in this example) |
Parent | Name of direct parent account or main account. This is the account the user should be directly under | 'Mr Jones' (this is the name of the father in this case, orparent account) |
Importing Account Invoices
To Add Debits
For taxes to import, ensure you have a taxcode that exists and that the taxcode also has tax rates associated, up to four rates if you want the rates to associate here. Without this config, the tax value will be ignored.
Sample Debit import file:
To Add Credits
As of EngageIP 9.3.8, you can specify the bulk amount which multiplies the amount value for credits
If you want to import a set of 'transactions' and then close the invoice before adding more 'transactions', use the close tag:  <CloseInvoice CloseInvoice="" />
ApplyTax element tells the system to calculate a tax on the import of this credit
Template credit import file:Â
For example, the below will create two invoices. One for January (then you can see the close tag) and another for February (with another close tag after it). So you can group these 'transactions' into their individual invoices as needed.
For Payments
The generic method is below, this allows more elements such as defining the PaymentType so you can enter credit card or other predefined types.
NOTES:
Automatic disbursement is NOT checked when you enter an Invoice. There is no way to tell this method to mark a payment as autodisburse when an invoice value is present. When the payment is imported, it IS disbursed to the invoice specified as much as it can be, if it is more than the invoice, the left over amount sits undisbursed and the payment is not set as auto disburse and will need to be manually fully disbursed
If you leave invoice blank, the payment WILL be set to automatic disburse, BUT it will not disburse until something triggers it on the account, a new debit is created, or billing closes aninvoice perhaps
If the invoice is specified, it will tag itself to the invoice selected for display purposes in addition to disbursement purposes. If you do NOT want the payment to show potentially on an old invoice, rather you would like it to be available to display on the next open invoice, leave this blank
Where invoice = name of the invoice (not necessarily the ID)
User | Name of existing account | 'ejones' |
Date | Date of transaction | '6/30/2006 12:00:00 AM' |
Debit | Value of debit | '26.7' or '23.15' (these need to be absolute values) |
Credit | Value of credit | 0 (these need to be absolute values) |
Tax1 | Value of tax charged | 0 or '1.47' |
Tax2 | Value of tax charged | 0 or '1.47' |
Tax3 | Value of tax charged | 0 or '1.47' |
Tax4 | Value of tax charged | 0 or '1.47' |
TaxCode | Name of taxcode that exists in the system | 'State Taxcode' |
Description | Description of transaction | 'Opening balance' |
Package | Name of SERVICE (Package is the legacy name for service) that the transaction applies to | 'Broadband Wifi Access' |
PeriodStart | Service period dates |  |
PeriodEnd | Service period dates |  |
User | Name of account under which payment should b e applied. May be a child of bsmith as shown in above example | 'bsmith' or a child of bsmith 'frank' |
Date | Date of transaction | 1/18/2007 2:26:28 PM |
Credit | Value of credit, in dollars and cents | '2.0000' |
Description | Description of payment | 'Credit Card payment' |
Importing Opening Balances
When moving data from another system to EngageIP, often you will want to import existing debit or credit balances for historical purposes. The correct procedure would be to import a debit or credit as shown above, and then close the invoice and mark it as delivered.  Its suggested that you create a service called 'Opening Balance' to be used to tag to the amount imported for reporting purposes. The balance of the created invoice will then move forward onto the 'real' invoices as a previous balance whether credit or debit.
Create 'Opening Balance'Â service
Add a transaction to a user (via import or manually)
Enter the amount of the existing balance (add transaction for debit balance, add credit for a credit balance)
Select the service as 'Opening Balance'
Add date as required
A new invoice will be generated if one does not already exist on the account, close this invoice
Mark invoice as printed. Check the box beside the invoice and click 'Printed'. This will ensure the invoice does not get sent to the customer.
Importing Account Payments
User | Name of account under which payment should b e applied. May be a child of bsmith as shown in above example | 'bsmith' or a child of bsmith 'frank' |
Date | Date of transaction | 1/18/2007 2:26:28 PM |
Credit | Value of credit, in dollars and cents | '2.0000' |
Description | Description of payment | 'Credit Card payment' |
Importing UserPackage
The account's package. An account can have multiple packages which will bill according to their Bill Cycle. Any package added which does not match the billing cycle will be prorated to the account's bill cycle. .
For below, click 'Use Generic':
User | Name or letter combination that is restricted | English or 'Residential Customer Invoice 2 Page' |
Name | Name of the package that will show to the customer and in reports | this package should exist from previous import ofpackage.xml |
NextBillDate | Date on which the package will be next for the customer | 2/18/2007 |
Importing UserService
This is a generic method for importing user-services (non-optional)
Importing Optional UserService
Importing UserPackageAttributeDiscount
User Package Discounts - allows the import of discounts that are attached specifically to the customer (if not a system wide package discount).
Discount Type | Type of the discount | Fixed | Price | Percent |
Amount | Value of the discount | 29.99 or 30 |
User | User to which the discount should be applied | bsmith |
UserPackage | Package to which the discount should be applied | Monthly DialUp |
UserService | Service to which the discount should be applied | Dialup |
Importing Setup Tab / Package Services
Attach services to packages in EngageIP
Importing UserAttributes
Apply expiry date to user account
UserAttributeChangeUserStatusType
For correct prorating, ensure that the time is completed as well, in this case, the end of day on the 31st is when the account should be canceled and if prorating applies, that will be considered
UserAttrbiutePrintGroup
The telecom attribute attached to services at the account level
Â
The telecom bucket assigned to the account's service
Â
Profile Answer Import
The name needs to be exactly as shown on the setup page for the service or the profile question under the Role. This IS for Role profile questions and Service profile questions
Â
Profile Answers Import for Parent/Child Profile hierarchy questions
Â
Applies TaxClass to user specifically
Â
Applies Taxcode to user - as seen on Overview of account
Â
UserAttributeTaxExempt Component
Â
UserAttributeTaxExemptLevels
UserAttributeNote
Misc Notes from users, Type must define the 'Note Type' as specified on the setup tab. There may be one or more note types as of version 8.3.x. If nothing exists, add 'Default' as the note type and it can be used to import notes to that type. When using branded owners, the generic method needs to be used:
Generic method:
When using branded owners, the generic method needs to be used:
Â
Importing UserExtendedAttributes
Â
UserPackage and UserPackageExtendedAttribute:
The below will import a userpackage, along with the associated UserPackageExtendedAttribute
Â
Importing UserExt Profile Answers
Where ‘market’ is the profile question name, ‘a’ is the answer to that profile question you want to import and ‘admin’ is the user it should be assigned to. On import screen, do not select generic even though this is a generic import style.
Importing UserPackageAttributes
Â
Import UserAttributeChangeUserPackageStatusType
NOTE: This uses the generic method requiring that you know and insert the correct owner specific IDs for the status types (StatusTypeID, UserPackageStatusTypeID), and also the specific user package ID you want to associate this change to.
Â
Importing UserServiceAttributes
Importing UserServiceAttributeContact
Â
UserServiceAttributeTelecom
Â
Importing UserServiceAttributeTelecomBucket
Â
Importing UserServiceTechData
Â
Importing UserServiceAttributeProfileAnswers
Import answers for user services if there is a profile question on the service. NOTE: If more than one service of the same name exists on an account, the profile answer will be completed for each of those instances. If you need this to be specific per user service ID, use the generic method further below
Generic Method here allowing you to import to a specific userserviceID:
Importing UserServiceResource attachment
the xml below allows you to import resources to a user service and to specify which user service to attach it to based on the userserviceID. The IDs would need to be found in the database (select id from userservice where...)
Importing Account Tickets
User | Account identifier | 'jsmith' or '5192490508' or 'Company X' |
Reference | Â | Â |
Subject | Subject of ticket | 'customer DSL is slow' |
Description | Description of ticket | this is the main body of the ticket |
Resolution | Resolution section of ticket | this is the resolution field, or the answer to the question |
AssignedTo | Username of admin this is assigned to | 'bsmith' |
Loggedby | Username of account that logged the ticket | 'ljones' |
Date | Date the ticket was added | '1/15/2007 12:51:52 PM' |
TimeSpent | Value in minutes of the time spent | 0 |
Status | Current status of the ticket | 'Open', 'Closed' |
Priority | Priority of the ticket | Low, Normal, High (these will be configured in Adminportalalready, match the names of preexisting priorities) |
ClosedBy | Username of admin that closed the ticket if status is closed | 'nburns' |
Dateclosed | Date the ticket was closed | '2/18/2007 12:51:52 PM' |
Category | Category of ticket | predefined on setup tab |
Contactmethod | The method used to contact customer support | Â |
Fromaddress | bsmithy@logisense.com | Â |
Totaltimespent | Total time in minutes spend on ticket so far | 0 |
Currenttimespent | Value in minutes of current time spend | 0 |
Lastmodifiedby | Username of admin that modified the ticket | bsmithy |
Hiddenresolution | Text from ticket that was hidden from end user (background discussion) | text that was on ticket but hidden from customer |
Showtouser | Flag defining whether end user (customer) can see this ticket if logged into the customerportal | True or False |
Duedate | Date on which the ticket should be completed | 1/15/2007 12:00:00 AM |
TicketID | ID reference for ticket | 32194 |
Importing Ticket Tracking Records
Ticket Tracking records are the detail attached to the ticket, the inline comments or appended text on tickets.
An example of the ticket tracking XML is shown below:
Importing Ticket Attachments
With Ticket Attachment, you can import attachments to tickets. Any file can be attached. If there are errors, check the size of the attachment as files over 2 MBs may produce errors. If this is a concern, attempt to import a large file by itself to confirm that it will import without issue.
Importing Payment Methods
Importing UserPaymentMethodCash
Importing UserPaymentMethodCreditCard
Â
Importing UserPaymentMethodCheck
Importing UserPaymentMethodACH
The first line below adds the UserPaymentMethod object and creates a reference to it to be used in the UserPaymentMethodACH object.