Guide

Quote and subscription data migration: what to move, what to archive, how to reconcile

Two different data sets with two different rules. Quote history is optional: set a cutoff, migrate recent quotes as records, archive the rest as read-only or PDFs. The install base — every active subscription or asset — is not optional: it moves completely, in one pass, and is reconciled per account before cutover, because every renewal after go-live depends on it.

Look up an object →
2
Data sets, 2 rules
12–24 mo
Typical quote cutoff
100%
Install base migrated
1 pass
Never split renewals

Move, archive or leave

  • It is an active subscription, asset or contractMigrate completely, reconcile per account, one pass
  • It is a quote from the last 12–24 monthsMigrate as a record so reps can clone and reference it
  • It is an older quoteArchive as read-only or PDF; do not load it into the new CPQ
  • It is a draft or abandoned quote or cartLeave it

Where the install base lives, by source

Object mapping from Source system to Target install base Figure 1. The install base by source. In-org sources (Salesforce CPQ, Conga) export as records with dates and quantities intact; external sources (DealHub, Nue) export from the vendor platform and need date and quantity validation on the way in. Source systemTarget install baseSBQQ__Subscription__c + ContractSubscription (kuga_sub) / Asset (RCA)moves as-isApttus_Config2__AssetLineItem__cSubscription / Assetmoves as-isDealHub subscription (export)Subscription / AssetrebuildNue subscription (export)Subscription / AssetrebuildSpreadsheet rowsSubscription / Assetrebuild
Moves as-is — standard Salesforce objectRebuild — package-specific, no direct equivalent
Figure 1. The install base by source. In-org sources (Salesforce CPQ, Conga) export as records with dates and quantities intact; external sources (DealHub, Nue) export from the vendor platform and need date and quantity validation on the way in.
Every object, source to target, in one lookup.Open the object mapper →

The install-base procedure

  1. Export every active record

    Salesforce CPQ: SBQQ__Subscription__c with its Contract, filtered to active dates (field reference). Conga: Apttus_Config2__AssetLineItem__c with active status (object reference). RCA: Asset with current AssetStatePeriod. DealHub and Nue: the vendor’s subscription export.

  2. Map the seven fields that matter

    Account, product, quantity, net price, start date, end date, renewal term. Everything else is optional on the first pass.

  3. Validate dates and quantities

    No end date before start date; no zero quantities on active records; no product that does not exist in the new catalog. Fix at source, not in the load file.

  4. Load in one pass

    Contracts first, then subscriptions or assets. Never split one account’s install base across two loads or two systems.

  5. Reconcile per account

    For every account: count of active records and sum of annual value, source vs target. Differences are investigated before cutover, not after.

  6. Prove one renewal

    Generate a renewal opportunity or quote from a migrated subscription in the new CPQ and check dates, quantities and prices against the source.

Quote history: the cutoff rule

Reps use recent quotes to clone and to answer “what did we send them last time”. They rarely need quotes older than the current contract term. Set a cutoff — 12 to 24 months is typical, or the start of the oldest active contract — and migrate quotes newer than it as records with their lines. Everything older becomes a read-only archive: keep the old objects readable for 30–90 days after cutover, export PDFs of signed quotes to the account, then decide about the package.

Source objectWhat to migrateWhat to skip
SBQQ__Quote__c / SBQQ__QuoteLine__cQuotes newer than cutoff, status Accepted or Presented, with lines.Drafts, rejected, expired, older than cutoff.
Apttus_Proposal__Proposal__c / line itemsProposals newer than cutoff, Accepted or Presented.ProductConfiguration__c carts — there is one per session, including abandoned ones.
RCA Quote / QuoteLineItemSame rule; QuoteLineDetail is not needed in the target.Superseded amendment quotes.
DealHub / Nue quotesExport accepted quotes newer than cutoff from the vendor platform.DealRoom activity, drafts.

Load order

Accounts and contacts already exist. Then: products and price books → contracts → subscriptions or assets → quotes → quote lines → orders (if migrated). Loading quotes before the catalog produces lines with no product; loading subscriptions before contracts produces orphans. Use the Bulk API or a data-loader with external-ID upserts so a rerun is safe.

Common questions

Quote data migration — FAQ

All migration questions →

No. Set a cutoff — typically 12–24 months or the start of the oldest active contract — and migrate newer accepted quotes as records. Archive older ones as read-only or PDFs.

Every active subscription, asset or contract line a customer currently holds. Every renewal, amendment and cancellation after go-live starts from it, so a missing record means a missed renewal.

Per account: count of active records and sum of annual value in the source versus the target, then generate one renewal from a migrated record and check dates, quantities and prices.

No. Apttus_Config2__ProductConfiguration__c is the cart; there is one per configuration session including abandoned ones (Conga API reference). Export accepted proposals and their line items instead.

Next step

See your migration plan

Published timelines by source platform, a fixed implementation fee, and a calculator that labels every estimate.