Markdown Editor

EventStorming Workshop Summary Template

Record an EventStorming session: events timeline, commands, actors, policies, read models, hotspots, context candidates

Kiến trúc & Thiết kế hệ thốngChuẩnEventStorming (Alberto Brandolini)eventstormingsummary
Mở trong editorTải .md

Cách dùng: Use it within 48 hours of a big picture, process or design level EventStorming workshop. Fill the domain events timeline and hotspots first, then link the board photos. The main pitfall is smoothing over disagreements, which are the session's most valuable output.

Xem trước

EventStorming Workshop Summary: [Domain or process name]

Record of an EventStorming workshop: the format, who took part, the domain events in time order, the commands, actors, policies, read models and external systems around them, the aggregates and hotspots found, the bounded context candidates and the agreed next steps. Based on the concepts of EventStorming as created by Alberto Brandolini. Replace every [bracketed] value and every row marked Example. Worked examples come from a big picture session on insurance claims.

FieldValue
Workshop title[Claims handling: big picture]
Format[Big picture / Process modelling / Software design]
Date and durationYYYY-MM-DD, [6 hours]
Location / tool[Room 4.12 / Miro board link]
Facilitator[@facilitator]
Scribe[@scribe]
Board photos / export[Link]
Summary version[0.1]
Last updatedYYYY-MM-DD

1. Goal and format

Goal: [Example: Build a shared understanding of the claims process from first notice of loss to payment, find the main bottlenecks and propose candidate bounded contexts for the new claims platform.]

FormatUsed?Scope covered
Big pictureExample: YesFirst notice of loss to payment and recovery
Process modellingExample: NoPlanned for the assessment process
Software designExample: NoPlanned after context boundaries are agreed

Out of scope: [Example: Policy sales and renewals; fraud analytics.]

2. Participants

NameRolePerspective brought
Example: @claims-leadClaims handling managerDay-to-day process and exceptions
Example: @adjusterSenior loss adjusterAssessment of property damage
Example: @financeClaims finance analystPayments, reserves, recovery
Example: @dev-leadEngineering leadCurrent systems and constraints
[Name][Role][Perspective]

Missing perspectives: [Example: No one from the call centre; their view of first notice of loss was represented second-hand.]

3. Notation legend

ElementColour on boardMeaning
Domain eventOrangeSomething that happened that domain experts care about, in past tense
CommandBlueA decision or request that causes an event
ActorSmall yellowA person or role who issues a command
PolicyLilacA reaction rule: "whenever X happens, then do Y"
Read modelGreenInformation an actor needs to make a decision
External systemPink (wide)A system outside the scope that sends or receives events
AggregateLarge yellowA cluster of behaviour and data that enforces consistency
HotspotRed / magentaA problem, question, disagreement or risk

4. Domain events timeline

IDPhaseDomain eventPivotal?Triggered byNotes
EV-01Example: NotificationLoss ReportedYesPolicyholder call or web formUp to 30% arrive by email outside office hours
EV-02Example: NotificationPolicy Coverage CheckedNoClaims handlerManual lookup in two systems
EV-03Example: NotificationClaim RegisteredYesClaims handlerClaim number issued
EV-04Example: AssessmentAdjuster AssignedNoAllocation policyBased on region and claim size
EV-05Example: AssessmentDamage AssessedYesAdjusterSite visit for claims above 5,000
EV-06Example: SettlementSettlement OfferedNoClaims handler
EV-07Example: SettlementSettlement AcceptedYesPolicyholder
EV-08Example: PaymentPayment IssuedYesFinanceTwo-day lag from batch job
[EV-NN][Phase][Event in past tense][Yes / No][Actor, policy or system][Notes]

5. Commands and actors

CommandActorRead model usedResulting event(s)
Example: Report LossPolicyholderPolicy summaryLoss Reported
Example: Register ClaimClaims handlerCoverage check resultClaim Registered
Example: Record AssessmentAdjusterClaim file, photos, repair estimatesDamage Assessed
Example: Offer SettlementClaims handlerAssessment, policy limits, reserveSettlement Offered
[Command][Actor][Read model][Event]

6. Policies

IDPolicyApplied by todayNotes
POL-01Example: Whenever a claim is registered above 5,000, then assign a field adjusterTeam leader, by handShould be automatic
POL-02Example: Whenever settlement is accepted, then request paymentClaims handler, by email to financeSource of the two-day lag
POL-03Example: Whenever no assessment exists after 10 days, then escalateNobodyMissing policy; claims stall
[POL-NN][Policy][Person / System / Nobody][Notes]

7. Read models and external systems

TypeNameUsed forOwnerIssue
Read modelExample: Coverage summaryDeciding whether a loss is coveredPolicy adminBuilt by hand from two screens
Read modelExample: Claim fileAssessment and settlementClaimsPhotos stored in email
External systemExample: Policy admin systemPolicy and cover dataIT policy teamBatch export only
External systemExample: Bank payment gatewayPaying settlementsFinanceDaily batch
[Type][Name][Use][Owner][Issue]

8. Aggregates

AggregateCommands handledInvariants protectedEvents emitted
Example: ClaimRegister Claim, Close ClaimOne open claim per loss event and policyClaim Registered, Claim Closed
Example: SettlementOffer Settlement, Accept SettlementTotal offered never exceeds policy limit minus excessSettlement Offered, Settlement Accepted
[Aggregate][Commands][Invariants][Events]

9. Hotspots

IDHotspotTypeVotesOwnerNext step
HS-01Example: Coverage check takes 20 minutes per claimBottleneck9@claims-leadPrototype coverage read model
HS-02Example: Finance and claims disagree on when a claim is "closed"Language conflict7@domain-architectDefine term in both contexts
HS-03Example: No owner for recovery from third partiesMissing responsibility5@head-of-claimsDecide ownership
[HS-NN][Hotspot][Bottleneck / Question / Conflict / Risk / Missing][N][@owner][Step]

10. Bounded context candidates

CandidateEvents coveredLanguage signalConfidenceNext validation
Example: Claim NotificationEV-01 to EV-03"Loss", "first notice"HighBounded context canvas
Example: AssessmentEV-04, EV-05"Inspection", "estimate"MediumProcess modelling session
Example: Settlement and PaymentEV-06 to EV-08"Reserve", "settlement", "payment"Low (may be two contexts)Process modelling with finance
[Candidate][Events][Signal][High / Medium / Low][Step]

11. Flow overview

The flow below summarises the main path across the three candidate contexts, with the policy that currently causes the payment delay.

12. Decisions and next steps

Decisions taken: [Example: Treat Claim Notification as the first context to rebuild; keep Assessment in the legacy system for now.]

IDActionOwnerDueStatus
ACT-01Example: Run process modelling session on settlement with finance@facilitatorYYYY-MM-DDOpen
ACT-02Example: Draft bounded context canvas for Claim Notification@dev-leadYYYY-MM-DDOpen
ACT-03Example: Propose definition of "claim closed"@domain-architectYYYY-MM-DDOpen
[ACT-NN][Action][@owner]YYYY-MM-DD[Open / Done]

Standard and licence note

Based on the EventStorming method created by Alberto Brandolini (https://www.eventstorming.com), using its concepts of formats (big picture, process modelling, software design), domain events, commands, actors, policies, read models, external systems, aggregates and hotspots. EventStorming is a method, not a licensed document; no text from its books or materials is reproduced, and all wording and examples here are original to this collection. Template licence: MIT.

Template liên quan