- Home
- /
- Salesforce Testing
- /
- Business Processes
- /
- Opportunity-to-Quote
Salesforce Opportunity-to-Quote Testing
Salesforce opportunity to quote testing validates the step where a deal becomes a priced offer — adding products to an Opportunity, pulling prices from the right price book, and generating a Quote that a customer can accept and a rep can send with confidence.
Part of SyntraFlow's Salesforce business process testing approach. Capabilities described here are available for demonstration and proof-of-concept validation.
What the opportunity-to-quote process is
Opportunity-to-quote is the step that converts an active deal into a formal, priced document. It begins with an Opportunity that already carries a stage, an amount and a close date, and ends with a Quote the customer can review. In between, the rep adds products — creating Opportunity line items — selects the correct price book, and the platform generates a Quote with its own quote lines, each carrying a unit price, quantity, discount and total.
The defining characteristic of this process is that it is where money first appears as line-level detail. Up to this point the Opportunity amount may have been a rep's estimate; at quote time it becomes an itemized calculation driven by product records, price book entries and any discounting the rep applies. Whether the Quote is built with standard Salesforce quoting or an installed CPQ engine, the same question governs correctness: does every line pull the right price for the right product in the right currency, and does the total roll up correctly? A wrong price on a sent Quote is not a cosmetic bug — it is a commitment to a customer.
Why this process is worth testing
Quoting is the first customer-facing artifact with real numbers on it, and its defects are visible to the customer.
The number is a promise
A price on a sent Quote is a figure the customer will hold you to. An under-priced line erodes margin; an over-priced one loses trust. Both are hard to walk back.
Catalog drift is constant
Products get deactivated, price books get updated, currencies get added. Any of those can leave a quoting flow pulling a stale or missing price without a visible error.
Approvals gate the send
Discount thresholds route Quotes into approval. A broken approval path lets an unauthorized discount reach a customer, or blocks a legitimate deal from moving.
Preconditions and roles
Quoting cannot be tested against an empty catalog. The org needs active products, a standard price book and any custom price books, price book entries for each product-and-currency combination, and the quote page layouts, quote templates and approval processes that govern the flow. The Opportunity under test must be at a stage where quoting is allowed. Multi-currency orgs need the relevant currencies active with conversion rates set.
Sales rep
Adds products, applies discounts and generates the Quote. Discount limits and product visibility often differ by profile, so the same action can produce different quotes.
Deal desk / pricing
Maintains price books and discount rules and often reviews non-standard configurations. Tests confirm their guardrails hold when a rep pushes past a threshold.
Sales manager / approver
Approves discounts above a limit. Tests assert the right Quotes route to them and that approval or rejection updates the record and unblocks or halts the send.
Salesforce objects involved
The catalog-and-pricing objects behind a Quote are where correctness is won or lost.
| Object | Role in the process | What testing checks |
|---|---|---|
| Opportunity | The deal being quoted; source of stage, amount and currency. | Correct stage gate, amount reconciles to quote total. |
| OpportunityLineItem | Products added to the Opportunity from a price book. | Right product, quantity and price book entry selected. |
| Product2 | The catalog record for each item being sold. | Active status, correct product family and attributes. |
| PricebookEntry | The price of a product in a given price book and currency. | Entry exists, is active, and returns the expected list price. |
| Quote | The generated priced offer, with status and totals. | Totals, discount, currency, template output, status transitions. |
| QuoteLineItem | Each priced line on the Quote. | Unit price, quantity, line discount, subtotal roll-up. |
The happy path, step by step
Each step below is an explicit assertion, with special attention to calculated values.
Opportunity is quote-ready
The Opportunity is at an eligible stage in the correct currency, with an owner who has quoting rights. The test starts from a known deal state.
Products are added
The rep selects the price book and adds products as Opportunity line items. Each line resolves to the correct price book entry and list price.
Quote is generated
A Quote is created from the Opportunity, copying lines into quote line items. Quantities, unit prices and currency carry across intact.
Discount and totals resolve
Any line or header discount is applied and the subtotal, discount and grand total roll up. The test asserts the exact calculated figures, not just that a number appears.
Quote is finalized
The Quote reaches a sendable status, the document renders from the template, and the Opportunity amount reconciles to the quoted total.
Negative and exception paths
Pricing defects hide in the edges of the catalog. These need deliberate coverage.
Missing price book entry
A product with no entry in the selected price book, or in the Opportunity's currency, should be blocked or flagged — not added at a price of zero or a fallback list price. The test proves the gap is caught.
Inactive product
A product deactivated in the catalog should not be quotable. Tests confirm it is unavailable for selection, and that a previously-added line surfaces the change rather than silently keeping a stale price.
Currency mismatch
Quoting an Opportunity in a currency the price book does not cover, or with a missing conversion rate, must fail clearly. Tests assert the total is computed in the Opportunity currency, not a default one.
Zero quantity or negative discount
A line with zero quantity, or a discount outside the allowed range, should be rejected by validation. Tests confirm the math cannot be pushed into an invalid state.
Approval paths
Most quoting flows include a discount approval gate. When a rep applies a discount above a defined threshold, the Quote must route into an approval process rather than becoming immediately sendable. Testing this means asserting three things: that a discount below the threshold does not trigger approval, that a discount above it does, and that the approval decision correctly updates the record — an approval unblocks the send while a rejection returns the Quote to the rep with the discount unapplied or the status reverted.
Multi-step approvals add tiers: a moderate discount may need a manager, a deep one a VP. Tests cover each tier boundary and the escalation between them, because an approval matrix that routes to the wrong level is how an unauthorized price reaches a customer.
Where the process crosses systems
Many orgs replace standard quoting with a CPQ engine that recalculates prices from product and price rules the moment a line changes. When CPQ is in play, opportunity-to-quote is no longer a simple copy of list prices — it triggers a configuration-and-pricing calculation whose order of operations is itself a testing subject. This page covers the process outcome; the mechanics of that pricing engine live on the dedicated configure-price-quote process testing page and the CPQ cloud testing page.
Catalog and price data also frequently originate outside Salesforce — a product master or price list maintained in an ERP or PIM and synced in. A stale sync means a correct quoting flow still produces a wrong price. Testing the process therefore includes asserting that the catalog the Quote prices against matches the system of record.
Test-data requirements
Quoting needs the deepest catalog of any early sales process: products across families, a standard and one or more custom price books, price book entries for every product-and-currency pairing under test, and Opportunities positioned at a quotable stage. Discount-approval tests need Opportunities primed to sit just below and just above each threshold. Multi-currency coverage multiplies the entries required.
Building and refreshing this graph by hand is slow and error-prone, and a stale catalog quietly invalidates results. SyntraFlow can be configured to provision products, price books, entries and quotable Opportunities as part of its Salesforce test data management approach, so each run prices against a known catalog.
Security and role variations
Quoting behavior is shaped by permission as much as by configuration. Product and price book visibility can be restricted by profile, so one rep sees a product another cannot quote. Maximum discount is often enforced per role, meaning the same 30% discount is fine for one user and blocked for another. Field-level security can hide margin or cost fields that a pricing rule still reads. And edit access on the Quote object determines who can change a line after generation.
Testing across these personas is what catches the case where a restricted rep can quote a product they should not offer, or bypass a discount ceiling that only appears to be enforced. Running solely as an administrator hides every one of these gaps.
Suggested test scenarios
A starting matrix for a quoting regression suite.
| Scenario | Type | Expected result |
|---|---|---|
| Single-product Quote, standard price book | Happy path | Line and total match the list price; Quote reaches sendable status. |
| Multi-line Quote with header discount | Calculation | Subtotal, discount and grand total roll up to the asserted figures. |
| Product missing a price book entry | Negative | Line is blocked or flagged; no zero-price or fallback line added. |
| Quote an Opportunity in a foreign currency | Currency | Prices resolve from the matching currency entries; total is in that currency. |
| Discount just above the approval threshold | Approval | Quote routes into approval and cannot be sent until approved. |
| Discount just below the threshold | Approval | No approval triggered; Quote is immediately sendable. |
| Restricted rep quotes a hidden product | Security | Product is unavailable for selection for that persona. |
Expected evidence
For quoting, the load-bearing evidence is the numbers. A trustworthy run captures each quote line's product, quantity, unit price and discount, the header totals, and the currency — then compares them to the values the catalog and discount rules should have produced. Where an approval was expected, the captured approval history is the proof the gate fired and resolved. Where the Opportunity amount should reconcile to the quote total, that reconciliation is recorded.
This is stronger than a screenshot of a rendered Quote, because it asserts the calculated values rather than merely showing that a document appeared. SyntraFlow is designed to capture these line-level figures and their expected counterparts on every run.
A price is only right if it survives downstream
A Quote is a promise that the back office has to honor. The product, price and term on an accepted Quote become an order, an invoice and a revenue schedule in the ERP — Oracle, SAP, Workday or NetSuite. If a quoting flow rounds a price differently, drops a discount, or resolves a currency inconsistently from how the ERP does, the customer is billed something other than what they agreed to.
SyntraFlow is built to assert that the priced Quote matches what lands downstream, closing the gap between what sales offered and what finance bills. That cross-system reconciliation is detailed on the Oracle ERP testing tool pages.
Related pages
The steps on either side of quoting, and the platform that prices them.
Business Processes hub
Every Salesforce process SyntraFlow can validate, grouped by cloud.
Lead-to-Opportunity testing
The step before: how the Opportunity being quoted came to exist.
Configure-Price-Quote testing
When CPQ rules drive pricing, the engine behind the Quote.
CPQ cloud testing
The pricing and configuration engine as a whole.
Test automation
Repeating these quoting scenarios on every change and release.
Test data management
Provisioning the catalog, price books and quotable Opportunities.
Opportunity-to-Quote testing FAQs
What does Salesforce opportunity to quote testing cover?
It validates the step where a deal becomes a priced offer: adding products as Opportunity line items, resolving each to the correct price book entry, generating the Quote with its quote lines, applying discounts, rolling up totals, routing discounts into approval, and rendering a sendable document. The core assertion is that every line prices the right product in the right currency and the totals are correct.
How is this different from CPQ testing?
Opportunity-to-quote is the business process of turning a deal into a Quote, whether pricing comes from standard price books or a CPQ engine. Configure-price-quote testing focuses specifically on the CPQ pricing and configuration engine: product rules, price rules and their order of operations. This page links to the CPQ process and cloud pages rather than duplicating them.
Why assert calculated totals instead of just checking a Quote exists?
Because a wrong price rarely errors. A missing price book entry, a stale currency rate or a misapplied discount produces a Quote that looks complete but carries the wrong number. Only an explicit assertion on the unit price, line discount and grand total catches it before the Quote is sent to a customer.
How do you test discount approvals?
By quoting discounts positioned just below and just above each threshold. The below-threshold Quote must stay immediately sendable; the above-threshold Quote must route into the approval process and remain unsendable until approved. Multi-tier matrices are tested at each boundary so a deep discount escalates to the right level.
What breaks quoting most often?
Catalog drift. Products get deactivated, price books get edited, and currencies get added, and any of those can leave a quoting flow pulling a stale, missing or fallback price with no visible error. Negative tests for missing price book entries, inactive products and currency mismatches are where these defects surface.
Does the quote total need to match the ERP?
Eventually, yes. An accepted Quote becomes an order and invoice in the ERP, so the product, price and term must reconcile downstream. SyntraFlow is designed to compare the priced Quote against systems such as Oracle, SAP and NetSuite, which is covered on the Oracle ERP and integration testing pages.
See a Quote priced and asserted line by line
Watch products flow onto an Opportunity, a Quote generate, discounts route into approval, and every total checked against the catalog.