Integrating FX Option Confirmation Messages
This document guides you through the setup, generation, and reconciliation of FX Option Confirmations (MT306).
Overview
This matching functionality allows reconciling outgoing FX Option confirmations and incoming MT306 messages.
The logic of the process is the following:
• | New messages are saved in calypso (either incoming or outgoing). |
• | If eligible in one matching context, then the MatchableBuilderEngine creates a new Matchable object containing the matching information necessary for this object to go through the matching process. |
• | The MatchingEngine subscribes to Matchable objects, and tries to automatically process them, depending on the matching information defined in the associated context (matching keys, tolerance, etc.). |
The Matching Monitor keeps track of the items remaining to be matched and allows performing manual processing.
When the system cannot find any incoming message for a given outgoing message, you can send "missing confirm" chaser messages to the counterparty. This is optional.
See Integrating FX Confirmation Messages for sample setup.
1. Setup Requirements
1.1 Domain Values
Add MT306 to the domain "ExternalMessageField.MessageMapper".
Add SWIFTCONFIRM to the incomingType domain with Comment = MT306.
1.2 Message Configurations
Outgoing Messages
The outgoing messages are confirmation messages generated on VERIFIED_TRADE events, for example SWIFTCONFIRM, MT305.
Sample SWIFTCONFIRM configuration
Incoming Messages
The incoming FX Option confirmations are generated by the import message engine or MESSAGE_MATCHING scheduled task with message type MT306 (or the message type of your choice). You do not need to specify a message configuration but you need to add MT306 to the domain "messageType".
Swift Location
You can store the mapping between the Calypso timezone and the Swift location in the domain “CountryPerTimezone”:
• | Value = <Calypso timezone> |
• | Comment = <corresponding Swift location> |
Example:
• | Domain = CountryPerTimezone |
• | Value = IST |
• | Comment = INMU |
1.3 Message Workflows
Sample MT306 Workflow
PO = ALL
Product TYpe = ALL
Message Type = MT306
Orig Status | Action | Resulting Status | Use STP | Rules | Create Task |
---|---|---|---|---|---|
ALLEGED | CNTP_CANCEL | REPLACED | false |
|
false |
ALLEGED | CNTP_REPLACE | REPLACED | false |
|
false |
ALLEGED | MANUAL_MATCH | MATCHED | false |
|
false |
ALLEGED | MANUAL_PROCESS | PROCESSED | false |
|
true |
ALLEGED | MATCH | MATCHED | false |
|
false |
ALLEGED | MISMATCH | MISMATCHED | false |
|
false |
ALLEGED | REMOVE | REMOVED | false |
|
false |
ALLEGED | UPDATE | ALLEGED | false |
|
false |
MATCHED | UNMATCH | ALLEGED | false |
|
false |
MISMATCHED | CNTP_CANCEL | REPLACED | false |
|
false |
MISMATCHED | CNTP_REPLACE | REPLACED | false |
|
false |
MISMATCHED | MANUAL_MATCH | MATCHED | false |
|
false |
MISMATCHED | MATCH | MATCHED | false |
|
false |
MISMATCHED | UNMATCH | ALLEGED | false |
|
false |
NONE | NEW | PENDING | false |
|
false |
PENDING | MANUAL_PROCESS | PROCESSED | false |
|
true |
PENDING | PROCESS | ALLEGED | true |
IncomingConfirm |
true |
PENDING | REMOVE | REMOVED | false |
|
false |
REPLACED | UNMATCH | REPLACED | false |
|
false |
1.4 Matching Context
The Matching Context identifies which type of incoming message can be matched with which type of outgoing message, under which conditions (matching keys), and which actions can be applied to the messages (if any).
It also allows specifying preferences for the Matching Monitor.
You need to define a matching context (MT306 in this example) between SWIFTCONFIRM and MT306.
See Matching Context for setup details.
2. Starting the Engines
The Matchable Builder engine and the Marching engine are started as part of the Engine server using "<calypso home>/deploy-local/<Environment>/engineServer.bat\.sh
". These engines can also be started from the Engine Manager in Web Admin.
To import incoming messages, you also need to run the Import Message engine or the scheduled task MESSAGE_MATCHING.
The Import Message engine is also started as part of the Engine server with the Swift config.
3. Sample Processing
3.1 Creation of Outgoing Messages
According to the workflow and the matching context definition, in order for a message to be handled by the Matchable Builder engine and Matching engine, it needs to be in UNMATCHED status. This status is reached after a message has been sent, and acknowledged or not.
Once you enter an FX Option trade, and the message is generated, you need to send the message using the Sender engine, and acknowledge the sent message (apply action ACK, or actions MANUAL_ACK and UNMATCH).
Only then, will the outgoing message appear in the Matching Monitor in UNMATCHED status.
Sample unmatched SWIFTCONFIRM message
3.2 Creation of Incoming Messages
When you import the incoming messages, the system creates MT306 messages.
If the matching criteria are satisfied, the outgoing message and the incoming message are automatically matched.
If the incoming message cannot be matched, it appears in ALLEGED status in the Matching Monitor.
See Matching Monitor for a description of all available functions.