So far, we have learned about configuring products, pricing, and quotes in CPQ. We have also detailed how a sales rep can create an opportunity and progress a deal. When the rep has an understanding of what the customer needs, a quote can be created.
Products are added to the quote and products and bundles are configured as needed. Based on the configuration, discounts, price rules, and product rules can be applied. Once the quote is approved, the quote document can be generated. If we have any external integration for e-signatures, the quote document is automatically sent to the customer for signatures.
Generally, once the document is signed by the customer, the deal will be closed by marking the opportunity as Closed Won. If orders are implemented, they are created now. For all the subscription products that we sold, we need a contract to keep track of which products need to be renewed later. The contract can then be used for future sales transactions. They are also used to facilitate amendments and renewals for the customer.
Contracts capture the subscription products and prices a customer has agreed to and are managed over time as a customer's install base changes.
In this chapter, you will learn about contracts, amendments, and renewals.
A contract will have subscription or asset records based on the type of products on the quote. These products on the quote will be translated to subscriptions if they are subscription products, or assets if they are standalone products. Amendments and renewals ensure continuity across assets and subscriptions tied to the account. All the products that a specific customer has bought can be tracked under the account object in Salesforce.
In this chapter, we will cover the following topics:
Contracts are used to manage subscription products that you have sold to your customers. In Salesforce CPQ, once a deal is completed and an opportunity is marked as Closed Won, a contract can be created.
In this section, we will learn how CPQ creates a contract. We can use the out-of-the-box Contracted checkbox field on opportunities or orders to initiate the contracting process, which will automatically create a contract record. Contracts can be created from either opportunities or orders. Generating contracts from orders is most common because then subscriptions and assets are related to order products and not just opportunity products. If Salesforce Billing is in play, orders must be created and all contracts must be generated from orders. This ensures amendments and renewals are billed correctly to the customer.
When Allow Multiple Orders is set to True in the CPQ package setting, CPQ can create multiple orders to a single quote. Orders can be split by the quote line field or quote line group field.
If orders are implemented, a contract needs to be generated from the order; otherwise, contracts can be generated from opportunities. The contract generated can be used for managing amendments and renewals. Salesforce CPQ can easily handle updates to the products included in the contract by creating amendments. Amending a contract will generate an amendment opportunity and an amendment quote. The process for amendments will follow the same flow as the original sales until the amendment opportunity is marked as Closed Won and it will be linked to the original contract.
Contracts can be renewed when they reach the contract end date. Tracking the contract end date for renewals is a tedious task and CPQ helps to automate this by creating renewal opportunities and renewal quotes. Renewals also help the sales team forecast accurately. When the same process is applied to renewals, a renewal opportunity and renewal quote can be created.
The Renewal Model setting in CPQ package configurations will determine how CPQ tracks the products on your quote. The renewal model can be either Contract Based or Asset Based. If your company sells both non-subscription and subscription products, you need to set this configuration to the Contract Based renewal model, which will help in creating a contract. If your company doesn't sell subscription products, you can set the renewal model to Asset Based. Renewal model setting should be done before creating subscriptions and assets with CPQ. Changing the renewal model after record creation is basically impossible.
Let's look at a simple example where Packt is selling a Packt Pro 13" Laptop (a sample product), which is a non-subscription product, and a Loss and Damage Warranty, which is a subscription product.
The following diagram shows the high-level contract creation process:
A rep has created an account for a customer who is interested in buying products and services from Packt. The sales process has progressed and an opportunity has been created. The customer looked at a few sample quotes and has finally accepted one quote, which is set as the primary, where all the products have been added. The rep has also added complimentary swag to this quote. Finally, the sale is completed and the opportunity status has been set to Closed Won. For the Loss and Damage Warranty, which is a service charged based on the number of years applicable, the quote lines will have a start date and an end date. This has been set up as a subscription product in Salesforce. We can now create a contract for this initial sale.
While creating a contract, the Salesforce CPQ engine looks at the opportunity products and determines whether a subscription or an asset needs to be created. We already learned how to create a subscription product in Chapter 3, Configuring CPQ Products. In this example, let's imagine we have three products on the primary quote that were synced to the opportunity:
Based on this, the CPQ engine will create a subscription line for the Loss and Damage Warranty product, an asset for the Packt Pro 13" Laptop, and complimentary swag will be left, just as a one-time-sale product on the original quote. No record will be created for Swag.
The Asset Conversion field on a product determines whether a product needs to be converted into an asset or not. This field has three possible values:
Important Note
When you contract an opportunity containing a subscription quote line with a quantity of 0, Salesforce CPQ creates a zero-quantity subscription record on the contract.
Unlike asset products, where you can exclude certain products from asset creation, there is no configuration for subscription creation. These subscriptions get created automatically for all the relevant products. When you contract an order or opportunity under the contract-based renewal model, Salesforce CPQ creates a contract record. CPQ creates subscription records for all the subscription products on the quote and asset records for non-subscription products.
When you have percent of total products, subscribed assets are going to be created to link the percent of total subscriptions to the assets they cover. We learned about percent of total product and pricing configuration in Chapter 4, Configuring CPQ Pricing. For example, let's imagine you have a Warranty Extension product set up as a percent of total product based on the total hardware products on the quote. The hardware products will be set up as assets and subscribed assets will be created to link the Warranty Extension to the hardware. A subscribed asset is a related list on a subscription. It is a junction object between the subscription product and the asset.
Contracts contain lookups to subscription records for each subscription quote line. Each account in Salesforce serves as a source of truth for everything that a customer currently possesses and everything that was purchased in the past. A Closed Won opportunity and an associated primary quote contain the details of what was purchased for a specific deal. If you have implemented orders, they will manage post-sales activities, such as shipping, fulfillment, and activations. Orders are also suggested points of integration for external systems and are necessary for Salesforce Billing.
In the following subsections, let's learn how to create a contract from an opportunity and order.
Salesforce CPQ provides out-of-the-box functionality to create contracts from an opportunity to manage subscription products. To configure contract creation from an opportunity, we have a few prerequisites, which are listed as follows:
To demonstrate contract creation, we will manually select the Contracted checkbox and save the record. During actual implementation, this can be set automatically using either a Salesforce flow or Apex automation. For example, you can automatically update the Contracted checkbox to True whenever an opportunity is marked as Closed Won.
The conditions will depend on your business process and when you want a contract record to be created. For this example, a test account, Packt Communications, is used to create an opportunity named Packt Laptop. This opportunity has a primary quote with a few products. One of the sample products is a subscription product. The following screenshot shows an opportunity with products and an associated quote:
As shown in the preceding screenshot, the Contracted checkbox on an opportunity has been selected and the opportunity's Stage property has been set to Closed Won. When this opportunity is saved, the CPQ engine automatically generates a contract with subscription lines and asset records using a future Apex method (contractQuotesDeferred).
As we have one subscription product for our example, Loss and Damage Warranty, the corresponding subscription line is created and attached to the contract. To view the contract, navigate to App Launcher Contract Related. This will display all the subscription lines associated with the contract, as shown in the following figure:
The subscription records contain pricing and date values for each of the subscription products on the quote. By default, the subscription product inherits its start and end dates from the quote line groups' start and end dates. If these are null, then the quote lines' start and end dates will be selected. Next, if the start and end dates are also null, then the quote lines' effective start date and effective end date values will be selected. The subscriptions inherit the values of all other matching quote line fields. This is a waterfall of Quote Line Quote Line Group Quote.
Salesforce CPQ sets a Contract Start Date and a Contract End Date and distributes subscription products based on the Contracting Method quote field. This has two possible values:
Salesforce CPQ provides out-of-the-box functionality to create contracts from an order. It is used to manage subscription products that you have sold. To configure contract creation from an order, we have a few prerequisites:
To create a contract from the order, select the Contracted checkbox in the order and save the record. Salesforce CPQ will generate a contract with subscription lines and assets using a queueable Apex. In order-based contracting, CPQ distributes the subscription products based on the Contracting Method field on the order. This field inherits the By Subscription End Date and Single Contract values from the quote. Even if there are multiple orders, CPQ will attempt to create one contract based on this setting.
Contracting an opportunity or order locks the original quote lines and prevents them from being edited. To edit these quote lines, Salesforce CPQ provides two options:
So far, the contracting process that we have learned about is for Sales Cloud. Contracting for Service Cloud differs from Sales Cloud. Salesforce CPQ has an optional connector package that we can install for Service Cloud. This will help Service Cloud to be more CPQ focused.
For subscription products, this will generate service contracts instead of contracts and contract line items instead of subscriptions. For a percent of non-subscription products, CPQ will create assets, which is the same as for Sales Cloud. For percent of total products, CPQ will create entitlements in place of subscribed assets. Service contracts and service contract line items are the standard objects in Salesforce Service Cloud.
The following table shows the high-level differences in the contract process for Sales Cloud and Service Cloud:
Once the contract is created and activated, if the customer requests any changes to the existing contract, Sales Cloud CPQ amendments can be used. In the next section, let's learn how amendments can be created.
As we all know, changes are inevitable in any business. After a contract gets created, your customers may request changes. Contract amendments are used to add or remove products. Price changes and subscription end date changes must be managed via a cancel and replace amendment.
For example, some requests may be to increase the quantities of existing products or services or buy additional products or services after the initial deal is closed. These changes can be handled in CPQ by creating amendments.
When the customer calls a sales rep, the rep needs to have access to information such as what the customer is currently subscribed to, when their current subscriptions end, whether or not the customer can upgrade to a different level of service, how much the upgrade costs, and where we can track changes to current subscriptions. This is a lot to handle for your sales team without automation. CPQ has built-in functionalities to track all this information on your subscriptions automatically. The account object provides a 360-degree view to the rep.
Amendments are created when a customer needs an upgrade or an add-on. A customer may need amendments typically when there is a need for the following:
When a customer calls to make changes to their existing contracts, CPQ knows what they have already purchased and uses that information to quickly create an amendment quote. The starting point for amendment creation is an existing contract. The following diagram describes the amendment creation process in CPQ:
Let's learn about the standard CPQ amendment process, which can be customized for specific businesses as needed:
We now have an overview of standard CPQ out-of-the-box amendment functionality. Remember this process can be customized as per your business needs.
Important Note
To change the pricing and discount of existing quote lines, cancel the quote lines, which is similar to terminating the contracts by updating the quantity to 0, and re-add the same product, which allows you to change the pricing.
Salesforce Labs provides a free, open source AppExchange product for the cancel and replace functionality. This functionality will cancel the existing contract and create a new one. It will be useful for scenarios where multiple contracts need to be combined and will extend the contract beyond the original term. This is supported only in Salesforce Lightning. The cancel and replace functionality is not supported for percent of total and MDQ products.
The full code base is available in the public GitHub repo: https://github.com/rjhalvorson/cancelAndReplace.
Salesforce administrators can install the cancel and replace package by following these steps:
The cancel and replace functionality is ready to use. To use it, do the following:
Once you have filled in the details, click Continue. Salesforce creates queueable jobs that will perform the necessary steps:
Let's look at the fields that influence the creation of amendments and renewals in a contract. Navigate to App Launcher Contract Salesforce CPQ Amendment Information, as shown in the following figure:
In the preceding figure, you can see the following fields that can be configured:
Let's take an example where Packt is selling a 12-month subscription to their customers. Packt always want to capture a full year of pricing when they are selling the license. Packt initially sold 10 licenses with a 12-month term starting on January 1, 2021. In March, the customer requested an additional five licenses.
The subscriptions on the amendment will inherit the contract end date December 31, 2021. But because we need 12 months for these additional licenses, these amendments need to have an end date of February 28, 2022. To change the end date before creating the amendment, set Disable Amendment Co-Term to True. When the amendments are created with this setting, the amendment quote will be created with a start date of March 1, 2021, and an end date of February 28, 2022. This ensures Packt sold the licenses for a 12-month term. When the original contract comes for renewal on December 31, 2021, CPQ renews all 15 subscriptions in the same renewal quote.
Let's revisit the previous example where the customer bought a Packt Pro 13" Laptop and the related Loss and Damage Warranty. The customer returns after a few months and wants to buy two additional products that Packt is selling, one a Home Security Console, which is a non-subscription product, and the other Home Security Monitoring, which is a subscription product.
The original contract has amendment lines and assets related to the account. As stated, an amendment can be created from either the contract or an opportunity. Many opportunities can relate to one contract. In this example, we are creating an amendment from the contract. To do this, follow these steps:
Clicking the Amend button will open a screen displaying all the existing subscriptions related to the contract, as shown here:
The net total in our example is 0 as we have already charged the customer in the initial quote. The end date is always co-terminated with the contract. It is advised not to change the end date as we want all the lines to be co-terminated at the same time.
We can change the start date and the CPQ prorate functionality will calculate the prices accordingly. CPQ supports a native prorate functionality for amendments. Refer to the prorate multiplier setting configurations in Chapter 8, Configuring CPQ Package Settings, for details on how to set up proration. The following figure shows the QLE with existing subscriptions:
The net total is calculated, but only for the additional quantity, as the original unit has already been paid for. You are also seeing that even though the list price is $100.00, the net total is calculated using CPQ proration and instead of $100.00, the total is $97.22. Also, this is only calculated for the updated quantity, and in this example, it's a quantity of 1.
Navigate to the account and view the asset and contract details. You will notice that the asset records have been created for all the non-subscription products, in this example, for Home Security Console. We see in the following figure that we still have only one contract and CPQ has updated the existing contract with the new subscription lines:
As shown in the preceding figure, SUB-0000009 is the original subscription line. SUB-0000010 is the amendment subscription for the additional quantity. SUB-0000011 is the amendment subscription line for the new subscription product that we have added as part of amendment creation. In the next section, we will discuss amending MDQ products; MDQ quote lines require different treatment than a standard quote line.
In Chapter 4, Configuring CPQ Pricing, we learned how to create an MDQ quote. We also saw that CPQ creates a separate quote line for each segment. When you add an MDQ product and standard product to the same quote, they are separated in the QLE. CPQ allows a rep to make changes to the segmented product using the quote lines drawer. Products can be segmented either monthly, quarterly, or yearly or by a custom term. For products with custom segments, a rep can create the segment start date and end dates in the QLE.
A few considerations about MDQ quoting, contracts, and amendments are as follows:
From the previous discussion, you will realize that amendments and subscriptions become a little complex for MDQ products.
Now that we have learned how to configure and create amendments, we will see how to create renewals in the next section.
As the contract progresses closer to the end date, you may need to renew it. We can extend subscriptions or make changes for up-selling or down-selling. The rep needs to talk to the customer and make sure that the renewals are successful and whether the customer is interested in up-selling the deal. This is again similar to negotiations that take place in the initial sales process, offering discounts for renewals, and up-selling is also common for a few businesses.
Let's learn how Salesforce CPQ creates renewals using the contract-based renewal model. We have a contracted opportunity and the contract has subscription lines with start dates and end dates. Renewals will be created for subscription products and percent of total products.
Important Note
If Preserve Bundle Structure is on, then CPQ will try to recreate the assets, which is a hassle.
The following are the steps to create a renewal:
By selecting this checkbox, you are telling the CPQ engine that there is a renewal that needs to be created. This checkbox can be selected as soon as the initial contract is created so that the forecasting can be accurate. Subscription products are added as renewal opportunity products with the existing pricing information from the original opportunity.
To create these opportunity products, Salesforce CPQ creates a quote in the backend, which is primarily used to sync all the products from a quote to the opportunity and deletes this quote. This is also referred to as the ghost quote, as it is just used to sync the renewal products.
The following figure shows the CPQ out-of-the-box renewal opportunity process:
The reason why these two (a temporary quote to sync the products and the actual renewal quote) are kept separate is to make sure that the renewal quote has all the subscription products in the sales process when the deal gets closer to the renewal date. For example, if the original contract was created for 3 years, there might have been a few new subscription products in these 3 years. If we created the renewal quote as soon as the initial sale was closed, then it will only have the initial sale subscription products.
Also, there might have been amendments that were created on this contract after the end of the original sale, when the deal was closer to renewal. This may happen even though the renewal opportunity has been created with the original subscription products. The renewal quote generated now will have all the contract subscription line items. Technically, the renewal quote should be created when the rep is ready to negotiate with the customer. Then, it follows the same sales process.
Important Note
If your sales rep creates any amendments after the renewal quote creation, then the CPQ out-of-the-box functionality will not sync these new amendment products to the renewal quote. The rep needs to manually sync these amendment products to include them on the renewal quote.
The difference between a renewal quote and an amendment quote is that the renewal quote is exactly the same as a new quote. You can change prices, add discounts, and perform all the actions that can be performed on a new quote and create a new contract.
When you have an asset-based renewal model, you can renew your assets from the account for percent of total products and at least one covered asset. Creating asset-based renewals is much simpler compared to contract-based renewals. The following figure shows the asset-based renewal process:
Let's see the important steps in creating renewals for an asset-based renewal model:
Before creating a sample renewal opportunity using the contract-based renewal model, let's look at the renewal pricing and renewal-related fields on a contract that controls the renewal process.
There is a field called Renewal Pricing Method on the account object that drives the pricing behavior for products on renewals. It can have three values:
Important Note
If contracted prices exist for the defined pricing method, they will be overridden by injecting Special Price with a special price type. CPQ will calculate the additional discount as the discrepancy between regular and customer prices.
A contract has several fields related to renewals that can be used to customize the renewal process. Navigate to App Launcher Contract Salesforce CPQ Information, which will open the screen shown here:
Let's learn about some of the important renewal fields shown in the preceding figure:
There is one more important feature for renewals, which is the ability to swap products while creating renewals. This field is on the product record. Navigate to the Product Renewal Product field. This field is a lookup field to the product. When you set this field, this new product will be considered at the time of renewal, replacing the original product. If this product is part of a bundle, then the renewal product needs to be specified at both the product level and the product option record level.
All of these fields can be set manually but you can automatically update them as needed using a flow or Apex logic. For example, contract activation can automatically set the Renewal Forecasting checkbox to True. These are some of the controls that can be customized as per the business needs.
In this section, we will see how to create a sample renewal opportunity and complete the renewal process using the contract-based renewal model.
Let's revisit the previous example where we created a contract from the initial sale and have an associated amendment. We have one subscription from the initial sale and another from the amendment.
For this example, we will manually select the Renewal Forecast checkbox and save the contract. The CPQ engine will create a renewal opportunity in the backend and the renewal opportunity field on the contract is populated.
The following figure shows the renewal opportunity. It has all the products from the initial contract, including amendments, and is available for all forecasting and pipeline reporting in Salesforce:
Let's imagine that you are nearing the initial contract end date and your rep needs to create a renewal quote. We can create the renewal quote by checking the Renewal Quoted checkbox on the contract manually. We can also have this selected automatically based on the business process. Once the contract is saved with this checkbox selected, a renewal quote is created automatically and set as the primary. Navigate to Quote Edit Lines, which will open the QLE, as shown here:
The renewal quote has all the initial subscription lines and pricing from the original subscriptions. The rep can also update discounts and make changes to this quote like any other new quote.
As the sales process progresses, the renewal opportunity status can be set to Closed Won. Once the deal is closed, the Contracted checkbox can be selected on the opportunity, which will generate a new contract, as shown here:
The new contract starts from the next day after the previous one ends based on the term and the contract end date. If we have added non-subscription products to the renewal quote, the corresponding assets related to the account can be created. New subscriptions are created, with new start and end dates.
So far, you have learned how a typical renewal process works. In the actual implementation, we will often have situations where we need to migrate contracts from a legacy system.
Having multiple contracts is a common scenario in CPQ implementation. One of the use cases is legacy data migration. If businesses have implemented CPQ from the beginning, then all the contracts would have been generated in CPQ. But often we need to migrate data from a third-party system to CPQ and these contracts might have been created differently and may not align with CPQ.
The end dates for each of these contracts might be different. Salesforce CPQ provides a feature to merge all the contracts into one master contract. Refer to Figure 7.16, which has a Renew Contracts button. This button allows you to select all the contracts that need to be merged and decide which one is the master. When you select a particular contract as a master, the end date of that contract is inherited by all the quote lines.
Let's look at one advanced feature available in creating renewals, which is early renewal.
Early renewal is the process of renewing your contract before the end date. Let's see why we might need to perform an early renewal.
Imagine we have already created the renewal quote and the customer has decided to make some changes to the contract and they do not want to wait until the renewal start date to make these changes. They want to make the changes to the contract now and sign for the upcoming renewal. This needs an early renewal. Setting an early renewal is a two-step process:
Also, the customer needs these five licenses on August 17, and they don't want to wait until the renewal date, which is October 17. So, we need to adjust the start date of the renewal quote to the date the customer needs these changes. When we adjust the renewal quote start date, we are double-charging the customer because the customer has already paid for the two licenses as part of the initial renewal and when we backdate the renewal quote to August 17 (2 months earlier), we are charging for all five licenses.
In the next section, let's learn about contracted pricing.
Imagine you have sold a particular product to a customer for $100 and you want to keep that price on hold every time the customer renews the contract irrespective of any price updates in the price book. For this, Salesforce CPQ offers a feature called contracted pricing, which is set at the account level. Contracted pricing will help you to honor the initial deal price. To configure contracted pricing, navigate to App Launcher Account Related Contracted Prices New, which will open the screen shown here:
Let's learn about a few important fields in contracted pricing creation:
When you are setting this up, do not use the Price field as you have different products with different prices and you cannot apply the same price to all the products. It's always advisable to use the Discount field for setting up contracted pricing for a range of products.
While calculating the quote line price, Salesforce CPQ verifies whether your quote line has a contracted price. If it does, then Salesforce CPQ passes that price to your quote line's special price. It then updates the quote line's Special Price Type field to Contracted Price. As a best practice, set only one contracted price per product. If you create more than one, it shows an error when you create a quote. Also, it is preferred to generate a contracted price on a quote rather than the product.
If Generate Contacted Price on a quote is set to True, when you add a product to the quote, the price of the product is added as the contracted price to that customer only. When you set it at the product level, it gets applied to all the quotes, which may throw an error.
Contracted pricing can be inherited through account hierarchy by cascading down the hierarchy. When in conflict, the one set at the lowest level will take precedence. We can set Ignore Parent Contracted Prices at the account level if needed.
You can retrieve the contracted price from an alternate account by creating a ContractedAccountid__c CPQ special field on a quote set as an account lookup or formula so that it stores the ID of the alternate account.
In this chapter, you learned when and how to create contracts, amendments, and renewals. Several use cases can be configured using these out-of-the-box features.
This is a complex functionality in CPQ that will help you configure products for any specific business. Renewals are as important as your initial deals. Creating and negotiating renewals promptly will help generate a lot of revenue by up-selling. You have also learned how the contract-based renewal model helps in managing the recurring relationship with customers after the initial sale. You have also understood how to customize renewals and amendment processes. You have seen how accounts can be a single source of truth for contracts, amendments, and renewals. While CPQ manages all the record-keeping for amendments and renewals, reps can focus on closing more deals.
In the next chapter, you will learn about the CPQ data model and the object relationships for some of the major CPQ objects.
18.117.138.178