Approval is a policy boundary

Approval workflows protect high-impact actions by separating preparation from authorization. A robust workflow defines who can submit, who can approve, whether the same person is forbidden from both, how many approvals are required, what happens when data changes, and which version of the transaction was actually approved.

Model maker-checker rules explicitly

  • Store maker identity and transaction version at submission.
  • Evaluate approver permission, organizational scope, limits, and segregation-of-duties at approval time.
  • Editing material fields after approval should invalidate prior approvals or create a new version.
  • Use an immutable approval event history rather than only current status.
  • The final execution step must verify that the approval set still matches the command being executed.

Decision path before authorization

Submission freezes an approval version; approvers are evaluated against that version, and execution occurs only when the policy is fully satisfied.

Diagram

Maker-checker authorization decision

Submission freezes an approval version; approvers are evaluated against that version, and execution occurs only when the policy is fully satisfied.

A dual-control payment example

Approval loopholes to close

Workflow-policy checklist

  • Define submission, rejection, cancellation, expiry, and approval transitions.
  • Version the data being approved.
  • Apply SoD and limits server-side.
  • Record every approval decision as an immutable event.
  • Revalidate policy immediately before execution.