Skip to content
CPQ Compass

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

    QuoteLineTriggerHandler

    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.

  • RewritehighActive trigger touching CPQ

    QuoteLineTrigger

    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.

  • RewritehighEvaluation event has no equivalent

    Partner margin floor

    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.

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.

RuleTypeCond.Act.DocumentedScore
Enterprise volume tier overridePriceRule81No28
Partner margin floorPriceRule20No20
Renewal uplift 3%PriceRule10Yes15
Chassis compatibility filterProductRule00Yes14
Bundle requires support SKUProductRule31No9
Volume slab — hardwareDiscountSchedule110No7
Legacy promo — do not deleteinactivePriceRule00No4
Standard list pricePriceRule00Yes0
Standard range discountDiscountSchedule10Yes0

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

Scan my org — free summary

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