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.
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
The install-base procedure
- Export every active record
Salesforce CPQ:
SBQQ__Subscription__cwith itsContract, filtered to active dates (field reference). Conga:Apttus_Config2__AssetLineItem__cwith active status (object reference). RCA:Assetwith currentAssetStatePeriod. DealHub and Nue: the vendor’s subscription export. - 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.
- 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.
- Load in one pass
Contracts first, then subscriptions or assets. Never split one account’s install base across two loads or two systems.
- 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.
- 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 object | What to migrate | What to skip |
|---|---|---|
SBQQ__Quote__c / SBQQ__QuoteLine__c | Quotes newer than cutoff, status Accepted or Presented, with lines. | Drafts, rejected, expired, older than cutoff. |
Apttus_Proposal__Proposal__c / line items | Proposals newer than cutoff, Accepted or Presented. | ProductConfiguration__c carts — there is one per session, including abandoned ones. |
RCA Quote / QuoteLineItem | Same rule; QuoteLineDetail is not needed in the target. | Superseded amendment quotes. |
| DealHub / Nue quotes | Export 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.
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.
How long would yours take?
Readiness check
Twelve questions about your catalog, pricing logic, approvals and integrations. Returns a timeline range.
Take the check →Object mapper
Where every Salesforce CPQ, Conga, Revenue Cloud Advanced, DealHub and Nue object lands — and what has no equivalent.
Look up an object →3-year cost
Published prices where they exist, labelled estimates where they do not, at your user count.
Open the calculator →Nothing is submitted and no email is asked for — all three run in your browser. 134 public AppExchange reviews are on the reviews page.
See your migration plan
Published timelines by source platform, a fixed implementation fee, and a calculator that labels every estimate.