Saga Manager != Process Manager

Hi, another newbie question.

I was trying to understand the difference between a saga and a process manager (Greg Youngs favorite) and why you choose Saga’s.

Then when trying to find a definition of the two I stumbled on this thread ( Simply put Sagas do not store state contrary to process managers that does that. When looking in your doc (4.0) I realise that Sagas DO store state, so is your implementation actually process managers?

I guess I does not really matter I am just trying to understan…


Saga is a keyword always used in combination with CQRS. There is something needed to take care of the business rules of multiple bounded contexts and/or aggregates. In some case this can be done without a state but in the most cases a state is needed.

So why is now the name so relevant?

You should focus more on the idea than on the name. Process Manager can be explained much simpler compared to SAGA. This is primarily the reason Greg uses this convention.

There is no CQRS framework without SAGA. Never seen a Process Manager in such a framework.

Hi Fredrik, Marinko,

actually, they are intended as synonyms. The problem here is that the term Saga actually predates CQRS (a paper about it was published in 1987) and has a subtly different meaning. Therefore, the term Process Manager is more commonly used nowadays. Axon still uses the term Sagas.

Essentially, in Axon, a Saga is a stateful event handler. The scope is defined by so called association properties, which tells Axon which instances should be triggered by which Saga instance.

Hope this helps.