Skip to content

FLOW-0003 — Commitments That Cannot Be Silently Edited

A purchase order is a promise to an outside party, and promises that can be quietly edited are worthless — to the supplier, to the auditor, and to the next person who reads the record. This scenario shows the discipline around that promise: total freedom while composing, a hard freeze at the moment of commitment, precise refusals for everything disallowed after it, and closure only by deliberate acts.

This flow is a path across use cases, in order. Identifiers are the immutable prefix form defined in the naming convention; a flow is not a level-4 scenario.

Domains crossed: Procurement.

StepUse caseWhat happens
1PRO::PO::0001An order is composed as a draft
2PRO::PO::0003The draft is edited freely
3PRO::PO::0004Submit freezes the commitment
4PRO::PO::0005Post-submission tracking begins
5PRO::PO::0007The order is closed or cancelled by a deliberate act

The business value: clean supplier communication and internal accountability — the order the vendor received is provably the order the record shows, forever.

The diagram conventions — the domain colors, the dependency ordering, and the arrow meanings — are those of the scenario catalog.

PlantUML diagram

Submit is where composition becomes commitment, and the floor under it is checked right there: at least one line; a supplier linked to a vendor (a name alone can carry a draft, never a submission) and that vendor not retired — re-checked at this moment even though the draft’s pin was taken earlier; and every serviced demand item ready to start. Each failure returns its own precise reason, and the draft keeps its content — fix the cause and resubmit.

PlantUML diagram

The freeze covers everything that defines the promise: the order’s structure (its lines), its supplier, its header details, and its assignee, each held on the version pinned at submission. What stays open is everything that happens to the promise: the supplier’s answers, the receipts accruing against the lines, and notes. Two labels the user sees — Confirmed and Receiving — are computed views over Submitted, not stored states; nothing transitions to reach them.

PlantUML diagram

The two ways out are as disciplined as the freeze. Cancel exists only while the order is a draft — canceling a submitted order would retract a commitment to an outside party, so it is deliberately not a casually available action — and canceling a draft returns every attached demand item to the queue untouched (walked in the pull-replenishment round trip). Close requires every line closed first, and a line with quantity still outstanding closes short only by an explicit act — never automatically, never by timeout.

PlantUML diagram

  • Orders — the order and line machines, the operations table with each action’s gate, and the freeze guarantees.
  • Business Affiliate — the vendor pin, the linked-vendor requirement, and the retirement re-check.
  • Demand — the demand items an order services and their readiness at Submit.