Event Storming - orders
orders-event-storming · blueprint v2.8 · generated 2026-11-04 11:23 UTC

Overview

Event Storming board for orders: what happens (events), what asks for it (commands) and what reacts (policies), on Big Picture, Process Modelling and Software Design.

The example below is one real story of this model, Customer submits order (PRC001); read it left to right.

How to read

actor: Customer Customer
Actor ACT001 (Customer): starts the story
command: Submit Order Submit Order
Command orders.CMD001 (Submit Order): a request; it raises the event
event: Order Submitted Order Submitted
Event orders.EVT001 (Order Submitted): has happened; the policy reacts
policy: reserve-on-order-submit reserve on ordersubmit
Policy: reacts by issuing the next command
command: Reserve Stock Reserve Stock
Command inventory.CMD001 (Reserve Stock): the next request, issued by the policy

6 of 6 hotspots on Big Picture are still open: risks, questions and findings to discuss.

Not drawn as stickies on Big Picture: swimlanes (1), drawn as the lanes themselves, not as stickies.

The following pages contain the level inventories, the legend, readable lane figures and model gaps.

Level
Lane
Kind
Big Picture - Event Storming board Big Picture The story spine, and what no story reaches. 13 of 13 stickies drawn · orders implementation: 0 as-is · 0 wip · 0 to-be · 0 unclear · 7 unstated of 7 default Actors not on a story path (2) actor: Shop Operator (declared in default) Shop OperatorACT002ACT002 actor: Order System (declared in default) Order SystemACT003ACT003 time orders Customer submits order actor: Customer (declared in default) CustomerACT001ACT001 event: Order Submitted Order Submittedorders.EVT001orders.EVT001integration event event: Stock Reserved Stock Reservedinventory.EVT001inventory.EVT001integration event hotspot: The one step that reserves stock is the one step the shop does not serve. The one stepthat reservesstock is the onestep the shop…orders.RSK001orders.RSK001 hotspot: Create, submit and resubmit were built around two states the Order no longer declares Create, submitand resubmitwere builtaround two st…orders.FN001orders.FN001 hotspot: The event-driven half of this model has no implementation at all, and nothing says so The eventdriven half ofthis model hasno implement…orders.FN004orders.FN004 opportunity: An accepted order is an order the shop can fulfil. An accepted orderis an order theshop can fulfilorders.GL002orders.GL002 Opportunities not on a story path (1) opportunity: Process orders within 2 seconds Process orderswithin 2 secondsorders.GL001orders.GL001 Findings Drift (3) hotspot: One declared payload describes another operation's body; the other is declared by no type at all One declaredpayloaddescribesanother opera…orders.FN002orders.FN002 hotspot: OrderList declares items, total and page; GET /orders answers a JSON array Order Listdeclares items,total and page;GET / orders a…orders.FN003orders.FN003 hotspot: Order and OrderLine disagree with Order.ts and OrderItem.ts on nine field names and on what is required Order andOrder Linedisagree withOrder ts and…orders.FN005orders.FN005 Legend actor event opportunity hotspot event (integration) actor (system) hotspot (risk) hotspot (finding) Render notes 18 connectors are not drawn because an endpoint is not on this board the board draws 0 of 6 hotspots beside what the model says they affect; 3 are in a heap the model states a lifecycle for 1 of 6 hotspots here: 0 settled (a risk it closed, an inquiry it resolved or closed), 1 still open; 5 state none; a finding's status is not carried by this projection swimlanes (1) is not drawn: drawn as the lanes themselves, not as stickies
Process Modelling - Event Storming board Process Modelling The story spine, and what no story reaches. 24 of 24 stickies drawn · orders implementation: 0 as-is · 0 wip · 2 to-be · 0 unclear · 16 unstated of 18 inventory Policies not on a story path (1) policy: reserve-on-order-submit reserve on ordersubmitinventory.CMD001inventory.CMD001 time orders Customer submits order actor: Customer (declared in default) CustomerACT001ACT001 command: Submit Order Submit Orderorders.CMD001orders.CMD001 event: Order Submitted Order Submittedorders.EVT001orders.EVT001integration event actor: Order System (declared in default) Order SystemACT003ACT003 command: Reserve Stock Reserve Stockinventory.CMD001inventory.CMD001 event: Stock Reserved Stock Reservedinventory.EVT001inventory.EVT001integration event command: Send Order Confirmation implementation: to-be Send OrderConfirmationorders.CMD002orders.CMD002 actor: Shop Operator (declared in default) Shop OperatorACT002ACT002 command: Set Order Status Set Order Statusorders.CMD004orders.CMD004 hotspot: The one step that reserves stock is the one step the shop does not serve. The one stepthat reservesstock is the onestep the shop…orders.RSK001orders.RSK001 hotspot: Create, submit and resubmit were built around two states the Order no longer declares Create, submitand resubmitwere builtaround two st…orders.FN001orders.FN001 hotspot: The event-driven half of this model has no implementation at all, and nothing says so The eventdriven half ofthis model hasno implement…orders.FN004orders.FN004 hotspot: One declared payload describes another operation's body; the other is declared by no type at all One declaredpayloaddescribesanother opera…orders.FN002orders.FN002 Commands not on a story path (1) command: Create Draft Order Create Draft Orderorders.CMD003orders.CMD003 Policies not on a story path (1) policy: confirm-on-stock-reserved implementation: to-be confirm on stockreservedorders.CMD002orders.CMD002 Read Models not on a story path (6) read_model: Get Order Get Orderorders.QRY001orders.QRY001 read_model: List Orders List Ordersorders.QRY002orders.QRY002 read_model: Order List Order ListSCR001SCR001 read_model: Order Detail Order DetailSCR002SCR002 read_model: Submit Order Submit OrderUAC001UAC001 read_model: View Order Details View Order DetailsUAC002UAC002 Findings Drift (2) hotspot: OrderList declares items, total and page; GET /orders answers a JSON array Order Listdeclares items,total and page;GET / orders a…orders.FN003orders.FN003 hotspot: Order and OrderLine disagree with Order.ts and OrderItem.ts on nine field names and on what is required Order andOrder Linedisagree withOrder ts and…orders.FN005orders.FN005 Legend actor command event policy read model hotspot event (integration) actor (system) hotspot (risk) hotspot (finding) read model (Operation) read model (UI Action) read model (Screen) to-be - not yet Render notes 9 connectors are not drawn because an endpoint is not on this board 1 pin is drawn as a placement rather than as a line the board draws 1 of 6 hotspots beside what the model says they affect; 2 are in a heap, 1 of those naming a unit that is itself in a heap the model states a lifecycle for 1 of 6 hotspots here: 0 settled (a risk it closed, an inquiry it resolved or closed), 1 still open; 5 state none; a finding's status is not carried by this projection swimlanes (1) is not drawn: drawn as the lanes themselves, not as stickies
Software Design - Event Storming board Software Design The story spine, and what no story reaches. 41 of 41 stickies drawn · orders implementation: 0 as-is · 0 wip · 2 to-be · 0 unclear · 28 unstated of 30 inventory Policies not on a story path (1) policy: reserve-on-order-submit reserve on ordersubmitinventory.CMD001inventory.CMD001 time orders Customer submits order actor: Customer (declared in default) CustomerACT001ACT001 command: Submit Order Submit Orderorders.CMD001orders.CMD001 event: Order Submitted Order Submittedorders.EVT001orders.EVT001integration event actor: Order System (declared in default) Order SystemACT003ACT003 command: Reserve Stock Reserve Stockinventory.CMD001inventory.CMD001 event: Stock Reserved Stock Reservedinventory.EVT001inventory.EVT001integration event command: Send Order Confirmation implementation: to-be Send OrderConfirmationorders.CMD002orders.CMD002 actor: Shop Operator (declared in default) Shop OperatorACT002ACT002 command: Set Order Status Set Order Statusorders.CMD004orders.CMD004 hotspot: The one step that reserves stock is the one step the shop does not serve. The one stepthat reservesstock is the onestep the shop…orders.RSK001orders.RSK001 hotspot: Create, submit and resubmit were built around two states the Order no longer declares Create, submitand resubmitwere builtaround two st…orders.FN001orders.FN001 hotspot: The event-driven half of this model has no implementation at all, and nothing says so The eventdriven half ofthis model hasno implement…orders.FN004orders.FN004 hotspot: One declared payload describes another operation's body; the other is declared by no type at all One declaredpayloaddescribesanother opera…orders.FN002orders.FN002 Orderconstraint: Order command: Create Draft Order Create Draft Orderorders.CMD003orders.CMD003 rule: Cancel a confirmed order Cancel aconfirmed orderorders.TR005orders.TR005 rule: Cancel a pending order Cancel a pendingorderorders.TR003orders.TR003 rule: Cancel a shipped order Cancel a shippedorderorders.TR007orders.TR007 rule: Confirm a pending order Confirm a pendingorderorders.TR002orders.TR002 rule: Deliver a shipped order Deliver a shippedorderorders.TR006orders.TR006 rule: Order must have items Order must haveitemsorders.SR001orders.SR001 rule: Ship a confirmed order Ship a confirmedorderorders.TR004orders.TR004 event: Order confirmed Order confirmedorders.CN001orders.CN001 event: Order cancelled Order cancelledorders.CN001orders.CN001 event: Order shipped Order shippedorders.CN001orders.CN001 event: Order delivered Order deliveredorders.CN001orders.CN001 hotspot: One declared payload describes another operation's body; the other is declared by no type at all One declaredpayloaddescribesanother opera…orders.FN002orders.FN002 hotspot: OrderList declares items, total and page; GET /orders answers a JSON array Order Listdeclares items,total and page;GET / orders a…orders.FN003orders.FN003 hotspot: Order and OrderLine disagree with Order.ts and OrderItem.ts on nine field names and on what is required Order andOrder Linedisagree withOrder ts and…orders.FN005orders.FN005 hotspot: [orders.QN003] Can a customer still change an order once it has been submitted? [orders QN003] Can acustomer stillchange an ord…orders.QN003orders.QN003 hotspot: [orders.QN005] What states has this order been through, and who moved it? [orders QN005] Whatstates has thisorder been thr…orders.QN005orders.QN005 Policies not on a story path (1) policy: confirm-on-stock-reserved implementation: to-be confirm on stockreservedorders.CMD002orders.CMD002 Read Models not on a story path (6) read_model: Get Order Get Orderorders.QRY001orders.QRY001 read_model: List Orders List Ordersorders.QRY002orders.QRY002 read_model: Order List Order ListSCR001SCR001 read_model: Order Detail Order DetailSCR002SCR002 read_model: Submit Order Submit OrderUAC001UAC001 read_model: View Order Details View Order DetailsUAC002UAC002 Hotspots not on a story path (3) hotspot: What state is a customer's order in? What state is acustomer'sorder in?orders.QN001orders.QN001 hotspot: Which orders has this customer placed, and in what state is each? Which ordershas thiscustomerplaced, and in…orders.QN002orders.QN002 hotspot: Which set of statuses can an order actually be in? Which set ofstatuses can anorder actuallybe in?orders.QN004orders.QN004 Legend actor command event policy read model constraint rule hotspot event (integration) actor (system) hotspot (risk) hotspot (finding) hotspot (question) read model (Operation) read model (UI Action) read model (Screen) to-be - not yet Render notes 5 connectors are not drawn because an endpoint is not on this board 5 connectors join two stickies inside one frame, and the frame says it more clearly than a line would 7 pins are drawn as a placement rather than as a line the board draws 5 of 11 hotspots beside what the model says they affect, as 6 stickies; 3 are in a heap the model states a lifecycle for 1 of 11 hotspots here: 0 settled (a risk it closed, an inquiry it resolved or closed), 1 still open; 10 state none; a finding's status is not carried by this projection swimlanes (1) is not drawn: drawn as the lanes themselves, not as stickies

Printed whole to fit the sheet. The report and the PDF delivered beside this page print it at reading size.

Sticky kinds

  • Actorswho acts
  • Commandswhat is asked for
  • Eventswhat happened
  • Policieswhat reacts
  • Read Modelswhat is looked at
  • Aggregateswhat enforces
  • Rules
  • Opportunitieswhat could be
  • Hotspotsa concern raised about this system

Marks a sticky can carry

  • event (integration)published across a service boundary: it has an audience outside this context
  • actor (system)acts on the domain from outside, but is a machine rather than a person
  • hotspot (risk)something that may go wrong, with a likelihood and an impact
  • hotspot (finding)something a review observed in the code or the model
  • read model (Operation)
  • read model (UI Action)
  • read model (Screen)
  • hotspot (question)a domain question the model leaves unanswered
scroll to zoom · drag to pan