What is Event Storming?

Event Storming is a collaborative workshop technique used to explore complex domains by mapping out domain events in a visual, timeline-like format. It helps domain experts, developers, and stakeholders build a shared understanding of the system.

🧩 Core Concepts (Post-it Colors):

TypeMeaningExample
🟠 OrangeDomain Event (past tense)OrderPlaced, PaymentReceived
🟢 GreenCommand (intention to do something)PlaceOrder, CancelBooking
🔵 BlueAggregate/EntityOrder, User, Product
🟡 YellowPolicy/RuleIf payment fails, cancel order
🟣 PurpleExternal System/UserCustomer, CRM System
🟥 RedProblem/Hotspot“Unclear business rule here”

✅ How to Conduct a Successful Event Storming Session

1. Set the Stage

  • Invite a cross-functional group: domain experts, developers, product owners.
  • Book a large physical or virtual whiteboard space (e.g., Miro, MURAL).
  • Use sticky notes (physical or digital) and color code them.

2. Start with Domain Events (🟠)

  • Ask: “What are the key things that happen in the system or sub-system?”
  • Place events in chronological order.
  • Example: UserRegistered → OrderPlaced → PaymentReceived.

3.  Add Commands (🟢)

  • For each event, ask: “What action caused this to happen?”
  • Example: PlaceOrder leads to OrderPlaced.

4. Identify Aggregates (🔵)

  • Ask: “What entity holds the logic or ensures consistency?”
  • Example: Order aggregate handles the PlaceOrder command.

5. Insert Policies (🟡)

  • Ask: “What should automatically happen after this event?”
  • Example: After OrderPlaced, send confirmation email.

6. Add External Actors (🟣)

  • Who triggers commands or receives events?
  • Example: Customer initiates PlaceOrder.

7.  Mark Hotspots (🟥)

  • Capture unclear, risky, or contentious areas.
  • Useful for follow-up discussions or deeper dives.

8. Group and Refactor

  • Spot bounded contexts naturally forming.
  • Cluster events/commands by business subdomains.