I'm experimenting with event sourcing for an application we haven't build yet. No, I won't implement this without any thought, I'm just experimenting.
My domain model looks somewhat like this. The whole model is created at once via a REST service call by external parties. Please note that the status history entities are not event-sourcing related. These come from some workflow engine we are using.
After that point, there are smaller changes to the model. some details are changed. Some status history is added. Sometimes Invoice items are added. Several applications change different aspects to this model, but not as invasive as the original creation of the model. Also there are several application that need to know details about the model, but in different forms. This is what led me to believe event-sourcing could be a good fit.
My main question: Should the first creation of my model be one big event that says "Invoice bundle created" including all nested details needed for creation (in JSON or other form). Or should i break up this initial event in several smaller events, somewhat like the picture below.
My second question: how should I deal with the files delivered? Should I store those as blob storage and refer to them from events or should I include those as base64 string in my events?