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?
Can CPQ data be migrated to Revenue Cloud automatically?
What does SBQQ__Subscription__c map to in Revenue Cloud?
How do CPQ bundles map to Revenue Cloud?
Do CPQ twin fields still work in Revenue Cloud?
See how Flosum protects relationships in a CPQ data migration. Book a demo.
Thank you for subscribing




