Skip to content

Latest commit

 

History

History
94 lines (56 loc) · 8.24 KB

File metadata and controls

94 lines (56 loc) · 8.24 KB
description title ms.custom ms.date ms.service ms.reviewer ms.suite ms.topic
Learn more about: FRR Orchestration
FRR Orchestration
06/08/2017
biztalk-server
article

FRR Orchestration

[!INCLUDEbtaA4SWIFT2.3abbrevnonumber] implements FRR through the FRR orchestration. The orchestration determines whether the Correlation Token of the FIN response matches the message ID of the original message. It processes the message in parallel with the send functions performed by the send port that sends the message to SAA, and with the receive functions performed by the receive location that receives the message from SAA.

At the highest level, an instance of the orchestration does the following processing:

  1. Caches a copy of the original outbound message bound for SAA by listening on the MessageBox.

    [!NOTE] [!INCLUDEbtsBizTalkServerNoVersion] creates an instance of the orchestration when [!INCLUDEbtaA4SWIFT2.3abbrevnonumber] routes the original message to the MessageBox.

  2. Waits for [!INCLUDEbtaA4SWIFT2.3abbrevnonumber] to publish a FIN response from SAA to the MessageBox.

  3. Sets promoted properties of the copy of the original message depending upon the nature of the FIN response.

  4. Publishes the copy of the original message back to the MessageBox. Custom handlers can then subscribe to, retrieve, and handle the message as required.

Subscription to Outbound Messages

The FRR orchestration is directly bound to the MessageBox. The FRR orchestration subscribes to all outbound messages bound for the SWIFT network that do not contain validation errors, by subscribing to the following properties:

Message/Response Correlation

[!INCLUDEbtsBizTalkServerNoVersion] correlates the original outbound FIN message to the inbound FIN response message by comparing the following properties:

  • The MQMD_CorrelID context property of the FIN response

  • The [!INCLUDEbtaA4SWIFT2.3abbrevnonumber]_FRRCorrelationToken property of the outbound MTXYY message. This property is promoted by the party-resolution stage of the receive pipeline.

    The values of these properties must be identical. The encoder stage of the send pipeline for messages bound for SWIFT sets the MQMD_MsgID property of the outgoing message to the value of the [!INCLUDEbtaA4SWIFT2.3abbrevnonumber]_FRRCorrelationToken property. SAA sets the MQMD_CorrelID property of the response message to the value of MQMD_MsgID.

Setting of Promoted Properties

After receiving a FIN response and correlating it to the copy of the original message, the FRR orchestration sets the following promoted properties of the copy of the original message according to the nature of the response:

Direct Binding

Receive inputs for the orchestration are defined by subscriptions that the orchestration makes to the MessageBox. Context properties and values promoted by the orchestration define the send outputs for a message that the orchestration publishes to the MessageBox. Because of this direct binding to the MessageBox, the orchestration is decoupled from the following:

  • The physical receive locations that receive outbound messages from the back-end application for routing to SAA

  • The send ports that send outbound FIN messages from [!INCLUDEbtaA4SWIFT2.3abbrevnonumber] to the SWIFT Alliance Access (SAA)

  • The receive locations that receive incoming FIN response messages from SAA

  • The physical MQSeries queues where FIN responses are deposited by SAA

Reconciliation Time-Out

When [!INCLUDEbtsBizTalkServerNoVersion] creates a new instance of the FRR orchestration, the orchestration starts waiting for FIN responses. At run time, you must configure the orchestration to time out after some duration, so that it will not wait for the response indefinitely. When the time-out duration expires, the FRR orchestration promotes the [!INCLUDEbtaA4SWIFT2.3abbrevnonumber]_FRRFailedReason property and sets it to TimedOut. It then publishes messages out to the MessageBox, and terminates. If you time out, the correlation ID is gone.

You can create a custom handler to process timed-out messages (the copy of the original outbound message). [!INCLUDEbtaA4SWIFT2.3abbrevnonumber] would accomplish this by using a Listen shape in the orchestration. For more information, see Setting the FRR Delay Time-Out.