Legacy Data Import Process

Once you have your CPQ implementation all set, you will have to figure out a process to import legacy data. This could be importing data from another system into SFDC or importing data from another SFDC object (such as the old Quote object) into the CPQ setup.

First, let’s look at a simple general flow for creating legacy data. Usually people want their existing contracts to be in CPQ.

  1. Create new or use existing Opportunities.
    1. Before using existing Opportunities, create a new Legacy Amount field where you do an import of all the Amounts into this new field so that when CPQ takes over your Opp and Amount field, you have the old values to compare to.
  2. Create Quotes and Quote Lines on those Opportunities.
    1. Before importing Quotes, make sure your price rules are not active and you set the Quotes Status field to “Approved” and mark them as Primary.
    2. Before importing Quote Lines, make sure you have the correct products and product structure in mind. If you have bundles, you need to set the Required By field and the Product Option field. And the Option Level field.
  3. Close win the Opportunities.
  4. Check the Contracted checkbox on those Opportunities.

Below is a generic all inclusive data import process. If something does not apply to you, skip it and move on.

  1. Data Identification
    1. Identify Opportunities to duplicate.
      1. Only do this if existing Opportunities do not currently exist or existing Opportunities will be archived.
      2. Add the old Opportunities to the “Archive” step below.
    2. Identify Opportunities with Orders against them.
      1. A special couple imports need to happen for these Opportunities.
    3. Identify existing Opportunities to create current Contracts for.
      1. Identify old Product -> new Product mapping.
    4. Identify existing Opportunities to unsync from SFDC Quotes.
    5. Identify Opportunities to archive after the import process.
      1. Old renewal Opportunities.
      2. Opportunities that have Orders created against them.
  2. Create Import Files
    1. Unsync
      1. Create “Unsync” Opportunity import (Update) file.
        1. ID column = SFDC Opp ID
        2. Synced Quote column = blank
    2. Current Contracts
      1. Create CPQ Opportunity import (Insert) file (if needed).
      2. Create CPQ Quote import (Insert) file.
        1. Primary column = False
        2. Take data from SFDC Quotes.
        3. Take data from Opportunities (that don’t have SFDC Quotes).
      3. Create CPQ Quote Line import (Insert) file.
        1. Only do this if you have SFDC Quote Line Items or there are no Opportunity Products or existing Opportunity Products are not sufficient.
        2. Take data from SFDC Quote Line Items (if they exist).
        3. Take data from Pop Products (that don’t have SFDC Quote Line Items).
      4. Create “Contracted” Opportunity import (Update) file.
        1. ID column = SFDC Opp ID
        2. Contracted column = True
    3. Archive Old Renewals
      1. Create “Archive” Opportunity import (Update) file.
        1. ID column = SFDC Opp ID
        2. Status column = “Archived” -OR- use this file in a “Delete” Data Loader operation.
  3. Data Loader Import
    1. Turn off Price Rules.
    2. Turn off Product Rules.
    3. Set batch size to 1 in Data Loader.
    4. Import (Update) “Unsync” Opportunity import file.
    5. Import (Insert) CPQ Opportunity import file (if needed).
    6. Import (Insert) CPQ Quote import file.
    7. Create CPQ Quote Line import (Delete) file.
      1. Only do this if you have SFDC Quote Line Items or there are no Opportunity Products or the current Opportunity Products are not sufficient.
      2. Export Quote Line IDs with Data Loader.
      3. Import (Delete) CPQ Quote Line import file.
      4. Import (Insert) CPQ Quote Line import file.
    8. Opportunities with Orders
      1. Turn off Triggers in CPQ Package Settings.
      2. Create CPQ Primary Quote import (Update) file.
        1. Primary column = True
        2. Use Success output file from CPQ Quote import (Insert).
      3. Create CPQ “Primary Quote” Opportunity import (Update) file.
        1. Map Primary Quote field value to Primary Quote ids from file above.
      4. Import (Update) CPQ Primary Quote import file.
        1. Validate Opportunity and Opportunity Products
      5. Turn on Triggers in CPQ Package Settings.
    9. Opportunities without Orders
      1. Create CPQ Primary Quote import (Update) file.
        1. Primary column = True
        2. Use Success output file from CPQ Quote import (Insert).
      2. Import (Update) CPQ Primary Quote import file.
        1. Validate Opportunity and Opportunity Products
    10. Import (Update) “Contracted” Opportunity import file.
      1. Validate Contract and Subscriptions
    11. Import (Update) “Archive” Opportunity import file.
    12. Turn on Price Rules.
    13. Turn on Product Rules.

8 thoughts on “Legacy Data Import Process

  1. Hi DP,

    Is there any changes applicable today, to the legacy import process you have given above?
    What are the best options we have other than data loader import.

    Thanks a lot!

    Thanks,
    Rosario

    1. Yes there is a tool called prodly mover! This is the tool I’ve started to use almost exclusively. I’ll be writing an article about that and renaming this one to include “data loader” in the title.

  2. Hi DP, We’ll need to migrate legacy data in CPQ in few month and getting ready.

    Is it OK if we migrate legacy contracts into only CPQ Contracts and subscriptions. Do we need to create Quote/Orders during the migration?

    Also waiting for your prodly artical.

    Thanks,

    1. Hey Gaurang! Yes it is ok to migrate just Contracts and Subscriptions. From there, you will be able to amend and renew as needed. Still working on that Prodly article! It’s been a very busy year so far!

  3. Hi DP,

    We’ll migration legacy subscription data from Siebel to Salesforce CPQ. We’ve decided to create CPQ Contract and subscription records using subscription data from Siebel. We’re following this migration doc salesforce provided.

    https://help.salesforce.com/s/articleView?id=000384279&type=1

    https://help.salesforce.com/s/articleView?id=sf.blng_standalone_orders_proration_multipliers.htm&type=5

    How should we calculate pro-ration multiplier? what logic should we use to calculate for subscription start and end dates. We’ll be using “Calendar Monthly + Daily” PRORATION PRECISION TYPE.

    Really appreciate any help om this.

    1. Hi Gaurang,

      The prorate multiplier has quite a few aspects to it. You can use the table in the link you provided to figure out the formula needed to provide a prorate multiplier that aligns with your proration needs.

      Here is an example.

      Term Unit = Month
      05/23/19 through 05/31/19 = (9 Ă· 31) days
      06/01/19 through 08/31/19 = 3 months
      09/01/19 through 09/30/19 = (30 Ă· 30) days
      Prorate multiplier = (3 + (9 Ă· 31 + 30 Ă· 30)) Ă· 12 = 0.3575

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.