Example report
What your report looks like
A real report for a fictional org, produced by the same scoring engine customers get. Nothing here is anyone's data.
This is an example. Connect your own org to get this for your actual configuration — the summary below is free.
Migration complexity
High
Weighted score 139 · High is above 120
Recommended next action
Reimplement — do not lift and shift
15 of 26 findings need rebuilding rather than moving, across enough of the configuration that copying it into Revenue Cloud will produce wrong prices. Plan a reimplementation, and verify outputs against the current system before cutover.
Top blockers
Ranked by what happens if they are wrong in production, not by how intricate they are.
- RewritecriticalCalls the CPQ Quote Calculator API
QuoteLineTriggerHandlerThe CPQ calculator API does not exist in Revenue Cloud. Pricing is evaluated by the Pricing Procedure engine, which has no drop-in equivalent for programmatic calculator invocation. Re-express the pricing intent as a Pricing Procedure. Expect this to be rewritten, not ported.
- RewritehighActive trigger touching CPQ
QuoteLineTriggerThis is the silent-breakage case: the trigger keeps compiling and keeps being deployed, but after migration the records it expects never arrive, so it simply stops doing anything.
- RewritehighEvaluation event has no equivalent
Partner margin floorThis evaluation point does not exist in the Revenue Cloud pricing lifecycle. The rule will need a different trigger point, which can change when it fires relative to other rules.
Remediation effort by workstream
Where the work sits, so it can be sequenced and staffed.
- Pricing procedures8 findings · build 29 · test 33
- Apex and automation5 findings · build 21 · test 20
- Data model mapping4 findings · build 12 · test 12
- Governance and documentation6 findings · build 6 · test 11
- Product configuration1 findings · build 4 · test 4
- Discount logic2 findings · build 4 · test 9
Effort values are 1-5 ordinal ratings, NOT days. They are our judgement, not measurements, and no engagement data has calibrated them yet. They exist to rank work against work, so treat the ordering as meaningful and the absolute numbers as arbitrary. The report says this in as many words rather than implying precision we do not have.
What needs doing
- 10
Rewrite
CPQ logic with no Revenue Cloud equivalent. Re-express the intent; do not attempt to port.
- 5
Recreate
Maps onto a Revenue Cloud object or field, but must be rebuilt there rather than copied.
- 2
Validate
Will move, but the numbers can change. Rebuild, then diff the outputs against the original.
- 8
Review
Intent is unclear. A human who knows the business must confirm what it is for before anything is rebuilt.
- 1
Retire
Inactive or obsolete. Decide explicitly to drop it rather than carrying it over by default.
5
Price rules
2
Product rules
2
Discount schedules
11
Conditions
3
Code dependencies
26
Findings
Scan notes
- This org has 63 active Flows; the 63 most recently modified were scanned. Flow coverage is complete for this example.
Everything above is the free tier. Below is the paid detail: every finding, why it matters, and what to do about it.
Every format carries the same findings, actions, workstreams and effort ratings.
Rules by risk
Highest-scoring rules first — these are where migration effort concentrates.
| Rule | Type | Cond. | Act. | Documented | Score |
|---|---|---|---|---|---|
| Enterprise volume tier override | PriceRule | 8 | 1 | No | 28 |
| Partner margin floor | PriceRule | 2 | 0 | No | 20 |
| Renewal uplift 3% | PriceRule | 1 | 0 | Yes | 15 |
| Chassis compatibility filter | ProductRule | 0 | 0 | Yes | 14 |
| Bundle requires support SKU | ProductRule | 3 | 1 | No | 9 |
| Volume slab — hardware | DiscountSchedule | 11 | 0 | No | 7 |
| Legacy promo — do not deleteinactive | PriceRule | 0 | 0 | No | 4 |
| Standard list price | PriceRule | 0 | 0 | Yes | 0 |
| Standard range discount | DiscountSchedule | 1 | 0 | Yes | 0 |
Findings
Filter by severity or search to work through these. Each one explains what was found and why it matters for Revenue Cloud.
Showing 26 of 26 findings · 0 resolved
critical1
- RewriteCalls the CPQ Quote Calculator API+15
QuoteLineTriggerHandler— ApexClass QuoteLineTriggerHandler (line 42).The CPQ calculator API does not exist in Revenue Cloud. Pricing is evaluated by the Pricing Procedure engine, which has no drop-in equivalent for programmatic calculator invocation. Re-express the pricing intent as a Pricing Procedure. Expect this to be rewritten, not ported.
QuoteLineTriggerHandlerApex and automationhigh confidencebuild 5 · test 4 · criticality 5Salesforce developer
high13
- RewriteComplex condition set+4
Enterprise volume tier override— 8 conditions (threshold is 5).Condition sets this large rarely map cleanly onto a Pricing Procedure element and usually need to be decomposed by hand.
SBQQ__PriceRule__c/a0X001Pricing procedureshigh confidencebuild 4 · test 4 · criticality 4Revenue Cloud architect - RewriteUses an advanced condition+8
Enterprise volume tier override— Custom boolean logic, 140 characters.Advanced conditions encode boolean expressions CPQ evaluates at runtime. Revenue Cloud has no equivalent expression slot, so each one has to be restructured.
SBQQ__PriceRule__c/a0X001Pricing procedureshigh confidencebuild 4 · test 4 · criticality 4Revenue Cloud architect - RecreateReferences a field with no known mapping+6
Enterprise volume tier override— 8 conditions reference Quote.Custom_Segment__c.This field is not on the maintained allowlist of fields with a known Revenue Cloud equivalent. It may be a custom field that needs to be recreated, or one whose semantics change.
SBQQ__PriceRule__c/a0X001Data model mappingmedium confidencebuild 3 · test 3 · criticality 4Salesforce data architect - RewriteLong formula in a price action+3
Enterprise volume tier override— Formula of 412 characters.CPQ formula syntax and the fields it can reach differ from Revenue Cloud's expression language. Every formula needs to be re-authored and re-tested.
SBQQ__PriceRule__c/a0X001Pricing procedureshigh confidencebuild 4 · test 4 · criticality 4Revenue Cloud architect - RewriteEvaluation event has no equivalent+7
Partner margin floor— Evaluation event is "On Initialization".This evaluation point does not exist in the Revenue Cloud pricing lifecycle. The rule will need a different trigger point, which can change when it fires relative to other rules.
SBQQ__PriceRule__c/a0X002Pricing procedureshigh confidencebuild 4 · test 5 · criticality 5Revenue Cloud architect - RecreateReferences a field with no known mapping+6
Partner margin floor— 2 conditions reference Quote.Custom_Partner_Tier__c.This field is not on the maintained allowlist of fields with a known Revenue Cloud equivalent. It may be a custom field that needs to be recreated, or one whose semantics change.
SBQQ__PriceRule__c/a0X002Data model mappingmedium confidencebuild 3 · test 3 · criticality 4Salesforce data architect - RewriteDriven by a Lookup Query+9
Renewal uplift 3%— Looks up data from Renewal_Uplift__c.Lookup Queries pull rule data from a custom object at runtime. Decision matrices cover the simple cases; anything conditional here is custom work.
SBQQ__PriceRule__c/a0X003Pricing procedureshigh confidencebuild 5 · test 4 · criticality 4Revenue Cloud architect - RecreateReferences a field with no known mapping+6
Renewal uplift 3%— Condition references Quote.Contract_Type__c.This field is not on the maintained allowlist of fields with a known Revenue Cloud equivalent. It may be a custom field that needs to be recreated, or one whose semantics change.
SBQQ__PriceRule__c/a0X003Data model mappingmedium confidencebuild 3 · test 3 · criticality 4Salesforce data architect - RecreateReferences a field with no known mapping+6
Bundle requires support SKU— 3 conditions test Quote Line.Custom_Tier__c.This field has no confirmed Revenue Cloud equivalent, so the condition may silently stop matching.
SBQQ__ProductRule__c/a0Y001Data model mappingmedium confidencebuild 3 · test 3 · criticality 4Salesforce data architect - RewriteUses an advanced condition+8
Chassis compatibility filter— Custom boolean logic instead of All/Any.There is no equivalent expression slot in Revenue Cloud; the logic must be restructured.
SBQQ__ProductRule__c/a0Y002Pricing procedureshigh confidencebuild 4 · test 4 · criticality 4Revenue Cloud architect - RecreateConfigurator-scoped product rule+6
Chassis compatibility filter— Configurator rule backed by Compatibility_Matrix__c.Bundle configuration moves to Product Configurator with a different object model, so configurator rules do not port one-to-one.
SBQQ__ProductRule__c/a0Y002Product configurationhigh confidencebuild 4 · test 4 · criticality 4Product catalogue owner - RewriteApex trigger on a CPQ object+12
QuoteLineTrigger— ApexTrigger QuoteLineTrigger (line 1).Triggers bound to SBQQ__ objects have no target after migration — the objects themselves are replaced. The trigger will not error; it simply never fires again. Identify the equivalent Revenue Cloud object and reimplement, or fold the logic into a Pricing Procedure.
QuoteLineTriggerApex and automationhigh confidencebuild 5 · test 4 · criticality 5Salesforce developer - RewriteActive trigger touching CPQ+8
QuoteLineTrigger— Trigger on SBQQ__QuoteLine__c, 2 SBQQ reference(s).This is the silent-breakage case: the trigger keeps compiling and keeps being deployed, but after migration the records it expects never arrive, so it simply stops doing anything.
QuoteLineTriggerApex and automationhigh confidencebuild 4 · test 5 · criticality 5Salesforce developer
medium8
- ReviewUndocumented price rule+3
Enterprise volume tier override— This rule has no description.Nobody can say what this rule is for without reverse-engineering it. That is the tribal knowledge that gets lost in a migration — and the rule most likely to be dropped or reimplemented wrong.
SBQQ__PriceRule__c/a0X001Governance and documentationhigh confidencebuild 1 · test 2 · criticality 3CPQ admin / business owner - ReviewAmbiguous evaluation order+4
Enterprise volume tier override— Shares evaluation order 10 with 1 other rule(s).When rules share an order, CPQ's tie-break is undefined. Any behaviour that depends on the current ordering is accidental and will not survive a rebuild.
SBQQ__PriceRule__c/a0X001Pricing proceduresmedium confidencebuild 2 · test 4 · criticality 4CPQ admin / Revenue Cloud architect - ReviewUndocumented price rule+3
Partner margin floor— This rule has no description.Nobody can say what this rule is for without reverse-engineering it. That is the tribal knowledge that gets lost in a migration — and the rule most likely to be dropped or reimplemented wrong.
SBQQ__PriceRule__c/a0X002Governance and documentationhigh confidencebuild 1 · test 2 · criticality 3CPQ admin / business owner - ReviewAmbiguous evaluation order+4
Partner margin floor— Shares evaluation order 10 with 1 other rule(s).When rules share an order, CPQ's tie-break is undefined. Any behaviour that depends on the current ordering is accidental and will not survive a rebuild.
SBQQ__PriceRule__c/a0X002Pricing proceduresmedium confidencebuild 2 · test 4 · criticality 4CPQ admin / Revenue Cloud architect - ReviewUndocumented price rule+3
Legacy promo — do not delete— This rule has no description.Nobody can say what this rule is for without reverse-engineering it. That is the tribal knowledge that gets lost in a migration — and the rule most likely to be dropped or reimplemented wrong.
SBQQ__PriceRule__c/a0X004Governance and documentationhigh confidencebuild 1 · test 2 · criticality 3CPQ admin / business owner - ReviewUndocumented product rule+3
Bundle requires support SKU— This rule has no description.Validation and alert rules encode business policy. Without a description the policy exists only in someone's head.
SBQQ__ProductRule__c/a0Y001Governance and documentationhigh confidencebuild 1 · test 2 · criticality 3CPQ admin / business owner - ValidateSlab-based discount schedule+3
Volume slab — hardware— Uses Slab rather than Range tiers.Slab schedules apply each tier's rate only to the quantity within that tier. Rebuilding this as a Range schedule changes the totals, so it needs deliberate reconstruction and a numeric diff.
SBQQ__DiscountSchedule__c/a0Z001Discount logichigh confidencebuild 2 · test 5 · criticality 5Deal desk / finance - RewriteSOQL against a CPQ object+5
QuoteLineTriggerHandler— ApexClass QuoteLineTriggerHandler (line 42).Queries against SBQQ objects compile fine but return nothing once data lives in Revenue Cloud objects. This is the classic silent-breakage case. Re-point each query at its Revenue Cloud counterpart and add assertions for empty results.
QuoteLineTriggerHandlerApex and automationhigh confidencebuild 5 · test 4 · criticality 5Salesforce developer
low3
- ReviewUndocumented discount schedule+2
Volume slab — hardware— This schedule has no description.Tier boundaries usually encode a commercial agreement. Undocumented, the reasoning behind the breakpoints is lost.
SBQQ__DiscountSchedule__c/a0Z001Governance and documentationhigh confidencebuild 1 · test 2 · criticality 2Deal desk / finance - ValidateMany discount tiers+2
Volume slab — hardware— 11 tiers (threshold is 8).Every tier boundary is a place the migrated schedule can diverge. More tiers means more numeric verification.
SBQQ__DiscountSchedule__c/a0Z001Discount logichigh confidencebuild 2 · test 4 · criticality 3Deal desk / finance - ReviewCode references the SBQQ namespace+2
Quote_Approval_Routing— Flow Quote_Approval_Routing references 1 SBQQ symbol(s) across 1 line(s).No known incompatibility matched, but this code still depends on CPQ objects and needs review before cutover.
Quote_Approval_RoutingApex and automationmedium confidencebuild 2 · test 3 · criticality 3Salesforce developer
info1
- RetireInactive rule+1
Legacy promo — do not delete— Rule is inactive.Inactive rules are usually dead weight, but occasionally they are seasonal. Decide explicitly whether to migrate each one rather than carrying it over by default.
SBQQ__PriceRule__c/a0X004Governance and documentationhigh confidencebuild 1 · test 1 · criticality 1CPQ admin
Code scan coverage
214 Apex classes, 18 triggers, and 63 Flows were read. 96 managed-package bodies were unreadable, which is expected.
Run this against your own org
CPQ Compass reads your configuration through the Salesforce API, read-only. Nothing is written to your org and no install is required. What we read