Concrete scenario: Discount Approvals.
- 0-10% discount: auto-approved, no approval needed.
- 11-25% discount: Sales Manager approves.
- 26-50% discount: Sales Manager AND Director approve.
- 51%+: VP approves.
Implementation options:
Option A — Single Approval Process with conditional steps (Approval Process):
- Create one Approval Process on the Opportunity (or Quote) object.
- Entry criteria:
Discount__c > 10(skip the process for sub-10% deals). - Step 1: criteria
Discount__c > 10 AND Discount__c <= 25-> Manager approval. If approved, exit (final approval action). - Step 2: criteria
Discount__c > 25 AND Discount__c <= 50-> Director approval. If reached, requires Manager (Step 1) AND Director. - Step 3: criteria
Discount__c > 50-> VP approval, bypassing earlier steps.
Constraint: Approval Processes evaluate steps in order, and each step's criteria gates whether it applies. The "all of steps 1+2+3 for higher tiers" pattern works as long as the criteria are properly chained.
Option B — Flow Orchestration (modern):
Use Flow Orchestration to model the multi-stage approval as a Flow with stages, each stage being a Decision (which tier?) feeding into the appropriate Submit-for-Approval invocations. More flexible: you can branch on any criteria, integrate with chat for notifications, time-out and escalate, all declaratively.
Option C — Custom routing via Flow + Approval Process:
A record-triggered Flow on Opportunity that evaluates the discount and submits to one of three pre-built Approval Processes (small / medium / large discount). Each Approval Process has its own approval ladder. The flow picks the right one. Simpler to maintain than Option A's nested approval steps.
Recommendation:
- For new builds, use Flow Orchestration (Option B) — it's where Salesforce is investing.
- For existing orgs already on Approval Processes, keep them and use Option A or C, depending on complexity.
- Don't try to do it purely in Approval Process steps with elaborate criteria if the logic is non-linear; Flow gives you cleaner branching.
