About MLLP Configuring Channels

5-34 Oracle Fusion Middleware Users Guide for Oracle B2B The image shows the Exchange Protocol Parameters tab. It has the following fields: Immediate ACK, Custom Immediate ACK File, Map ACK Control ID, Map Trigger Event, Discard HL7 ACK, Start Block Character, End Block Character, Carriage Return Character, Identify TP by delivery channel, Start Block, End Block, Header Length, Message Length Index, and Retain Header. See Table 5–5, Exchange Protocol Parameters for descriptions of these parameters. Table 5–7 describes how Oracle B2B processes messages using MLLP when data is sent or received using the parameters that support generic TCP.

5.5.1.3 Dynamic Endpoints

The dynamic IP feature of MLLP provides flexibility to dynamically change the endpoints associated with a delivery channel. This is done by overriding the IP Note: When you create a generic TCP channel using the MLLP protocol, the parameters on the Exchange Protocol Parameters tab appear as shown in Figure 5–21 . After creating the channel, two subtabs appear, with MLLP-specific and generic TCP-specific parameters grouped under them. Table 5–7 Generic TCP Solutions Generic TCP Solution Description Send or receive data by specifying a start block and end block Use the Start Block and End Block parameters available on the Exchange Protocol Parameters tab when you select MLLP-1.0 for a remote trading partner. See Table 5–5 for descriptions of the Start Block and End Block parameters. Example: start blockDataend block Send or receive data by specifying a start block, end block, and data length Use the Start Block, End Block, Message Length Index, and Header Length parameters available on the Exchange Protocol Parameters tab when you select MLLP-1.0 for a remote trading partner. See Table 5–5 for descriptions of the parameters. Example: start blocklengthDataend block Send or receive data by specifying the data length Use the Message Length Index and Header Length parameters available on the Exchange Protocol Parameters tab when you select MLLP-1.0 for a remote trading partner. See Table 5–5 for descriptions of the Message Length Index and Header Length parameters. Example: lengthData Example: length+headerData That is, 15HDRDATADATADATA, where you configure: Message Length Index=1-2 Header length=5 15 is the length start after end index of Message Length Index. HDR is the header. Send or receive data by specifying the start block and data size Use the Start Block, Message Length Index, and Header Length parameters available on the Exchange Protocol Parameters tab when you select MLLP-1.0 for a remote trading partner. See Table 5–5 for descriptions of the Start Block, Message Length Index , and Header Length parameters. Note: In this case, the start block is part of the header and the minimum message length index must be more than the start block size. Example: start blocklengthData Retain the back-end application header and B2B will not add the start block, data size, and end block. To send data to the trading partner without adding a header and retain the back-end application header, select the Retain Header property. See Table 5–5 for a description of Retain Header parameter. Configuring Trading Partners 5-35 address of the delivery channel through the actionNameeventName attribute in the message enqueue header. For example: eventName=DynamicIP:GlobalChips:IP_address:port_number or actionName=DynamicIP:GlobalChips:IP_address:port_number This feature is also available in B2B composites as part of the SOA Service Component Architecture SCA assembly model using the following syntax: b2b.toDynamicIP=GlobalChips:IP_address:port_number The b2b.toDynamicIP property is set in a normalized message property that is sent to B2B. Oracle B2B generates a unique control number for each message. For a broadcasting case involving multiple dynamic endpoints corresponding to the same trading partner, the back-end application must provide the control number. Oracle B2B stores and uses the dynamic endpoint details for correlation of the acknowledgment. No additional configuration is required.

5.5.1.4 Using a Transport Callout to Extract Custom Headers

To extract a custom header for outbound messages, add the CUSTOM_HEADER property in the actionName property from the back-end application. This property will be available in the callout as a CUSTOM_HEADER parameter of CalloutMessage. You can retrieve the property in the callout for your usage. For example: eventName= CUSTOM_HEADER:your_value For default integration: b2b.customHeader= your_value To extract a custom header for inbound messages, set the CUSTOM_HEADER property as the CalloutMessage parameter in the callout. The property will be available as part of the actionName properties in the back-end application. See Example 13–1, Setting and Getting the CUSTOM_HEADER Property for details.

5.5.2 Message Sequencing

Exchanging messages in sequence can be challenging in a multi-threaded system, because the first message produced may not necessarily arrive at the destination first. For enterprises with this business requirement, Oracle B2B provides a sequencer and a dispatcher. The sequencer sequences a message based on arrival time. The dispatcher dispatches the sequenced message. Message sequencing is available for outbound and inbound directions. Protocols supported for message sequencing include MLLP Exchange TCP transport and Generic Exchange FILE, FTP, SFTP, JMS, AQ, and HTTP transports. 5-36 Oracle Fusion Middleware Users Guide for Oracle B2B

5.5.2.1 Outbound Message Sequencing

Outbound Message Sequencing for AQ and JMS Delivery Channels To enable sequencing for an outbound message, for AQ and JMS delivery channels, enqueue the message by setting the ACTION_NAME property to TARGET:sequence_target_name as shown in Example 5–1 . However, when using the ENQUEUE utility that is provided with the b2b.jar, set eventName not ACTION_NAME to TARGET:sequence_target_name; for example, eventName=TARGET:sequence1. To enable sequencing when using the default channel, use b2b.sequencingTarget = sequence_target_name. When using a self written AQ Enqueue utility, the AQ Header to be used is ACTION_NAME. eventName is to be used when using the B2B provided Enqueue utility in b2b.jar. Example 5–1 Outbound Message Sequencing for AQ and JMS Delivery Channels ACTION_NAME = TARGET:sequence_target_name Outbound Message Sequencing for FTP and SFTP Delivery Channels To enable FTPSFTP sequencing selecting only the sequencing flag in the delivery channel configuration does not work. You must also configure an FTP listening channel with following parameters: Sequencing TimeStamp Format TimeStamp Offset TimeStamp Source For example the following are sample values for the parameters: Sequencing: true TimeStamp Format: 43,55,MMM d yyyy Notes: Even though it works for all documents, message sequencing is certified only for EDI, HL7, and Custom document protocols. Sequencing is not supported for transient mode MLLP connections. EDI batching is not supported for message sequencing. If sequencing is enabled on messages as part of BATCH, it can lead to errors and not all messages are processed. Do not use EDI batching on the messages that are sequenced. FunctionalAckFA and AcknowledgementACKMDN are not sequenced. Sequencing does not support the Delivery Channel retry feature. Use the Auto Stack Handler in the Sequencing feature to retry delivery of failed document delivery attempts rather than the retry setting in delivery channel. When documents are sequenced, the delivery channel used for the documents should avoid the use of retry settings. Configuring Trading Partners 5-37 TimeStamp Offset: +0000 TimeStamp Source: MMM dd yyyy Note that, if sequencing is enabled, the order in which files are copied to the folder is the order in which they are processed. If a large payload is copied, the partner must wait until the large payload copy is complete. Then the sender may send the next file, as sequencing is based on the last-modified-timestamp on the file. Outbound Message Sequencing for HTTP Delivery Channels Post the message in b2bsequenceReceiver, and add an additional HTTP header