methodatlas
RunsheetKnowledge Modeling

Event Modeling

ComplexityMedium
Time2-6 h
Participants2-8
FormatWorkshop + async
MaturityEstablished
01

Prerequisite

What needs to be finished first

An overview of domain events and pivotal events exists so Event Modeling can focus on a concrete scenario.

Without: Without this foundation, Event Modeling creates an empty model and misses behaviorally relevant transitions.
Complete firstDomain Storytelling

At least one spoken scenario for the chosen use case exists that surfaces user intent and handoffs.

Without: Without narrative pre-clarification, commands and user actions are mixed up or invented.
02

Preparation

What needs to be ready before start

Materials

Long board (at least 4 m or digital with zoom), horizontal swimlanes (UI/wireframes at top, commands and events middle, read models and state at bottom); orange stickies for events, blue for commands, light blue for read models, yellow for user intent or triggers; markers.

People / roles

One facilitator with Event Modeling experience; one to two domain experts; two to four engineers; optional UX representative for wireframes.

Pre-read

Concrete scenario ("From cart to paid order"); pivotal events from EventStorming; existing UI mockups or screens; known read models or reports.

Time needed

2-6 h

Setup

Set up board with time axis left to right. Mark three swimlanes (UI/wireframes, Behavior/commands+events, Data/read models). Attach pivotal events as anchors in the middle lane.

03

Core question

The one question this method answers

Which events, commands, and read models cover the chosen user flow end-to-end, and how can we slice implementation from this?

04

Flow

Marker: Phase

StepDurationActionHint
1Phase 1: Wireframes or UI sketches
20-40 minAttach UI step sketches or wireframes of the scenario in the top swimlane. One image per step, arranged chronologically left to right.Wireframes can be pencil sketches; details do not matter. What matters is which information the user sees when, and which action they trigger.
2Phase 2: Commands from user intent
30-45 minPlace one command (blue) in the middle lane directly under each UI action. Use imperative command names ("PlaceOrder", "CancelReservation").If a UI element does not trigger a command, it is read-only. If a command has no UI trigger, it is system-triggered (scheduler, external event).
3Phase 3: Events following commands
30-45 minPlace one or more events (orange) to the right of each command. Event names should be past tense ("OrderPlaced", "ReservationCancelled"). Draw explicit command → event relations.A command can create multiple events or fail (failure events). Model failure events explicitly, do not omit them implicitly.
4Phase 4: Read models and state
30-45 minBottom lane: identify which data is shown on each UI screen. Derive read models (light blue) and connect them to events that update them.Read models derive from events, not from tables. If a read model cannot be derived from events, either an event is missing or the read model is cut incorrectly.
5Phase 5: Slices and implementation plan
30-45 minCreate vertical slices through the board: one slice equals one user step with command, events, read model update, and UI display. Estimate and prioritize each slice.Vertical slicing enables incremental delivery. Teams that cut horizontally (all commands, then all events) deliver no user value until the end.
05

Artifact

What comes out at the end

Form

Event Modeling board (photo or digital export) plus structured markdown with a slice list containing commands, events, read models, and UI references. Link to bounded context canvases and ADRs.

Versioning / ownership

One board entry with date per scenario. On model changes (new slices, changed events), create a new version. Keep prior versions to preserve model evolution.

Tool alternatives
  • Miro or FigJam with Event Modeling template
  • Physical board with snapshots
  • EventModeler.org web tool
  • JSON spec with a custom schema in the repo

event-modeling-working-template.md

Compact working template for Event Modeling with context, input, output artifacts, and next step.

Event Modeling Working Template

Goal

Models system behavior through Events, Commands, Views, and Policies along a scenario.

Context

When and for what do we use this method?

Input

Which data, observations, decisions, or materials are available?

Execution

Short notes along the runsheet.

Output artifacts

  • Event Model:
  • UI Flow:
  • Commands:
  • Read Models:

Assumptions and open questions

  • ...

Decision / Next step

Owner, date, and success signal.

06

Example output

Concrete filled scenario, fictional example

event-modeling-beispiel.md

Concrete filled scenario, fictional example

Event Model — Checkout Flow (v1, 2026-05-18)

Scenario: From cart to shipping confirmation

Slice 1: Show cart

  • UI: CartView (shows items, subtotal, shipping estimate)
  • Read Model: CartReadModel (from ItemAddedToCart, ItemRemovedFromCart, CartCleared)
  • Commands: none (read-only)

Slice 2: Start checkout

  • UI: CheckoutAddressForm
  • Command: StartCheckout
  • Events: CheckoutStarted, AddressRequested
  • Read Model: CheckoutSessionReadModel

Slice 3: Authorize payment

  • UI: PaymentMethodPicker → PaymentConfirmation
  • Command: AuthorizePayment
  • Events: PaymentAuthorized | PaymentDeclined
  • External: PSP Webhook → PaymentCaptured
  • Read Model: PaymentStatusReadModel

Slice 4: Submit order

  • UI: OrderConfirmation
  • Command: PlaceOrder
  • Events: OrderPlaced, ReservationConfirmed, EmailQueued
  • Read Model: OrderSummaryReadModel

Slice 5: Receive shipping confirmation (asynchronous)

  • Trigger: CarrierShippedWebhook (external)
  • Command: RecordShipment
  • Events: OrderShipped
  • Read Model: OrderStatusReadModel

Implementation order: Slice 4 first (core value), then 2+3, then 1+5.

07

Pitfalls

Recognize symptoms and steer against them

Trap

Commands and events mixed

Symptom

Some stickies use imperative form and some use past tense, colors get misused.

What to do

Enforce color and naming discipline from the start. Facilitator corrects immediately. Command = intent (CamelCase imperative), event = result (CamelCase past tense).

Trap

Missing failure events

Symptom

Every command only has happy-path events, and error cases are not modeled.

What to do

Ask explicitly for each command: what can go wrong? Model failure events (PaymentDeclined, ReservationFailed). Otherwise code behavior is incomplete.

Trap

Read models from tables

Symptom

Read models are drawn from current database tables instead of being derived from events.

What to do

Check strictly: can this read model be reproduced from the events in the lane? If not, events are missing or read model is cut incorrectly.

Trap

Horizontal slicing

Symptom

Implementation is planned in phases: all commands, then all events, then all read models.

What to do

Slice vertically. One slice should contain command + events + read model + UI. This creates end-to-end value for each slice.

Trap

External effects implicit

Symptom

A PSP or carrier webhook is not modeled and appears later in code unexpectedly.

What to do

Model external triggers explicitly as yellow stickies (user intent or system trigger). Otherwise integration remains hidden and surprises the team later.

08

Stop criteria

Done signals checkable in under a minute

Scenario is not bounded and drifts across multiple use cases without focus.
No UI concept is available, making the model abstract and detached from users.
Domain experts are missing, so commands and events are guessed technically.
Board is too small or the tool lacks clean swimlanes; overview is lost.
Workshop is scheduled for less than 2 h, so end-to-end slice cannot be completed.
No willingness for vertical slicing, stakeholder pushes for phase-based planning.

Finished the runsheet?

Go to the profile for purpose, similar methods, and sources or continue to the next method in the catalog.