After transitioning your commerce and self-serve journeys to Limio, you'll want your existing customers to fully use Limio's self-serve features and capabilities.
Limio requires a migration as a Zuora Subscription will not usually hold sufficient information to enable self-service. For example, Limio requires:
- a Limio Identity that maps to your Identity Provider ID and other applications such as Salesforce to recognise an online user.
- a Limio Offer to define an Offer Label to route the subscriber to the correct switch (upgrade/downgrade) or cancel Page.
- a Limio Product to define whether delivery fields are required in the checkout.
This guide provides an overview on how to migrate in bulk your existing customers from your previous billing stack or loading them from Zuora into Limio. At a high-level, you will need to populate a CSV file that will be imported into Limio and automatically create all the Limio objects for you.
Please note that these steps are general, and your specific implementation may require additional considerations. If you have any questions, reach out to your project team for support.
Pre-Requisite
Before you start a migration, you should make sure you have the following:
- You have defined Limio Offer that maps to what is commercially available on your Zuora Subscription. For example, if you have a Zuora Subscription with a Digital Product and a Monthly Rate Plan that is Auto-Renew with a USD currency, you will want to define a matching Limio Offer for this.
- You have defined the primary identifier from your Identity Provider. Read more here.
Process Overview
1. Accessing File Upload Permissions
To start the migration process:
- Ensure you have access to the CSV ingestion bucket in Limio.
- Request access from Limio support to upload your CSV files for migration.
2. Preparing Your Files
Prepare your migration files as follows:
- Structure and Headers: Create a CSV file with the structure outlined below, ensuring headers match exactly (case sensitive). While not all fields are mandatory, required fields must be included to avoid record failures.
- File Size: Limit each file to under 5000 records for optimal reliability and to avoid database throttling or data loss during upload.
-
File Naming: Name your files with the prefix "Limio_". For example:
Limio_Acme_Run_1.csv
.
3. Uploading and Processing Files
- Upload your file to the appropriate CSV bucket (e.g.,
ACME.csv-ingestion.limio.com
). - Limio provides access to different environments and their corresponding buckets.
- Files are processed in batches of 1000 records, with each batch taking up to 15 minutes. Files exceeding 1000 records will be split automatically (but must not exceed 5000 records per file).
- Monitor the progress of your migration on the Subscriptions page in the Limio App. Subscriptions are loaded automatically once processing is complete.
- Processed files are moved to the "processed" folder in the bucket.
4. Checking the Outcome
- Upon completion, a Limio event called "migration.uploaded" will appear in the Events Section.
- For any errors, look for "migration.record.error" in the same section to identify issues with specific subscriptions.
5. Additional Migration Processes
a. Offer Migration to a Subscription
- This process associates a Limio offer with a specific subscription, ideal when catalog offers were not prepared for migrated subscriptions.
- Use the prefix "Limio_offers_" for the file name, following the same preparation and upload guidelines.
b. Gift Code Migration
- Use this process to upload gift codes into Limio, often required for specific commercial agreements.
- Gift codes can either link to existing Limio customers (via a Zuora account ID) or generate dummy customers during processing.
- Use the prefix "Limio_gift_code_" for the file name, adhering to the same guidelines.
If you encounter any issues during migration or need further clarification, contact your Limio project team for assistance.
Import File
CSV Subscription File Definition:
Field |
Type |
Required |
Description |
---|---|---|---|
Customer_name |
string |
|
firstName + lastName for the Limio Customer |
Customer_email |
string |
|
Email related to the subscription (If not included, we set it to customerExternalCorrelator@limio.com) for the Limio Customer |
Customer_phoneNumber |
string |
|
Phone number related for the Limio Customer |
Identity_zuoraAccountId |
string |
yes |
Zuora account number. Required to create the relevant Limio Identity on the Limio Customer and map Zuora Subscriptions to Limio Subscriptions. Example: A00104608 |
Identity_salesforceAccountId |
string |
|
Salesforce account ID. Optional to create the relevant Limio Identity on the Limio Customer and map Salesforce Accounts to Limio Customers. Example: 0013w00002h2eviAAA |
Identity_contactId |
string |
|
Salesforce contact ID. Optional to create the relevant Limio Identity on the Limio Customer and map Salesforce Contact to Limio Customers. Example: 0033w00002h2eviAAA |
Identity_userId |
string |
yes |
The User id or sub from your Identity Provider. REquiredto create the relevant Limio Identity on the Limio Customer and allow the User to access authenticated Pages. Example: 1234567890 |
Subscription_subscriptionExternalCorrelator |
string |
yes |
The Subscription unique identifier, usually the Zuora Subscription Number from Zuora. It will also be used as Order Number to prevent duplicates if importing again the same record. Example: A00104608 |
Subscription_startDate |
string (isodate) |
yes |
The term start date of the subscription, format: YYYYMMDD |
Subscription_endDate |
string (isodate) |
yes |
The term end date of the subscription, format: YYYYMMDD |
Subscription_offerName |
string |
|
A customer friendly reference to the subscription offer, eg. “Digital 1-year subscription” |
Subscription_offerPath |
string |
yes |
Defines the path of the Limio offer to be mapped into the subscription. Example: “/offers/digital/annual” |
Subscription_offerCurrency |
string |
yes |
The 3 character currency code. ie GBP, EUR, USD… |
Subscription_offerCurrentPrice |
string (money) |
yes |
The price of the current subscription, ie: 295.00 |
Subscription_offerFuturePrice |
string (money) |
|
The price of the subscription next term. If empty uses current |
Subcription_InitialTermPeriodType |
string |
|
[“Year”, “Week”, “Month”] - From Zuora InitialTermPeriodType field. If omitted will default to Month |
Subcription_InitialTermPeriod |
string (int) |
|
The quantity of units composing the period ie 1, 2, 3 (Years, Months, Weeks) - From Zuora InitialTerm field. If omitted will default to 1 |
RatePlan_RatePlanCharges_Type |
string |
|
Type of Rate Plan - From Zuora ratePlans.ratePlanCharges.type field |
Subscription_status |
string |
|
‘active’ (Expecting only active subscriptions) |
BillingAddress_firstName |
string |
|
First name for billing. Just to display to the customer if creates MMA account |
BillingAddress_lastName |
string |
|
Last name for billing. Just to display to the customer if creates MMA account |
BillingAddress_address1 |
string |
|
First line of address. To display to the customer if creates MMA account |
BillingAddress_address2 |
string |
|
Second line of address. To display to the customer if creates MMA account |
BillingAddress_city |
string |
|
To display to the customer if creates MMA account |
BillingAddress_postalCode |
string |
|
To display to the customer if creates MMA account |
BillingAddress_state |
string |
|
To display to the customer if creates MMA account |
BillingAddress_country |
string |
sometimes |
iso2 code. - Only required if payment method is detected |
PaymentMethod_paymentReference |
string |
|
eg ***********4242 (if not known can be ***************) |
PaymentMethod_paymentType |
string |
|
["zuora_dd", "zuora_paypal", "zuora_card", "other"] |
PaymentMethod_cardType |
string |
|
["Visa", "MasterCard", "Discover", "AmericanExpress", "Other"] |
PaymentMethod_ExpirationMonth |
string (int) |
|
Credit Card Expiration Month |
PaymentMethod_ExpirationYear |
string (int) |
|
Credit Card Expiration Year |
PaymentMethod_PaymentId |
string |
sometimes |
Zuora Payment Method Id - Only required if payment method is migrated |
PaymentMethod_Type |
string |
|
It’s the Zuora payment type, we currently support: CreditCard (which is the default if not provided) and BankTransfer |
PaymentMethod_AccountName |
string |
|
Complete with BankTransferAccountName from Zuora Payment Method |
PaymentMethod_AccountNumber |
string |
|
Complete with BankTransferAccountNumberMask from Zuora Payment Method |
PaymentMethod_SortCode |
string |
|
Complete with BankCode from Zuora Payment Method |
Comments
0 comments
Article is closed for comments.