Users generating a Renewal or Amendment can now pull this data from the new Subscription or Asset fields rather than the equivalent Quote Line lookups. As of Summer '16, Salesforce CPQ will attempt to pull data from these Subscription and Asset fields before using the equivalent Quote Line field lookup.
This change in functionality is useful for customers who want to upload asset data (including bundles) from an external system while using Salesforce CPQ amendment functionality to modify bundles, add-ons and upgrades. Pulling asset data from an external system means the generated data will not have quote line lookups. Thus, customers can retrieve the same data from the relevant Asset and Subscription fields.
NOTE: As of Summer '16, this feature only works for:
Asset-based Renewals with Subscriptions are still dependent on Quote Line lookups.
Quote Line fields
This table shows Quote Line fields and existing (pre-Summer '16 release) Subscription/Asset fields that pull equivalent data directly from the Subscription/Asset. For all Subscription/Asset fields listed as NEW FIELD, SteelBrick CPQ has created new Subscription/Asset values that will store the equivalent Quote Line field values on the Subscription/Asset record. These fields are listed in the New SubscriptionCLI Fields and New Asset Fields tables below.
Users with legacy data model (pre-Summer '16) Subscription/Asset records should not delete Quote Line references for any Quote Line field with an equivalent Subscription/Asset field listed in this table as NEW FIELD. These Subscription/Asset fields didn't exist before Summer 16, so deleting the equivalent Quote Line lookup will cause the record to lose data and not function.
| Quote Line Field | Subscription Field | Asset Field |
|---|---|---|
| QuoteLine__c.Dimension__c | Dimension__c | Dimension__c |
| QuoteLine__c.BundledQuantity__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.OptionLevel__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.Bundle__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.Bundled__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.ProductOption__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.OptionDiscount__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.OptionType__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.Number__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.OriginalUnitCost__c | OriginalUnitCost__c | NEW FIELD |
| QuoteLine__c.OptionDiscountAmount__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.SegmentIndex__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.SegmentLabel__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.MarkupRate__c | MarkupRate__c | NEW FIELD |
| QuoteLine__c.MarkupAmount__c | MarkupAmount__c | NEW FIELD |
| QuoteLine__c.UnitCost__c | UnitCost__c | NEW FIELD |
| QuoteLine__c.AdditionalDiscountAmount__c | AdditionalDiscountAmount__c | NEW FIELD |
| QuoteLine__c.Discount__c | Discount__c | NEW FIELD |
| QuoteLine__c.PricingMethod__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.DiscountScheduleType__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.PartnerDiscount__c | PartnerDiscount__c | NEW FIELD |
| QuoteLine__c.DistributorDiscount__c | DistributorDiscount__c | NEW FIELD |
| QuoteLine__c.ListPrice__c | ListPrice__c | NEW FIELD |
| QuoteLine__c.RegularPrice__c | RegularPrice__c | NEW FIELD |
| QuoteLine__c.DiscountSchedule__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.TermDiscountSchedule__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.DynamicOptionId__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.RequiredBy__r.Product__c | NEW FIELD | NEW FIELD |
| QuoteLine__c.Quote__c | N/A | N/A |
| QuoteLine__c.EndDate__c | EndDate__c | N/A |
| QuoteLine__c.Uplift__c | SegmentUplift__c | N/A |
| QuoteLine__c.ComponentSubscriptionScope__c | NEW FIELD | N/A |
| QuoteLine__c.ProductOption__r.RenewalProductOption__c | NEW FIELD | N/A |
| QuoteLine__c.ProductOption__r.RenewalProductOption__r.OptionalSKU__c | NEW FIELD | N/A |
| QuoteLine__c.ProductOption__r.RenewalProductOption__r.OptionalSKU__r.SubscriptionPricing__c | NEW FIELD | N/A |
| QuoteLine__c.Product__c | Product__c | Product2Id |
| QuoteLine__c.Quantity__c, | Quantity__c | Quantity |
| QuoteLine__c.RequiredBy__c | RequiredById__c (this is a Sub/Asset, not a QL) | RequiredById__c / RequiredBySubscription__c / RequiredByAsset__c |
| QuoteLine__c.SegmentKey__c | SegmentKey__c | SegmentKey__c |
New SubscriptionCLI Fields
| Source Field | Type | Destination Field |
|---|---|---|
| QuoteLine__c.BundledQuantity__c | Number(10, 2) | BundledQuantity__c (Original Quantity) |
| QuoteLine__c.OptionLevel__c | Number(5, 0) | OptionLevel__c |
| QuoteLine__c.Bundle__c | Checkbox | Bundle__c |
| QuoteLine__c.Bundled__c | Checkbox | Bundled__c (Package) |
| QuoteLine__c.ProductOption__c | Lookup(Product Option) | ProductOption__c |
| QuoteLine__c.OptionDiscount__c | Percent(3, 2) | OptionDiscount__c (Option Discount (%)) |
| QuoteLine__c.OptionType__c | Picklist | OptionType__c |
| QuoteLine__c.Number__c | Number(5, 0) | Number__c |
| QuoteLine__c.OptionDiscountAmount__c | Currency(10, 2) | OptionDiscountAmount__c (Option Discount (Amt)) |
| QuoteLine__c.SegmentIndex__c | Number(2, 0) | SegmentIndex__c |
| QuoteLine__c.SegmentLabel__c | Text(25) | SegmentLabel__c |
| QuoteLine__c.PricingMethod__c | Picklist | PricingMethod__c |
| QuoteLine__c.DiscountScheduleType__c | Picklist | DiscountScheduleType__c |
| QuoteLine__c.ComponentSubscriptionScope__c | Picklist | ComponentSubscriptionScope__c (Component Percent of Total Scope) |
| QuoteLine__c.DiscountSchedule__c | Lookup(Discount Schedule) | DiscountSchedule__c |
| QuoteLine__c.TermDiscountSchedule__c | Lookup(Discount Schedule) | TermDiscountSchedule__c |
| QuoteLine__c.DynamicOptionId__c | Text(40) | DynamicOptionId__c |
| QuoteLine__c.RequiredBy__r.Product__c | Lookup(Product) | RequiredByProduct__c (Parent Product) |
| QuoteLine__c.ProductOption__r.RenewalProductOption__c | Formula(Text) | RenewalProductOptionId__c |
| QuoteLine__c.ProductOption__r.RenewalProductOption__r.OptionalSKU__c | Formula(Text) | RenewalProductOptionProductId__c |
| QuoteLine__c.ProductOption__r.RenewalProductOption__r.OptionalSKU__r.SubscriptionPricing__c | Formula(Text) | RenewalProductOptionSubscriptionPricing__c |
| QuoteLine__c.Dimension__r.Type__c | Formula(Text) | DimensionType__c |
| QuoteLine__c.ComponentDiscountedByPackage__c | Checkbox | ComponentDiscountedByPackage__c |
New Asset Fields
| Source Field | Type | Destination Field |
|---|---|---|
| QuoteLine__c.BundledQuantity__c | Number(10, 2) | BundledQuantity__c (Original Quantity) |
| QuoteLine__c.OptionLevel__c | Number(5, 0) | OptionLevel__c |
| QuoteLine__c.Bundle__c | Checkbox | Bundle__c |
| QuoteLine__c.Bundled__c | Checkbox | Bundled__c (Package) |
| QuoteLine__c.ProductOption__c | Lookup(Product Option) | ProductOption__c |
| QuoteLine__c.OptionDiscount__c | Percent(3, 2) | OptionDiscount__c (Option Discount (%)) |
| QuoteLine__c.OptionType__c | Picklist | OptionType__c |
| QuoteLine__c.Number__c | Number(5, 0) | Number__c |
| QuoteLine__c.OriginalUnitCost__c | Currency(14,2) | OriginalUnitCost__c |
| QuoteLine__c.OptionDiscountAmount__c | Currency(10, 2) | OptionDiscountAmount__c (Option Discount (Amt)) |
| QuoteLine__c.SegmentIndex__c | Number(2, 0) | SegmentIndex__c |
| QuoteLine__c.SegmentLabel__c | Text(25) | SegmentLabel__c |
| QuoteLine__c.MarkupRate__c | Percent(6,2) | MarkupRate__c (Markup (%)) |
| QuoteLine__c.MarkupAmount__c | Currency(14,2) | MarkupAmount__c (Markup (Amt)) |
| QuoteLine__c.UnitCost__c | Currency(14,2) | UnitCost__c |
| QuoteLine__c.AdditionalDiscountAmount__c | Currency(12,2) | AdditionalDiscountAmount__c (Additional Disc. (Amt)) |
| QuoteLine__c.Discount__c | Percent(9,2) | Discount__c (Additional Disc. (%)) |
| QuoteLine__c.PricingMethod__c | Picklist | PricingMethod__c |
| QuoteLine__c.DiscountScheduleType__c | Picklist | DiscountScheduleType__c |
| QuoteLine__c.PartnerDiscount__c | Percent(3,2) | PartnerDiscount__c |
| QuoteLine__c.DistributorDiscount__c | Percent(3,2) | DistributorDiscount__c |
| QuoteLine__c.ListPrice__c | Currency(12,2) | ListPrice__c |
| QuoteLine__c.RegularPrice__c | Currency(12,2) | RegularPrice__c |
| QuoteLine__c.DiscountSchedule__c | Lookup(Discount Schedule) | DiscountSchedule__c |
| QuoteLine__c.TermDiscountSchedule__c | Lookup(Discount Schedule) | TermDiscountSchedule__c |
| QuoteLine__c.DynamicOptionId__c | Text(40) | DynamicOptionId__c |
| QuoteLine__c.RequiredBy__r.Product__c | Lookup(Product) | RequiredByProduct__c (Parent Product) |
| QuoteLine__c.Dimension__r.Type__c | Formula(Text) | DimensionType__c |
| QuoteLine__c.ComponentDiscountedByPackage__c | Checkbox | ComponentDiscountedByPackage__c |
When Salesforce CPQ performs an amendment or renewal, it now looks at the Asset/Subscription's Number field, which was created after the Quote Line Lookup data model change. If this field is populated, Salesforce CPQ will pull quote line data from the Asset or Subscription record. If the Number field is not populated, Salesforce CPQ assumes the Quote Line was created before the data model change and will pull data from the original Quote Line. Thus, records built using the legacy data model will still function normally.
NOTE: If you want to use these new fields to recreate Quote Lines, you should first set up the same Product in your Salesforce CPQ org and contract it to see the Asset/Subscription record fields that are automatically populated. These will be the minimum fields will be required to recreate the Quote Line if there is no original Quote Line.
000383096

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.