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:

  1. Navigate to the Product record that you've created for the new SKU
  2. Select the 'Related' tab and scroll down to the Price Books related list
  3. 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:

  1. Navigate to the 'Ignore Prorate Multiplier (ver Spring 20') Price Rule
  2. Select one of the existing Price Condition records and use the Clone button
  3. 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:

  1. Review the Price Rules with the 'Pricing Container - ' prefix to determine which rule will populate your List Price on your Products.
  2. 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.
  3. 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