Skip to content
Event storming templates

Event Storm — Bank Account Opening

Application, KYC checks and core banking for a current account, where the identity check fans out into verified and referred and the first payment arrives uncommanded.

Template previewEvent storming
Account opening — application to first paymentBounded contexts3Domain events6Event coverage83.3%Hotspots3Model smells1Domain eventCommandActorAggregatePolicyRead modelExternal systemHotspotApplication1 event · 1 command · 1 policy · 1 hotspotApplicationOnboarding checks2 events · 1 command · 1 policy · 1 hotspotIdentity checkCore banking3 events · 2 commands · 0 policies · 1 hotspotAccountApplicantSubmit applicationApplication submittedApplication progresstrackerAddress lookupserviceA joint applicationneeds two identitychecks and one…When applicationsubmitted, runidentity checkKYC serviceRun identity checkIdentity verifiedIdentity checkreferredSanctions screeningproviderHow long may areferred applicantwait before we…When identityverified, openaccountCore banking serviceOpen accountAccount openedOperations analystIssue debit cardCard issuedNew accounts dailyreportFirst paymentreceivedCard production isoutsourced but theevent is oursWorkshop checksEvents with no producing command1First payment receivedCommands with no resulting event0noneCommands with no aggregate0noneAggregates with no events0nonePolicies with a missing trigger event0nonePolicies with a missing command0noneHotspots per context3Application 1 · Onboarding checks 1 · Core banking 1Cross-context flows2Application → Onboarding checks · Onboarding checks → Core banking

Make it your own.

title "Account opening — application to first payment"

context "Application"
  actor Applicant
  aggregate Application
  command "Submit application" by Applicant on Application
  event "Application submitted" from "Submit application"
  readmodel "Application progress tracker"
  external "Address lookup service"
  hotspot "A joint application needs two identity checks and one address"
  policy "When application submitted, run identity check" then "Run identity check"

context "Onboarding checks"
  aggregate "Identity check"
  command "Run identity check" by "KYC service" on "Identity check"
  event "Identity verified" from "Run identity check"
  event "Identity check referred" from "Run identity check"
  external "Sanctions screening provider"
  hotspot "How long may a referred applicant wait before we withdraw?"
  policy "When identity verified, open account" then "Open account"

context "Core banking"
  aggregate Account
  actor "Operations analyst"
  command "Open account" by "Core banking service" on Account
  event "Account opened" from "Open account"
  command "Issue debit card" by "Operations analyst" on Account
  event "Card issued" from "Issue debit card"
  readmodel "New accounts daily report"
  event "First payment received"
  hotspot "Card production is outsourced but the event is ours"