I am experimenting with event sourcing for an application that we have not yet created. No, I will not implement this without thinking, I am just experimenting.
My domain model looks a bit like this. The entire model is created at once via a REST service call by external parties. Please note that the status history entities are not linked to the event search. These come from a workflow engine that we use.
After this point, the model is slightly modified. some details are changed. A status history is added. Sometimes invoice items are added. Several applications modify different aspects of this model, but not as intrusive as the original creation of the model. There are also several applications that need to know the details of the model, but in different forms. This is what led me to believe that sourcing events could be a good choice.
My main question: Should the first creation of my model be a big event that says "Set of invoices created", including all the nested details necessary for the creation (in JSON or in another form). Or should I split this initial event into several smaller events, much like the image below.
My second question: how to process the delivered files? Should I store them as blob storage and reference them from events or should I include them as a base64 string in my events?