Derived orders

Derived Orders are subordinate orders created from the parent order, but once created they maintain no more than a reference to the parent. Their lifecycle is independent from the parent and they provide no status propagation to the parent order, nor are they updated with any change to the parent order.

A tiered order is defined as "Derived" if it does not have to finish its fulfillment process before its parent order can be considered fulfilled. For example, a purchase order can be "derived" from a planned order.

Typically, either the lifecycle of the parent order is already over by the time a derived order is created from it (for example, creating a fulfillment order from a planned order) or a completely new order needs to be generated for some parallel processing (for example, creating exchange orders for returns before the return disposition is done). A link is maintained between a derived order and parent order only for tracking progression of the parent order into other various order documents.

The creation of derived orders, requires that two abstract transactions, "Include in Derived Order" and "Create Derived Order" be created. These transactions can be copied during transaction configuration to create appropriate meaningful transactions. Both transactions can have multiple pickup statuses and a single drop status. For more information about the implementation details, see the createDerivedOrder API Javadoc.

An order can have multiple derived orders out of the same quantity, but because chained orders are created to complete the fulfillment of the parent order, a unit in the parent order can belong to one and only one chained order.