Different aggregate types for different workflow states -- any best practices?


I am trying to implement more functional design by using different ADT types for the same entity’s workflow stages, e.g. PlacerOrder, ValidatedOrder, DeliveredOrder in order to get rig of states and conditional checks.
Are there any related best practices? Currently I delete source aggregate and create a new one on the “transitional” event processing.
Thanks in advance for any cues and ideas.

Best regards,
Ilia Rodionov.

Check out this sample project. I’ve been using it as a reference, and I think it elegantly handles your target use case.