Quote-to-Cash on Dynamics 365 When the Process Lives in a Shared Spreadsheet

An honest build-versus-buy guide: what Dynamics 365 Sales does natively, what needs Power Platform, when a custom application is right, and how to cut over without a second spreadsheet.

If quote-to-cash runs on a shared Excel workbook that many people edit, breaks regularly and is now under compliance review, replace it with a system of record rather than a better spreadsheet. Dynamics 365 Sales covers the core natively: product catalogue, price lists, discount lists, quote, order and invoice lines, and a quote lifecycle that locks activated quotes and tracks revisions. Approvals, complex pricing rules and ERP integration need Power Platform on top, mainly Power Automate and server side logic. A custom application is the better answer when your pricing model is not list price plus discount or per-user licensing does not fit. An ERP without an API is integrated via staging tables or file drops with acknowledgement and reconciliation.

Why does a shared spreadsheet quote-to-cash process break down?

A workbook that started as one sales manager's price calculator becomes, over years, the price book, the discount policy, the approval record and the hand-off to finance at the same time. It works until enough people depend on it, and then the failure modes are always the same. None of them is fixed by a tidier workbook, because they come from the file being the system of record without any of the properties a system of record needs.

Compliance usually arrives with a short list of questions the spreadsheet cannot answer: who changed this price, who approved this discount, which version of the price list did this quote use, and can a seller approve their own exception. If the honest answer to each is "we would have to reconstruct it from emails", the process needs a platform, not a policy.

  • Concurrency: co-authoring conflicts, locked files, copies saved locally and then re-merged by hand.
  • Silent formula damage: an overwritten cell or a broken lookup range changes prices without anybody noticing.
  • No enforced approval: the discount threshold is a note in a column header, not a control.
  • No reliable history: version history shows that a file changed, not which price changed, why, and on whose authority.
  • Re-keying into the ERP: every order is typed again by someone in finance, so the quote and the invoice can differ.

What does Dynamics 365 Sales give you out of the box for quote-to-cash?

More than most spreadsheet teams expect. The objects below are standard Dynamics 365 Sales on Dataverse and are configured, not built. What they do not do is just as important, and the volume discounts and complex pricing guide sets out exactly where the native pricing engine stops, so it is not repeated here.

CapabilityWhat is nativeWhat is not
Product catalogueProducts, product families, bundles, unit groups and units, with a product lifecycle (draft, active, under revision, retired) so changes are published deliberately.Configurator style rules about which options can be sold together beyond bundles and families.
Price listsCurrency scoped price lists with start and end dates, price list items using fixed amounts, percentage of list price or markup and margin from cost, rounding policies, and a default price list per account.Automatic selection of the right price list when a date passes or a contract changes.
Discount listsQuantity ranges as a percentage or amount, attached to a price list item.Tiers across the whole order, on value rather than quantity, or several programmes stacking. See the pricing guide.
Quote, order and invoice linesCatalogue and write-in products, volume and manual discount per line, order level discount, freight and tax fields, totals calculated by the platform.Tax determination from a tax engine; tax is a field on the line, not a calculation service.
Quote lifecycleDraft, activate (the quote becomes read-only), revise (a new revision number, the previous one closed), close as won or lost, create order from quote, create invoice from order, lock pricing on orders and invoices, and quote documents from Word templates or PDF.A general purpose, configurable approval step before a quote can be activated or sent.
ApprovalsThe building blocks: security roles, business process flows, and the Dataverse events an approval can hang off.The approval itself. It is typically built with Power Automate approvals that write the decision and approver back to the quote.

What needs Power Platform on top of Dynamics 365 Sales?

Almost every spreadsheet replacement needs a layer on top of configuration, and it is better to scope it honestly at the start than to discover it in user acceptance testing. The pattern we use keeps anything that decides a number server side, so the rule holds for a form, an import and an integration alike, and uses Power Automate for the work that involves people or other systems.

  • Discount approvals: a Power Automate approval triggered when a line or order discount crosses a threshold, routed by role or value into Teams or Outlook, with the outcome, approver and timestamp written back to the quote.
  • A hard stop that cannot be bypassed: validation in a synchronous plugin so an unapproved quote cannot be activated, rather than a form script that an import ignores.
  • Pricing rules the spreadsheet encoded in formulas: tiered or order level discounts, customer agreements and promotions, designed as described in the pricing guide.
  • Fast line entry: where sellers are used to pasting dozens of lines into a grid, an editable grid or a custom PCF control keeps entry quick without leaving the governed record.
  • Integration flows to finance or the ERP, covered below, including the acknowledgement and reconciliation that make them trustworthy.
  • Scheduled checks: a nightly flow that reports quotes whose realised discount or approval state does not match policy.

How do the build-versus-buy options compare for replacing the spreadsheet?

There are four realistic options. The comparison is about fit, not about which product is better in general.

OptionFits whenWatch out for
Dynamics 365 Sales, configuredPricing is list price plus per-line discounts, few integrations, and sellers need a CRM anyway.Approvals and audit evidence still have to be designed; configuration alone rarely satisfies compliance.
Dynamics 365 Sales with Power PlatformThe common case: approvals, order level or agreement pricing, ERP integration, and a Microsoft 365 organization.Per-user licensing across every person who quotes, and a pricing layer that needs real testing and lifecycle management.
Power Apps on Dataverse without SalesThe process is internal and simple, and the Sales pipeline and forecasting are not needed.The Sales quote and pricing engine is not included, so catalogue, price calculation and the lifecycle would be rebuilt.
A custom applicationThe pricing model is not list price plus discount, licensing does not fit many light users or external quoters, or hosting must be your own.You own the engineering, testing, hosting and support; it must be built and run by a team, not one developer.

When is a custom application the right answer instead of Dynamics 365?

We recommend the right solution - whether that's Microsoft Dynamics 365, Power Platform, or a custom-built CRM. Some businesses need the Microsoft ecosystem. Others need full control without licensing. We deliver both. For quote-to-cash specifically, a custom CRM on React, Node.js, PostgreSQL or .NET is the better fit in a few recognisable situations, and none of them is "Dynamics 365 is a bad product".

Our custom CRM versus licensed CRM decision guide covers ownership, obligations and cost drivers in general; the quote-to-cash signals are below.

  • The price is computed, not looked up: a rating or configuration engine with dimensions, formulas and dependencies where list price plus discount is the wrong shape, so the platform pricing engine would be switched off and rebuilt anyway.
  • Many people need light access to quoting, or distributors and partners quote directly, and per-user licensing for all of them does not fit the budget.
  • The quoting tool is the product: it must run inside your own portal or hosting, or under data residency rules a public cloud service cannot meet.
  • Sellers do not need a CRM at all, only a governed quoting and order workflow feeding finance.

What controls will compliance ask for, and how are they met?

Auditors ask for evidence, not intent. On Dynamics 365 Sales each control below is met by platform features plus deliberate design; in a custom application the same controls have to be engineered explicitly, which is part of its cost.

ControlOn Dynamics 365 Sales and DataverseEvidence produced
Audit historyDataverse auditing enabled for the environment, the quote, line, product and price list tables, and the columns that matter, with a retention period agreed with compliance.Old and new value, user and time for every audited change.
Segregation of dutiesSecurity roles and business units so sellers create quotes, pricing administrators maintain price lists, and approvers approve; column security profiles on cost and margin fields.Role assignments that can be reviewed, and records that show who performed each step.
Approval evidencePower Automate approvals that write the decision, approver, comment and time to the quote, with server side validation preventing activation without it.An approval record on every quote above threshold, queryable in a view or report.
Locked price listsWrite privileges on price lists and price list items limited to a pricing role, products revised through the product lifecycle, and dated price lists instead of editing live prices.A controlled change path plus audited history for every price change.
Immutable sent quotesActivated quotes are read-only; changes happen through revision, and orders and invoices can have pricing locked.Revision numbers showing what the customer saw and what changed after.
Hand-off integrityOrders sent to the ERP with a unique key and an acknowledgement written back, plus a reconciliation report.Proof that every won quote became exactly one ERP order at the agreed value.

How do you integrate a legacy ERP that has no proper API?

This is where spreadsheet replacements most often fail: the CRM goes live, the ERP cannot receive orders, and finance quietly starts a second spreadsheet to bridge the two. The fix is a deliberate integration contract, even when the ERP only understands a database table or a file. We build these with Power Automate cloud flows through the on-premises data gateway where the ERP side is on premises, or with a small integration service where volume or logic demands it.

  • Staging tables: the CRM writes approved orders into a staging table the ERP team already knows how to import from, with a status column, never directly into ERP tables.
  • File drop where there is no database access: a structured file per batch into an agreed folder, with a naming convention and a checksum or record count.
  • Idempotent keys: every order carries the Dynamics 365 order number, so a re-sent batch cannot create a duplicate.
  • Acknowledgement: the ERP import writes back an accepted or rejected status and the ERP order number, which the flow stamps onto the Dynamics 365 order.
  • Reconciliation: a scheduled comparison of won quotes, sent orders and acknowledged orders by count and value, with exceptions in a view someone owns, instead of a spreadsheet someone maintains.
  • Inbound data: product, customer and credit status from the ERP arrive through the same pattern in reverse, so the price book has one source.
  • Desktop flow automation of the ERP screens only as a last resort, when there is no table and no file interface at all.

Where does Solzet work, and where does the ERP team take over?

Solzet delivers the CRM side and the integration: Dynamics 365 Sales configuration, the pricing and approval layer, Power Automate flows, the staging or file contract, acknowledgement and reconciliation. We do not implement or modify Dynamics 365 Finance, Business Central, Dynamics NAV, Finance and Operations or any other ERP. Where the ERP needs a new import routine or a staging table on its side, we specify the contract and work alongside your ERP team or vendor who builds it. The same applies to a custom application: we build the quoting system and its integration, not the ERP.

How do you cut over from the spreadsheet in phases?

A big bang switch from a spreadsheet many people rely on is the riskiest possible cutover. Phasing keeps the business trading while the new process proves itself, and it has one firm rule: every phase ends with something in the spreadsheet becoming read-only, so double entry never becomes permanent.

  • Phase 1, inventory the workbook: every tab, formula, macro, hidden column and unwritten rule, turned into written pricing and approval rules that compliance signs off.
  • Phase 2, catalogue and price lists: products and price lists loaded into Dynamics 365 and reconciled against the workbook; the price tabs then become read-only and pricing changes happen only in the system.
  • Phase 3, pilot quoting: one team quotes in Dynamics 365 with approvals live, while totals are compared against the workbook for a short, agreed parallel period.
  • Phase 4, all teams quoting: remaining teams move over in waves with training; new quotes in the spreadsheet stop on an announced date.
  • Phase 5, orders to the ERP: the staging or file integration replaces re-keying, with reconciliation running from the first day.
  • Phase 6, retire the workbook: open quotes migrated or allowed to expire, the file archived read-only as historical evidence, and the audit trail from then on lives in the platform.

What should you decide before choosing a platform?

A short discovery answers these questions, and they decide the platform far more reliably than a feature list. If you want a second opinion on the answers, the Dynamics 365 Sales implementation and custom CRM development pages describe how each engagement runs.

  • Is your price looked up from a list and discounted, or calculated from a model?
  • How many people quote, how many only view or approve, and are any of them outside the organization?
  • Which controls has compliance actually asked for, and in what form must the evidence be produced?
  • What can the ERP accept today: a table, a file, or only a screen?
  • Do sellers need a CRM around the quote, or only a governed quoting workflow?
  • Where must the data be hosted?

What do people ask us?

Can Dynamics 365 Sales replace a shared Excel quote-to-cash process?

Usually, yes. Dynamics 365 Sales natively provides the product catalogue, price lists, discount lists, quote, order and invoice lines, and a quote lifecycle with activation, revision and conversion to order and invoice. Most spreadsheet replacements also need Power Automate approvals, some server side pricing or validation logic and an integration to finance. If the pricing model is not list price plus discount, or licensing does not fit, a custom application can be the better answer.

Does Dynamics 365 Sales have built-in quote approvals?

Not as a ready-made, configurable approval step. Activated quotes become read-only and revisions are tracked, but approving a discount before a quote is activated is normally built with Power Automate approvals that write the decision and approver back to the quote, plus server side validation so an unapproved quote cannot be activated through any route.

How do we stop people editing prices without authorisation?

Limit write privileges on price lists and price list items to a pricing administrator role, revise products through the product lifecycle instead of editing live records, use dated price lists for changes, and enable Dataverse auditing on the pricing tables so every change records old value, new value, user and time.

How do we integrate an old ERP that has no API?

Use a staging table or a structured file drop as the integration contract, with a unique order key so resends cannot duplicate, an acknowledgement written back by the ERP import, and a scheduled reconciliation of won quotes against acknowledged ERP orders. Automating the ERP screens with desktop flows is a last resort. Solzet builds the CRM side and the integration; your ERP team or vendor owns the ERP side.

Does Solzet implement the ERP as well?

No. Solzet does not implement Dynamics 365 Finance, Business Central, Dynamics NAV, Finance and Operations or other ERP systems. We deliver Dynamics 365 Sales, Power Platform, custom applications and the integration to your existing ERP, working with the team that owns it.

When should we build a custom quoting application instead?

When the price is calculated by a model rather than looked up and discounted, when many light users or external partners need to quote and per-user licensing does not fit, when hosting must be your own, or when sellers need a governed quoting workflow but not a CRM. Solzet builds these on React, Node.js, PostgreSQL and .NET.

Can we keep using the spreadsheet during the transition?

For a short, agreed period, yes, but each phase should make part of it read-only: price tabs once price lists are live, new quotes once all teams are moved, and the whole file once orders flow to the ERP. A parallel run without an end date turns into permanent double entry.

Where are the pricing mechanics such as volume discounts explained?

In our guide to volume discounts and complex pricing in Dynamics 365 Sales, which covers what native discount lists can and cannot do, aggregated order level tiers in a plugin, custom pricing through the CalculatePrice message and the pricing test matrix.

Which solution is right for your business?

Tell us what you need. A senior consultant replies within one business day with a recommendation - Dynamics 365, Power Platform, or a custom-built CRM - not a sales script.