quote → cash
EN/FR Contact

Migration·Reference·8 min·Updated 2026-10-05

Moving pricing configuration between orgs

Why a pricing procedure that works in one org returns nothing in the next, and what has to travel together.

Salesforce docs documented by SalesforceField experience observed on a real orgRecommended pattern what we recommendTo verify unverified

Business requirement

Move a working pricing configuration from a sandbox to production without rebuilding it by hand.

Why it is not trivial

Pricing is not one artefact. It is a procedure, the context definition it reads, the decision tables it calls, the adjustment schedules it applies, and the price book entries underneath. Move a subset and the procedure runs and returns nothing — which looks like a pricing bug and is a deployment bug.

Recommended architecture

Treat the pricing configuration as one unit of deployment with an explicit inventory, and deploy in dependency order: context, then tables and schedules, then the procedure, then the prices.

Salesforce components

Select one to open its detail.

Flow

Pricing architecture context → procedure → price
INPUT DECIDE RUN OUTPUT ContextDefinition what pricing can see DecisionTable only if conditional AdjustmentSchedule tiers and allowances PricebookEntry if no condition Pricing procedure ExpressionSet Net price on the line

Scroll the diagram sideways

The rule that keeps a catalog maintainable: a decision table only when there is a condition or a tier. A flat price belongs on the PricebookEntry. Decision tables added by reflex are what fills a procedure up to its element ceiling.

And the procedure that runs is the compiled _Auto version, not the source you edit.

Implementation

  1. Inventory what the procedure references, including any hardcoded identifiers in its steps.
  2. Deploy in dependency order and reactivate the procedure at the end — deploying or editing it leaves it inactive.
  3. Verify by repricing a real quote and reading the line totals, not by inspecting the configuration.

Watch out

  • Procedure steps can carry hardcoded record identifiers. Identifiers do not survive an org change, so a procedure that references one silently stops applying whatever it pointed at.
  • The compiled _Auto procedure is what runs; verifying the source proves nothing.
  • Salesforce publishes deployment guidance for these objects specifically — it is worth reading before the first attempt rather than after the first failure.

Alternatives

Rebuilding by hand in the target org is slower but sometimes safer for a first production cut, because it forces an inventory. It does not scale to repeated releases.

Salesforce resources