Resources /
Blog

Salesforce CPQ to Revenue Cloud Data Mapping: An Object-by-Object Guide

Submit your details to get a book

15
Min Read
Resources /
Blog

Salesforce CPQ to Revenue Cloud Data Mapping: An Object-by-Object Guide

Download

Submit your details to get a book

15
Min Read

Salesforce CPQ to Revenue Cloud data mapping means translating the SBQQ managed-package model into the standard transaction, product catalog, pricing, and asset models of Revenue Cloud (formerly Agentforce Revenue Management).

A quote becomes a standard Quote with context-field mappings. Bundles shift from ProductFeature and ProductOption to ProductComponentGroup and ProductRelatedComponent, while CPQ price and product rules are rebuilt in the corresponding Revenue Cloud pricing and configuration frameworks.

Object families at a glance:

  • Quotes and quote lines move to standard Quote and QuoteLineItem, with field movement handled through Context Service mappings and supported twin mapping for some custom-field scenarios.
  • Bundles built from features and options become ProductComponentGroup and ProductRelatedComponent, not a one-to-one copy.
  • Configuration attributes become the Revenue Cloud attribute model, using AttributeDefinition records and Product Classification associations.
  • Product rules and price rules are re-authored by function. Product configuration logic uses Business Rules Engine or Constraint Rules Engine, while CPQ price rules move to pricing procedures and pricing elements. There is no blanket record-to-record migration of rule logic.
  • Discount schedules move into Revenue Cloud discount and pricing structures. The resulting tiers and commercial outcomes still need validation.
  • Subscriptions map to Asset in Customer Asset Lifecycle Management, while ProductSellingModel is created separately from CPQ product selling configuration.
  • Quote templates are rebuilt as Revenue Cloud quote templates in Document Builder.

Salesforce stopped selling CPQ to new customers in March 2025. Existing customers keep full support and can still renew and add users, and Salesforce has not announced an end-of-life date, but new product investment now goes into Revenue Cloud. That is why teams are mapping their CPQ data now, on their own timeline, rather than waiting for a deadline.

This guide starts with a complete object-by-object table, then covers the transforms that are not one-to-one, which is where migrations most often break. For the business case, timing, and phased plan, see the Salesforce CPQ to Revenue Cloud migration hub.

Why CPQ and Revenue Cloud store the same deal differently

Salesforce CPQ is a managed package, with its logic and most of its data in the SBQQ__ namespace. It also syncs with standard objects in restrictive, opinionated ways.

Revenue Cloud uses standard Salesforce transaction objects together with Product Catalog Management, Context Service, and a rebuilt rules and pricing model.

Because the two models are built differently, the move requires re-architecting the data rather than copying it. A field stored on SBQQ__QuoteLine__c has no guaranteed equivalent on QuoteLineItem. A bundle assembled from features and options in CPQ does not appear in Product Catalog Management with the same structure. The data has to be remodeled first, and only then loaded into the new model.

This is not a push-button conversion. Salesforce's current migration guidance points to tools and accelerators for assessment, data extraction, migration automation, and validation, but custom logic and integration remapping still require design decisions. Migration is a build, and the object mapping below is its specification.

The CPQ data model (what you are migrating from)

CPQ structures a deal around a quote header and its lines. The header is SBQQ__Quote__c and the lines are SBQQ__QuoteLine__c. When a quote is divided into sections, lines are organized under SBQQ__QuoteLineGroup__c. Products remain standard Product2 records, with CPQ adding configuration on top.

Configurable products are organized into bundles. Features (SBQQ__ProductFeature__c) provide the grouping, and options (SBQQ__ProductOption__c) are the child products available within those features. An option's minimum and maximum quantity, required status, and dependencies or exclusions are set on the option and its related records. Configuration attributes (SBQQ__ConfigurationAttribute__c) record the picklist-style selections users make during configuration, separately from the components themselves.

Selling logic is split between two rule families. Product rules (SBQQ__ProductRule__c) control validation, selection, alerts, and filtering through error conditions and product actions. Price rules (SBQQ__PriceRule__c) handle pricing through price conditions and price actions. Volume and term discounts live in SBQQ__DiscountSchedule__c, ongoing commercial relationships are stored as SBQQ__Subscription__c, and quote output comes from SBQQ__QuoteTemplate__c and its template content.

Throughout the system, twin fields pass values downstream between objects when their API names match exactly. That is how CPQ keeps related data in sync without explicit mapping.

The Revenue Cloud data model

Revenue Cloud records transactions on standard objects. A quote uses the standard Quote object, with lines stored as QuoteLineItem records. From there, the deal moves through Order and OrderItem and into the asset lifecycle. Context Definitions, including the Sales Transaction Context, map data across transaction flows, and QuoteEntitiesMapping and OrderEntitiesMapping provide explicit sObject mappings. Twin mapping is supported for custom fields in specific cases, but standard-to-standard Product2 to QuoteLineItem twin mapping is not.

Product Catalog Management models the products. Product2 records are classified through ProductClassification, and attributes are defined as AttributeDefinition records and associated through the classification model. Selling terms (one-time, term-defined, and evergreen) are represented by ProductSellingModel and ProductSellingModelOption. Bundles are assembled with ProductComponentGroup and ProductRelatedComponent, and the catalog is structured through ProductCatalog and ProductCategory.

List prices still live on standard PricebookEntry records, while pricing behavior is defined through pricing procedures and pricing elements. Product configuration rules use Business Rules Engine or Constraint Rules Engine depending on complexity, and some dynamic filter scenarios can be remodeled with Product Classification Components. Because these are different target constructs, CPQ logic has to be inventoried and redesigned rather than assumed to migrate record to record.

CPQ to Revenue Cloud object mapping

The table below is the specification. The left column is the CPQ source object in the SBQQ__ namespace, the next is its role in CPQ, then the Revenue Cloud or Salesforce destination, and the final column describes the type of move, so it is clear when a redesign is involved rather than a direct copy.

CPQ object (source, SBQQ namespace) Role in CPQ Revenue Cloud / Salesforce destination Nature of the move
SBQQ__BlockPrice__c Block-price tier PriceAdjustmentSchedule + PriceAdjustmentTier Redesign + validate
SBQQ__ConfigurationAttribute__c Configuration attribute AttributeDefinition + Product Classification attribute associations Redesign under attribute model
SBQQ__ConfigurationRule__c Links configuration logic to a product rule Business Rules Engine / Constraint Rules Engine configuration Rebuild
SBQQ__ContractedPrice__c Account- or contract-specific price ContractItemPrice Remap + validate
SBQQ__Cost__c Product cost CostBook + CostBookEntry Transform
SBQQ__CustomAction__c Custom action in product selection or quote-line flows Flow / Lightning action / Product Discovery customization Reimplement
SBQQ__CustomActionCondition__c Condition controlling a custom action Flow / action visibility / target rule logic Reimplement
SBQQ__CustomScript__c Custom calculator or configuration script Flow, pricing procedures, Apex, or supported extension points as required Reimplement
SBQQ__Dimension__c Multi-dimensional quoting or price dimension Ramp deal segments + Revenue Cloud multi-dimensional pricing Redesign
SBQQ__DiscountCategory__c Discount grouping or categorization Pricing procedures + PriceAdjustmentSchedule structures Redesign
SBQQ__DiscountSchedule__c Volume or term discount schedule PriceAdjustmentSchedule Remap or rebuild + validate
SBQQ__DiscountTier__c Discount tier PriceAdjustmentTier Remap + validate
SBQQ__ErrorCondition__c Product-rule condition Business Rules Engine / Constraint Rules Engine condition logic Rebuild
SBQQ__Favorite__c Saved product favorite No direct record equivalent; recreate saved selections if required Rebuild only if required
SBQQ__FavoriteProduct__c Product within a saved favorite No direct record equivalent; recreate saved selections if required Rebuild only if required
SBQQ__FavoriteShare__c Sharing for saved favorites No direct record equivalent; use target sharing for any rebuilt experience Rebuild only if required
SBQQ__ImportColumn__c Quote-line import column definition No direct record equivalent; rebuild import through Flow, API, or transaction tooling if required Rebuild only if required
SBQQ__ImportFormat__c Quote-line import format No direct record equivalent; rebuild import through Flow, API, or transaction tooling if required Rebuild only if required
SBQQ__LineColumn__c Quote-template line column Document Builder table / column configuration Rebuild
SBQQ__Localization__c CPQ record translation Revenue Cloud localization / Translation Workbench; target varies by object Recreate translations
SBQQ__LookupData__c Lookup data used by CPQ rules Decision tables or Salesforce data used by pricing / rule procedures Remap + validate
SBQQ__LookupQuery__c Lookup logic used by pricing rules Pricing-procedure decision tables / lookup logic Redesign
SBQQ__OptionConstraint__c Bundle dependency or exclusion Constraint Rules Engine / Business Rules Engine Redesign
SBQQ__PriceAction__c Action performed by a price rule Pricing elements / procedure actions Redesign
SBQQ__PriceCondition__c Condition evaluated by a price rule Pricing-procedure conditions / decision tables Redesign
SBQQ__PriceRule__c Price logic Pricing procedures + pricing elements Redesign
SBQQ__PricingGuidance__c Pricing guidance definition Salesforce Pricing procedures, decision logic, and pricing guidance experience as required Redesign
SBQQ__PricingGuidanceTier__c Pricing-guidance tier Pricing decision logic / adjustment tiers as required Redesign
SBQQ__ProcessInput__c Guided-selling input Product Discovery + Screen Flow inputs Rebuild
SBQQ__ProcessInputCondition__c Condition for guided-selling input Screen Flow / Product Discovery conditional logic Rebuild
SBQQ__ProcessInputValue__c Guided-selling input value Product Discovery + Screen Flow data Rebuild
SBQQ__ProductAction__c Product-rule action Business Rules Engine / Constraint Rules Engine action logic Rebuild
SBQQ__ProductAttribute__c CPQ product attribute AttributeDefinition + Product Classification attribute associations Redesign under attribute model
SBQQ__ProductFeature__c Feature group inside a bundle ProductComponentGroup Redesign, not 1:1
SBQQ__ProductOption__c Bundle option or child product ProductRelatedComponent Redesign, not an attribute
SBQQ__ProductRule__c Validation, selection, alert, or filter logic Business Rules Engine / Constraint Rules Engine; some filter scenarios can use Product Classification Components Redesign
SBQQ__Quote__c Quote header Quote (standard) + Sales Transaction Context Transform + field-map
SBQQ__QuoteDocument__c Generated quote document Document Builder-generated quote document / Salesforce file output Rebuild generation + validate
SBQQ__QuoteLine__c Quote line item QuoteLineItem (standard) Remap + revalidate
SBQQ__QuoteLineConsumptionRate__c Quote-line consumption rate QuoteLineRateCardEntry / QuoteLineRateAdjustment Transform + validate
SBQQ__QuoteLineConsumptionSchedule__c Quote-line consumption schedule Quote-line usage configuration + QuoteLineRateCardEntry / QuoteLineRateAdjustment Redesign + validate
SBQQ__QuoteLineGroup__c Grouping of quote lines QuoteLineGroup Remap + validate
SBQQ__QuoteLinePricingGuidance__c Quote-line pricing-guidance result Target pricing results / pricing waterfall; no direct record copy Do not copy 1:1
SBQQ__QuoteProcess__c Guided-selling quote process Product Discovery + Screen Flow Rebuild
SBQQ__QuoteTemplate__c Quote PDF template Document Builder quote template Rebuild
SBQQ__QuoteTerm__c Quote term Document Builder term / content configuration Rebuild
SBQQ__RelatedContent__c Related template content Document Builder content Rebuild
SBQQ__SearchFilter__c Product-search filter Product Discovery qualification / filter logic Rebuild
SBQQ__SearchIndex__c CPQ search-index helper data No migration target; Product Discovery manages target search behavior Do not copy; rebuild / regenerate
SBQQ__SolutionGroup__c Guided-selling solution grouping Product Discovery / Screen Flow grouping Rebuild
SBQQ__SubscribedAsset__c Links subscriptions to assets Asset + AssetRelationship / Customer Asset Lifecycle Management lineage Transform + history validation
SBQQ__Subscription__c Subscription record Asset / Customer Asset Lifecycle Management Transform + history validation
SBQQ__SubscriptionConsumptionRate__c Subscription consumption rate AssetRateCardEntry / AssetRateAdjustment + Rate Management Transform + validate
SBQQ__SubscriptionConsumptionSchedule__c Subscription consumption schedule Usage Management product / asset usage configuration + rate-card structures Redesign + validate
SBQQ__SummaryVariable__c Aggregate variable used by CPQ rules Pricing / rule expressions, context variables, and decision logic Redesign
SBQQ__SummaryVariable__Share Sharing for summary variables No direct target; apply target-object sharing and permissions Reconfigure security
SBQQ__TemplateContent__c Quote-template content block Document Builder content Rebuild
SBQQ__TemplateSection__c Quote-template section Document Builder section / layout structure Rebuild
SBQQ__TermCondition__c Conditional logic for quote terms Document Builder conditional content / target rule logic Rebuild
SBQQ__Theme__c Quote-document theme Document Builder styling / template configuration Rebuild
SBQQ__TimingLog__c CPQ diagnostic timing log No migration target; use target logging / monitoring Do not migrate
SBQQ__UpgradeSource__c Defines supported product or asset upgrade paths Transaction Management swap / upgrade / downgrade actions + asset lineage Redesign
SBQQ__WebQuote__c Legacy web quote Quote (standard) + rebuilt digital experience if required Transform / rebuild
SBQQ__WebQuoteLine__c Legacy web quote line QuoteLineItem (standard) + rebuilt digital experience if required Transform / rebuild

The rows labeled "redesign" and "rebuild" decide whether a migration succeeds. Moving the records is only half the work: their relationships must arrive intact, or the new model will not resolve. A technically successful load is not enough if sales reps can no longer generate accurate quotes, apply pricing rules, or follow the approval workflows that govern complex deals.

The transforms that aren't one-to-one

Most rows in the table are a remap or reload. A handful require re-architecting, and each of those brings a referential-integrity trap. Handle them before touching production.

Bundles become component groups

In CPQ, a bundle is built from features and options: SBQQ__ProductFeature__c groups SBQQ__ProductOption__c records, and each option is a child product. Revenue Cloud uses ProductComponentGroup and ProductRelatedComponent for the same structure.

Salesforce maps Product Option records to Product Related Component records and Product Feature records to Product Component Group records. Minimum and maximum quantities become cardinality on the component relationship. Exclusions, requirements, and validation logic move to Constraint Rules Engine or Business Rules Engine, while dynamic bundle and filter-rule scenarios can use Product Classification Components.

Sequence the load so parent structures and referenced records exist before dependent data arrives, then validate relationship integrity in the target. If the catalog is rebuilt incorrectly, guided selling can present the wrong choices or allow combinations the original CPQ setup prevented, so migrate bundles as business logic rather than as a list of child records.

Configuration attributes become the attribute model

CPQ configuration attributes move into Revenue Cloud's product attribute model. Salesforce maps Configuration Attribute to Product Attribute and documents AttributeDefinition records and Product Classification associations as the core of that model. This is a different mechanism, not a field rename.

The mistake most third-party mappings make is treating attributes and bundle components as the same object family. A configuration attribute is not a bundle option, and a bundle option is not an attribute, so they should not be collapsed into one "product attribute" destination. The attribute model captures choices about a product; the component model captures what a bundle contains.

Product and price rules require redesign

SBQQ__ProductRule__c covers selection, validation, alert, and filtering behavior. In Revenue Cloud, configuration rules are handled through Business Rules Engine or Constraint Rules Engine, and dynamic filter-rule scenarios may use Product Classification Components instead.

SBQQ__PriceRule__c, with its price conditions and price actions, maps to pricing procedures and pricing elements. The pricing architecture and execution model differ from CPQ, so this is a redesign, not a record-to-record copy.

The main risk is starting without a complete inventory of every rule and every reference to custom Apex or a Quote Calculator Plugin. Pricing edge cases that apply only to one region, customer, product family, or transaction type are easy to miss. Price rules often encode years of commercial policy, so recreating them correctly is what keeps quotes accurate after cutover.

Discount schedules become pricing tiers

SBQQ__DiscountSchedule__c stores volume- and term-based discount tables. Revenue Cloud models discount behavior inside its pricing architecture, using PriceAdjustmentSchedule and PriceAdjustmentTier along with other adjustment constructs.

Salesforce classes price books and discount schedules as largely automatable migration components, but the migrated structure still has to be checked against the original commercial outcomes. Do not assume breakpoints and rates carry over without validation, especially where pricing depends on volume, contract term, or usage.

Subscriptions and the install base

SBQQ__Subscription__c does not split into ProductSellingModel and Asset. Salesforce maps SBQQ__Subscription__c to Asset in Customer Asset Lifecycle Management, with the required history chain preserved. ProductSellingModel is created separately from CPQ product selling configuration, such as Product2 subscription pricing and subscription-type settings, and associated with products through ProductSellingModelOption.

Amendment, renewal, cancellation, and asset behavior all depend on that history, so the relationships among migrated transaction and asset records must stay consistent. Salesforce supports more than one asset-migration path, including generating assets from historical orders and creating assets directly, so validate the sequence your chosen strategy requires.

This is the biggest migration-integrity risk. If an asset loses its parent or historical lineage, renewals and amendments can fail after go-live, when they are hardest to fix, and the errors flow on into billing and revenue recognition.

Twin fields require explicit review

CPQ twin fields pass values through an exact API-name convention. Revenue Cloud relies on Context Service mappings, including Sales Transaction Context, QuoteEntitiesMapping, and OrderEntitiesMapping. Twin mapping has not disappeared: Salesforce supports it for custom fields in specific scenarios, but standard-to-standard Product2 to QuoteLineItem twin mapping is not supported through Context Service.

Any downstream process that depended on twin-field behavior, such as reporting, billing, approvals, or integrations, needs a field-by-field review.

Quote templates and documents

SBQQ__QuoteTemplate__c and its template content do not migrate record for record. Revenue Cloud quote templates are built in Document Builder, so rebuild and test the output there as a separate workstream. Test generated documents alongside the underlying quote data, because a correct configuration still produces a poor customer experience if the document shows inconsistent pricing, missing terms, or the wrong products.

How to verify the mapping before loading production data

The mapping above is a hypothesis until it has been tested against real data. Check it in a sandbox, not in production.

Start by seeding a sandbox with a referentially intact subset of real CPQ data, so testing reflects the actual shapes and edge cases your org produces instead of clean sample records. A representative dataset that preserves relationships exposes orphaned-record failures before they reach production. For a step-by-step approach, see Salesforce sandbox seeding.

Load in an order that respects the dependencies of your migration path. ProductClassification and ProductComponentGroup records must exist before dependent classification and component records can reference them, and Quote must exist before its QuoteLineItem records. For Customer Asset Lifecycle Management, preserve the required transaction history and sequence if you generate assets from historical orders.

After each load, reconcile. Compare source and target record counts per object, then spot-check the parent-child relationships that matter most: bundle to component, quote to line, and order or transaction history to asset. Trace a handful of real deals end to end to confirm the lineage holds, and keep a rollback path so an integrity problem can be reversed cleanly rather than repaired by hand in a partially loaded org.

Historical transactional scope is a strategy decision. Salesforce states there is no single correct migration strategy, so decide whether historical CPQ quotes stay in place, coexist as read-only history, or are migrated, based on reporting, compliance, and cutover requirements. Functional testing should then follow how sales reps actually work: simple quotes, complex bundles, guided selling, discounting, approvals, renewals, and price overrides.

How Flosum makes the mapped migration safe

The architect owns the redesign. You rewrite the pricing rules, rebuild the bundles in Product Catalog Management, and recreate the pricing behavior, because no migration tool can determine your commercial intent. Flosum Data Migrator handles the data move, transferring the underlying records while preserving the object graph.

That addresses the integrity risk created by the transforms above. Data Migrator preserves parent-child and cross-object relationships across every migration or seeding job, and it ships prebuilt, relationship-aware seeding templates for complex application layers, including CPQ and Revenue Cloud. With those templates, teams can build and test representative datasets in sandboxes with relationships intact, then reseed on demand as the mapping changes.

Flosum supports the data-migration layer in a full transition, a coexistence model, or a phased cutover. It is not a CPQ tool, and it does not redesign pricing rules, product configuration, or commercial logic. If Revenue Cloud configuration and metadata are deployed alongside the data work, Flosum DevOps can manage that deployment workstream through Salesforce-native, Flosum-hosted cloud, and customer-hosted deployment options.

FAQs

Is Salesforce CPQ end of life?
No. Salesforce CPQ reached end of sale in March 2025, not end of life. Existing customers keep full support and can still renew and add users, and Salesforce has not announced an end-of-life date. New product investment now goes into Revenue Cloud.
Can CPQ data be migrated to Revenue Cloud automatically?
Only in part. Salesforce classes price books and discount schedules as largely automatable, but bundles, product rules, price rules, guided selling, and quote templates have to be redesigned in Revenue Cloud. There is no in-place upgrade, so plan the move as a build with the object mapping as its specification.
What does SBQQ__Subscription__c map to in Revenue Cloud?
Salesforce maps SBQQ__Subscription__c to Asset in Customer Asset Lifecycle Management, with the required history chain preserved. ProductSellingModel is created separately from CPQ product selling configuration and linked to products through ProductSellingModelOption.
How do CPQ bundles map to Revenue Cloud?
Product features (SBQQ__ProductFeature__c) become ProductComponentGroup records and product options (SBQQ__ProductOption__c) become ProductRelatedComponent records. Minimum and maximum quantities become cardinality on the component relationship, and exclusions and requirements move to Constraint Rules Engine or Business Rules Engine.
Do CPQ twin fields still work in Revenue Cloud?
Not in the same way. Revenue Cloud moves field values through Context Service mappings such as Sales Transaction Context, QuoteEntitiesMapping, and OrderEntitiesMapping. Twin mapping is supported for custom fields in specific scenarios, but standard-to-standard Product2 to QuoteLineItem twin mapping is not, so review every field that relied on twin behavior.

See how Flosum protects relationships in a CPQ data migration. Book a demo.

Table Of Contents
Author
Stay Up-to-Date
Get flosum.com news in your inbox.

Thank you for subscribing

Ship Salesforce changes faster
Teams on Flosum report 40% higher development velocity and 75%
fewer merge conflicts.
Free to start  |  No credit card required