Events versioning

I just started experimenting with the Event Store and I was wondering how to take care of different event versions.
Maybe this question was already raised, but a quick search didn’t provide me with an answer.
As I see it, there are multiple ways to deal with changes in the events:

  • Creating a new event: for small changes this seems a bit overkill to me

  • Mapping the old events to a new event client side: the actual events will still have the old structure.

  • Mapping the old events in the event store to a new event or update the existing evetns: I don’t know how to do this, should I create a projections for this?

Can someone point me in the right direction?

Thx!

The event store itself is not opinionated on your versioning strategy. The most common one people use is weak serialization. If you are storing as json as example you could have a deserializer that

  1. does not complain if there is something in the json but not on the object

  2. does not complain if there is something on the object but not in json

The only things you would not be able to do at that point is rename things or change semantic meanings (the latter of which you should never do anyways).

On dddcqrs.com there is a long video where this topic is discussed.

Cheers,

Greg