Hi Nedo,
I am not sure if I understand the problem correctly. Do you want to convert existing, flat data into event sourced data? Or does the existing application already have some sort of history?
I’ll just assume the first scenario, since that is most common.
There are two approaches: you can either create an “MyAggregateImportedEvent” that contains the aggregate state as left by the “old” application, or use a series of events (e.g. “MyAggregateCreated”, “MyAggregateDidSomeThingEvent”, “SomeOtherActivityEvent”, etc…) that will ultimately build up the same state as you currently have.
To insert that state you will need to create a little tool that crawls the old domain model and either inserts events directly into your event store, or send commands to the application to have it generate the events that way. I’ve done that latter on quite a large dataset with a legacy application, and all turned out pretty well. Obviously, any history caused by the import is not really a good reflection on what happened. But mostly, you don’t care at that point.
Cheers,
Allard