Remodeled Cargo and HandlingEvent aggregates to make boundaries and asynchronous updates more explicit. Cargo delivery progress is now inspected and stored on handling, asynchronously, as an example of how aggregates may be inconsistent for a (short) period of time.
Restructured packages to have a one-to-one mapping between layers and packages.
Gathered all aspects of the cargo delivery in the Delivery value object in the Cargo aggregate.
RouteSpecification is now a persistent part of the Cargo aggregate.
Made handling event registration completely asynchronous.
Implemented "next expected event" for tracking.
The old CarrierMovement aggregate is remodeled, and the root entity is now Voyage. A voyage has a schedule containing a list of carrier movements.
Legs and carrier movements have departure/arrival and load/unload times, respectively.
ETA for itineraries
Web service for registering handling events is now more clearly downstream from handling report aggregation service context, with Java code generated from a given WSDL.
There is now a directory scanner routine that picks up and parses CSV files containing handling event information, as an example of an alternative interface.