Thursday 22 March 2018

Discount Schedule And Contraced Price in CPQ

Mixing Discount schedule and Contracted Price

Consider that there is a Scheduled Discount for a product but wanted to have flat rate of 50% discount for a particular account or partner or  distributor.

The following steps need to be done :

1- Create a new zero percentage discount schedule.
2- Create a new contracted price on the related account.
3- Set the created zero discount schedule on contracted price.
4- Set discount percentage on contracted price.








Order of executing of Price Rules in CPQ


If there is a scenario that there is a dependency between price rule then different evaluation order needs to be used.

Consider that there is scenario that price rule A is populating a result on Quote line that price rule B needs to consume that result in it's own action , the only way to handle this scenario is using a different evaluation order on price rules.

1)Configuration evaluation order on price rule

  • On Initialisation : When quote line editor loads
  • Before Calculation : before the price is calculated
  • On calculation : when price is being calculated
  • After Calculation : applies after price is calculated




Caution: When two Price Rules share the same evaluation event, the earliest-firing Price Action's target field value will not be usable in the Price Condition of the later-firing Price Rule.

 For a given evaluation event, all conditions are evaluated at once. After this, for rules whose conditions have been met, actions then fire sequentially.

 An action from one rule in a given evaluation event cannot influence the conditions of another rule in the same evaluation event.

https://community.steelbrick.com/t5/Prices-Discounts-Knowledge-Base/Price-Rules/ta-p/166

Sunday 18 March 2018

Dynamic Package Product Code in CPQ

If there is a bundle Product, that based on the selected Product Options you would like to create a specific Code, CPQ comes with some default properties in Product and Product Options to achieve this goal.

First of all , consider this is the bundle we are going to create
Also consider the final code is something like SCODE D-C001,B001

Each Product Option come with a Number



This number later on will be used in the Code Pattern of the Bundle.
So , let's go ahead and set those number like 10,20,30.

There is also another property in Product Option called Component code, basically each Product Option has it's own code. Let's go ahead and set all the Product Options code.

After setting all those properties Product Options would be look like this:

Now we can go back to the Bundle Product A and set the Configure Code Pattern as
SCODE {30}-{10},{20}

Great! so you setup everything on the product, Now you need to display this code on Quote line.
In order to bring the generated code to the Quote line , you need to go to Quote Line, Field Sets and  Edit Line Editor


And Add Package Product Code to the Field Set.


Then If you go to Quote and add Bundle Product A to the Quote, you will see the expected generated code based on the configuration of the bundle.

Salesforce CPQ Contracts and Asset Conversion

Let's see what are the items needs to be set in order to create Contracts , Assets and Subscriptions.

It's all started from Opportunity, it means you need to have a Opportunity then having a Primary Quote  for that Opportunity which means doesn't matter how many Quotes links to the opportunity , one of them must be Primary.

Depending on the selected Products in the Quote Lines , we will have different scenarios.

Just imagine we have the Following Products , A , B , C , D


There is an important note here, Contracts only get created for Subscription based products, so if in the Opportunity there is not a subscription product in Opportunity Product , then no contract will be created.

 There is a field in Product called Subscription Type  which can be renewable or One-Time, you need to remember that this field is depending on Subscription Pricing in Product so if Subscription Pricing  is none the value of Subscription Type is not going to effect anything!

Now let's talk about a different scenarios:


Product A and B in Quote

If there are A and B in the quote,  Start Date and Subscription Terms must be set, otherwise we creation of Contract would be failed! Once you set the value for those fields then you can go to the related opportunity and mark is as Contracted. 

Then Contract gets created for the Account, If you look at the contract, only Product A which is the subscription Product will available Subscriptions




Now let's see what happened to the Asset and Subscription in the Account.

As Product A is a Subscription based product  and Asset Conversion is One per Quote Line , so we see one subscription gets created with the selected Quantity in the Quote Line Item(In this example I set two for Quantity for Product A)

Also because Product B is normal product and Asset Conversion is One Per Quote Line, so one Asset also gets created against the Account.(In this example I set two for Quantity in Product B)


So in total in this scenario the following items gets created/

  • one Contract
  • one Asset 
  • one Subscription
Product B and C in Quote
In this scenario since none of the Products is a Subscription Product, then no need to set the  Start Date and Subscription Terms in Quote. So if you just set Contracted in the Quote the Assets get created without a contract.Consider quantity of each product in Quote is two. 

Since Asset Conversion in product C is One Per Unit , We will have one Asset for Product B with Quantity as two and two separated asset for Product C with Quantity as one.


Product B and D in Quote
This scenario is pretty much same as the above scenario but the difference is Product D, Asset Conversion for Product D is None.

So again if we create a Opportunity and Quote and add Product B and D in Quote Line with Quantity of two, then setting the Opportunity as Contracted , we will see only one asset against the account which is for Product B , also no Contract gets created as there is no Subscription Product in Quote.






Saturday 17 March 2018

Product visibility in CPQ Quote Template

As CPQ offers many products model, it also come with so many control over visibility of a product in a quote and it gives the full control to CPQ admin to take advantage of those options.

Product.Hidden
Let's Start from Product, There is a filed called Hidden , If this field is checked , then this product wont be displayed on Quote templates. This is regardless of everything else.

Example: If there is a specific product you would like to hide in all Quote Template, easiest way is to check the Hidden field. Another example would be hiding a bundle product if the company doesn't want to expose their bundles and just want to expose components.

Product Option.Quote Line Visibility
This option gives admin controls over displaying a product option first in the Quote Line Editor which sales people are using, also exposing a specific component(product option) in Quote Template which customer would see or hide it from both and make it visible always.

This is a pick list item with the following values.

  • None
  • Always
  • Editor Only (means Quote line editor)
  • Document Only
  • Never



Example: If there is a bundle and you don't want to expose its components to the customer then you can go to product options of the bundle and the the Quote Line Visibility to Editor Only, which means sales people can only see that component in the Quote Line Editor Configuration of the bundle.




Quote Template. Hide Component Products
This is a handy property in the quote template, to hide all components of a bundle in the quote templates. Maybe there is a scenario that you would like to hide bundles component in a specific quote template(s) only and display in others.



Quote Template. Show All package product
If all package products needs to be printed regardless of their value. Otherwise only package products with non-zero values would be printed.

Quote Template. Show Bundle Products
If there is a scenario that a company set up product bundles with some product options , then you only want to display bundles in Quote Template then check this property and all product options would be hidden in the quote templates.




Sunday 11 March 2018

Merge Fields in CPQ Quote Terms

Merge fields are available on Quote terms , this can be used if couple of properties that needs to be displayed dynamically in quote terms.

If data is coming from CPQ Quote, then
{!quote.SBQQ__MyProperty__c}



This is a wrong format
{!SBQQ__quote_c.SBQQ__MyProperty__c}


Apart from quote , template , primaryContact, salesRep are also available.(They are case sensitive)


  • {!quote.SBQQ__MyProperty__c}
  • {!primaryContact.Name}
  • {!salesRep.Name}
  • {!template.MyProperty__c}



So in order to access primary contact on quote, this format also doesn't work

{!Quote.primaryContact.Name}

If you need to use Static Variables, the format is
 {!Text.YourVariableName}

Product Option - Apply immidiately


Apply immediately should be selected on the product option which is triggering the event , not the one which is receiving it.

Example : If there is a product option called "Printer"  and when this product option selected in the bundle , "Toner" (another product option in the same bundle) needs to be added (Show & Add), then if this event should happen immediately then on "Printer" Apply immediately needs to be ticked.


CPQ Renewal Opportunity and Forecasting

In order to create Renewal Opportunity which will be used you need to refer to Contract. Contract object has a field called " SBQQ__R...