Loading

Salesforce CPQ Legacy Data Upload: Configuring Subscriptions and Assets to Support Renewals and Amendments

Fecha de publicación: Jun 26, 2026
Descripción

This article supplements the primary Legacy Data Upload for Salesforce CPQ article, which covers base requirements and general import considerations. The guidance here focuses specifically on data requirements for Renewals and Amendments in an existing org.

Two critical behaviors must be understood before importing:

**Bundle Root ID requirement:** The Root ID field on Subscription and Asset records (`SBQQ__RootId__c`) must be populated with the 18-digit Salesforce ID of the bundle parent's Subscription or Asset record. If this field is missing or incorrect, bundle structure will not be preserved and Renewals or Amendments will fail during creation.

**Amendment pricing behavior:** Amendments pull in the current List Price at the time of amendment creation. To preserve a customer's existing discount, the Additional Discount (percentage or amount) is carried over from the Subscription record and applied to the Amendment Quote. As a result, pricing on an Amendment Quote reflects the current List Price minus the existing Additional Discount from the Subscription, if that discount was included during data load.

 

 

Solución

The following SOQL queries validate that imported records are accurate and properly formatted for Renewal and Amendment support. Replace sample IDs with the actual 18-digit Salesforce IDs from your org. All IDs in query filters must be wrapped in single quotation marks. 

1. Contract

SOQL SELECT Id, AccountId, StartDate, ContractTerm, Status, SBQQ__RenewalPriceBookId__c, SBQQ__AmendmentPriceBookId__c, SBQQ__AmendmentRenewalBehavior__c FROM Contract WHERE Id = '800xxxxxxxxxxxxXXX' 

Use this query to confirm the Contract record includes the correct Pricebook and Amendment/Renewal behavior settings.

2. Subscription – Bundle Parent

SOQL SELECT SBQQ__Account__c, SBQQ__Contract__c, SBQQ__RootId__c, SBQQ__Product__c, SBQQ__Number__c, SBQQ__Quantity__c, SBQQ__RenewalQuantity__c, SBQQ__PricingMethod__c, SBQQ__ListPrice__c, SBQQ__CustomerPrice__c, SBQQ__NetPrice__c, SBQQ__ProrateMultiplier__c, SBQQ__RenewalPrice__c, SBQQ__DiscountScheduleType__c, SBQQ__DiscountSchedule__c, SBQQ__TermDiscountSchedule__c, SBQQ__Bundle__c FROM SBQQ__Subscription__c WHERE SBQQ__Contract__c = '800xxxxxxxxxxxxXXX'

Use this query to verify bundle parent Subscription records and confirm that pricing, quantity, and discount fields are populated correctly.

3. Subscription – Child

soql SELECT SBQQ__Account__c, SBQQ__Contract__c, SBQQ__RootId__c, SBQQ__Product__c, SBQQ__Number__c, SBQQ__Quantity__c, SBQQ__RenewalQuantity__c, SBQQ__PricingMethod__c, SBQQ__ListPrice__c, SBQQ__CustomerPrice__c, SBQQ__NetPrice__c, SBQQ__ProrateMultiplier__c, SBQQ__RenewalPrice__c, SBQQ__DiscountScheduleType__c, SBQQ__DiscountSchedule__c, SBQQ__TermDiscountSchedule__c, SBQQ__Bundle__c, SBQQ__OptionLevel__c, SBQQ__BundledQuantity__c, SBQQ__ProductOption__c, SBQQ__OptionType__c, SBQQ__RequiredByProduct__c, SBQQ__RequiredById__c, SBQQ__ComponentSubscriptionScope__c FROM SBQQ__Subscription__c WHERE SBQQ__Contract__c = '800xxxxxxxxxxxxXXX'

Use this query to verify child Subscription records within a bundle, including option-level, required-by, and component scope fields that define bundle hierarchy.

4. Assets – Bundle Parent

SOQL SELECT AccountId, SBQQ__RootId__c, Product2Id, SBQQ__Number__c, Quantity, SBQQ__PricingMethod__c, SBQQ__ListPrice__c, Price, SBQQ__CombineKey__c, SBQQ__DiscountScheduleType__c, SBQQ__DiscountSchedule__c, SBQQ__TermDiscountSchedule__c, SBQQ__Bundle__c FROM Asset WHERE AccountId = '001xxxxxxxxxxxxXXX' 
 
Use this query to validate bundle parent Asset records and confirm pricing and discount fields are loaded correctly at the account level.
 
 5. Assets – Child
 
SOQL SELECT AccountId, SBQQ__RootId__c, Product2Id, SBQQ__Number__c, Quantity, SBQQ__PricingMethod__c, SBQQ__ListPrice__c, Price, SBQQ__CombineKey__c, SBQQ__DiscountScheduleType__c, SBQQ__DiscountSchedule__c, SBQQ__TermDiscountSchedule__c, SBQQ__Bundle__c, SBQQ__OptionLevel__c, SBQQ__BundledQuantity__c, SBQQ__ProductOption__c, SBQQ__OptionType__c, SBQQ__RequiredByProduct__c, SBQQ__RequiredBySubscription__c, SBQQ__RequiredByAsset__c FROM Asset WHERE AccountId = '001xxxxxxxxxxxxXXX'
Use this query to validate child Asset records within a bundle, including the required-by relationship fields that maintain bundle structure for Assets.
 
 6. Subscribed Assets
 
SOQL SELECT SBQQ__Active__c, SBQQ__AssetRootId__c, SBQQ__ContractId__c, SBQQ__Subscription__c FROM SBQQ__SubscribedAsset__c WHERE SBQQ__ContractId__c = '800xxxxxxxxxXXX'
 
Use this query to confirm that Subscribed Asset junction records correctly link Assets to the corresponding Contract and Subscription records.
 

 

 

 

Número del artículo de conocimiento

000384279

 
Cargando
Salesforce Help | Article