Integrating FX, Cash, and Commodities Confirmation Messages
This document guides you through the setup, generation, and reconciliation of:
• | FX Confirmations (MT300) |
• | Cash Confirmations (MT320, MT330) |
• | Cash Settlement Advices (MT350) |
• | Commodity Confirmations (MT600) |
• | Commodity Option Confirmations (MT601) |
• | Precious Metal Deposit Loan Confirmations (MT620) |
Overview
The matching framework allows defining matching contexts between outgoing and incoming confirmation messages. The status codes of the outgoing messages and related transfers can be updated based on the results of the matching.
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.
1. Setup Requirements
1.1 Domain Values
Add MT300, MT330, MT350, MT600, MT601, MT620 to the domain "ExternalMessageField.MessageMapper".
1.2 Message Configurations
Outgoing Messages MT300, MT330, MT600, MT601, MT620
The outgoing messages are confirmation messages generated on VERIFIED_TRADE events.
Sample FX SWIFTCONFIRM configuration
Sample CallNotice Confirmation configuration
Sample Commodity Confirmation configuration
Sample Precious Metal Deposit Loan Confirmation configuration
Outgoing Messages MT350
The outgoing messages are settlement advice messages generated on VERIFIED_PAYMENT and VERIFIED_RECEIPT events.
Sample CallNotice settlement advice configurations
Chaser Messages
You can also configure the generation of chaser messages for missing confirmations and DK messages for mismatched confirmations.
Refer to Calypso Messages documentation for details.
Incoming Messages
The incoming FX / Cash / Commodity confirmations are generated by the import message engine or the scheduled task MESSAGE_MATCHING with message type INC_FXCONFIRM (for MT300) / IncomingConfirmation (for MT330, MT350, MT600, MT601, MT620).
Add MT300 to the domain "incomingType" with Comment = INC_FXCONFIRM.
Add MT330, MT350, MT600, MT601, MT620 to the domain "incomingType" with Comment = IncomingConfirmation.
You do not need to specify a message configuration but you need to add INC_FXCONFIRM and IncomingConfirmation to the domain "messageType".
1.3 Sample Message Workflows
SWIFTCONFIRM / Confirmation / SettlementAdvice
Orig Status | Action | Resulting Status | Use STP | Rules | Create Task |
---|---|---|---|---|---|
ACKED UNMATCHED | CANCELNEW | CANCELED | false |
|
false |
ACKED UNMATCHED | COPY | REPLACED | false |
|
false |
ACKED UNMATCHED | MANUAL_MATCH | MATCHED | false |
|
false |
ACKED UNMATCHED | MATCH | MATCHED | false |
|
false |
ACKED UNMATCHED | MISMATCH | MISMATCHED | false |
|
true |
ACKED UNMATCHED | PROCESS | PROCESSED | true |
|
false |
ACKED UNMATCHED | REMOVE | REPLACED | false |
|
false |
HELD | AUTHORIZE | VERIFIED | false |
|
false |
HELD | CANCEL | CANCELED | false |
|
false |
MATCHED | UNMATCH | ACKED UNMATCHED | false |
|
false |
MISMATCHED | CANCELNEW | CANCELED | false |
|
false |
MISMATCHED | COPY | REPLACED | false |
|
false |
MISMATCHED | MANUAL_MATCH | MATCHED | false |
|
false |
MISMATCHED | REMOVE | REPLACED | false |
|
false |
MISMATCHED | UNMATCH | ACKED UNMATCHED | false |
|
false |
NACKED | CANCEL | CANCELED | false |
|
false |
NONE | NEW | PENDING | false |
|
false |
PENDING | AMEND | PENDING | false |
|
false |
PENDING | AUTHORIZE | VERIFIED | true | CheckContact,removeLinkedMessage | true |
PENDING | CANCEL | CANCELED | false |
|
false |
PENDING | FIX | PENDING | false | ApplyDefaultContact | false |
REPLACED | UNMATCH | REPLACED | false |
|
false |
SENT | ACK | ACKED UNMATCHED | false |
|
false |
SENT | CANCELNEW | CANCELED | false |
|
false |
SENT | COPY | REPLACED | false |
|
false |
SENT | MANUAL_ACK | ACKED UNMATCHED | false |
|
false |
SENT | MANUAL_NACK | NACKED | false |
|
false |
SENT | NACK | NACKED | false |
|
true |
TO_BE_SENT | CANCEL | CANCELED | false |
|
false |
TO_BE_SENT | EDIT | TO_BE_SENT | false |
|
false |
TO_BE_SENT | RESEND | TO_BE_SENT | false |
|
false |
TO_BE_SENT | SEND | SENT | false |
|
true |
VERIFIED | AMEND | PENDING | false |
|
false |
VERIFIED | EDIT | VERIFIED | false |
|
false |
VERIFIED | HOLD | HELD | false |
|
true |
VERIFIED | MAN_TO_SEND | TO_BE_SENT | false |
|
true |
VERIFIED | TO_SEND | TO_BE_SENT | true | CheckKickOff,CheckCutOff | true |
INC_FXCONFIRM / IncomingConfirmation
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 |
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 (MT300 in this example) between SWIFTCONFIRM and INC_FXCONFIRM for FX confirmations, a matching context MT330, MT600, MT601, MT620 between Confirmation and IncomingConfirmation for Cash / Commodity confirmations, a matching context MT350 between SettlementAdvice and IncomingConfirmation for Cash settlement advices.
Sample static data filter MT300:
See Matching Context for setup details.
2. Starting the Engines
The Matchable Builder engine and the Matching engine are started as part of the Engine server 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 from the Engine Manager in Web Admin.
3. Sample Processing for MT300
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 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 FX Trade
Sample unmatched SWIFTCONFIRM message
Sample unmatched outgoing message in Matching Monitor
3.2 Creation of Incoming Messages
When you import the incoming messages, the system creates INC_FXCONFIRM messages.
If the matching criteria are satisfied, the outgoing message and the incoming message are automatically matched.
Sample messages automatically matched
If the incoming message cannot be matched, it appears in ALLEGED status in the Matching Monitor.
Sample INC_FXCONFIRM message in ALLEGED status
See Matching Monitor for a description of all available functions.
3.3 Generation of Chaser Messages
Chaser messages for missing confirmations can be automatically generated, or you can generate them manually.
Right-click an unmatched message and choose Matching > Chaser > CHASE.
The message is generated as follows.
Sample CHASE message for missing confirmation
You can also generate "mismatched confirm" chaser messages for mismatched messages.
Select an incoming message and an outgoing message that you think should be matched, and choose Matching > Chaser > Mismatched Chaser.
Sample DK message for mismatched confirmation