Skip to main content
Group

Salesforce CPQ

A place to share information and ideas and discuss challenges with Salesforce CPQ

I'm trying to disable the billing trigger for a specific usage type. CPQ uses the standard trigger to roll usages into the usage summary—any suggestions? 

 

I need to diable billing triggers from apex, if usage have type field equals to rebate. we are creating usages using scheduler apex.

3 answers
  1. Jul 14, 3:46 PM

    Hi Subham 

     

    Salesforce Billing's managed package triggers generally can't be selectively disabled from custom Apex. If CPQ/Billing automatically rolls Usage records into Usage Summaries, there isn't a supported API to bypass the trigger for only one Usage Type (such as Rebate). A better approach is to:

    •  Verify whether the managed package provides a custom setting, custom metadata, or feature flag to exclude specific usage types. 
    •  If possible, prevent Rebate usage records from being processed by the Billing engine through configuration rather than trying to disable the trigger. 
    •  If you're creating Usage records in a scheduled Apex job, consider staging the rebate records in a custom object and only creating Billing Usage records for the types that should be summarized. 

    If this behavior isn't configurable, I'd recommend opening a Salesforce Billing support case, as managed package trigger behavior isn't intended to be bypassed from custom Apex. 

     

    Best, 

    Golla

0/9000

I have a use case where a product is discountable, however it can only be discounted to 10%. If a user puts in a Quote line group of 50%, every line can be discounted to 50%, however, the line that contains this specific product, must have its discount capped at 10%

1 answer
  1. Jul 7, 8:31 AM

    Hi @Felix Philip  Yes, this can be achieved in Salesforce CPQ. Solution: Create a Price Rule or Product Rule to validate or automatically cap the discount at 10% for that specific product. This ensures that even if a higher group discount is applied, the product's discount won't exceed the allowed limit. You can also display a validation message to inform users when they enter a discount above 10%, helping maintain pricing policies while still allowing group-level discounts for other products. 

0/9000
2 answers
  1. Jul 7, 8:23 AM

    Hi @Gourav Rathod Yes, this is possible. Add a condition to your Product Search Filter or Product Rule so the bundle is displayed only when the Quote's Account Record Type = "Partner". If the search filter alone doesn't support this logic, use a Product Rule or custom configuration to control the bundle's visibility.

0/9000

I deleted a price rule and attempted to restore it from the recycle bin, some of the selected items were restored but the price rule record and price condition record failed to restore. Please the error encountered below.

 

"An error occurred while trying to update the record. Please try again. SBQQ.PriceConditionAfter: execution of AfterUndelete caused by: System.DmlException: Update failed. First exception on row 0 with id a043X00000ywSZsQAM; first error: FIELD_INTEGRITY_EXCEPTION, There is already an item in this list with the name Field 38: Name: [Name] (System Code) An error occurred while trying to update the record. Please try again. SBQQ.PriceRuleAfter: execution of AfterUndelete caused by: System.DmlException: Update failed. First exception on row 0 with id a043X00000ywSZsQAM; first error: FIELD_INTEGRITY_EXCEPTION, There is already an item in this list with the name Field 38: Name: [Name] (System Code)"

 

FIELD_INTEGRITY_EXCEPTION - Unable to create or edit price rule and unable to access quote lines

 

Now I can't access any quote line, I keep getting the error message below when I click on the Edit lines on quotes.

 

"We could not find the quote record you are trying to access. It may have been deleted by another user, or there may have been a system error. Ask your administrator for help"

 

Quote Line Error.png

 

Kindly assist.

6 answers
0/9000

Hi,    I like to update the one of the field of Quote line group object with the help of Price rule.    I have created the Price rule added all the required conditions for Triggering as well as Look up queries. But for some reason it seems its not working at all.    Below is the explanation for my scenario :    There is a X field on Quote line group object which I like to update. There is one Custom object  named ABC, on which there is one field named 'Y'. I want to update the value of Y field to the X field.

 

There is one to many relationship between Quote to ABC and Quote to Quote line Group.

 

Here is my Price rule :    1. Nothing special selection on Price rule side except field Lookup Object = ABC

 

Price Condition : 

  1. Quote line Group Name = XYZ (For this group name I like to update the field)    Lookup Query :

 

Tested Object = Quote line group  Tested Field = Name (Group Name)  Equals  Lookup Field = Group name (This field belong to ABC object)    Tested Object = Quote line group  Tested Field = SBQQ__Quote__c  Equals  Lookup Field = Quote__c (This field belong to ABC Object)

 

Price Action

 

Target Object = Quote Line Group  Target Field = 'X' 

Source Lookup Field = 'Y'   

As per my understanding my Look up query and Conditions are 100% correct. Still it doesn't update the field. I tried to put hardcode value but still it didn't work.    Does anyone have any idea what wrong I am doing here?   

  @Salesforce CPQ @* Salesforce Revenue Cloud *  @Yogesh Bhange     

4 answers
  1. Mar 6, 2025, 9:33 AM

    Hi @Dhaval Shah, you will need to use QCP for that requirement. I believe that this is due to the fact that the Quote Line Groups can only be referenced after a Save / Quick Save.  

0/9000

I need to add a tax field on the template, I already have the fields created but how do I add them on the template 

Subtotal 

tax 

total

1 answer
  1. Jun 15, 1:56 PM

    Hi @Melissa Driscoll,

     

    If the tax field already exists on your Quote, you can add it to the Quote Template by creating a Template Content or Template Section that references that field. 

     

    If you're trying to display Subtotal, Tax, and Total together at the bottom of the quote, another option is to create custom merge fields or use a custom HTML content block, depending on how your template is configured. 

     

    Are you using the standard CPQ Quote Template, or a custom template with Template Sections and Line Columns?

0/9000

Hello, 

My org currently uses discount schedules with products and price book values completed. They now want to go away from Discount Schedules all together and move to Block Pricing. We use Renewal Method of Uplift and for Amendments we use an Amendment and Renewal Behavior of Latest End Date. 

 

I have not worked at an org where they moved completely off of one to the other. I am trying to understand any gotchyas or things to be aware of. Also, trying understand the best practice for this move and steps to complete. For example, steps to complete: 

 

  1. Add all block price tiers to affected products
  2. Change the Pricing Method to Block from List for those products.
  3. Since we have many discount schedules for each product (based on price book) remove the reference to the product and price book from the current discount schedules.

What happens when we renew or amend with products that used a discount schedule before? What can I do to avoid any pricing issues/errors? How does this or will this affect renewals and amendments?

 

Thank you. 

1 answer
  1. Jun 11, 5:10 PM

    @Ragini Shukla

     

    This is awesome detail. And answers questions that have come up through some digging and thought this week.  

     

    1. Create New Products
      • Should these new products have the same product code? Thinking of billing on current contracts (especially multi-year contracts)
      • We use bundles so that will mean rebuilding all bundles as well. Along with all product rules no matter the type and possbily price rules need to be re-evaluated.
      • How is this handle during the Add Products process? We now have duplicate, for lack of a better word, products. 
      • How is this handled during Amendments when we are doing a rip/replace or adding a new product?
    2. New Sales
      • You mention product selection rules - what do you mean by this statement? That on new sales we say use the product flagged as let's say "new pricing" or one that is not flagged as "legacy"?
      • Can you clarify on what is meant by "deactivation" flags? Is that similar to what I mentioned in the above bullet point?
    3. Amendments
      • What if we are doing an amendment where we are doing a rip/replace and we need to keep historic pricing? Do I need a price rule that somehow says which product to select?
      • If we want to add a new product and adjust the quantity on an old product? How is that handled? You end up with mixed prce models.
    4. Renewals
      • I know in CPQ you can use the "Renewal Product" field to map from an old product to a new product but how accurate is that if there is a bundle for example?
      • How does this mapping work in terms of Multi Year Contracts.

    I think some of my difficulty is how they do contract creation and maintenance here. They have some customization (that I don't know yet how it works) that the time of contracting an order 

    1. New Sales
      1. For a new customer it creates a contract called "Master Agreement" which has the 36 month term (or whatever the term of the contract is. Set via a field on the quote). It does not have any subscriptions tied to it and it is not used during the renewal process.
      2. It also creates a contract called "Subscription Agreement" which is 99% of the time for 12 months and creates the first 12 months worth of subscription within that 36 month contract. It does not create one contract for all three years and it does not create individual contracts for each year. Only the first year.
    2. Renewals
      1. Many Renewals go through an auto renewal process for the second or third renewal so it isn't necessarily being reviewed by a Sales Team. Do we continue that?
        1. At the end (last 90) days of year 1 they create a renewal opp via renewal forecasted that is called a Subscription Renewal opp and then a quote is created like 7 days before the Renewal Date and it auto renews.
        2. Then it does the same process for year 2 and at then the same to create Year 3.
      2. At the end of the third year (last 90 days) the system creates a renewal opp via renewal forecast that they call a Contract Renewal Opportunity. The quote is then generated with quote that has a Contract Term of 36 and a Subscription Term of 12. And once closed begins the process of having a new Master Contract and a new Subscription Contract. How would we handle the pricing switch then if we have to maintain historical pricing until Contract renewal.
0/9000

Hello, 

My new organization uses discount schedules for almost all products. The products could have multiple discount schedules as they are for each price book the product is in. They use a discount amount for each tier. Each year they do a pricing update for their products and for each tier for that product. What is the recommended best practice for updating the Discount Schedule? 

 

Should I create new discount schedules? And if so, when creating the new schedule should I reference the previous discount schedule in the "Original Discount Schedule" field?  

 

Would you just update the current schedule with the new amount? 

 

What happens in terms of Amendments and Renewals? I would assume it uses the new pricing from the discount schedule? 

 

Any help and direction would be appreciated. 

Thank you.

4 answers
  1. Jun 1, 3:21 PM

    @Josh Priem

     

    Hi Josh, 

    I am following up on the question I posted above on May 24th. They now want to go away from Discount Schedules all together and move to Block Pricing. We use REnewal Method of Uplift and for Amendments we use an Amendment and Renewal Behavior of Latest End Date. 

     

    I have not worked at an org where they moved completely off of one to the other. I am trying to understand any gotchya or things to be aware of. Also, trying understand the best practice for this move and steps to complete. For example, steps to complete:

    1. Add all block price tiers to affected products
    2. Change the Pricing Method to Block from List for those products.
    3. Since we have many discount schedules for each product (based on price book) remove the reference to the product and price book from the current discount schedules.

    What happens when we renew or amend with products that used a discount schedule before?  

    Thank you. You are always so helpful.

0/9000

Hello, 

We have a contract and subscriptions with the dates of 7/13/2025 to 7/12/2026. The dates should have been 4/13/2025 to 4/12/2026. Evidently in this org things have traditionally been corrected manually on contracts and subscriptions and I am trying to change that process.  

 

So, I am trying to find the best way to update this contract and the subscriptions. I don't believe (if I remember correctly) use an amendment to back date a contract and Subscriptions. So, trying to understand or get some sort of confirmation that it is a manual adjustment. And if it is manual what needs to be corrected outside the dates (the prorate multiplier should be the same). I do know that we will need to recreate the renewal opportunity that is existing for the new start date of 7/13/2026 as well.  

 

An additional note, this org also creates orders from Quotes and then those Order go to NetSuite. I have a question out t finance to understand the billing implications and what if anything they need from me to make the correction on that side. 

 

Any direction would be great as there will be more contracts in this system with this issue of incorrect dates. 

 

5 answers
0/9000

Hi community, 

 

I’m looking to gather perspectives and best practices on how others are handling 

pull‑forward renewal scenarios in Salesforce CPQ, specifically around ARR baseline accuracy

 

Current Situation

We currently have a multi‑year closed‑won opportunity structured as follows:

 

Contract YearContract Value 

Year 1 | 1,000 

Year 2 | 1,200 

Year 3 | 1,500

 

Based on the final year of the contract, CPQ automatically creates a 

Renewal Opportunity at the end of Year 3 with a base renewal value of 1,500.

This behavior is expected and aligns with standard CPQ renewal logic, which assumes renewal at contract end using the last active ARR.

 

New Scenario: Pull Forward Renewal

The customer now wants to renew early, at the beginning of Year 2, instead of waiting until the end of Year 3.

 

To execute this:

  • The Sales Rep starts the renewal process using the already‑generated renewal opportunity.

Problem Statement

The issue is that the renewal opportunity:

  • Has a default base value of 1,500, derived from Year 3
  • But the renewal is effectively happening in Year 2, where the active contract value is 1,200

This creates a mismatch:

  • ✅ Correct base ARR to renew from: 1,200
  • ❌ CPQ default renewal base: 1,500

As a result:

  • ARR calculations would be overstated
  • Renewal uplift, downsell, or churn metrics would be incorrect
  • Forecasting and revenue reporting would be inaccurate   

     

    Key Question #1

Have you encountered a similar scenario, and what is the best approach to capture the correct flow and ARR change?

Specifically, we want to ensure that:

  • The renewal base value reflects 1,200, not 1,500
  • Net ARR change is calculated as:   

    New ARR – 1,200, not New ARR – 1,500   

     

    Key Question #2

How should we treat Corrections vs Amendments

 in an Opportunity? Should we change the current opportunity, create a new one, create an amended? 

 

Key Question #3

 

How current subscriptions are affected / treated? We create a booking credit opportunity?  

 

Thank you for your time and support!

4 answers
  1. May 16, 2:51 AM

    The other way to solve this (again based on aligned booking policies, finance guidance and how your ERP is integrated to CPQ etc) is to not treat this as a "early renewal" because it is almost a year in advance; rather call it as an upsell with extension of the term. Additional year added during CPQ upsell/ amendment process - no cancelation of line needed but rather just add new line for additional year- you may need bit more customization to extend the existing contract end date and renewal due date on open opportunity.

0/9000