Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

© sf9to5.

com ​ 1

The Unofficial Salesforce CPQ Specialist Study Guide 


 

I wrote this guide based on my own experience studying and passing the Salesforce 
CPQ Specialist exam. Safe harbor - results are not guaranteed. 

**This has been updated to reflect the changes made by Salesforce to exam contents to 
further explain additional sections of the CPQ package. 

For any questions, comments, or requests for a one-on-one study session/walkthrough, 


please contact me at ​[email protected]​. 

Version 2.0 - June 2020 

The exam is broken down into 8 sections based on the ​Salesforce Certification​ page 
provided for the CPQ exam. I will break my guide down based on these topics. 

1. CPQ Platform - 23% 


2. Bundle Configuration - 17% 
3. Pricing - 16% 
4. Quote Templates - 7% 
5. Product Selection - 7% 
6. Order, Contracts, Amendments, and Renewals - 15% 
7. Products - 11% 
8. Approvals - 4% 

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com
© sf9to5.com ​ 2

➔ Product 
◆ Make sure to know that the object is Standard to Salesforce and the API 
name is Product2 
◆ Quantity Editable = TRUE means that the quantity can be edited in the 
Quote Line Editor 
◆ Component = TRUE on the Product record will prevent the Product from 
appearing in the Line Editor 
◆ To allow users to see Product Options in the Configurator, Configuration 
Type = Allowed and Configuration Event = Always on the Product record 
◆ Hidden = TRUE prevents the Product from being seen on the Quote 
Document 
◆ Option Selection Method dictates how the user will view the Bundle: 
● Click gives the user checkboxes for the Options 
● Add gives the user a popup 
◆ Option Layout - None gives the user Sections 
◆ Exclude from Opportunity means the Product will not be transferred to the 
Opp 
◆ SBQQ__ExcludeFromMaintenance__c is the API name for Exclude from 
Percent of Total - this field will exclude the Product from the % of total 
calculations 

 
sf9to5 - Journey of a Salesforce Geek
http://sf9to5.com
© sf9to5.com ​ 3

➔ Product Option 
◆ Know the difference in the Type field of Component, Accessory, and 
Related Product 
● Component - completely dependent, quantity and existence of the 
option 
● Accessory - only dependent on existence as an option 
● Related Product - no dependencies and cannot be on an option with 
Required = TRUE  
● Not selecting an option / None treats the option as a component 
when part of a Feature and as a Related Product the rest of the time 
◆ The unit price on Option will override the price book value 
◆ Quote Line Visibility: Always, Editor only, Document only, or Never (hides 
the option from both the Quote Line and the Quote Document) 
◆ Bundled = TRUE means that it is part of a bundle with a set quantity and a 
zero price (treated as a component for determining the quantity) 
◆ Apply Immediately = TRUE means the changes for the Option will happen 
immediately - this should be used sparingly. The Apply Immediately 
Context is a related drop-down list 

 
◆ Discounted by Package = TRUE applies the discounts from the parent 
down to the option 
◆ Package Product Code (Quote Line) is created via 3 Product Option fields 
● Configured Code Pattern 
● Component Code Position 
● Component Code  
➔ Product Features 
◆ Think of Features as the headers of grouping the Product Options together 
◆ The Features are what make up the sections of a Product Bundle 
◆ Category is a field used that can be used with the Features to construct 
Tabs with Sections 

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com
© sf9to5.com ​ 4

◆ A Discount Schedule at the Product Feature level override the Discount 


Schedule at the Product Level (​specificity​) 
◆ Dynamic Bundles are based on the Feature and can allow for mass 
updates to Products through the Product Code instead of generating 
Options 
➔ Configuration Attributes 
◆ This is a related list on Products 
◆ They have rows and columns - you can only have 3 columns but you can 
have as many rows as you would like 
◆ They can be set to be on top or on the bottom of a Feature 
◆ If no Feature is selected they will be at the top of the page 
➔ Option Constraints 
◆ The Constraining Option is the Option that is in control 
◆ The Constrained Option is the Option being controlled 
◆ Option Constraints say what can and cannot be selected together 
◆ They can be used as replacements for Product Rules when you want to 
include/exclude Options based on 
● Other Options 
● Assets 
● Subscriptions 
● Prior Purchases (use the Check Prior Purchases field marked as 
TRUE) 
◆ Option Constraints override Product Rules 
◆ If you have more than 2 Options that impact a third Option, you can use 
the Grouping functionality (this only works as AND logic) 
◆ Type defines the behavior of the Option Constraint 
● Dependency - requires the constraining option to be selected 
● Exclusion - if the constraining option is selected the constrained 
option will not be selectable 

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com
© sf9to5.com ​ 5

➔ Product Rules 

 
 
◆ Product Rules can be used for setting up Product Selection, displaying an 
Alert (pop up to the user), or to display a Validation Rule to the user 
◆ Type is the field that defines the type of Product Rule it is 
◆ Message is required when using either a Validation rule or an Alert 
◆ Evaluation Events can be as follows (Quote calculated sequencing): 
● Load - when the configuration page loads 
● Edit - when a user selects/deselects an option - this can provide 
real-time information to the user if it is used in conjunction with the 
Apply Immediately flag on the Option 
● Save 
● Always - use sparingly in cases when a real-time notification is 
necessary 
◆ The Error Condition related list acts as a filter for deciding if the rule will 
run 
◆ If Conditions Met is set to Custom then the Advanced formula field should 
be used like this for custom logic that is not only AND or only OR 
◆ The Tested Object field in the Error Condition will be used if you are using 
a Tested field for evaluation 

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com
© sf9to5.com ​ 6

◆ The Tested Field field is a dependent picklist based on the Tested Object 
◆ Summary Variables can be used as part of the Error Condition if you need 
a sum or count of another field 
◆ Custom Lookup Objects can be noted in the Lookup Object field on the 
Product Rule 
◆ Lookup Queries can also look at Configuration Attributes on the Product 
◆ Configuration Rules set a specific Product/Bundle to that Product Rule 
◆ Product Actions dictate what will happen when the Error Conditions are 
met. Options include: 
● Show, Hide, Add, Remove, Enable, Disable 
◆ The Scope of the Product Rule determines where to apply the rule to, 
either: 
● Product, which is inside the Configurator 
● Quote, outside of Configuration for the whole Quote 

➔ Pricing Fields on Product  


◆ Subscription Pricing can be Fixed or Percent of Total 
● If using Percent of Total ensure to fill out the following: 
○ Percent of Total (%), Percent of Total Base, and either 
Include or Exclude from Percent of Total 

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com
© sf9to5.com ​ 7

◆ Subscription Term - this will either be months or days depending on your 


prorate setup 
● This is in conjunction with the Package setting - Subscription Term 
Unit 
◆ Subscription Type - this field determines if the product is a renewable 
product, a one-time product, or a non-renewable product (none) 
● Also used for setting up products as evergreen 
◆ Pricing Method is the type of pricing for that Product. Options are: 
● List - this use the Standard Price Book entry or Custom Price Book 
Entry 
● Block - this uses the Block Pricing related list 
● Cost - This is cost + markup 
● Custom - this can be used to override list price 
◆ In order to use Custom pricing and override list price a combination of 
Price Editable = TRUE and maybe Price Method Editable = TRUE should be 
set 
◆ Another option for overriding list price through injection with a formula, 
you should use the Original Price field instead of List price to avoid 
recursion 
● Discount * Original Price = New List Price 
◆ To use Special Price two fields on the Quote Line Editor must be set 
● Special Price & Special Price Type 

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com
© sf9to5.com ​ 8

➔ Price Books 
◆ Every Product requires a minimum of 1 Standard Price Entry per each 
currency even if the amount is $0.00 
◆ If you will use custom Price Books you must have a matching Standard 
Price Book Entry for each currency 
➔ Cost + Markup 
◆ This is a related list on Product and unlocks the Markup field 
◆ This acts as the list price and works as a Price Book Entry 
◆ Using Cost opens up the Margin field on the Quote LIne and can be used in 
a roll-up summary 
➔ Block Pricing 
◆ This can be used instead of or in conjunction with Discount Schedules 
● This combination is good when you do not want to determine a 
starting price for an Overage Rate 
○ OverageRate is a special field in CPQ that must be created 
using their naming convention in order to reap the benefits 
◆ This sets a flat price based on a set number of units 
◆ This will override the standard calculation of list price * quantity 
◆ For each range of units, you need a block price - this will mean multiple 
lines 
➔ Usage Based Pricing 
◆ Ensure that the following fields are always populated when using this type 
of pricing model: 
● Charge Type 
● Billing Type 
● Subscription Term 
● Billing Frequency  
● Subscription Pricing 
◆ A consumption schedule must exist for usage based pricing to work 
◆ A consumption rate, connected to the consumption schedule is also 
required 
◆ There are two types of consumption rates 
● Flat Fee: This charges a flat amount regardless of the amount 
bought within a particular range 
sf9to5 - Journey of a Salesforce Geek
http://sf9to5.com
© sf9to5.com ​ 9

● Per Unit: This charges by quantity purchased 


◆ Consumption Schedules need to be attached to a usage based product 
◆ Consumption Schedules need to be Active in order to work 
➔ Discount Schedules 
◆ This is a separate object that can be associated with a Product, Product 
Option, or Product Features through its related tables 
◆ Type determines how the discounts will be calculated (% or amount) 
● Range - discounts at the rate based on the tier that the quote 
quantity fall into 
● Slab - is a blended rate of the current tier that the quantity falls into 
and the preceding tiers (keeps the rate for x# of units) 
◆ Aggregation scope determines what level to look at to apply the discount 
● Quote - looks at the total on the quote for the discount 
● Group - looks only at the items in the Quote Line Group 
◆ Cross Products - this will aggregate the total of products or features that 
have the same Discount Schedule 
◆ Cross Orders will look up to the Account at the Assets and Subscriptions 
● Cross Order will only work on quotes that are marked as Primary 
◆ Discount Schedule boundaries are inclusive on the Lower Bound and 
exclusive on the Upper Bound 
➔ MDQ (Multi-Dimensional Quotes) / Segmentation 
◆ This is for subscription products that contain a segment 
◆ Segmentation is set up through the Price Dimensions related list on the 
Product 
◆ MDQ cannot be used on a parent in a bundle 
◆ Product Rules need to be used instead of Product Options with MDQ 
◆ Segment Index - 0 is for Activation Fee, 1 - Year 1, 2 - Year 2…. Etc. 
◆ You must have at least one Year, Month, or Quarter Price Dimension in 
order to have a One-Time Price Dimension 

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com
© sf9to5.com ​ 10

➔ Price Rules 

 
◆ Price Rules are similar in nature to Product Rules, you can use them to 
inject discounts or update pricing based on certain criteria 
● They can also be used to stamp information to either the quote or 
quote line 
◆ Evaluation Event determines when the rule will be evaluated and will run 
◆ If there are multiple Price Actions and one of the updated fields in the 
Price is required for another calculation in the same rule an error will occur 
◆ Price Rules cannot be based on Configuration Attributes 
◆ You can reference a Lookup object on the Price Rule 
◆ Price rules always run in the QLE, they cannot run on the product 
configuration page 
➔ Contracted Pricing 
◆ This is a specific pricing model for a customer set at either the account or 
from the quote 
◆ It can be used with Discount Schedules, Price Rules, or Block Pricing 
◆ The contracted price can either be a dollar amount or a discount 
percentage 
◆ Overlaps are not allowed in Contracted Pricing 
◆ Mark Ignore Parent Contracted Prices as TRUE if you do not want the 
Parent Account contracted pricing model to impact the children accounts 
◆ Contracted Pricing wins over all other pricing options 

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com
© sf9to5.com ​ 11

◆ Contracted Pricing can be set up to be time-sensitive using the Effective 


Date and Expiration Date 
◆ Contracted Pricing can be filtered to work on specific products or product 
families using the filter fields 

➔ Quote Templates 
◆ This is the document that the user will select when they click Preview or 
Generate Document 
◆ The details of this object can control the width, colors, header, and footer 
◆ All colors are written in HEX (e.g. #FFFFFF) 
◆ Any field that you want to be displayed on a Quote Template will need to 
be added to the Quote object (i.e. Account or Opportunity level fields) 
➔ Line Columns 
◆ This is where you set the information that will be displayed in the Line 
Items section of the Quote Document 

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com
© sf9to5.com ​ 12

◆ You can modify the column widths per each individual column, but the end 
result must equal 100% 
◆ You can set up Dynamic Columns / Conditional Fields using a 
combination of the Conditional Print Field picklist on the Line Column and 
the respective field on the Quote object 
◆ The Roll-Up field if marked TRUE will roll up in summary based on what is 
marked on the Quote object 
➔ Template Sections and Sections 
◆ These two items are directly related, Sections is the related list on the 
Quote Template that looks up the Template Section 
◆ Template Sections can be the Header, Footer, Terms, Line Items or 
something custom 
◆ You will need to create a Template Section for each Item 
◆ The Group Field found in the Template Section can be used to group Line 
Items on the quote 
● SBQQ__Group__c is the related field on the Quote Line and Quote 
Line Group 
◆ If you want to have different Line Items sections that display different 
information you can use the Filter fields - you should both include and 
exclude what you want to see/ not see 
◆ Page Break determines where a Page Break will happen, which can be 
Before, After or Both 
◆ Keep with Previous Options is the opposite of Page Break and will try and 
keep the template sections together on the same page even if it means 
breaking up the section itself 
➔ Quote Terms 
◆ Body is the field with the relevant text 
◆ Make sure to make the Quote Terms Active or they will not appear 
◆ Quote Terms can be conditional by using the Term Conditions related list 
◆ If you want to prevent anyone from modifying the Quote Terms set the 
Locked field to TRUE 
◆ Once the Quote Term record has been made be sure to create a 
corresponding Template Section for it 
➔ Additional Documents 

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com
© sf9to5.com ​ 13

◆ Just know that is a related list on the Quote Template and on the 
Template Section 
◆ This is where you can add any additional relevant documents that should 
be attached to the Quote Document 

➔ Contracts, Orders, Amendments, and Renewals 

 
◆ CPQ comes with an out of the box process for handling Contracts, Orders, 
Amendments, and Renewals 
◆ There are two ways to create a Contract, either from an Order or from an 
Opportunity 
◆ There are two ways to generate an Order, either from the Contract or from 
the Quote 
● The Quote must be primary 
◆ After a Contract is created, if an adjustment needs to be made, you can 
use the Amend button on the Contract record 
◆ Clicking the Amend button generates an amendment quote and a new 
amendment opportunity  
● It is important that the amendment opportunity be contracted 
whether through the Opportunity or the Order so that the 
adjustments are reflected on the original contract 
◆ Renewal Forecast on the Contract set to TRUE will auto-create a Renewal 
Opportunity 
◆ Renewal Quoted on the Contract set to TRUE will auto-create a Renewal 
Quote 
◆ Uplift can be applied on a Renewal quote 
➔ Assets and Subscriptions 

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com
© sf9to5.com ​ 14

◆ If there are at least one or more products marked as Subscriptions on a 


Quote and the Contracted field on the Opportunity or Order is marked 
TRUE, a contract will be generated 
● subscriptions lines will be also be generated, one per subscription 
quote line 
◆ If there are at least one more products marked to create Assets and 
Subscriptions on a Quote and the Contracted field on the Opportunity or 
Order is marked TRUE,  
● A contract will be created as well as subscriptions lines and Asset 
records (depending on if it set per line or per unit on the Product) 
for each relevant line item 
◆ If there are only Assets on the Quote and the Contract field on the 
Opportunity or Order is marked TRUE no Contract will be created, only 
Asset lines on the Account will be created 
➔ Field Sets and Fields 
◆ EditLinesFieldSetName is the name you need to use for dynamic field sets
◆ Line Editor is the standard field set name for the Configurator
◆ You can only control field sets via Profiles not roles
◆ There are no page layouts in the Configurator
◆ Package Product Code is a field in the Quote Line Editor made up from
the component fields mentioned earlier
◆ Target Customer Amount is a field used to set a target amount which then
auto define the discounts to get to that amount
➔ Custom Actions
◆ These can be used to set up buttons, menus or separators (Type) on the
Configurator layout that will filter down the options presented to the user
● The filtering is down via the Search Filter related list
◆ Custom Actions can be defaulted on so that the user does not need to
click the button in order for the filter to run, Default = TRUE
◆ Hidden source can be used to hide a field or object from the filter pop-out
➔ Guided Selling

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com
© sf9to5.com ​ 15

◆ A Quote Process is a set of questions that can be used to provide


guidance to the end-user and limit the Products presented to him/her
◆ Process Inputs are the individual questions that make up a Quote Process
◆ There is one Process Input for each question
◆ Process Conditions are conditions placed on the Process Inputs to make
the question flow dynamic
◆ The first Process Condition will typically be on the second question based
on the results of the first question
◆ The Quote Process ID is a field on the Quote object that indicates which
Quote Process should be used
◆ It is recommended to set up a workflow to auto-set the Quote Process ID
field
◆ The field on the Process Input will need twin fields on the Quote Line
➔ Approvals
◆ Standard Approvals are built-in as part of Salesforce
◆ Advanced Approvals is an add-on as part of CPQ+
◆ Standard Approvals only allows one approval process to ever fire and the
order of the process is always sequential
◆ Advanced Approvals allows for multiple processes to fire and allows for
both in parallel and sequential processing
◆ Advanced Approvals has smart approvals to better handle approvals
● It uses field tracking to complete this process
◆ Both approval systems have email notifications when a request is made,
approved, or rejected
➔ Miscellaneous
◆ For localization, to set a text variable the correct syntax is
{!Text.VariableName}
◆ Make sure to go through all objects that can be mapped to each through
twin fields
◆ Typically things to look out for when troubleshooting a quote, you should
make sure that is has a Start Date, a Subscription Term, and that Primary
is marked TRUE for contracting

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com
© sf9to5.com ​ 16

◆ If a Product does not appear, make sure that the Product is marked
Active, that there is a Standard Price Book entry, then make sure there is
a Price Book Entry for whatever currency the Opportunity is in
◆ You cannot have more than one Price Book per Opportunity
◆ There is no standard way for debugging Price Rules
◆ Quote Line wins over Quote and Quote Line Group for Subscription Term
and End Date
◆ Understand the data-migration flow:
https://sf9to5.com/2017/09/28/cpq-data-migration/
◆ Package Settings that are important to know are:
● Prorate Precision
● Multi-Line Delete
● Allow Non-Consecutive Custom Segments

Additional Online Resources 

a. http://www.vandeveldejan.com/tips/for-admins/22-resources-for-passing
-the-salesforce-certified-cpq-specialist-exam 
b. https://rsbsarma.wordpress.com/2017/07/27/salesforce-certified-cpq-sp
ecialist-preparation-resources/ 
c. https://help.salesforce.com/articleView?id=cpq_get_started.htm&type=5 

sf9to5 - Journey of a Salesforce Geek


http://sf9to5.com

You might also like