Deprecated feature: Transfer order

The TransferOrder outbound service interface is used to transfer an order to an external system.

Deprecated: The integration service interfaces documented in this topic are deprecated. Use the Order management system integration service interfaces.

Request

A request to this outbound service interface is in the form of a ProcessOrder business object document (BOD) with action code Transfer. The definition of the ProcessOrder BOD can be found in the XML schema file workspace_dir/WebServicesRouter/xsd/OAGIS/9.0/Overlays/IBM/Commerce/BODs/ProcessOrder.xsd. The Service DataObject (SDO) interface of the ProcessOrder BOD is com.ibm.commerce.order.datatypes.ProcessOrderType.

Response

The response to a successful request is in the form of an AcknowledgeOrder BOD with no response criteria. The XML schema of the ProcessOrder BOD can be found in the XML schema file workspace_dir/WC/WebServicesRouter.war/xsd/OAGIS/9.0/Overlays/IBM/Commerce/BODs/AcknowledgeOrder.xsd. The Service DataObject (SDO) interface of the AcknowledgeOrder BOD is com.ibm.commerce.order.datatypes.AcknowledgeOrderType.

Message type

This outbound service interface is mapped to the message type com.ibm.commerce.order.TransferOrder, or com.ibm.commerce.order if the former is not defined.

Client task command

This outbound service interface can be started by calling the order client task command com.ibm.commerce.order.client.commands.ProcessOrderCmd with action TransferOrder. Its default implementation, com.ibm.commerce.order.client.commands.ProcessOrderCmdImpl , behaves as follows:

  1. It first calls the protected method composeProcessOrder() to compose a ProcessOrder SDO from the order ID or order access bean specified.
  2. It then passes the action and the ProcessOrder SDO to the order client facade implementation to make the outbound service request.

Usage scenario

  1. When an order is submitted by either a shopper or customer service representative (CSR), the command com.ibm.commerce.order.commands.ProcessOrderCmdImpl is called.
  2. Towards the end of its execution, the default implementation, com.ibm.commerce.order.commands.ProcessOrderCmdImpl raises the event OrderSubmit.
  3. The order submit event listener, which listens to the event, calls the command com.ibm.commerce.order.event.ProcessOrderSubmitEventCmd .
  4. The SOI-specific implementation of this command, com.ibm.commerce.soi.commands.SOIProcessOrderSubmitEventCmdImpl , calls the order client task command com.ibm.commerce.order.client.commands.ProcessOrderCmd with action TransferOrder to transfer the order to the external system.
  5. Alternatively, the order component can be configured such that the command com.ibm.commerce.order.event.ProcessOrderSubmitEventCmd is called when the event PaymentAuthorizationComplete is raised so that the order is not transferred until payment has been authorized.
    1. Open the HCL Commerce Configuration file.
    2. Disable the OrderSubmit Event and enable the Payment Authorization Complete Event as shown in the following example:
      
      <component 
       
      compClassName="com.ibm.commerce.event.impl.ECEventEnableComponent"
        enable="false" name="OrderSubmit Event">
        <property display="false">
           <event name="OrderSubmit"/>
        </property>
      </component>
      
      <component 
       
      compClassName="com.ibm.commerce.event.impl.ECEventEnableComponent"
        enable="true" name="Payment Authorization Complete Event">
        <property display="false">
           <event name="PaymentAuthorizationComplete"/>
        </property>
      </component> 
      
  6. In workspace_dir/WC/xml/config/com.ibm.commerce.order/wc-admin-component.xml, configure the event on which you want the order transfer to occur. The event can be PaymentAuthorizationComplete or OrderSubmit. The default event is OrderSubmit. For example,
    <_config:configgrouping name="TransferOrder">
         <_config:property name="accessProfile" value="IBM_TransferOrder"/>
         <_config:property name="event" value="PaymentAuthorizationComplete"/>
     </_config:configgrouping>
Note: If you want to use OrderProcessCmdImpl to transfer the order, you must use the SOIExtOrderProcessCmdImpl extension point. You must update the CMDREG table for the ExtOrderProcessCmd interface to use the SOIExtOrderProcessCmdImpl class.