CPQ New SKU Request Guide - mvanderlans/mvanderlans GitHub Wiki
Creating Products in Salesforce CPQ
The Product (Product2) object in Salesforce is used to create and manage SKUs for the GitHub Product catalog. A record is created on this object for each SKU that needs to be quoted, configured, and/or contracted in Salesforce.
Below you will find documentation on translating 'SKU Request' issues into functioning Products in CPQ:
SKU Request Issue | CPQ Production Function |
---|---|
Product Name | Maps directly to Product Name 'Name' field |
SKU (Product Code) | Maps directly to the Product Code 'ProductCode' field |
Description | Maps directly to the Product Description 'Description' field |
List Price | To be inserted in the List Price 'UnitPrice' field on the related Price Book Entry record. Reference 'List Price' Section |
Is List Price Editable? | Set Price Editable 'SBQQ__PriceEditable__c' to True/False |
Is Prorated? | Reference 'Proration' Section |
If other than a single standard List Price, provide Pricing details here | Reference 'Additional Price Details' Section |
Is Discountable? | If yes, set SBQQ__Discountable__c to TRUE, else, leave FALSE |
Billing Entity Type | Maps directly to the Billing Entity Type 'Billing_Entity_Type__c' picklist |
Product/SKU Family | Maps directly to the SKU Family 'SKU_Family__c' picklist |
Revenue Play | Maps directly to the Revenue Play 'Revenue_Play__c' picklist |
Offerings Product Area | Maps directly to the Offerings Product Area 'Offerings_Product_Area__c' picklist |
Services Grouping | Maps directly to the Services Grouping 'Services_Grouping__c' picklist |
Is License? | If yes, set Is License 'Is_License__c' to True, else, leave FALSE |
Is Seat? | If yes, set Is Seat 'Is_Seat__c' to True, else, leave FALSE |
Is Renewable? | If yes, set the Subscription Type 'SBQQ__SubscriptionType__c' Picklist to 'Renewable' If no, set the Subscription Type 'SBQQ__SubscriptionType__c' Picklist to 'One-Time' |
Renewal Product | Populate lookup field with Product Name referenced here |
Standalone, Bundle, Add On? | If Standalone or Bundle, set Component 'SBQQ__Component__c' to False If Add On, set Component 'SBQQ__Component__c' to TRUE |
(If Add On) Parent Product | Reference 'Add On Products' Section |
(If Add On) Quantity Guidelines | Reference 'Add On Products' Section |
List Price
All Products in Salesforce need to have a Price Book Entry record associated to them to be usable in CPQ. Without an active Price Book Entry, the Products will not be selectable for a Quote. To create a Price Book Entry for the new SKU:
- Navigate to the Product record that you've created for the new SKU
- Select the 'Related' tab and scroll down to the Price Books related list
- Select the 'Add Standard Price' button. Populate the List Price from the issue in the List Price field. Ensure that Active is TRUE and Use Standard Price is FALSE
Proration
Handling Proration for Products differs depending on the Product Family that the SKU being created falls within.
Professional Services
To prevent a Professional Services SKU from being prorated:
- Set the Subscription Pricing 'SBQQ__SubscriptionPricing__c' to null
- Set the Subscription Type 'SBQQ__SubscriptionType__c' to One-Time
Metered Forecasting
Voiding proration for Metered Forecasting SKUs is handled in a Price Rule. To prevent a Metered Forecasting SKU from being prorated:
- Navigate to the 'Ignore Prorate Multiplier (ver Spring 20') Price Rule
- Select one of the existing Price Condition records and use the Clone button
- On the new record, replace the text in the 'Filter Value' field with the Product Code for the new SKU being created and Save.
Additional Price Details
Certain Professional Services products in the GitHub catalog have dynamic pricing that changes based on the Region, Offering Sub-Type, and/or Catalog Quote Line field values. These products will typically have a $0 List Price in the Price Book Entry and have their List Price managed through Pricing Container 'Pricing_Container__c' records. Each Pricing Container record houses a List Price based on the Region, Offering Sub-Type, and/or Catalog populated on the record. The Pricing Container object has a many-to-one relationship with the Product object, so multiple Pricing Container records can be created for each SKU to house different potential List Prices. To create Pricing Container records for a new SKU:
- Review the Price Rules with the 'Pricing Container - ' prefix to determine which rule will populate your List Price on your Products.
- Based on the Rule required, create new Pricing Container records and populate any of the necessary fields including List Price, Product (Lookup), Region, Catalog, Offering Sub-Type. Ensure that the Active checkbox is set to TRUE.
- Depending on the volume of Pricing Containers needed, these records can be easily data loaded via Inspector. Reference 'Product and Related Object Load Template' link at the bottom of the wiki.
Add On Products
If the Product is an Add On, Product Option records will need to be created to link the SKU to the Parent Product. When configuring the Product Option, the Optional SKU is the Add On Product and the Configured SKU is the Parent Product.
Quantity Guideline Requirements for Add On Products can be solved for within Product Option records:
- A minimum or maximum quantity can defined in the 'Min Quantity' and 'Max Quantity' field respectively
- Edit ability for the Quantity can defined in the 'Quantity Editable' checkbox
- The default Quantity for the Product in the Bundle can defined in the 'Quantity' field
- If the Quantity of the Add On SKU should always match the Quantity of the Bundle Parent, set the 'Type' field to Component
- If the Quantity of the Add On SKU should always be independent of the Bundle Parent, set the 'Type' field to Accessory or Related Product
Product and Related Object Template
Reference the following link for an overview of the fields that can/should be populated for each Product record or related object. This should can be copied as a template and used to data load records which is useful in scenarios for adding more than one SKU. Data Load Template Link