Skip to content

Requests

Service requests follow a three-level chain: a Request (the overall order — one per checkout), containing one Requested Item per catalog line, which in turn generates fulfillment Tasks. The Requested Item is where the real work happens — its state drives the whole flow, and the request and its tasks roll their own state up from it.

  • Request — the order header. Holds who it’s for, who opened it, and a delivery address. Its state rolls up from its requested items.
  • Requested Item — one per catalog line. Carries the item’s variables (the answers filled in on the order form), its price, and a Stage shown on a progress tracker: Waiting for Approval → Fulfillment → Delivery → Completed (or Request Cancelled).
  • Task — the fulfillment work under a requested item. A requested item can generate more than one task; the item doesn’t close until all of its tasks do.
State What it means Typical next action
Draft / Cart Sitting in the cart, variables being filled in. No item number yet. Submit the order
Pending Approval Created and awaiting approval — a priced or policy-gated item. Approve or Reject
Approved All required approvals granted. Ready to enter fulfillment. Begin fulfillment once tasks are generated
Open / Work in Progress Fulfillment underway — one or more tasks open or in progress. Stays open until every task closes
Closed Complete Every fulfillment task completed successfully; the item was delivered. Terminal, successful.
Closed Incomplete Could not be fully fulfilled — rejected approval, a cancelled task, or a fulfillment failure. Terminal, unsuccessful.
Closed Cancelled The requester or an agent cancelled the item before or during fulfillment. Terminal.

Ordering a pre-approved / standard item skips Pending Approval entirely and goes straight to Approved; anything priced or policy-gated goes through approval first.

Approval is a small state machine of its own, attached to the requested item: requested → approved | rejected. The approver is resolved as the requester’s manager (falling back to a configured default when no manager is on file) — you don’t have to pick one manually. A rejection sends the item to Closed Incomplete; the requester can also cancel before a decision is made.

Each task moves Open → Work in Progress → Closed Complete / Closed Incomplete / Closed Skipped. Accept or start a task to move it into Work in Progress, then Complete it (or close it incomplete if it can’t be done). Skipping a task marks it no longer required by the flow without counting it as a failure.

Task outcomes roll up automatically: once every task under a requested item is closed, the item itself closes — Complete if every task finished complete or skipped, Incomplete if any task failed. The request header rolls up the same way once every one of its requested items is closed.

You don’t usually close a requested item directly — closing happens as a consequence of its tasks finishing (or of a rejection/cancellation earlier in the flow). The request as a whole is Closed Complete once every item in it closed complete, or Closed Incomplete once every item is closed but at least one of them wasn’t successful.