The Order Fulfillment Framework can be integrated with an external shipping system that actually ships the order to the customer.

In the Oracle ATG Web Commerce default configuration, the HardGoodShipper simulates the shipping process. There is also a mechanism for notifying fulfillment of shipment by hand, using the Fulfillment Administration pages. See the ATG Commerce Fulfillment Administration chapter of the ATG Commerce Guide to Setting Up a Store for more information on the Fulfillment Administration pages.

An external system can be integrated with a warehouse or with a shipment company such as Federal Express. These systems are responsible actually tracking the packing and shipping of the items. There are a two ways that an external system can be integrated with the existing Order Fulfillment Framework.

  • Create a JMS Message Sink and Message Source that communicates with Oracle ATG Web Commerce Order Fulfillment Framework through JMS messages. This approach provides a simple integration point. The JMS Message Sink can be registered to receive ModifyOrderNotification messages. When the shipping group state changes to PENDING_SHIPMENT, a ModifyOrderNotification message is sent. The new class can then communicate with the external shipping system through some other mechanism. The Order Fulfillment Framework can indicate that a shipping group has been shipped in either of the following three ways:

    • Change the state of the shipping group to NO_PENDING_ACTION and send a ModifyOrderNotification to notify the rest of Order Fulfillment Framework about the shipment.

    • Call HardgoodFulfiller.shippingGroupHasShipped

    • Call the shippingGroupHasShipped pipeline. For more information, see Appendix F, Pipeline Chains.

  • Extend the HardgoodShipper scheduled service. Extend HardgoodShipper.shipShippingGroup to communicate with the external system. When the external shipping system says that a shipping group has shipped, then call HardgoodFulfiller.shipShippingGroup.

    By default, there is no integration with an external shipping system. The HardgoodShipper is designed to query the database for all “shippable” shipping groups (groups with a state of PENDING_SHIPMENT and with a shipOnDate that is not in the future). It then calls HardgoodFulfiller.shippingGroupHasShipped.