Skip to main content
Featured group

* Salesforce Revenue Cloud *

Welcome! This group is dedicated to your success with Salesforce Revenue Cloud. Join the conversation here to stay up to date on the product, learn best practices, and everything in between. Use this group to review resources, ask questions, help each other, and share experiences. --------------------------------------- This group is maintained and moderated by Salesforce employees. The content received in this group falls under the official Forward-Looking Statement: http://investor.salesforce.com/about-us/investor/forward-looking-statements/default.aspx

We have a product rule set up as follows in Sandbox and Production. Below is the Current Product Rule Configuration.  

 

Product Rule Header: 

  • Type=Selection 
  • Conditions Met = All 
  • Scope = Product 
  • Evaluation Event = Always 
  • Evaluation Order = 10 

Error Condition: 

  • Tested Object = Quote 
  • Tested Field = Boost = True
  • Operator = equals 
  • Filter Type = Value
  •  Filter Value = TRUE 

Price Action 1

  • Product = Product A 
  • Type = Enable 

Price Action 2

  • Product = Product B 
  • Type: Enable & Add 

Price Action 3

  • Product = Product C 
  • Type = Enable & Add 
  • Required = True 

Price Action 4

  • Product = Product C 
  • Type = Hide 

Configuration Rule

:  

Product = Bundle 1  

 

Results in the Configurator

 

In Sandbox the following is occurring in the Configurator:

  • Product A is not appearing
  • Product B is not appearing
  • Product C is appearing and checked

In Production the following is occurring in the Configurator:

  • Product A is appearing
  • Product B is appearing and checked
  • Product C is not appearing

What the Sales team would like to have happen is:

  • Product A is appearing
  • Product B is appearing and checked
  • Product C is appearing and checked

What correction needs to happen to get this to occur? At a minimum I would think I would delete Product Action 4. 

 

Thank you. 

Rachel 

 

#Salesforce CPQ & Billing  #CPQ @* Salesforce Revenue Cloud *

1 answer
  1. Sep 6, 2:36 AM

    Your instinct to delete Price Action 4 is right, and here's why it's likely the actual root cause of the environment difference, not just a cleanup step. 

    You have two Product Actions targeting the same product (Product C) within one rule, with directly contradictory outcomes: Action 3 says Enable & Add + Required, Action 4 says Hide. Unlike Product Rules themselves (which have an explicit Evaluation Order field to control which rule "wins" when multiple rules affect the same product), individual Product Actions within a single rule don't have a documented, configurable sequence field in the UI. When two actions in the same rule conflict like this, which one is applied can come down to internal record creation order - and if this rule was built independently in Sandbox and in Production (rather than deployed as a single unit via change set/package that preserves record order), it's entirely plausible the two environments evaluate Action 3 vs. Action 4 in a different order, which would produce exactly the opposite behavior you're seeing on Product C between the two orgs. 

    Given the outcome the Sales team actually wants — Product C appearing and checked — the fix is straightforward: delete Price Action 4 (Hide on Product C) entirely, and keep only Price Action 3 (Enable & Add, Required) for Product C. That removes the ambiguity rather than relying on action-order behavior that isn't guaranteed to be consistent across orgs. 

    One more thing worth confirming before you conclude it's purely a config issue: since Product A and B's behavior also flipped between environments (not just C), double-check that the Quote.Boost__c field is actually set to TRUE in both orgs during your test — if the condition itself isn't evaluating the same way in both places (e.g., a default value difference on that field between Sandbox and Production data), that alone could explain the whole rule appearing to "not fire" in one environment before you even get to the Product C ordering issue.

0/9000

Hi everyone, Is there a way to populate the Quote field "Region__c" from the Account field "Region__c" using Context Definition only? 

I'm curious if this is achievable purely through Context Definition (without Flow or Apex) — has anyone done this before? Please help. 

Thanks! 

5 answers
  1. Sep 4, 6:43 AM

    @Manish Sharma

     

    Yes, it is possible using

    Context Definition alone. Map a context attribute such as Region from Account.Region__c through the Quote’s Account relationship to Quote.Region__c. No Flow or Apex is required. 

    For example: 

    Account.Region__c → Context Attribute (Region) → Quote.Region__c 

    Make sure the mapping uses supported matching data types and the context definition is active. 

0/9000

We're planning a large migration of legacy Asset records into Revenue Cloud and want to confirm we're not missing a bulk-friendly path. 

 

We've confirmed HasLifecycleManagement, LifecycleStartDate/EndDate, and the underlying AssetStatePeriod object are all read-only via standard DML - Data Loader/Bulk API reject any attempt to write them (INVALID_FIELD_FOR_INSERT_UPDATE). 

 

The only supported path we've found is the Connect REST API generate endpoint (asset-management/assets/actions/generate). It looks like a single-asset-per-call API with no bulk/batch equivalent, and the start date of the first asset state period is locked once the call completes. 

 

Has anyone done a large historical Asset migration into lifecycle management this way? Curious about: 

- Whether a bulk-friendly path exists that we're missing 

- Realistic call volumes/patterns others have used against the generate endpoint 

- Whether it's common practice to leave older/inactive assets non-lifecycle-managed and only onboard active ones 

 

  1. Appreciate any recommendations.

#Revenue Cloud

3 answers
  1. Aug 30, 3:44 PM

    we did it using PST api. the approach here is to bulk create Order using PST and then activate the Order, it will create Asset lifecycle managed records automatically, this is will give audit history as well.  

    PST api supports bulk record creation (1500 records in a single api call).

0/9000

Hi everyone, 

I'm currently working on attribute-based pricing in Salesforce Revenue Cloud and came across a scenario I'd like some guidance on. 

For example, I have an attribute called Color. If Color = Blue, I want to apply a 5% discount. This pricing rule should apply to every product in my product catalog. 

Using Price Adjustment Schedules , the pricing adjustment is tied to a specific product. This works well for a small catalog, but in a large product catalog with thousands of products, creating and maintaining separate Price Adjustment Schedules for each product is time-consuming and difficult to manage. 

Is there a way to define the pricing logic once and have it apply to all products instead of configuring it product by product? 

I'd appreciate any suggestions or best practices. Thanks!   

 

@* Salesforce Revenue Cloud * 

2 answers
  1. Sep 2, 8:43 PM

    For something like this id recommend using the Pre hook to write the Attribute value say "Colour" to a "Colour" Field on the quote line. 

     

    You could then add into your pricing procedure to add a 5% discount if that colour field = "Blue"

0/9000

Specifically, how are you managing dunning, payment reminders, and collections follow-up? Built in-house with Flow, a third-party AR tool, or still mostly manual/spreadsheet-based?  

 

Disclosure: I work on Quick Receivable, a Salesforce-native AR automation app. I'm trying to understand what's actually working for teams before assuming we have the answer

2 answers
  1. Sep 2, 10:07 AM

    That matches what we've been hearing too. Flow covers the "send a reminder" part fine, but promises to pay and exception handling (partial payments, disputed invoices, escalation rules) need actual state tracking, and that's where Flow logic gets brittle fast.  

     

    Curious when collections got messy for you, was it more the volume of exceptions, or just not having a clean audit trail of who promised what and by when?

0/9000

What I'm building

A custom Lightning Web Component that embeds inside a cloned Product Configurator Screen Flow (the standard "Save As" third-party-configurator extension pattern — lightning__FlowScreen). The component calls the Product Configurator Business APIs directly via Apex HTTP callout (Named Credential auth, OAuth 2.0 Client Credentials Flow via an External Client App — not UserInfo.getSessionId(), which is rejected for interactive-UI sessions anyway).

Environment

  • Developer Edition org with Revenue Cloud / Agentforce Revenue Management enabled (enableProductConfigurator = true)
  • API version v64.0
  • Not a scratch org, no source tracking — deployed directly
  • Native in-app configurator UI works correctly for the running user; this is only about the headless REST layer

What works

POST /services/data/v64.0/connect/cpq/configurator/actions/configure — works reliably. Returns transactionContext.SalesTransaction[].SalesTransactionItem[], prices lines correctly, runs configuration rules, surfaces rule violations in messages. This endpoint alone is not gated.

What fails

Every other documented action in the same family returns a 403:

 

POST /services/data/v64.0/connect/cpq/configurator/actions/load-instancePOST /services/data/v64.0/connect/cpq/configurator/actions/get-instancePOST /services/data/v64.0/connect/cpq/configurator/actions/add-nodesPOST /services/data/v64.0/connect/cpq/configurator/actions/save-instance

Response body:

 

{  "errorCode": "FUNCTIONALITY_NOT_ENABLED",  "message": "[IHeadlessConfiguratorFamily]"}

(403 status, same error regardless of payload shape or whether the call carries a transactionContextId.) 

 

#Revenue Cloud  #Salesforce Revenue Cloud  #Lightning Product Setup Configurator  #CPQ  #Revenue Management System @* Salesforce Revenue Cloud *

3 answers
  1. Sep 2, 3:56 AM

    Hi @Christopher Strecker

    , That's the missing piece. By assigning "Product Configurator API User" permission to my user, I was able to connect without any error. 

    Hi , That's the missing piece. By assigning

     

     

0/9000

I have created a product category disqualification.  But, under quote when I click "Browse Catalogs" that particular category is visible.  I have even refreshed decision tables(Product Qualification, Product Disqualification) but still it isn't working.  Can anyone help me?     @* Salesforce Revenue Cloud * 

2 answers
0/9000

Hi, 

 

I'm trying to adjust prices using 'Standard Attribute-Based Adjustments' with the adjustment type set to 'Override.' The expectation is that the price should update based on the 'Contract Term' attribute whenever its value changes, following the defined adjustments. 

Note: I also tried applying discounts using 'Percentage' and 'Amount' adjustment types, but neither worked. 

I've assigned a rule to the below adjustment with a condition(contract term as 6) 

Its a revenue cloud enabled developer edition org created referring the below link: https://cpqdevelopers.com/free-revenue-cloud-trial

Price not updating based on Contract Term when using 'Standard Attribute-Based Adjustments' with the 'Override' adjustment type?

2 answers
  1. Sep 1, 7:46 AM

    I am also facing the same issue i added the id of  Price adjustment schedule. Still i am unable to change the list price. 

    I am also facing the same issue i added the id of Price adjustment schedule. Still i am unable to change the list price.

     

     

0/9000

Anyone else dealing with the CPQ → Revenue Cloud switch?

CPQ is in end of sale now, and I've been reading up on how people are actually handling the move instead of just panicking about the deadline. Biggest thing I noticed: nobody does a straight cutover. Everyone phases it in, mostly because CPQ configs tend to have years of pricing logic nobody remembers setting up.

 

Found a solid writeup on the whole process if anyone wants it.

Would love to hear how it's actually gone for people, good or bad.

8 comments
  1. Aug 31, 8:09 AM

    That sounds like quite a journey! Moving from CPQ to ARM while building and testing everything in a sandbox is no small task. The pricing logic especially sounds like a challenging part of the transition. 

0/9000

Hi All,  

 

The standard out-of-the-box Start Sync button in RCA. When a user clicks it, it:

  • Sets the Quote as the Synced Quote on the associated Opportunity
  • Populates the standard OOB Quote/Opportunity sync fields and links
  • Syncs the Quote Lines to Opportunity Products

For our cancellation process, I’d like to automate this behavior. Instead of requiring the rep to manually click Start Sync, the cancellation automation should automatically sync the cancellation Quote to its associated Opportunity and then allow the Opportunity to be closed as part of the same process.

The issue I’m running into is that the fields involved for syncing on the Quote/Opportunity sync don’t appear to be available or updateable through Flow. From what I can tell, Start Sync is invoking a standard Salesforce/RCA sync page or process rather than simply updating fields.

 

Has anyone successfully invoked the same 

Start Sync functionality programmatically?

 

Specifically, I’m wondering whether there is a supported way to:

  • Trigger the standard RCA Quote → Opportunity sync from Flow
  • Invoke it through Apex, an API, or another automation mechanism

I’d prefer to leverage the standard RCA sync functionality if possible so that the automated cancellation process behaves exactly the same way as a rep clicking Start Sync.

Any guidance on the supported approach or the underlying API/process that Start Sync

 invokes would be greatly appreciated. 

 

#Revenue Cloud  #Ask An Expert  #Salesforce Revenue Cloud @* Salesforce Revenue Cloud *

2 answers
0/9000