Labels such as “pending,” “in progress,” “approved,” and “closed” can look simple in an application. Yet each one represents a major design choice: what can happen to a record, who is allowed to do it, and which conditions must be met first.
Without that work, software often preserves improvisation instead of reducing it. Cases skip controls, records are closed without review, tasks get stuck without an owner, and teams use the same status to mean different things. This guide provides a practical way to design a useful workflow without turning everyday work into a maze.
Start with the item that changes, not with screens
A workflow describes the life of one specific item: a request, order, invoice, incident, application, or case file. Before discussing screens or buttons, finish this sentence: “We need to know the current situation of every ___ and what is still required to resolve it.”
The state-machine concept is a useful foundation. It represents behavior through states connected by transitions triggered by events. You do not need a complex technical diagram to use the idea: separate the item’s current situation from the action that changes it. OMG’s UML specification describes this approach through states, transitions, and events.
Use a small number of states that answer an operational question
A good state answers: What verifiable situation is this item in right now? It should not be a vague note or a person’s name. For purchase requests, for instance, useful states may be draft, submitted, under review, approved, rejected, received, and cancelled.
- Draft: it can still be changed before the process begins.
- Under review: a defined check is required.
- Waiting: information or an outside response is missing.
- Resolved: the goal was achieved and no normal action remains.
- Cancelled: the item will not continue, with a recorded reason.
Do not use statuses such as “miscellaneous,” “urgent,” or “ask Alex.” Priority and assignment matter, but they belong in separate fields rather than in the state itself.
A useful state does not tell the whole story; it makes the next possible decision clear.
Write every transition as a testable rule
The important unit is not only the state but the transition: the move from one state to another. Define five elements for each transition:
- Source and destination: from “under review” to “approved.”
- Trigger: approve, submit, cancel, a deadline expiring, or new information arriving.
- Owner: the role or integration allowed to perform it.
- Conditions: what must be present or checked first.
- Outcome: what is recorded, notified, created, or restricted afterward.
For example: “A request moves from under review to approved when an assigned approver confirms the decision, the amount is present, and the system stores the date, user, and optional comment.” This wording gives operations, design, and development a shared rule to discuss.

Design exceptions and endings from the outset
Real processes rarely move in a straight line. Information may be missing, a request may expire, an error may be found, or a case may need to return to an earlier stage. You do not need to predict every possible exception, but you should address the common, costly, or risky ones.
AWS Step Functions documentation offers a helpful distinction: workflow states can perform work, choose among paths, wait, or finish successfully or with failure. In business software, that means separating a pending task from a decision, a pause, and a final closure.
- What happens when information is wrong?
- Who can reopen a case, and for which reason?
- Can a cancelled item return to the workflow?
- Which states are final and which allow a return?
- What happens when no one acts by an agreed deadline?
Test with real cases before automating
Choose five to ten recent examples: one routine case, one urgent case, one incomplete case, and one that ended badly. Walk through the workflow together and record every hesitation. If the team cannot choose a state or identify the next owner, adding more buttons will not solve the problem.
Track simple signals as well: cases stalled in each state, time to resolution, reversals, and cancellation reasons. These are not measures for monitoring people. They reveal unclear rules, bottlenecks, and work that still happens outside the system.
Conclusion: operational clarity comes before automation
A well-designed workflow makes work visible without forcing people into arbitrary labels. Begin with few states, document concrete transitions, treat exceptions as part of the process, and validate the model with real cases. Only then decide which notifications, validations, or automations are worth building.
If your process relies on spreadsheets, messages, and decisions that are hard to trace, custom software can turn those rules into a clear system with a scope suited to your operation.