Answers - Salesforce Trailblazer Community
Ask Search:
Nathan PratsNathan Prats 

From my understanding, Salesforce CPQ provides the following fields : 
  • ARR
  • ACV (1st Year)
  • MRR
  • TCV
  • NRR
  • Margin (Amt)
  • Margin (%)
Here's the documentation that mentions these fields:
Unfortunately, I don't see any of these fields on the opportunity object after I installed the package. 

Is it just suggested fields or is CPQ supposed to provide these fields ? 
MRR computation, based on quote line items related to the primary quote, would be terrific.


Best Answer chosen by Nathan Prats
Frank ShapiroFrank Shapiro
Hi Nathan,

I'm pretty sure we deprecated those fields and stopped shipping them. The reason is that we found that different customers calculated those values differently and we could not customize them for everyone. I have requested we update our documentation.

Sorry for the inconvenience.

Jacek DarlinskiJacek Darlinski 
We're trying to explore how to migrate legacy (non-CPQ) data into the CPQ data model to ensure  we retain historic visibility. The goal is to migrate order information into contracts and subscriptions, both inactive and active. We're using TalenD and Jitterbit and have the DBD resources available. The problems we're running into are primarily null-pointer exceptions after inserting contracts and subscriptions and trying to attempt an amendment.
Any documents available as to how to insert external data into CPQ and retain functionality?
Best Answer chosen by Jacek Darlinski
Victor ShapiroVictor Shapiro
Hi Jacek,

Here's some information on how to upload legacy data with regards to Renewals and Amendments:
Jennifer O'NeillJennifer O'Neill 
We have customized the Product Selector to save Quote Line items in CPQ.  When the standard user goes to edit the Line item on the Line Editor screen, they receive the following error - Can't update the product subscription type.  Admin profile does not receive this error.  Has anyone seen this before?  Not sure if it was because of the update that happen Tuesday night.  
Best Answer chosen by Jennifer O'Neill
Kai-Uwe WehrsichKai-Uwe Wehrsich
Hello Jennifer,

we faced the same issue after we upgraded to version 216 a week ago. I found the known issue

The current workaround is to add the field "Product Subscription Type" to the quote line and let a system admin update it to a non-empty value. For us this can only be a temporary workaround or we will auto-populate the field in the background with a non-empty value using a workflow rule.

Hope this helps for now.

Leanne ArdleyLeanne Ardley 

I know it's possible to auto-approve a record with standard Approvals, but how can I auto-approve a record with Advanced Approvals? 

Example, a Rep has created a Quote with Product A, which requires approval by management if the discount is over certain thresholds. If the discount is under these thresholds though, they can approve it themselves, that is the Quote is auto-approved. 

Rep Approval 0-10% (A rep can auto-approve a Quote if the discount is 0-10%)
Regional Sales Manager 11-20% (Regional Sales Manager must approve the Quote if the discount is 11-20%)
VP Sales 21-30% (VP Sales must also approve the Quote if the discount is 21-30%)

Ideally, the Rep would ALWAYS submit for approval, no matter what discounts are applied, and it would be approved automatically if it was 0-10%. But as this wasn't working, I also tried to add an Approval Rule in, where the Rep was the approver themselves. I did this with the CreatedBy field on the Quote, and also tried a custom Quote_Creator__c field, but neither of them worked. I got an error in the Preview Approval window stating "Unable to find Approver for Rule ID".

Any help would be greatly appreciated. I would be really surprised/disappointed if this cannot be done in Advanced Approvals, since it can be done in Standard Approvals. 


Best Answer chosen by Leanne Ardley
Leanne ArdleyLeanne Ardley
Opened a Case with a Salesforce and they got back to me with how to do this. All you have to do is Submit for Approval and make sure that your record doesn't meet the conditions of any of the approval rules. If it doesn't, then it will be set to Approved. It's a little confusing in that the Preview Approval page says "No Approval Required", but they said this message cannot be changed. Anyway, thanks Salesforce! 
Nancy GreshamNancy Gresham 

Hi All! Hoping someone can help. :)
When I use the 'Save and Email' button after Generating a Quote Document, the email is related to the Opportunity and not the Quote.  Is there a setting where I can change this?  I'd like the email to be related to the Quote so that the rep doesn't have to remember to change those values.  I'm using a VF email template that pulls values from SBQQ__Quote__c. Thanks so much!

Best Answer chosen by Nancy Gresham
John KnightJohn Knight
Hi Nancy, I'm not a VF expert, but would it work to leave the email related to the opportunity and pull from the primary quote?  Each opp should have only one primary quote related.
Rui FonsecaRui Fonseca 
Hi all,

I have my price book with prices defined with 4 decimal places, given the use case I am working on has products that are priced in cents, such as 18.92 cents ($0.1892).
I have set the CPQ package settings so the unit price scale also matches that setting:
User-added image
However, when selecting a product, the quote line rounds that unit price to 2 decimal places, though displaying the value with 4 decimal places, as shown below, which then results in a wrong calculation of the net price:
User-added image
Has anyone faced such issue? Any help would be highly appreciated!
Many thanks in advance :)
Best Answer chosen by Rui Fonseca
Rui FonsecaRui Fonseca
Hi guys, for everyone's benefit, this is logged as a bug already for Salesforce CPQ Summer '18 v214
Known Issue below:
Mihaela TutescuMihaela Tutescu 
I am trying to add the document name ({!Document.Name}) field in the templates we are generating, but the merge field does not work. 
I used also a custom document name, but without success. 
Does anybody have an idea why the merge field {!Document.Name} is not working?
Best Answer chosen by Mihaela Tutescu
Dustin PenrodDustin Penrod
To add to that, when you're using a merge field you're only pulling fields from the Quote record, or you can use lookup relationships to pull from records to which the Quote is associated (for example, the account). The relationship from Quote to Quote Doc is one to many, and no lookup exists on the Quote to the Quote Document, so this can't be done out of the box. You'd have to fnd a way to store the Quote Doc name onto the Quote record itself. 
Ahmed BajwaAhmed Bajwa 


With the Steelbrick documentation no longer available, I am hoping for some help with the funtionality of this feature. This what it appears to do for us:

In our scenario, we use discount schedules to setup volume pricing and the lookups we typically fill out are the Product and Price books. So each combination of Product/Pricebook has a unique discount schedule, if volume pricing is applicable.

-You can set the Override Behviour to All or Current Tier Only
-This allows users to edit the discount schedule tiers or discounts when in the quote checkout page
-If the user does make changes and saves the discount schedule, a new discount schedule record is created in the background, which has User Defined = TRUE , and the account, quote, quote line and original discount schedule lookup fields are filled appropriately.

Question: Does this newly created discount schedule only apply to this quote? My testing is showing that it applies to all quotes moving forward, regardless of account. Doesn't having the account/quote/quote line lookup set on the discount schedule limit which quotes will get the discount schedule moving forward?

Ideally we would like to have our typical discount schedule apply to all customers, but give the users the ability to override for certain customers/quotes (on a quote by quote basis) and we don't want the override to apply on future quotes or quotes on other accounts.


Best Answer chosen by Ahmed Bajwa
Farah CarlosFarah Carlos
Hi Ahmed,

Steelbrick documentation has moved over to Salesforce. For the Discount Schedule document, please see To answer your question, user defined discount schedule if added via the QLE is expected to only apply to the said quote. The Discount Schedule fields that are populated when a user defines it are SBQQ__Account__c, SBQQ__Quote__c, 
SBQQ__UserDefined__c, SBQQ__OriginalDiscountSchedule__c. I found these fields populated when I tested in my own dev org.
Wendy KwanWendy Kwan 
How do I make this custom field date to display April 1, 2018 instead of 4/1/2018?
I would like to figure out how to write the function in the Custom Field Definition Detail next to SBQQ__Account__r.op2_Original_Contract_Date__c

Any help will be much appreciated.  Thanks!
User-added image
Best Answer chosen by Wendy Kwan
Tom HoffmanTom Hoffman
Not sure if CPQ will let you modify that field if its part of the managed package; if not you could create your own field with a formula like this:

'December')&' '&Day(YourDateField)&', '&Year(YourDateField)

This will give you the Month DD, YYYY format. 
Tina CancinoTina Cancino 
We have installed CPQ  in salesforce production.  We then created a sandbox in salesforce, and CPQ seemed to copy over as per productions configurations except for the edit line process. 

The buttons on the edit lines page are not visible like they are in productions. Has anyone run into this? if so, does it mean I need to uninstall and reinstall CPQ in salesforce sandbox? 
Best Answer chosen by Tina Cancino
April ZhaoApril Zhao
You can also try to execute post-install scripts to see if that will populate the buttons in the line editor.
Setup > Installed Packages > Configure Salesforce CPQ > Additional Settings > Execute Scripts