Skip to main content
Groupe à la une

* 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

Hello everyone,

We are using Salesforce Revenue Cloud Advanced Product Configurator with Set Up Configuration Rules with Business Rules Engine enabled.

Our requirement is:

If the account associated with a quote already has an Asset for INTERNET HOME 50/5MBPS, the Product Configurator must require the user to add INTERNET HOME ONLINE OFFER.

I created the following Product Configuration Rule:

  • Rule Scope: Transaction
  • Condition field: AssetProduct
  • Operator: Equals
  • Value: INTERNET HOME 50/5MBPS
  • Action: Require
  • Required product: INTERNET HOME ONLINE OFFER

AssetProduct is available for selection in the rule designer. However, when I validate the rule, I receive this error:

“We couldn’t find a Context Tag corresponding to a Line Item. Specify a valid Line Item Context Tag and try again.”

As a diagnostic test, I duplicated the rule and changed only the condition field:

AssetProduct → Product

The rule then validated successfully. Therefore, the validation failure appears to be specifically related to AssetProduct or its context configuration.

Could someone please confirm:

  1. Is AssetProduct officially supported as a condition field in Product Configuration Rules executed by the Business Rules Engine?
  2. Or is asset-based evaluation supported only through Constraint Models and the Constraint Rules Engine?
  3. If AssetProduct is supported with BRE, what exact configuration is required?
    • Must we extend AssetContext__stdctx?
    • Must the extended Asset Context be selected under Revenue Settings → Set Up Asset Context for Product Configurator?
    • Which attribute, context tag and object-field mapping must be configured for AssetProduct?
  4. Does AssetProduct evaluate all relevant Assets belonging to the quote’s Account, or only an Asset explicitly selected or included in the current transaction?

 

I have attached a screenshot of the rule configuration. Any confirmation from someone who has successfully used AssetProduct in a BRE configuration rule would be greatly appreciated.

Thank you. 

1 réponse
  1. Aujourd’hui, à 01:01

    Hi Serhii,

    The validation message is the useful part. A Product Configuration Rule on the Business Rules Engine is looking for a line-item context tag. Product validates because it's on the transaction line. AssetProduct showing up in the condition dropdown doesn't mean that tag is mapped as a line item, which is why you get "We couldn't find a Context Tag corresponding to a Line Item."

    Rules that need to see assets the account already owns are what the Constraint Rules Engine is for, after asset context is set up for the configurator in Revenue Settings. Standard configurator with the Business Rules Engine stays on the transaction. Advanced configurator is the one that evaluates constraints across that wider context.

    I wouldn't keep forcing AssetProduct through a BRE transaction rule to satisfy the dropdown. The field being selectable isn't the same as the context definition knowing it. I also can't give you a tag mapping that turns AssetProduct into a supported BRE line-item condition, because that isn't documented. If the rule has to require a product because the account already has an asset, build that as a constraint with asset context, not as a second copy of this rule.

0/9000

Hi all,

I’m running into an issue with the Billing Batch Scheduler / Billing Schedule processing.

I have a record-triggered Flow on Billing Schedule for After Insert and After Update. From the flow, I am performing the required DML through an asynchronous/scheduled path approximately 5 minutes after the record transaction

, rather than performing the update immediately in the same transaction. I have automation in Invoice and Invoice Line in a flow in before and after save both.  

 

When the billing batch runs, multiple records are failing and I see the following errors under Revenue Transaction Error Logs

: 

 

Revenue Transaction Error during Billing Batch Scheduler – INVOICE_GENERATION_FAILED / UNKNOWN_EXCEPTION

 

I’m also seeing:

There are multiple Revenue Transaction Error Log records with the same/similar errors.

Has anyone encountered the attempt to save object not in TransactionEntityObjectMap error before?

I’m trying to understand:

  1. What exactly does TransactionEntityObjectMap refer to in Salesforce Billing / Revenue Cloud processing?
  2. Even though my DML runs asynchronously around 5 minutes later, could it still conflict with Billing Batch Scheduler processing?
  3. Could the Billing Schedule or related records still be locked or considered part of an active Revenue transaction when the asynchronous flow runs?
  4. Is there a recommended delay or automation pattern for updating Billing Schedule/related records after billing processing?
  5. Is this likely a Salesforce internal transaction-state issue, or is there something specific I should avoid updating from the flow?
  6. Has anyone found a workaround or resolution for this error?

Any insight into the exact root cause of this error and the recommended resolution would be greatly appreciated.

Thanks!

1 réponse
  1. Aujourd’hui, à 00:48

    Hi Ganesh,

    I don't have a public doc that defines TransactionEntityObjectMap. That name is internal to the billing transaction. What you can use is the Error Message and the related record on the Revenue Transaction Error Log, plus the status on the invoice batch run.

    A billing batch run writes those logs when invoice generation fails, and a failed billing schedule can sit there until you use Recover on the invoice batch run. Recover puts the schedule back to Ready for Invoicing so a later run can pick it up.

    Your Invoice and Invoice Line flows are the part I'd look at first. Before-save and after-save automation on those objects runs while the batch is saving the invoice. Salesforce's billing notes say to test flows on invoices and invoice lines during an invoice run for that reason. A flow on Billing Schedule that updates the schedule, even on a 5 minute scheduled path, is not a lock check. The batch often runs longer than 5 minutes, and a later update can still land while that schedule is in the run.

    One documented cause of INVOICE_GENERATION_FAILED is a custom field on Invoice or Invoice Line marked required. The batch API doesn't fill custom fields, so the save fails and the log looks like an unknown exception. Populate those after the invoice exists, and don't make them required.

    In a sandbox, read one log's Error Message in full, then deactivate the Invoice and Invoice Line flows and generate a single invoice from one billing schedule. If that one succeeds, the flow is in the transaction, and a longer delay won't clear it.

0/9000

I'm testing Agentforce Revenue Management (Revenue Cloud) in a Salesforce trial org (Enterprise Edition, API Version 67.0) and have three related questions. 

 

Background

 

For a custom implementation we store a very large volume of non-lifecycle customer records in the standard Asset object. We chose Asset because, in our testing, Asset records themselves do not count toward data storage limits (Setup → Storage Usage shows no data storage use for them), and we want to keep that behavior.

1. AssetActivity availability and storage

 

In this Revenue Cloud org, inserting plain Asset records through the API, with no order and no lifecycle call, creates AssetActivity and AssetActivityFieldChange records, and data storage rises. 

I see no related flows or Apex triggers, nothing in debug logs, and no toggle in Setup → Asset Settings. The AssetActivity object is

not available in the other Revenue Cloud orgs I have access to

, so something org-specific seems to control it. 

 

2. Planned Asset record type

 

We plan to add a record type on Asset. One would behave as the standard Revenue Cloud asset, and the other would hold the non-lifecycle records created through an integration (HasLifecycleManagement = false). We want to understand the impact on

Asset Lifecycle Management

if a new record type is created on Asset. 

 

3. Storage behavior of Asset

 

We want to confirm the assumption our design relies on.

Questions:

  1. Is it correct that Asset records do not count toward data storage? Is that documented and supported, or could it change?
  2. Which feature, license or permission set license makes AssetActivity and AssetActivityFieldChange available in an org? Why do some Revenue Cloud orgs have the object and others don't?
  3. What creates AssetActivity records when an Asset is inserted or updated? Is it platform-native?
  4. Can creation be disabled, or excluded for a record type, user or API path? Can the records be updated or deleted to recover storage?
  5. Does Asset Lifecycle Management (order activation, amend, renew, cancel, and the Asset Action, Asset Action Source and Asset State Period records) depend on a particular Asset record type? Does it take the record type from the running user's default?
  6. If we add a record type on Asset, are non-lifecycle-managed assets ignored by lifecycle processes, APIs, flows and screens? Is keeping both kinds of record on Asset supported?
  7. Is there a recommended pattern for storing very high volumes of non-lifecycle customer records in Revenue Cloud without consuming data storage?

Thanks!

1 réponse
  1. Aujourd’hui, à 00:14

    Hi Rajdeep,

    Asset is not on the short list of objects Salesforce leaves out of data storage. Accounts, contacts, opportunities, cases, and a few others are. Asset is not one of them. A trial org storage page showing zero is not something I would build a design on. It lags, and it is not a documented exemption. After a real volume of inserts, check Storage Usage again before you commit to this.

    AssetActivity and AssetActivityFieldChange show up in orgs where the fuller asset lifecycle tracking got turned on. That is why the object exists here and not in your other Revenue Cloud orgs. It is platform behavior, not a flow or a trigger you can find. A plain API insert is enough to write those rows, and those rows are what push storage up. I have not seen a per-record-type switch that stops it.

    Lifecycle does not depend on an Asset record type. Amend, renew, and cancel follow HasLifecycleManagement and the asset action records. Adding a record type changes layouts and the default type on create. It does not hide the other rows from lifecycle screens. A user whose default record type is the integration one can also send new assets to the wrong type. Order activation still builds the lifecycle asset on its own path.

    Keeping both kinds of record on Asset only works if the integration rows are actually HasLifecycleManagement = false, and you accept that anyone who can see Asset can see both. It will not keep those rows out of storage, and it will not stop AssetActivity if that tracking is on.

    For a very large set of non-lifecycle records, I would not put them on Asset. A big object, or something outside the org, is the volume pattern. Asset is for the records lifecycle is supposed to manage.

0/9000
Hanna Homb Reistad a posé une question dans #Revenue Cloud

Hi,  

 

In the Sales Transaction Line Editor, I have enabled "Show Product Quick Add" - however I'm only able to search by Product Name. I would like to be able to search by Product Code in stead, but can't find anything on this online.  

 

This function does not seem to take into account either search layouts or search settings under Index Settings (Product Catalog Management)  

 

Anyone have experience with this?  

Or can tell me that the only option I have is updating Product Name to contain Product Code? 

 

Thanks,  

 

Hanna  

 

#Revenue Cloud @* Salesforce Revenue Cloud *

3 réponses
  1. 4 oct., 09:40

    Thanks for taking the time to answer @Bhavin Patel and @Ben Stokes

    !  

     

    https://help.salesforce.com/s/articleView?id=004576657&type=1

      

    This guide seems related to CPQ and not Agentforce Revenue Management.  

     

    As for,  

    https://help.salesforce.com/s/articleView?id=004576657&type=1

    , I'm using  "Indexed Data for Product Listing and Search", so then Product Field Search won't work.  

     

    "Error

    To enable Product Field Search, you must first disable Indexed Data for Product Listing and Search." 

     

    I ended up updating the Product Name with Product Code to achieve desired result.  

     

    /Hanna 

0/9000

I am trying to proof out an idea around "Twinning" a value from the Catalog object or Category object to the Quote Line Item in Revenue Cloud.  

 

Context:  

Looking at using Catalogs to represent a store branch. On the Catalog we would have a custom field for that branch id. I need to travel/twin this value from the catalog to the quote line item for pricing.  

 

Use Case: 

A user would browse catalog, representing a specific branch where they would select a product and add it to the quote lines. On that quote line I want to be able to move the value of branch id from that catalog the product was selected from to the quote line for pricing.  

A different branch might not carry the product or have different pricing coming from SAP.  

 

I've reviewed concepts around context definition for product2 to quote line item that works without problem. How do we do something similar with this object or the category under the catalog? 

 

Any help here around setting up the context definitions to make this work would be appreciated. 

2 réponses
  1. 5 oct., 17:24

    @Deepak Sachdeva

    Thank you for the advice. 

    Here is where I am and seem to can proceed. 

     

    I have extended the ProductDiscovery Context 

    I have added the Attribute to the Catalog Node 

    • BranchID, Input/output, String
    • I have given it a tag

     

    When I attempt to map the Catalog (left side) to the Product Catalog (right side) I get this error message: " 

      

    You can't update an inherited node mapping that already has an mapping." 

      

     If I try to go from field to field this is the error I get: " 

      

    Ensure that you map attributes to the field of same sObject that’s mapped to its corresponding node." 

      

    Thoughts?

0/9000

 

When I click "Create Order" from a quote, I get this error "Is Order Product Locked: value not of required type". 

Have you seen this error before?  

Error when I want to create an Order from an accepted Quote - Is Order Product Locked: value not of required type

 

 

5 réponses
0/9000

This is a very common use case in Salesforce CPQ that can be achieved using a Price Rule. However, I couldn’t find a straightforward way to achieve the same requirement using an ARM Pricing Procedure.

The main challenge appears to be the execution sequence. Salesforce Flow and Pricing Procedures do not seem to work particularly well together for this type of pricing logic because the timing of when each calculation is executed can affect the final price.

Use Case – Bundle Pricing

Bundle #1

  • Product A — List Price: $10
  • Product B — List Price: $8

When both Product A and Product B are added to the same bundle:

  • If the quantity of Product A is greater than 10
  • Set the List Price of Product B from $8 to $6
  • In other words, apply a $2 discount to Product B based on the quantity of Product A.

Question:

How can we achieve this use case using Salesforce Revenue Cloud / Advanced Rules Management (ARM), preferably using the Pricing Procedure rather than Salesforce CPQ Price Rules?

I’m particularly interested in understanding how ARM handles this type of cross-product, quantity-based pricing logic and what the recommended design pattern would be.

1 réponse
  1. 30 sept., 06:56

    You may need to use hooks, as we had a similar use case that we successfully implemented using Post Hooks only. However, it would be worth exploring whether the same functionality can be achieved using a Pricing Procedure.

0/9000

Hi everyone,  

 

In Revenue Cloud Product Configurator, the attribute category tabs appear in alphabetical order. For example, "Fabric / Leather" shows before "Finish", but we need Finish first and Fabric / Leather second

.  

Hi everyone, In Revenue Cloud Product Configurator, the attribute category tabs appear in alphabetical order.

 

 

What we tried: 

  • Setting Sequence on the Product Classification Attributes and the Product Attribute Definitions. This changes the order of attributes within a tab, but not the tab order.
  • Renaming the category (e.g. "Upholstery"). This works, but we'd prefer to keep our original category names.

 

Questions: 

 

  1. Is there a field or setting that controls the display order of attribute categories (tabs)?
  2. Can this be set in the Product Configurator Flow (Product Attributes component)?
  3. If not, is this on the roadmap, or does anyone have a workaround other than renaming?
1 commentaire
  1. 30 sept., 10:01

    @Swapnil Shinde 1. If the product is configured using a product structure, you can control the display order of the attribute categories by adjusting the Group Sequence.1. If the product is configured using a product structure, you can control the display order of the attribute categories by adjusting the Group Sequence. 2.

     

     

     

    2.  The org is on a Revenue Cloud release that includes the new Custom Attribute and Category Ordering capability. Salesforce lists this as a current Revenue Management feature available with Revenue Cloud Growth, Advanced, and Billing

    license   

     

    https://help.salesforce.com/s/articleView?id=release-notes.rn_product_catalog_display_order_attributes.htm&release=264&type=5

0/9000

Is there a way to natively do block pricing in ARM? 

 

Seeing Quantity * Net Unit Price 

 

If I do something custom in pricing procedure it doesn't allow for proration/discounting

3 réponses
  1. 30 sept., 07:00

    We implemented this in the project by assigning the Net Unit Price back to Net Total using assignment element. However, you would also need to consider amendment scenarios. For example, if the user changes the quantity during an amendment, the pricing should recalculate correctly based on the updated number of blocks.

0/9000

I am trying to generate the document using docgen, without using any data mapper. I want to show horizontally repeating rows instead of vertical repeating rows. For example, if my data is like following - 

1. Product 1 - 25000 

2. Product 2 - 30000 

3. Product 3 - 32000 

 

so instead of showing it like - 

Product 1 | 25000 

Product 2 | 30000 

Product 3 | 32000  

 

i want to display like in a table- 

Product 1 | Product 2 | Product 3 

25000       | 30000       | 32000 

 

can we achieve this? or not? 

  

 

@* Salesforce Revenue Cloud *

 

#Revenue Cloud  #Document Generation

2 réponses
0/9000