Revenue Cloud Decision Tables: Why New Products Break Quote Pricing
One of the most disruptive gotchas in Revenue Cloud occurs when a team adds a new Product2 record with a PricebookEntry and then discovers that every Quote containing that product fails to price correctly. The root cause is Revenue Cloud's Decision Table caching mechanism -- and the fix is simple once you know to look for it.
What Decision Tables Are
Revenue Cloud uses Decision Tables as a metadata-driven pricing engine. Rather than relying solely on standard PricebookEntry prices, the system evaluates a set of approximately 10 Decision Tables during every pricing operation. These tables define rules for:
- Base price resolution
- Discount calculations
- Markup and margin rules
- Tax treatment selection
- Pricing procedure step routing
- Product-specific pricing overrides
Decision Tables are cached in memory for performance. When a pricing operation runs, Revenue Cloud reads from this cache rather than querying the underlying metadata each time. This caching is critical for performance in orgs with thousands of products and complex pricing rules.
The Cascading Failure Pattern
Here is the sequence that causes the problem:
- Admin creates a new Product2 record and associates it with a PricebookEntry in the relevant Pricebook.
- Decision Tables are not refreshed. The cache still reflects the state before the new product existed.
- A user adds the new product to a Quote. The pricing engine consults the cached Decision Tables, finds no matching entry for the new product, and either fails silently or throws an error.
- The failure cascades. Any subsequent pricing operation on that Quote -- including repricing existing lines -- may fail because the pricing engine encounters the unresolvable product and halts the entire calculation.
This means a single new product can break pricing on Quotes that contain dozens of other, previously working products.
Symptoms to Watch For
- Pricing returns $0 on new products despite a valid PricebookEntry with a non-zero price
- Repricing fails on Quotes that were working before the new product was added
- Line items cannot be saved with errors referencing required pricing fields
- "Calculate" action on Quote completes without error but leaves prices unchanged
- Existing products on the same Quote lose their calculated prices after the new product is added
The particularly insidious aspect is that these symptoms can appear intermittent -- they depend on whether the specific Quote includes the new product.
How to Refresh Decision Tables
- Navigate to Setup in your Salesforce org.
- Search for "Decision Tables" in the Quick Find box.
- Open the Decision Table management page.
- Click Refresh (or Refresh All) to rebuild the cache from current metadata.
After refreshing, the pricing engine will recognize the new product and all associated pricing rules. Existing Quotes with the new product should reprice correctly on their next calculation.
Prevention Checklist for Product Launches
Use this checklist whenever adding new products to an org with Revenue Cloud:
| Step | Action | Verify |
|---|---|---|
| 1 | Create Product2 record | Product is Active |
| 2 | Create PricebookEntry | Price is non-zero, correct Pricebook |
| 3 | Add product to relevant Pricing Procedures | Rules reference new product if needed |
| 4 | Refresh Decision Tables | Navigate to Setup and refresh |
| 5 | Test pricing on a draft Quote | New product prices correctly |
| 6 | Reprice a Quote with mixed products | Existing products still price correctly |
Step 4 is the one most teams miss. It should be a mandatory step in any product setup runbook.
Debugging Tips
If you suspect Decision Table caching is the issue:
- Check the timeline. Was a new product added recently? Correlate the timing of product creation with the onset of pricing failures.
- Test with an older product. If Quotes with only pre-existing products still price correctly, the new product is likely the trigger.
- Refresh and retest. The fastest diagnostic is simply refreshing Decision Tables and seeing if the problem resolves. If it does, you have confirmed the root cause.
- Review debug logs. Look for Decision Table evaluation entries that show no match found for the new product's criteria.
Key Takeaway
Decision Table caching is a performance optimization that creates an operational dependency. Every product change requires a Decision Table refresh. Building this step into your product management process prevents a class of pricing failures that can be difficult to diagnose without knowing where to look.