Skip to main content
Grupo

Salesforce CPQ

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

Once invoices are generated, how are you managing payment reminders, dunning, and collections follow-up? Custom Flow/Apex, a third-party AR tool, or still manual chasing in Service Cloud or spreadsheets?  

 

Disclosure: I work on Quick Receivable, an AR automation app for Salesforce. Genuinely curious what teams here are doing post-invoice, not trying to pitch anything. 

 

#Salesforce CPQ & Billing

1 respuesta
  1. 7 sept, 14:44

    We’ve found Flow is fine for basic reminders, but collections gets messy pretty quickly once invoices go overdue in different ways. At that point I’d rather have a proper AR tool handling the follow ups than keep adding more Flow rules or tracking things in spreadsheets.

0/9000

Using Enterprise Edition with CPQ. On a CPQ quote a sales rep pushes a custom button to book the order, which creates a case that moves on to Contracts, then the Sales Order team for entry into the ERP. There is a one-to-one lookup relationship between CQP Quote and Case. On the case, once the Sales Order teams confirms the quote is good, I would like to put a button or a checkbox on the case that runs a flow that goes to the quote and checks the box Ordered, which creates an order. The flow should then get the newly created order and do the same actions that clicking the Activate button does. I suspect it runs the two CPQ Apex triggers, on named OrderTrigger and the other named OrderProductTrigger. The main question is, would this take care of all the things that the order's Activate button does if you select it manually? Any other advice on how to "press the Activate button" via automation rather than manual action?

1 respuesta
  1. 12 ago, 15:03

    Setting the Order Status to Activated should run the triggers and perform the same actions as using the button.  

     

    Note that Order creation runs some async processes that must complete before you Activate. Check the documentation for this. Some of the processes include creating price schedules (if needed) or contracting an amendment (if needed). You may need to build in a delay before triggering activation automatically. There may be some documentation or a knowledge article with more details. 

     

    -Frank 

0/9000

Hello All,

 

We have been working with the CPQ API for some time now, and are only recently leveraging the QCP JavaScript plugin. 

 

What i'm curious about and find odd is that when we do a database insert of quote lines for a quote, and then use the CPQ API to save/calculate the quote within Apex, i'm not seeing any signs that the JavaScript QCP is executing. 

 

So my question for anyone how might be familiar with QCP, does it execute when saving the quote and initiating calculate outside of the Quote Line Editor? 

 

The calculation sequence suggests that the plugin(s) run whenever calculation is initiated, but this isn't what I'm observing. Instead I only see the script execute from directly inside the quote line editor when either Save, Quick Save, and Calculate are clicked.

 

I've also noticed that when a new quote is created on the renewal opportunity which is initiated when the "Renewal Quoted" checkbox is checked on the contract, the plugin JavaScript is executed as the new quote is created. 

 

Thanks for your help.

7 respuestas
  1. 21 nov 2022, 22:22

    Antonio - I just tested this out and was able to update a quote line field with the script outside of the cart.  I tested both the Calculate button on the quote as well as triggering a re-calc by updating a field in the Calculating Fields field set.  In both scenarios, the script ran and I am seeing my desired outcomes (in my case, I am simply updating a quote line text field via the script).

     

    Have you tried all of the methods available with the QCP?  Something has to be getting in the way of the calculate.

0/9000

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 respuestas
  1. 14 jul, 15:46

    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 respuesta
  1. 7 jul, 08:31

    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 respuestas
  1. 7 jul, 08:23

    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 respuestas
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 respuestas
  1. 6 mar 2025, 09:33

    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 respuesta
  1. 15 jun, 13:56

    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 respuesta
  1. 11 jun, 17:10

    @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