Transactions
Redefined
Transactions
Redefined
A dive into the wormhole with
Transactions
Redefined
@ziobrando
A dive into the wormhole with
Sending a payment
to myself
Let’s see the Events!
Domain Event:
Orange, verb
at past tense
Domain Event:
Orange, verb
at past tense
Hot Spot:
Purple, feel
free to
express
yourself!
I started with
Orange
but it’s not
enough to tell
the whole story
Purple tells
more!
PROTIP: if the
software
seems
unfinished,
trust might be
impacted. Just
sayin’
Looks like I just
Can’t keep my
mouth shut!
PROTIP: users
don’t like
navigating
three screens
in order to see
payees in
alphabetical
order
Protip: some
users do copy
and paste from
invoices where
IBAN is written
with spaces
Protip: some
users do copy
and paste from
invoices where
IBAN is written
with spaces
PROTIP:
humans don’t
enjoy removing
spaces from
IBAN strings
Protip:
reminding your
users of their
age every time
they use your
service isn’t
great UX
Protip:
reminding your
users of their
age every time
they use your
service isn’t
great UX
PROTIP: “we
were short on
budget” doesn’t
work well with
banks.
PROTIP: I still
can’t
understand why
should I wait
that much, but
I’d appreciate a
deadline anyway
The wormhole
Breaking News!
After 3 and a
half years
since it was
promised I
might finally
have some
notification.
PROTIP: please
read one
article about
context
switching.
Great job!
13 Events
14 WTF!
“We are going to be disrupted by fintech…” (anonymous banker)
How do I feel?
“I am going to
find where you
live”
“I am going to
change your main
door lock”
“Every end of
month”
When you’re
carrying bags
How can you talk about “mobile banking” if you can arbitrarily
force me to update my credentials?
And it’s raining
…For “security
reasons”
About me
Having a hard time with BAD
software
running www.avanscoperta.it
Modelling (almost) everything with
sticky notes, markers and a paper
roll.
Calling this stuff
The wormhole
Transactions
We have a few
problems
I didn’t say
“database
transaction”
The whole is not
“transactional”
Eventual
Consistency?
Eventual
Consistency?
Yes, but I am more worried about another thing…
The user is part
of the
transaction
We have a blind
spot on this
Let’s STORM!
Our Basic toolkit
Unrolling it…
Business processes expose a
repeatable structure
Example
How do we
manage that?
Refund
Request
Received
Typical dev implementation
Refund
Request
Received
Refund
Policy
Issue
Refund
Paypal
Refund
Issued
Notification
Sent to
Payee
Can you see the
problem?
Simple heuristic
What do I have?
What do I know?
How do I feel?
Simple heuristic
Refund
Request
Received
Custo
mer
Simple heuristic
What do I have?
Refund
Request
Received
Custo
mer
Simple heuristic
What do I have?
A ticket
Refund
Request
Received
Custo
mer
Simple heuristic
What do I have?
A ticket
What do I know?
Refund
Request
Received
Custo
mer
Simple heuristic
What do I have?
A ticket
What do I know?
I won’t be able to use it
Refund
Request
Received
Custo
mer
Simple heuristic
What do I have?
A ticket
What do I know?
I won’t be able to use it
How do I feel?
Refund
Request
Received
Custo
mer
Simple heuristic
What do I have?
A ticket
What do I know?
I won’t be able to use it
How do I feel?
Worried (will I get my money back?)
Refund
Request
Received
Custo
mer
Simple heuristic
What do I have?
A ticket
What do I know?
I won’t be able to use it
How do I feel?
Worried (will I get my money back?)
Sorry (Will it be a problem?)
Refund
Request
Received
Custo
mer
Simple heuristic
Custo
mer
Notification
Sent to
Payee
Refund
Notification
Received
Simple heuristic
What do I have?
Custo
mer
Notification
Sent to
Payee
Refund
Notification
Received
Simple heuristic
What do I have?
A ticket?
Custo
mer
Notification
Sent to
Payee
Refund
Notification
Received
Simple heuristic
What do I have?
A ticket?
My Money back
Custo
mer
Notification
Sent to
Payee
Refund
Notification
Received
Simple heuristic
What do I have?
A ticket?
My Money back
What do I know?
Custo
mer
Notification
Sent to
Payee
Refund
Notification
Received
Simple heuristic
What do I have?
A ticket?
My Money back
What do I know?
I have my money back
Custo
mer
Notification
Sent to
Payee
Refund
Notification
Received
Simple heuristic
What do I have?
A ticket?
My Money back
What do I know?
I have my money back
How do I feel?
Custo
mer
Notification
Sent to
Payee
Refund
Notification
Received
Simple heuristic
What do I have?
A ticket?
My Money back
What do I know?
I have my money back
How do I feel?
Safe (I have my money)
Custo
mer
Notification
Sent to
Payee
Refund
Notification
Received
Simple heuristic
What do I have?
A ticket?
My Money back
What do I know?
I have my money back
How do I feel?
Safe (I have my money)
Worried (Did I insult anyone?)
Custo
mer
Notification
Sent to
Payee
Refund
Notification
Received
Too “efficient”
Too impersonal
“I am not a UX
expert”
“Everybody is the
business analyst”
“Everybody is the
UX expert”
A platform for
self-organization
This is what happens when Dan North talks about your stuff :O)
Don’t let roles
get in the way
Don’t assume,
talk
And if necessary…
experiment!
Friendly Refund Policy
Refund
Request
Received
Call
Customer
Phone
Refund
Chosen
Coupon
Chosen
Human
Refund
Policy
Organi
zer
Other
Idea
Chosen
Friendly Refund Policy
Refund
Request
Received
Call
Customer
Phone
Refund
Chosen
Coupon
Chosen
Human
Refund
Policy
Organi
zer
Other
Idea
Chosen
TIP: don’t model
the conversation,
model the outcome.
Let’s Check!
Custo
mer
Call
Ended
- - - - -
Refund
Chosen
Let’s Check!
What do I have?
Custo
mer
Call
Ended
- - - - -
Refund
Chosen
Let’s Check!
What do I have?
An Agreement
Custo
mer
Call
Ended
- - - - -
Refund
Chosen
Let’s Check!
What do I have?
An Agreement
What do I know?
Custo
mer
Call
Ended
- - - - -
Refund
Chosen
Let’s Check!
What do I have?
An Agreement
What do I know?
I’ll have my money back
Custo
mer
Call
Ended
- - - - -
Refund
Chosen
Let’s Check!
What do I have?
An Agreement
What do I know?
I’ll have my money back
How do I feel?
Custo
mer
Call
Ended
- - - - -
Refund
Chosen
Let’s Check!
What do I have?
An Agreement
What do I know?
I’ll have my money back
How do I feel?
Safe (I’m told I’ll have my money)
Custo
mer
Call
Ended
- - - - -
Refund
Chosen
Let’s Check!
What do I have?
An Agreement
What do I know?
I’ll have my money back
How do I feel?
Safe (I’m told I’ll have my money)
Relieved (they said no problem)
Custo
mer
Call
Ended
- - - - -
Refund
Chosen
For us, instead
Call
Ended
- - - - -
Refund
Chosen
Organi
zer
TIP: you can have
many perspectives
involved.
For us, instead
What do I have?
Call
Ended
- - - - -
Refund
Chosen
Organi
zer
TIP: you can have
many perspectives
involved.
For us, instead
What do I have?
An Agreement
Call
Ended
- - - - -
Refund
Chosen
Organi
zer
TIP: you can have
many perspectives
involved.
For us, instead
What do I have?
An Agreement
a duty
Call
Ended
- - - - -
Refund
Chosen
Organi
zer
TIP: you can have
many perspectives
involved.
For us, instead
What do I have?
An Agreement
a duty
What do I know?
Call
Ended
- - - - -
Refund
Chosen
Organi
zer
TIP: you can have
many perspectives
involved.
For us, instead
What do I have?
An Agreement
a duty
What do I know?
The decision & the sales
situation
Call
Ended
- - - - -
Refund
Chosen
Organi
zer
TIP: you can have
many perspectives
involved.
For us, instead
What do I have?
An Agreement
a duty
What do I know?
The decision & the sales
situation
How do I feel?
Call
Ended
- - - - -
Refund
Chosen
Organi
zer
TIP: you can have
many perspectives
involved.
For us, instead
What do I have?
An Agreement
a duty
What do I know?
The decision & the sales
situation
How do I feel?
depends on sales ;-)
Call
Ended
- - - - -
Refund
Chosen
Organi
zer
TIP: you can have
many perspectives
involved.
Can we help?
Refund
Request
Received Call
Customer
Phone
Refund
Chosen
Coupon
Chosen
Human
Refund
Policy
Organi
zer
Other
Idea
Chosen
- Price paid
- Sales stats
- Training
Lower Bound
- Days Left
Can we help?
Refund
Request
Received Call
Customer
Phone
Refund
Chosen
Coupon
Chosen
Human
Refund
Policy
Organi
zer
Other
Idea
Chosen
- Price paid
- Sales stats
- Training
Lower Bound
- Days Left
TIP: The read model is a
decision support tool.
Not an exposure of your
database
…of course…
Refund
Chosen
Issue
Refund
Paypal
Refund
Issued
Notification
Sent to
Payee
Refund
Policy
Organi
zer
So, for the user…
Custo
mer
Notification
Sent to
Payee
So, for the user…
What do I have?Custo
mer
Notification
Sent to
Payee
So, for the user…
What do I have?
My Money back
Custo
mer
Notification
Sent to
Payee
So, for the user…
What do I have?
My Money back
What do I know?
Custo
mer
Notification
Sent to
Payee
So, for the user…
What do I have?
My Money back
What do I know?
I have my money back & No
Problem
Custo
mer
Notification
Sent to
Payee
So, for the user…
What do I have?
My Money back
What do I know?
I have my money back & No
Problem
How do I feel?
Custo
mer
Notification
Sent to
Payee
So, for the user…
What do I have?
My Money back
What do I know?
I have my money back & No
Problem
How do I feel?
Safe (I have my money)
Custo
mer
Notification
Sent to
Payee
So, for the user…
What do I have?
My Money back
What do I know?
I have my money back & No
Problem
How do I feel?
Safe (I have my money)
Grateful / Relieved
Custo
mer
Notification
Sent to
Payee
A lot better
And also …the seat!
Refund
Chosen
Registration
Policy
Cancel
Ticket
Ticketing
System
Ticket
cancelled
Notification
Sent
We still have a
problem
No automation (yet)
Refund
Chosen
Issue
Refund
Paypal
Refund
Issued
Notification
Sent to
Payee
Refund
Policy
Organi
zer
Humans are not
acting
instantaneously…
Implicit deadlines
Refund
Request
Received Call
Customer
Phone Coupon
Chosen
Human
Refund
Policy
Organi
zer
Other
Idea
Chosen
- Price paid
- Sales stats
- Training
Lower Bound
- Days Left
(Implicit)
Deadline
Refund
Chosen
Implicit deadlines
Refund
Request
Received Call
Customer
Phone Coupon
Chosen
Human
Refund
Policy
Organi
zer
Other
Idea
Chosen
- Price paid
- Sales stats
- Training
Lower Bound
- Days Left
(Implicit)
Deadline
Refund
Chosen
TIP: Implicit
deadlines can be
modelled as Events
too
(Implicit)
Deadline
Refund
Issued
(Implicit)
Deadline
Refund
IssuedWhat do I have?
(Implicit)
Deadline
Refund
IssuedWhat do I have?
A promise
(Implicit)
Deadline
Refund
IssuedWhat do I have?
A promise
What do I know?
(Implicit)
Deadline
Refund
IssuedWhat do I have?
A promise
What do I know?
I haven’t been refunded
(Implicit)
Deadline
Refund
IssuedWhat do I have?
A promise
What do I know?
I haven’t been refunded
How do I feel?
(Implicit)
Deadline
Refund
IssuedWhat do I have?
A promise
What do I know?
I haven’t been refunded
How do I feel?
Kinda worried, Should I remind
them?
Not good
With normal banking…
Enter
Payment
Refund
Policy
Organi
zer
(Implicit)
Deadline
Refund
Chosen
Banking System Payment
Entered
With normal banking…
Enter
Payment
Refund
Policy
Organi
zer
(Implicit)
Deadline
Refund
Chosen
Banking System Payment
Entered
WORMHOLE
Refund
Chosen
(Implicit)
Deadline
past
Refund
Chosen
(Implicit)
Deadline
past What do I have?
Refund
Chosen
(Implicit)
Deadline
past What do I have?
A promise
Refund
Chosen
(Implicit)
Deadline
past What do I have?
A promise
What do I know?
Refund
Chosen
(Implicit)
Deadline
past What do I have?
A promise
What do I know?
I haven’t been refunded
Refund
Chosen
(Implicit)
Deadline
past What do I have?
A promise
What do I know?
I haven’t been refunded
How do I feel?
Refund
Chosen
(Implicit)
Deadline
past What do I have?
A promise
What do I know?
I haven’t been refunded
How do I feel?
Kinda worried, Should I
remind them?
But then…
Refund
Chosen
(Implicit)
Deadline
past
Logged
Into
Banking
System
But then…
Refund
Chosen
(Implicit)
Deadline
past
What do I have?
Logged
Into
Banking
System
But then…
Refund
Chosen
(Implicit)
Deadline
past
What do I have?
An unfulfilled
promise
Logged
Into
Banking
System
But then…
Refund
Chosen
(Implicit)
Deadline
past
What do I have?
An unfulfilled
promise
What do I know?
Logged
Into
Banking
System
But then…
Refund
Chosen
(Implicit)
Deadline
past
What do I have?
An unfulfilled
promise
What do I know?
I haven’t been
refunded
Logged
Into
Banking
System
But then…
Refund
Chosen
(Implicit)
Deadline
past
What do I have?
An unfulfilled
promise
What do I know?
I haven’t been
refunded
How do I feel?
Logged
Into
Banking
System
But then…
Refund
Chosen
(Implicit)
Deadline
past
What do I have?
An unfulfilled
promise
What do I know?
I haven’t been
refunded
How do I feel?
Logged
Into
Banking
System
OOOPS!
We aren’t in control of the whole Flow…
But now we have
an easy way to
play with that!
GROUNDBREAKING!!!
It’s not about
inventing new
things
It’s more about
removing
impediments
Roles,
Roles,
Processes,
Roles,
Processes,
Contracts,
Roles,
Processes,
Contracts,
…
Roles,
Processes,
Contracts,
…
Space limitation
Conclusions
in the large
scale…
There is no
consistency
But a tension to
reconciliation
“Transactions”
are processes
And some cannot
be rolled back
Make the Global
state visible
Users are part of
the state
Intermediate
Steps matter
Mood, implicit deadlines, expectations
Mood and
feelings are part
of the Global
state
Enables cross-
perspective
conversation
Software design, User Experience, Business Modelling,
Lean etc.
is my pizza:
You can add your
toppings
is my pizza:
You can add your
toppings
With the notable exception of database tables and pineapple
Menu
BIG PICTURE
PROCESS DESIGN
AGGREGATE DISCOVERY
Service Design
Value-Stream Mapping
Retrospectives
Organization Design
… add yours!
Can lead you to
unexpected places
apparently, you cannot choose what your problem is
Helps you solve
the problem as a
team
Helps you solve
the problem as a
real team
It’s about contributions and insights, not roles
We are problem
solvers,
Not problem
pickers
Thank you!
References
• www.eventstorming.com
• EventStormers on Google+
• https://plus.google.com/u/0/communities/
113258571348605620818
• LeanPub book in progress:
• http://leanpub.com/introducing_eventstorming
• Blog:
• https://medium.com/@ziobrando
• http://ziobrando.blogspot.com
• Twitter: @ziobrando
• Trainings & Workshop facilitation:
• http://www.avanscoperta.it

Transactions redefined