CPQ Implementation Project – Guide

Introduction
Many folks have asked, “How do we even start our CPQ project?”. This is a great question. It can be daunting to think about all of the things you’re going to need in your system. Here is a guide to help you kick off and run your CPQ implementation project.  Also this:  I like lists.  See below.

Project Budget
The first thing people usually try to define is a budget for the project.  This can be an estimate or a percentage based on the total budget of your department and how much stakeholders want to give to the CPQ project.  It is best to come up with your scope and resources involved and a rough timeline to figure out your budget.

Project Schedule
Is there a business-defined go-live date?  Many times, the business says, “We simply must be quoting with CPQ by the start of next fiscal year.” or something of that nature.  The ideal situation would be to estimate the effort required for each phase/sprint.  Then you can lay this out over time and see where the go-live date lands.

Cast of Characters
Who are your players?  Common resources are:

  • Business Side
    • Project Manager
    • Product/Pricing Expert (Sales Ops Rep or Sales Rep)
    • Finance Rep
    • Sales Managers, VP Finance (For Approval Rule Definition)
  • Implementation Side
    • IT Project Manager
    • CPQ Architect
    • CPQ Developer/Configurer
    • QA Tester

Environments

  • Do you have a Sandbox?  Do you have a QA?  Do you have a Production?  
  • Make sure Orders are enabled in Setup before install. (Setup > Customize > Orders > Orders Settings > Enable Orders
  • Is CPQ installed yet?
  • Make sure the Calculation Service has been authorized after install. (Setup > Installed Packages > Salesforce CPQ > Configure… > Pricing & Calculation Tab > Authorize New Calculation Service Link)

Pre-Discovery Homework!
Before you start the discovery for your project, there is a bunch of homework you can have your users/sponsors/sales department/sales ops do. Here’s a good list to start with.

Current Business Process
Many times during the start of a CPQ project, the implementor goes straight into requirements discovery, asking about products and pricing to start with. This is a common misstep and should be avoided. There are a couple discovery sessions that should be done before we get into this detail. The below two sections should ALWAYS take place before getting into the weeds! It is fun to explore the detail and design out the solution. Be patient! You will get there.

Reverse Quoting Demo
First and foremost, you should hold a session to document the current process of quoting. This is most important and will give lots of detail around what is required for a successful quoting experience. It will also reveal potential areas of improvement. Take very good notes and possibly even make a detailed document for the stakeholders of their current process because, most likely, they do not have any documentation on their current process.

Business Process Discovery
This session should be a discussion of good, bad, and ugly. Ask the users what they’d like to see improve. What are their pain points? Really get them to tell you, bluntly, all that is wrong in their world of their quoting/sales process. Also ask them to say what really works well. What should we not change at all?

Structure of Configuration
CPQ is divided up into a few different areas. These areas can all be worked on at the same time in parallel. The areas are: Products & Pricing (& Discounts), Approvals, Outgoing Documents, and lastly, Contracts. Below, we go into each area in detail. Let’s get into it.

Products
Configuring products is the first step to a successful implementation. But before you configure products, you must know what your products are. Time and time again, we’ve seen projects take double or even triple the time because product definition is a moving target. Make sure your products are defined in concrete before starting your CPQ project. You might not be ready and that’s ok.  When you are ready, make a list of your products!

Note: Products can be defined and configured, for the most part, separately from pricing. Pricing is addressed in the next section.

Product Proliferation & Configuration Attributes
Duplicate products. This is a subject that most businesses have trouble with. They have one product but they create a product record for every permutation of attributes the product could possibly have. Length, width, height, color, weight, subscription term, pricing tier, and service level are all configurable attributes that most often cause product proliferation.

You want to create one single product record which has one or more Configuration Attributes. Later, you can configure rules that look up prices based on the values of your attributes.

Did we make you rethink your entire product definition document? Good. Go redo it. Your implementation team will thank you later.

Bundles & Product Hierarchy
Bundle, Package, Suite, Pile o’ Products.  A bundle can sound like many different things but in the end, it is really a parent Product containing child Product(s).  A bundle can be:

  • Pre-configured to contain specific Products at specific quantities and prices.
  • Wide open to contain a list of potential options and configurable to look as customized as you’d like it.
  • Anywhere in between those two ^^.
  • Containing configurable attributes that may or may not contribute to calculating a price.
  • What do you think your bundles are? Write them down! Make a list.

Product Options
A product option is a CPQ term that means: a product that sits inside this bundle. It could be a required product. It could be an included product (meaning included in the bundle price). It could be a completely optional add-on that adds to the bundle price. What are the options in each of your bundles? Write these down too!

Features
A feature is a CPQ term that means: a way to group product options within a bundle. An example of this would be having a Warranty feature containing all of the warranties you offer. Or a Hardware feature which lists all of the hardware available in this bundle. What are the product groups in each of your bundles? What options sit in each of these features?

Help!  I’m Drowning!
Here is a sample hierarchy document template that can help you define your products and how they relate to each other.

Product Rules
Sometimes you have options that are only required if other options have been selected. Or you might have options that are forbidden if certain other options have been selected. Or you might have options that are selectable based on the values of your configurable attributes. What are those rules?

Subscription Products
A subscription is any product that has a recurring charge that might also be renewed. Sometimes this can be a grey area if you have monthly fees that don’t renew. Or you have a fee that is paid once in the first year of the term and isn’t on the renewal. All of these can be configured. Questions to ask about each product: is this product renewable? Is it priced monthly/yearly and depends on a contract term? Make notes of these next to each of your products.

MDQ Subscription Products
But but but, my subscription might have some sort of ramp up during the term. Someone might want to start with 5 licenses and then increase it another 5 each following year in the term. This is where MDQ steps in. MDQ = Multi-dimensional Quoting. Make sure to record which of your subscription products have this nature to them.

Note: if your parent bundle product needs to be MDQ, you need to create a separate child product for this that sits under the parent product. This will make the parent product’s only purpose be the fact that it is the parent product. It’s a shell that holds all of the meat.

Guided Selling
This term is overused. There is a difference between official Salesforce CPQ Guided Selling and setting up bundle products in a way that guides the Sales Rep in the selling of your products. When people say “Guided Selling”, they usually mean the latter. Salesforce CPQ Guided Selling is an overblown filter. When people do want a filter, we configure filters. I’ve only ever used actual guided selling a handful of times. The good cases are when you have hundreds or thousands of products and need to guide the Sales Rep to the correct product. You have a Quote Process (guided selling process) set up to ask them questions to further whittle down the list of products until they have a small set (or one) to choose from. Another case is when you need to pass information from the answers to questions into the one bundle product that is auto selected after all the questions are answered. This can be useful in select outlier edge cases.

Assets
If you’re coming from another CPQ system or no CPQ system, you probably use Assets in Salesforce.  In CPQ, we use Assets to break out those products that are not subscriptions. Assets are products that are things. Your customer owns them. They pay for the things, you ship the things to them, they use the things. These products are configured to create asset records attached to the customer’s account record. Make note of the products in your list that are assets (not subscriptions).

New Quote Button on Opportunity
This article is a great example of a New Quote button that sits on the Opportunity for ease of creating Quotes that default values.

Quoting by Location
Do you need to assign a location to each product or do your quoting for a parent account but assign quote lines to specific child location accounts? Here’s an example solution for this.

Integration from ERP
Are you planning on having your ERP supply Products?  Do your Products exist in the ERP and you’re wondering how on earth they’re going to get into Salesforce?  Very common question!  We typically use tools like Dell Boomi, DB AMP, or DataLoader.io.  Keep in mind that the amount of Product configuration you want your integration to handle is equal to the amount of Product configuration you’ll need to set up in your ERP.

Pricing
Now that you have your list of products and the hierarchy, you’re ready to price them. Sometimes pricing is straight forward. Each thing has one price. Or pricing is super complex. The price for a product depends on the values of the eight configurable attributes and how long the subscription term is and which options are selected inside it.

Price Books
You probably only need one. Many businesses have multiple price books based on various things. The way to figure out price books is: if two products can be sold on the same quote, they belong in the same price book.

Pricing Methods

Cost Plus Markup/Margin
This pricing method is for when you calculate the list price of your product based on a cost and a markup or target margin.  

Formula to Calculate Price: Cost + (Cost * Markup %)
Formula to Calculate Margin %: (Price – Cost) / Price
Formula to Calculate Markup %: (Price – Cost) / Cost

CPQ has a place to put your cost data.  There is a Cost object sitting in a related list under the Product object.

List Price
This pricing method is for when you have straight price values for your products.  You can use Pricebook Entries for your prices or create Price Rules to inject a price into your quote lines.

Note: You must have a price in the Pricebook you are quoting against for the product you want to quote.  Otherwise, you will not see the product in the list when clicking the Add Products button in the Quote Line Editor.

Tiered Pricing
This is an example of using Price Rules to inject a price into your quote lines.  You will use this when you have a pricing structure based on various pricing inputs.  Most of the time, the input is quantity.  This is for when you have a price per each. The pricing method in CPQ will still be List, which means the price is multiplied by quantity.

Quantity RangePrice
1 – 100$1.00
101 – 500$0.92
501 – 1000$0.87

Block Pricing
This is similar to Tiered Pricing but! Each tier contains the price for the whole lot. The price will not be multiplied by quantity.

Note: Opportunity Products will always show a quantity of 1 for these products.

Quantity RangePrice
1 – 100$100.00
101 – 500$460.00
501 – 1000$870.00

Interruption! Discounts!
Let’s pause a minute on pricing methods to discuss discounts! Ask yourself if your sales reps will be discounting discretionally on each line or on the quote as a whole, if at all. There could also be discounts for your partners or favorite customers (Partner Discount field). Is there a discount structure at all? Product specific discounts (Discount Schedule object)? Maybe the above pricing structure is not pricing at all but discounts off of list price. These are the things you should be discussing with Sales Ops to determine discounting. Is the tiered pricing structure actually pricing or do you want to see values in the discount fields?

Resume Pricing Methods… Slab Pricing
In slab pricing, products are sold in groups of set quantities and each group has a flat rate. Once the quantity reaches a specified number, discounts are applied to the product’s list price and sold by the unit. The customer pays each group’s rate and then per unit until they reach their desired quantity.

To set this up in CPQ, we make use of Block Pricing and Discount Schedules.

Here’s a table to show when to choose which pricing and examples:

When to say: Use Case:Example:
Block PricingProducts are sold in groups of set quantities with each group having a flat rate.1-10 units = $25
11-20 units = $45
21-30 units = $85

Scenario A:
Customer buys 9 units, total cost = $25

Scenario B:
Customer buys 15 units, total cost = $45

Scenario C:
Customer buys 27 units, total cost = $85
Block Pricing with Overage RatesProducts are sold in groups of set quantities and each group has a flat rate, but there is an additional charge for units over a specified quantity1-10 units = $25
11-20 units = $45
21-30 units = $85
31+ units = $2 per unit sold above 30

Scenario A:
Customer buys 29 units, total cost = $85

Scenario B:
Customer buys 40 units, total cost = $85 + (10 * $2) = $105
Slab-Block PricingProducts are sold in groups of set quantities and each group has a flat rate, once the quantity reaches a specified number, discounts are applied to the product’s list price and sold by the unit. The customer pays each group’s rate and then per unit until they reach their desired quantity.Unit List Price: $10
1-10 units = $100
11-20 units = $90
21-30 units = $80
31-40 units = 10% slab discount off list price
41+ units = 20% slab discount off list price

Scenario A:
Customer buys 29 units, total cost = $100 + $90 + $80 = $270

Scenario B:
Customer buys 55 units, total cost = $100 + $90 + $80 + (10 x $9) + (15 x $8) = $480
Discount TiersProducts have individual list prices, but discounts are applied, either in a dollar or percent amount, based on the quantity purchased. Product is purchased on a per unit basis.Unit List Price $10
1-10 units = $10 per unit (no discount)
11-20 units = $9 per unit (10% discount)
21-30 units = $8 per unit (20% discount)
31+ units = $7.50 per unit (25% discount)

Scenario A:
Customer buys 29 units, total cost = 29 x $8 = $232

Scenario B:
Customer buys 50 units, total cost = 50 x $7.50 = $375
TieredProducts have individual list prices, but the prices are different based on quantity purchased (or various other criteria such as date, product type, parent product code, etc.) and are multiplied by quantity.Unit List Price: $10
1-10 units = $9 per qty
11-20 units = $8 per qty
21-30 units = $7 per qty
30-9999999 units = $6 per qty

Multi-currency
CPQ definitely handles multi currency. There are some caveats that need to be considered when implementing.

First, enabling multi-currency in your org is a one way thing. There is no undo button. Once enabled, always enabled.

Second, while this will enable you to quote in other currencies, you must make sure to put prices into your pricebooks for all the currencies you wish to quote your products in.

Third, the above second point assumes you have prices in other currencies. If you do not and wish to use USD and a conversion rate to convert your prices, you must put the USD price in all currencies for a given product in your pricebook. You’ll also need to make a custom object to store conversion rates in. Then, make a Price Rule to fetch the conversion rate based on the quote currency, and inject the converted price using the conversion rate and the list price.

Fourth, no, the conversion rates in Salesforce Setup are not available for you to utilize when converting prices with a Price Rule.

I APPROVE! Approvals n’ Things
This is a fun one. There are two types of approvals. Salesforce Standard Approvals and Advanced Approvals. When to use each one?? Gah. This is a good question!

Advanced Approvals: If you need to have different approvals happen at the same time (parallel approvals), you need to surpass one or many of the Salesforce limits on standard approvals.

Standard Salesforce Approvals: If none of the above applies.

Approval Criteria
Make sure to define the rules for your approvals. Break them up into levels!

CriteriaLevel
Discount > 0%, < 10%0, No approval needed.
Discount >= 10%, < 20%1, Manager approval needed.
Discount >= 20%, < 60%2, Director approval needed.
Discount >= 60%3, CFO approval needed.

Hint: This part is normally handled by adding fields to the quote and quote line and creating Price Rules to inject approval level into these new fields.

Approval Routing
This part of your discovery should talk about the WHO of approvals. Which level = which approver? Make a grid (or use the one above) to note who will be the approver.

Hint: They don’t have to be specific people. “Sales Rep’s Manager” is a valid approver. “Sales Rep’s Manager’s Manager” is also valid.

Note: The approver could be different based on product type or product family or sales department or time of day or time of year, etc. It could be anything. This is more advanced and would require further configuration. Make sure to make note of this!

Outgoing Document
Document generation is a big topic when implementing CPQ. How will the quote/proposal/agreement/contract/whatever-you-call-it get from the quote and quote line records to the customer?

The CPQ Document Generation engine is quite versatile and can handle 99.99% of situations. This includes situations where your requirements surpass the capabilities of Quote Template configuration. There is the ability to include custom Template Content which references a visual force page that can be anything.

Make sure to include an example of your current outgoing document so your partner or internal resource, who will be configuring this, knows what you’re aiming for. On this example, identify which parts are dynamic by replacing actual values with notation such as: {!object . field name}. Example: {!quote . Start Date}

Note: If you do choose to write a VF Page to accommodate your document generation requirements, please note that you should not use HTML, but rather, XSL:FO. This is the language that the document engine understands.

Custom Lines Section
There are times when your requirements for your lines section in your template do not fit into what the CPQ doc generator can do. Here is an example of a custom lines section that will get you jump started.

Digital Signing
CPQ integrates nicely with Docusign and other signing tools via Package Configuration. Here is the place to go for integrating Docusign. Here is the place to go for integrating eSignLive.

Contracts
These next few sections do not apply to you if you are not doing subscription products! Skip to the Orders section! If you’re still here, this section describes what you need to know on subscription products!

A contract object record is created when the Contracted checkbox is checked on an opportunity. This is a way to manage your subscriptions after the deal is won. That being said, it does not matter what stage the opportunity is in when you click the contracted checkbox. The system will generate a contract record and attach all subscriptions to it as a related list.

Amendments
An amendment is when you have a subscription product on a contract and the customer wants to change (add licenses to, change quantity on, add products to, remove products from) the contract.

CPQ has built in functionality to accommodate this. Take note of which products could be amended and in what ways they’ll be amended.

Renewals
A renewal is when you have a subscription product on a contract that has a nearing end date and the customer wants to renew. CPQ can be configured to automatedly generate the renewal opportunity and quote. This renewal is your chance to make additional changes to their next contract term. Adding products, changing term length, removing products, adding discounts, adding uplifts, and much more can be applied to renewals. Make note of which products might need to be renewed after each contract term.

Alert! Do your contracts auto renew? There’s a configuration for that! CPQ has the ability to be configured for evergreen contracts that auto renew.

Quote Line Groups
Did you know that Quote Line Groups do not appear in Amendments or Renewals? Your original contract will appear as an ungrouped Quote in both of these. This article and solution resolves this issue.

Orders
Here we talk about orders! Are you going to be tracking orders (after quoting) in Salesforce? Are you implementing Salesforce Billing? Do you need to integrate your CPQ with your other “not salesforce” billing system? Here is the section for you!

There are a few things you can do to get orders going in CPQ. There are a couple checkboxes you will be interested in. “Ordered” checkbox on the opportunity. “Ordered” checkbox on the quote. If one of these boxes is checked, an order will be created for the items on the quote (primary quote if checked on the opportunity).

You can then use this order record to start the billing process whether it be in Salesforce Billing or integrated over to your other billing system.

Automation
There are many things that can be automated with workflows or process builders!

  1. Contract Generation
    Typically this happens on Opportunity Close Win.
  2. Renewal Opportunity Generation
    Typically this happens on Contract Activation.
  3. Renewal Quote Generation
    Typically this happens a specified number of days before the Contract End Date.
  4. Order Generation
    Typically this happens on Opportunity Close Win.
  5. Outgoing Document Draft Watermark on non-Approved Quotes
    Typically this is done when Quote Status is set to anything but Approved.
  6. Outgoing Document Template Choice
    There is the ability to force the user into a specific Quote Template. You can do this for any reason.

Which pieces of automation apply to you?

Self Service CPQ!
Do you have the need for your customers or distributors or partners to do their own quoting? Setting up a self service CPQ community may be the answer for you! The idea is, you set up your CPQ with the above guidance, then expose your CPQ system through a partner community or a customer community. I’ve done this many times for various reasons and it ranges from a simple exposing of your CPQ within the community to a giant custom solution with a custom hyper interactive “cart” VisualForce page that uses CPQ objects in the background that also has automated payment options using a tax engine and payment gateway. You really can go as big and as complex as you like. Keep in mind: the larger and more complex your self service CPQ, the more money you pay and the more time it takes. The most common thing I’ve seen is to get the community and CPQ off the ground and running first, then while your customers are using the OOTB solution, you are implementing the new custom solution. This is a good way to quickly go to market for your customers with a follow up release afterwards.

Integration to ERP/Other System
This is a very wide topic. If you have other systems in your business, you can integrate CPQ objects over there. Usual integrations are:

  1. SFDC Orders => Billing System
  2. SFDC Products <=> ERP System
  3. SFDC Quotes => ERP/Project System

Which systems will you want to integrate?

Legacy Data Migration
Once you have your CPQ implementation all set, you will need to come up with a plan to migrate your old data to the new system. This might be pulling data out of another system or pulling data out of SFDC (maybe the old Quote object) and into the new CPQ setup. Here is an article containing a sample import process. Make note of which data you’ll want to move into the new CPQ system or if a data migration is even necessary.

Production Migration
Now that you have your CPQ implementation done in your sandbox (if you did this directly in production, you can skip this part), you will need to migrate what you configured to your production environment. Here is a brief outline of what a production migration might look like.

Install CPQProductionSFDC
Create Change SetSandboxSFDC
Upload Change SetSandboxSFDC
Validate Change SetProductionSFDC
Deploy Change SetProductionSFDC
Export DataSandboxData Loader
Import DataProductionData Loader
Adjust CPQ Package SettingsProductionManual
Adjust Page LayoutsProductionManual
Adjust Field SetsProductionManual

You might also want to consider using a migration tool such as

Documentation
There are two types of documentation that typically go with a CPQ implementation.

First, there is Sales User Training Documentation. This documentation includes how to execute the quoting process as a whole. You can use this article as an outline for what to include in your “how-to” documentation. Generally, you want to include:

  1. Quoting (Account to Opportunity to Quote)
  2. Adding Products
  3. Configuring Products
  4. Approvals
  5. Document Generation
  6. Document Signing
  7. Close Win Opp
  8. Amendments
  9. Renewals

Second, there is Admin User Documentation. This documentation includes how CPQ is configured. If you create requirements and/or a technical design document, this can be used as the basis for the admin document. You can also use this article as an outline. Generally, you want to include:

  1. Product Configuration (Products, Features, Options, Constraints, etc)
  2. Pricing Configuration
  3. Approval Configuration
  4. Quote Templates
  5. eSignature Configuration
  6. Automation
  7. Production Migration Template
  8. Legacy Data Migration Template

Training
To start every training conversation, I ask the same question: Have you or do you plan on taking an online CPQ training course? Below are some courses you might consider taking to get on the right track managing a CPQ build.

Post Production Support
After you’ve migrated your CPQ implementation to Production, you should really consider retaining your parter to answer any questions or handle any issues that may arise. In my experience, post-prod support lasts anywhere between 2 weeks and 2 months depending on how complex the configuration is. If you are implementing in house, you should plan on deciding how much time to allocate your resources to post-prod support for your CPQ Project.

Conclusion
A CPQ implementation can be super simple or super complex. Every implementation is different and require different amounts of specific attention in the various sections above.

Please do let me know if you have any questions or if you think I’ve left something out! This is surely more than enough information for one plane ride or a full afternoon, but I am happy to give more! Happy quoting!

10 thoughts on “CPQ Implementation Project – Guide

  1. We can accommodate two more CPQ’s features here,

    1. Guided Selling
    2. Portal capability in case of Partner Or Distributor selling

  2. Thank you for providing to us (aspiring CPQ admins) free of charge with this amazing trove of knowledge!!!!

    Is is possible to “correct” the links referenced in this current post. Most of them are broken 🙁
    I would definitely appreciate:
    – Here’s a good list to start with
    – Here is a sample…
    – Here’s an example solution for this.
    – Here is an example of a custom lines section that will get you jump started.

    But my most sought after would be -> This article and solution resolves this issue.

    Thank you in advance

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.