Integrating Settlement Returns
This document describes the settlement returns function and the basic setup to be done in the system to integrate and process incoming MT536, MT537, MT540, MT541, MT542, MT543, MT544, MT545, MT546, MT547, MT548, MT578, and MT586 messages within Calypso.
• | MT536: Statement of Transactions |
• | MT537: Statement of Pending Transactions |
• | MT540: Receive Free |
• | MT541: Receive Against Payment |
• | MT542: Deliver Free |
• | MT543: Deliver Against Payment |
• | MT544: Receive Free Confirmation (vs. an MT540 outgoing message) |
• | MT545: Receive Against payment Confirmation (vs. an MT541 outgoing message) |
• | MT546: Deliver Free Confirmation (vs. an MT542 outgoing message) |
• | MT547: Deliver Against payment Confirmation (vs. an MT543 outgoing message) |
• | MT548: Settlement Status and Processing Advice |
• | MT578: Alleged Settlement |
• | MT586: Statement of Alleged Settlement |
It also describes the generation of MT530 messages to request settlement instruction changes.
You can also use the Swift MX messages instead of the Swift messages.
1. Setup Requirements
1.1 Environment Properties
Review the following properties as they impact the integration of the incoming messages.
Environment Properties |
Description |
CHANGE_CASH_SIGN_FOR_PARTIAL_SETTLE |
True or false. When set to true, the system bypasses the check that the cash amount of an incoming netted transfer cannot have an opposite sign from the outgoing transfer. Default is false. |
CHECK_QUANTITY_FOR_SECURITY_MATCHING |
Default value is false. If false the system tries to apply automatically the action PARTIAL_SETTLE on the transfer that would have a quantity higher than the quantity of the incoming message. If true the message is not matched and falls in the Security Matching Window. |
PARTIAL_CASH_FOR_SECURITY_MATCHING |
Applies when the security amount of the incoming message is the same as the transfer amount, but the cash amounts differ. If false, the transfer is settled, regardless of the cash amount. The cash amount of the incoming message is set on the transfer. If true, the transfer is split. The security transfer is settled and the cash transfer is failed. If WRITE_OFF_FOR_SECURITY_MATCHING is true, and the cash difference is within the settlement tolerance, the failed transfer becomes a settled WRITE_OFF transfer. |
USE_NUMERIC_FOR_RELA_REF |
True or false. Default is true. When importing Tag 20C RELA reference, all non-numeric characters are removed. You need to set USE_NUMERIC_FOR_RELA_REF to false to keep all characters. |
USE_TRANSFER_FOR_EXTERNAL_REF |
Default value is false. Set to false, the system tries to match the reference of the incoming swift (tag 20C::RELA) with a Calypso MessageId. If set to true, the system tries to match the reference of the incoming swift (tag 20C::RELA) with a Calypso TransferId. In any case, if there is no correspondence found (MessageId or TransferId), the system tries to match the reference of the incoming message with the content of the transfer attribute MATCHING_REF. |
WRITE_OFF_FOR_SECURITY_MATCHING |
True to allow writing off the cash difference when the difference is within the settlement tolerance, or false otherwise. |
1.2 Domain Values
Make sure that the following domains are defined.
Domain Name |
Domain Values |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
domainName |
Add the following domains:
Comment=MultipleSelection of keyword value allowed. Trade was executed CUM or EX (MT540-43 :22F::TTCO//4!c)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
flowType |
Add the WRITE_OFF value. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
flowTypeWriteOff |
Add the WRITE_OFF value. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
incomingType |
Value = MT536, MT578, MT86, etc. Comment = Incoming message type - The incoming message type is used to configure the incoming message workflow. Examples: Value = MT536 - Comment = INC_RECON Value = MT537 - Comment = INC_RECON Value = MT548 - Comment = INCOMING Value = MT578 -Comment = INC_SETTALLEGE Value = MT586 - Comment = INC_SETTALLEGE |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
keyword.CATradeBasis |
Add the following values:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
keyword.HoldRelease |
Add the following values:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
keyword.PRIR |
Add the following values for the priority indicator:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
keyword.SETR |
Add the following value:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
leAttribute.OPT_OUT_INDICATOR |
Add the following value:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
leAttributeType.PARTIAL_INDICATOR |
Add the following values:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
messageExcludeAction |
Add the following values:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
messageExcludeTemplates |
Add the following values:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
messageType |
Add the values INCOMING and INC_SETTALLEGE corresponding to the incoming messages. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MsgAttributes |
Add the following values. For all messages:
For MT548 and MT537:
For MT548:
For MT537:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ProductSelectorTypes.Repo |
Add any Product Type that could be involved in the Security Matching process like Bond, BondConvertible, ADR, Equity, etc. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PropagateLEAttribute |
Add the following values:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PropagateTradeKeyword |
Add the following values:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SWIFT.Templates |
Add the following values:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
tradeKeyword |
Add the following values:
For MT537:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
XferAttributes |
Add the following values:
For MT537:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
XferAttributes.CHG_DETAIL.Editable |
Add the following values (list of fields that can be edited by the action CHG_DETAIL):
Buy-In Process:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
XferAttributesForMatching |
Add the following value:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
XferMessageRef |
For MT537:
|
1.3 Bond Definition
You can set the security code UNIT_SWIFT_FORMAT to true to express tag 36B in quantity (UNIT format). It is expressed in nominal amount (FAMT format) otherwise.
Overwritten existing solutions and and manipulate the quantity type. For example, if a bond (1 ISIN) has a quote type UnitaryPrice, then tag 36B::SETT of the MT54X messages will be populated with UNIT. But if the depository is expecting to receive the information in FAMT, then the following will be done:
Add the LE attribute [ProductFamily]/[ProductType].[SubType].QuantityType on the PSET (Place of Settlement) with below possible values:
• | UNIT to populate tag :36B::SETT//UNIT |
• | FAMT to populate tag :36B::SETT//FAMT |
To populate the value on the tag, check bonds characteristics as following:
• | ProductType.SubType |
If available, then populate.
If not available, then check ProductType
– | If available, then populate. |
– | If not available, then check ProductFamily |
If available, then populate.
If not available, then apply default (Priority n°3)
Priorities order:
• | LE Attribute [ProductFamily]/[ProductType].[SubType].QuantityType |
• | Security Code |
• | Bond Quote Type (default) |
Example :
Bond.Bonos.QuantityType = UNIT è [ProductType].[SubType].QuantityType
BondAssetBack.QuantityType =FAMT è [ProductType].QuantityType
Bond.QuantityType = FAMT è [ProductFamily].QuantityType
NB: Product Family <> Product Group
1.4 Message Workflow
Static Data Filters
MT548PENA: Message template = MT548 and MSGAttributes.Message_Function = PENA.
INCOMING Workflow
Make sure that the following message workflow rules are available:
• | SetXferMessageRef - If the incoming message has a TransferId not null (the message has been indexed to a Calypso transfer), this rule applies the action UPDATE by default on the indexed transfer and sets the attributes of the incoming message (defined in domain "XferMessageRef") in the transfer attributes. It also sets in the attribute MessageId of the indexed transfer the incoming message id. This attribute can contain several MessageIds in case the transfer is indexed first with a MT548 and then with a MT54X. |
You can set the action to be applied in the rule parameter.
Note: If the incoming message has a TransferId equals to 0 (the message has not been indexed to a Calypso transfer), the message remains in its original status (PENDING according to our suggestion below) because the rule blocks it.
If the value of a message attribute is empty, in a subsequent message, the corresponding transfer attribute is removed from the transfer even if it contains a value. you can use the domain “XferMessageRefKeep” to define the list of transfer attributes to keep even if the message attribute is empty on the incoming message.
• | UnSetXferMessageRef - This rule is executed when the user hits the UNDO button of the Security Matching Window. This rule applies the UNDO action (or action specified in comment) to the indexed transfer and removes the content of the transfer attributes defined in the domain “UnSetXferMessageRef”. If the transfer was indexed to a MT548 and to a MT54X, applying the UNDO on the MT54X incoming message just removes its related id from the list of MessageIds stored on the transfer but keep the MessageId of the MT548 already matched). |
Note: If the MessageId contained only one MessageId and if the UNDO is applied on this given message, the system removes it from the MessageId attribute but also removes the content of the Reference attribute as it is not longer indexed to any incoming message.
• | SetTradeMessageRef: When field :20U::TRRF// is set in the incoming message, it populates the new message attribute “UTI_Ref”. The workflow rule SetTradeMessageRef must be set on action UPDATE to set trade keywords on the trade for the message attributes defined in domain "TradeMessageRef". |
The content of the trade keyword "UTI_Ref", when not null, is propagated to field :20U::TRRF// of the outgoing messages.
• | MatchIncomingSecurity - This rule applies to the indexed transfer. The action applied to the transfer depends on the type of incoming message. For MT548/MT537 (or any message defined in domain "NonSettlementMessage"), the action applied depends on the Incoming Status Config you have defined. If the domain "NonSettlementMessage" is empty, and the incoming message type is defined in the domain "IncomingSecurityAdvice", the rule MatchIncomingSecurity handles the incoming message as a non settlement message, and the action depends on the Incoming Status Config. |
For MT536 and MT544-MT547, the system applies the action SETTLE or PARTIAL_SETTLE (if environment property CHECK_QUANTITY_FOR_SECURITY_MATCHING is set to false and if the settled quantity is less than the quantity of the transfer).
For MT540-MT543, the system applies the action SPLIT.
Note: If the incoming message has the flag MatchB equals to false (at least one of the matching criteria is not respected), the message remains in its original status because the rule blocks it.
• | MatchIncomingSecurityAdvice - This rule sets string tag25D with message attribute “ATTR_MATCHING_STATUS” if the incoming message has tag25D starting with MTCH, or “ATTR_SETTLEMENT_STATUS” if the incoming message has tag25D starting with SETT. |
This rule handles "sese" messages defined in the domain "IncomingSecurityAdvice".
When integrating a MT548 message, this rule moves the associated trade to the status defined in the Mapping Status Config if any.
• | PropagateFX2Xfer - This rule propagates FX message attributes to the transfer when RESU and EXCH are provided on the incoming MT545 and MT547, in the case where the actual settlement currency is different from the transfer currency. It should be set on the MATCH action. It must be used in conjunction with the transfer rules GenerateFXSettlement and ResetFXSettlement. See below for details. |
• | ReleaseMsgPendingCancelConf - This rule holds generation of the new swift instruction message until the confirmation of the MT54x Cancel request is executed, in case of security transfer amendment. |
• | CreatePenaltyTrade - This rule creates a Simple Transfer trade of type PENALTY using the data of the MT548/MT537, links the message to the Simple Transfer and applies the action UPDATE on the indexed transfer to store the Trade ID of the penalty trade in transfer attribute PenaltyTradeId. |
By default, the settle date of the penalty trade is created using the date rule (17th business day of the month for example) specified in the Agent legal entity attribute "PenaltySettleDate".
Example:
A penalty trade is created for each daily MT537 message with Tag 22H::PNTP//SEPF (matched trade with failed settlement), and for a MT537 message with Tag 22H::PNTP//LMFP (matched trade that is not settled by the settlement date).
The domain “CreatePenaltyMsgAttribute” is used by the workflow rule CreatePenaltyTrade to store selected message attributes from the MT537 as trade keywords on the penalty trade.
The domain “CreatePenaltyTradeKeyword” is used by the workflow rule CreatePenaltyTrade to propagate selected trade keywords from the original trade to the penalty trade.
The trade date of the penalty trade is set based on Agent attribute PenaltyTradeDateSEFP. It can be set to DACO (default) or PEDA.
IF :22H::PNTP = SEFP:
• | If PenaltyTradeDateSEFP <> PEDA: |
Use date in tag 98A::DACO (message attribute ComputationDate) to set the Trade Date of the Penalty Trade. DACO not being mandatory, if not available continue using the Todate from STAT and preparation date as currently done
• | If PenaltyTradeDateSEFP = PEDA: |
Use date in tag 98A::PEDA (message attribute PenaltyDate) to set the Trade Date of the Penalty Trade. If PEDA not available, use DACO and if DACO not available, use preparation date as currently done
IF :22H::PNTP <> SEFP (message attribute ComputationDate) that means equal to LMFP Late Matching fail penalty:
Use date in tag 98A::DACO to set the Trade Date of the Penalty Trade if available, or field 69:STAT otherwise
Message attribute PenaltyPayDate is set with date in field 98A with qualifier PAYD (:98A::PAYD or :98C::PAYD) in sequence D1 (16R:PENACUR).
If option C, then just keep the date and disregard the time.
The workflow rule CreatePenaltyTrade can also handle lifecycle of penalty trades based on Penalty Status and Reason from incoming MT537 in Block PENDET, Tag 25D::PNST (penalty status) and Tag 24B:: (penalty reason).
• | No penalty status – New penalty trade is created |
• | Penalty status = :25D::PNST//ACTV – If penalty trade does not already exist, create a new one, otherwise update the existing penalty trade |
• | Penalty status = :25D::PNST//REMO – Cancel existing penalty trade |
• | Penalty status = :25D::PNST//SWIC or RLOC: |
– | If penalty reason = ACTV/UPDT – Create new trade or update existing trade |
– | If penalty reason = REMO – Cancel existing penalty trade |
– | If penalty reason = NCOM – No action |
• | Penalty status = :25D::PNST//REIC – Create new trade or update existing trade |
• | Penalty status = :25D::PNST//NCOM or OTHR – CreatePenaltyTrade is not applied and an exception is raised – To avoid this, you can set a dedicated transition based on message attribute Penalty_Status, without the rule CreatePenaltyTrade, to send such messages to a specific status for review. |
To link incoming Monthly MT537 with penalty type = SEPF to the Penalty Trades created with daily MT537, you can use the following rules:
• | SetMT537MonthlyAmount - To copy the following message attributes from the Monthly MT537 message: |
– | Penalty_Amount to trade keyword MonthlyConfirmedAmount |
– | AggregatedGlobalAmount to trade keyword AggregatedGlobalAmount |
– | BilateralNetAmount to trade keyword BilateralNetAmount |
– | PenaltyPayDate to trade keyword PenaltyPayDate |
– | PeriodFrom to trade keyword PeriodFrom |
– | PeriodTo to trade keyword PeriodTo |
– | Penalty_Amount_Ccy to trade keyword MonthlyConfirmedAmountCcY |
– | AggregatedGlobalAmountCcy to trade keyword AggregatedGlobalAmountCcy |
– | BilateralNetAmountCcy to trade keyword BilateralNetAmountCcy |
The trade is saved using the UPDATE action.
The Penalty Trade Settlement Date may be modified based on environment property ReferenceDateForPenalty. It can be set to PeriodTo, PayDate or not set (default).
– | If ReferenceDateForPenalty = Not set - The Settlement Date is not modified. |
– | If ReferenceDateForPenalty = PayDate AND Linked Penalty Trade Settlement Date <> from date in message attribute PenaltyPayDate: |
Store Penalty Trade Settlement Date in tradekeyword OriginalPenaltySettleDate
Update Settlement Date to match date in message attribute PenaltyPayDate
– | If ReferenceDateForPenalty = PayDate AND Linked Penalty Trade Settlement Date = from date in message attribute PenaltyPayDate: |
The Settlement Date is not modified.
– | If ReferenceDateForPenalty = PeriodTo AND Linked Penalty Trade Trade Date <> from date in message attribute PeriodTo: |
Store Penalty Trade Settlement Date in tradekeyword OriginalPenaltySettleDate
Update Settlement Date by getting the Next Date returned by PenaltySettleDate date rule when applied to date in message attribute PeriodTo.
Note: PenaltySettleDate date rule is stored in Agent attribute "PenaltySettleDate".
– | If ReferenceDateForPenalty = PeriodTo AND Linked Penalty Trade Trade Date = from date in message attribute PeriodTo |
The Settlement Date is not modified.
• | ReprocessMT537Monthly – To tentatively link the sub-messages of a Monthly MT537 of type SEFP, to the Simple Transfer trades of type PENALTY with PenaltyRef = PREF tag and PenaltyComRef = PCOM tag (created from daily MT537 messages). |
If PenaltyRef is available, then look for Penalty trade where: Message Attribute PenaltyRef = Trade Keyword PenaltyRef and Message Attribute PenaltyComRef = TradeKeyword PenaltyComRef.
If PenaltyRef is not available, then look for Penalty trade where: Message Attribute PenaltyComRef = Trade Keyword PenaltyComRef.
We suggest the following INCOMING message workflow (subtype = INCOMING):
Orig Status |
Action |
Resulting Status |
STP |
Rules |
Task |
Filter |
NONE |
NEW |
PEND MTCH UPDATE |
F |
|
T |
MT548 |
NONE |
NEW |
PEND SETT UPDATE |
F |
|
T |
MT544-MT547 |
NONE |
NEW |
PENDING |
F |
T |
MT548PENA |
|
PEND MTCH UPDATE |
CANCEL |
CANCELED |
F |
|
F |
|
PEND MTCH UPDATE |
MATCH |
VER MTCH UPDATE |
T |
SetXferMessageRef,SetTradeMessageRef |
T |
MT548_MTCH |
PEND MTCH UPDATE |
MATCH |
VER MTCH-SETT |
T |
SetXferMessageRef,SetTradeMessageRef |
T |
MT548_MTCH-SETT |
PEND MTCH UPDATE |
MATCH |
VER SETT UPDATE |
T |
SetXferMessageRef,SetTradeMessageRef |
T |
MT548_SETT |
PEND MTCH UPDATE |
REJECT |
REJECTED |
F |
|
T |
|
PEND SETT UPDATE |
CANCEL |
CANCELED |
F |
|
F |
|
PEND SETT UPDATE |
MATCH |
VER SETT UPDATE |
T |
SetXferMessageRef,SetTradeMessageRef |
T |
|
PEND SETT UPDATE |
REJECT |
REJECTED |
F |
|
T |
|
PENDING |
INDEX |
INDEXED |
T | SetXferMessageRef,SetTradeMessageRef | T | |
INDEXED |
PROCESS |
PROCESSED |
T | CreatePenaltyTrade | T | |
PROCESSED |
CANCEL |
CANCELED |
F |
|
F |
|
PROCESSED |
UNDO |
PEND MTCH UPDATE |
F |
UnSetXferMessageRef Comment = UPDATE |
F |
MT548 |
PROCESSED |
UNDO |
PEND SETT UPDATE |
F |
UnSetXferMessageRef Comment = UPDATE |
T |
MT544-MT547 |
VER MTCH UPDATE |
CANCEL |
CANCELED |
F |
|
F |
|
VER MTCH UPDATE |
MATCH |
PROCESSED |
T |
MatchIncomingSecurityAdvice |
T |
|
VER MTCH-SETT |
CANCEL |
CANCELED |
F |
|
F |
|
VER MTCH-SETT |
MATCH |
PROCESSED |
T |
MatchIncomingSecurity MatchIncomingSecurityAdvice |
T |
|
VER SETT UPDATE |
CANCEL |
CANCELED |
F |
|
F |
|
VER SETT UPDATE |
MATCH |
PROCESSED |
T |
MatchIncomingSecurity PropagateFX2Xfer |
T |
|
The static data filters can be defined based on the Message Template and the Message Status attributes.
INC_SETTALLEGE Workflow
This workflow is specified for the subtype INC_SETTALLEGE for incoming messages MT578 and MT586.
Orig Status |
Action |
Resulting Status |
STP |
Rules |
Filter |
---|---|---|---|---|---|
ALLEGED |
CANCEL |
CANCELED |
F |
|
|
ALLEGED |
MATCH |
MATCHED |
T |
|
Msg Function Not NEWM |
ALLEGED |
REMOVE |
REMOVED |
F |
|
|
INVESTIGATE |
CANCEL |
CANCELED |
F |
|
|
INVESTIGATE |
PROCESS |
ALLEGED |
T |
MatchIncomingSecurityAdvice |
|
NONE |
NEW |
INVESTIGATE |
F |
|
|
INC_RECON Workflow
We suggest the following INC_RECON message workflow (subtype = INC_RECON):
Orig Status |
Action |
Resulting Status |
STP |
Rules |
Task |
Filter |
NONE |
NEW |
PENDING |
T |
|
|
|
PENDING |
INDEX |
INDEXED |
T |
SetXferMessage |
DailyFrequency |
|
PENDING | MATCH | MATCHED | T |
SetMT537MonthlyAmount |
MonthlyFrequency |
|
PENDING | REPROCESS | PENDING | F | ReprocessMT537Monthly | MonthlyFrequency | |
PENDING | CANCEL | CANCELED | F |
|
|
|
INDEXED |
PROCESS |
PROCESSED |
T |
CreatePenaltyTrade |
DailyFrequency |
|
INDEXED | CANCEL | CANCELED | F | DailyFrequency | ||
PROCESSED | CANCEL | CANCELED | F | |||
PROCESSED | UNDO | TO BE REPROCESSED | F | UnSetXferMessageRef
Comment = UPDATE |
DailyFrequency | |
TO BE REPROCESSED | MATCH | PENDING | F |
1.5 Transfer Workflow
On the VERIFIED-SETTLE-SETTLED transition, add the rule ResetXferMessageStatus.
ResetXferMessageStatus: This rule resets the following attributes when the transfer is settled: Matching_Status, Matching_Reason and RejectReason.
To handle pre-settlements, add a transfer workflow transition ADD_PRE-SETT_LINK to link incoming messages to transfers via the rule MatchIncomingSecurity without changing the transfer’s status.
Also, make sure the actions AUTO_SETTLE and AUTO_FAIL are defined on the transfer workflow.
Define the following static data filters:
Orig Status |
Action |
Resulting Status |
STP |
Rules |
Task |
SD Filter |
PENDING |
AUTHORIZE |
VERIFIED |
T |
CheckNetting PropagateLEAttribute PropagateTradeKeyword |
||
PENDING |
EXECUTE |
VERIFIED |
SetKnownFlag PropagateLEAttribute PropagateTradeKeyword |
|||
VERIFIED |
ADD_PRE-SETT_LINK |
VERIFIED |
F |
|
T |
|
VERIFIED |
AUTO_FAIL |
FAILED |
T |
CheckToBeFailed |
T |
Xfer not WRITE_OFF |
VERIFIED |
AUTO_SETTLE |
SETTLED |
T |
CheckToBeSettled |
F |
Xfer not WRITE_OFF |
VERIFIED |
AUTO_WRITEOFF |
SETTLED |
T |
|
F |
Xfer WRITE_OFF |
VERIFIED |
FAIL |
FAILED |
F |
|
T |
|
VERIFIED |
PARTIAL_SETTLE |
SPLIT |
F |
|
F |
|
VERIFIED |
SETTLE |
SETTLED |
F |
ResetXferMessageStatus |
F |
|
VERIFIED |
SPLIT |
SPLIT |
F |
|
F |
|
VERIFIED |
UNSPLIT |
CANCELED |
F |
|
F |
|
FAILED |
CANCEL_MSG |
FAILED |
F |
|
T |
|
Incoming Settlement Currency different from Outgoing Transfer Currency
When RESU and EXCH are provided on the incoming MT545/MT547 messages, it indicates that the incoming settlement currency is different from the outgoing settlement currency.
You can use the following setup to match the incoming and outgoing payment messages, and settle the outgoing messages with the proper amount.
Message rule: PropagateFX2Xfer – To be set in INCOMING workflow on MATCH action to propagate the following message attributes to the transfer:
• | FX Resulting Amount |
• | FX Resulting Ccy |
• | FX Resulting Pair |
• | FX Resulting Type |
• | FX Resulting Quote |
The transfer rule GenerateFXSettlement should be set on the SETTLE and PARTIAL_SETTLE actions. It updates the original transfer with FX Resulting Type = Original Settlement, and generates a transfer to offset the original transfer and a transfer with the actual settlement information from the FX attributes.
The transfer rule ResetFXSettlement should be set on the AUTHORIZE action to reset the FX attributes.
1.6 Incoming Status Config
From the Calypso Navigator, navigate to Configuration > Messages & Matching > Incoming Status to define the action to be applied to the transfer / trade matched with the incoming message.
This configuration applies to the incoming messages of type INCOMING.
For handling pre-settlement, you also need the following mapping:
» | Enter the fields described below and click Add. |
» | Then click Save to save your changes. |
Fields Details
Fields |
Description |
Incoming Msg Type |
Click ... to select the type of message for which you want to define a mapping status config. You can double-click the label to add new message types. |
Incoming Status |
Select the value to map with the incoming message tag 25D + 24B. You can click ... to define all the possible combinations. Use the “-“ to separate the content of tag 25D with the content of tag 24B.
|
Incoming SD Filter |
Click ... to select a static data filter to filter the incoming messages. You can double-click the label to define static data filters. |
Workflow |
Click ... to select the workflow transition to be applied to the transfer matched with the incoming message that satisfies the fields Incoming Msg Type, Incoming Status and Incoming SD Filter. You will be prompted to select a Processing Org (can be ALL), an event class (PSEventTransfer for a transfer or PSEventTrade for a trade), a Subtype (can be ALL), a Product (can be ALL), and a transition:
|
Description |
Enter the comment that will be displayed on the task created when the selected workflow transition is applied. Ⓘ [NOTE: The selected workflow transition should have "Create Task" checked] |
When the system applies the MatchIncomingSecurity, it combines the content of tag 25D and tag 24B if any, separated with a "-". It then looks for a Mapping Status Config where the incoming status matches the combined string.
If the system does not find any eligible Mapping Status Config, the incoming message remains in its original status, and sets the comment of the corresponding message task to "No possible action on transfer".
If the system finds an eligible Mapping Status Config, it applies the action of the corresponding transition to the transfer matched with the incoming message, and populates the comment with the user-defined description.
When integrating a MT548 message, the MatchIncomingSecurityAdvice message workflow rule moves the associated trade to the status defined in the Mapping Status Config if any.
1.7 Matching Context
From the Calypso Navigator, navigate to Configuration > Messages & Matching > Matching (menu action "refdata.MatchingContextConfigurationWindow
") to bring up the Matching Context window.
This configuration applies to the incoming messages of type INC_SETTALLEGE (MT578 and MT586 messages). They can be matched with security settlement messages.
Incoming message will be in status ALLEGED and should potentially be matched with non-sent security messages.
See Matching Context for details.
2. Generation of MT540, MT541, MT542, MT543 for Security Margin Calls and Simple Transfers
The following tags are specific to Security Margin Calls and Simple Transfers provided the proper trade keywords are populated.
There is an additional tag 22F::STCO = TRIP when product type = MarginCall or SimpleTransfer, and trade keyword Pledged_Collateral = True.
Tag 22F::STRE contains:
• | COLO if product type = MarginCall or SimpleTransfer, and trade keyword bookingType = “Delivery to CP” OR “Return to PO” |
• | COLI if product type = MarginCall or SimpleTransfer, and trade keyword bookingType = “Delivery to PO” OR “Return to CP” |
Tag 22F::COLA = value of trade keyword CollateralExposureType if product type = MarginCall or SimpleTransfer.
2.1 MT54X messages by Market / Custodian
The following changes have been made on MT54X messages to cover custodians’ specificities:
Field 22F STCO is populated with PART only for some markets in T2S scope.
• | If Priority n°1 new SDI attribute to be developed on LE with PO role: |
Name: PARTIAL_INDICATOR.ALLOWED
Value: SD Filter instead of open field
Priorities order:
• | PO SDIs attribute PARTIAL_INDICATOR.ALLOWED (New solution) |
• | PARTIAL_INDICATOR defined on transfer (Existing solution) |
NB: It is recommended to use SDIs attribute OR Trade keyword solution and NOT both at the same time.
Example:
• | SDI attribute PARTIAL_INDICATOR.ALLOWED = SD filter TRUE -> :22F::STCO//PART |
• | SDI attribute PARTIAL_INDICATOR.ALLOWED = SD filter AND PARTIAL_INDICATOR = NPAR -> :22F::STCO//NPAR |
Field 22F STAM is added only for the Irish Market.
• | If Priority n°1 new SDI attribute to be developed on LE with CPTY role: |
Name: STAM
Value: (Optional)/Code
• | If Priority n°2 new SDI attribute to be developed on LE with PO role: |
Name: STAM
Value: (Optional)/Code
Priorities order:
• | CPTY SDIs attribute (New solution) |
• | PO SDIs attribute (New solution) |
• | Trade Keyword (Existing solution) |
NB: It is recommended to use SDIs attribute OR Trade keyword solution and NOT both at the same time.
Example:
• | SDI attribute STAM = CRST -> :22F::STAM//CRST |
Field 94B TRAD is populated with TRAD//OTCO/XHKG for the Hong Kong Market.
• | If Priority n°1 new SDI attribute to be developed on LE with PO role: |
Name: Place
Value: (Optional)/Code/Narrative
Priorities order:
• | PO SDIs attribute |
• | Trade Keyword |
NB: It is recommended to use SDIs attribute OR Trade keyword solution and NOT both at the same time.
Example:
• | SDI attribute = OTCO/XHKG -> :94B::TRAD//OTCO/XHKG |
3. Incoming Messages Import
Incoming messages are imported using the MESSAGE_MATCHING scheduled task.
When using the scheduled task, please put in the Swift File attribute the name of the swift file to integrate and in the InputDir the path to access this file as shown below:
The system indexes the incoming message using TAG 20C (Related Reference) which can be the outgoing message id or the Transfer Attribute MATCHING_REF when there is no outgoing message.
When an extension -01 or -02 is the Related Reference suffix, we skip it to index using the message id or transfer attribute without that suffix.
When there is no message id, transfer id or transfer attribute MATCHING_REF which matches TAG 20C of MT548 or MT54X then the INCOMING message is saved but blocked in a status PENDING (depending on your INCOMING message workflow).
If TAG 20C::RELA does not match, incoming MT5x messages can be linked to MT548 messages based on the references listed in domain “SecuritiesIncomingReferences”, in the order in which they are listed.
The following references can be used: SEME, TRRF, COMM, MITI, PCTI, CMIT, TCTR, CLTR, CLCI, TRCI.
So if the domain contains MITI, CMIT and CLCI, the system will try to match the incoming message with the MITI reference. If it does not match, it will try the CMIT reference and if it does not match, it will try the CLCI reference.
The matching process is described below.
3.1 Automatic Matching
The Message Matching process consists in verifying if the outgoing message or related MATCHING_REF transfer attribute is valid in the system.
If a matched message (MatchingB flag is true on the INCOMING message) or transfer is found, then the system applies the MatchIncomingSecurity message workflow rule.
For all incoming messages, if there is a cash difference, the process will depend on the environment property PARTIAL_CASH_FOR_SECURITY_MATCHING.
If false, the transfer is settled, regardless of the cash amount. The cash amount of the incoming message is set on the transfer.
If true, the transfer is split. The security transfer is settled and the cash transfer is failed. If WRITE_OFF_FOR_SECURITY_MATCHING is true, and the cash difference is within the Automatic settlement tolerance, the failed transfer becomes a settled WRITE_OFF transfer.
MT536, MT537, MT548
We check if we can apply the actions MATCH or UNMATCHED based on the TAG 25D (Status) MATCH or NMAT. Additional checks are done on:
Function
(INST for new message / CAST for cancel message).
If the Message Function of the incoming message is different from the function of the outgoing message, we do not MATCH messages; the flag MatchB is set to false. This means that the incoming message will have to be treated via the Security Matching Window.
For an incoming message bearing a function CAST, we match the outgoing message (CANC) with the incoming message and apply the MATCH action on the incoming message when the related outgoing message (CANC) is found and Quantity Type, Quantity, Security Code and function matches; no action is applied on the transfer which stays in CANCELED or REMOVED status.
Quantity
Whatever the value set to the environment property CHECK_QUANTITY_FOR_SECURITY_MATCHING, if the Quantity field of the incoming message is different than the Quantity of the outgoing Message (or related transfer with the attribute MATCHING_REF) then we save the incoming message but do not apply the MATCH action on this message nor on the related transfer; The flag MatchB is set to false. This means that the incoming message will have to be treated via the Security Matching Window.
If the Quantity field of the incoming message is equal to the Quantity of the outgoing message (or related transfer with the attribute MATCHING_REF) then we apply the MATCH action on the incoming message and the action MATCH or UNMATCHED on the related transfer based on the value MACH or NMAT of Tag 25D.
Type of Quantity
(FAMT is used for bond-related products by default unless the security code UNIT_SWIFT_FORMAT is set to true on the Bond Definition)
(UNIT is used for equity-related products by default)
If the Type of Quantity of the incoming message is different than the Type of Quantity of the incoming message, then we save the incoming message but do not apply the MATCH action on it nor on the related transfer; the flag MatchB is set to false. This means that the incoming message will have to be treated via the Security Matching Window.
Security Code
If the Tag35B starts by:
• | ISIN - The ISIN security code is used for matching. |
• | /US/ - The CUSIP security code is used for matching. |
• | /GB/ - The SEDOL security code is used for matching. |
• | /HK/ - The HK security code is used for matching. |
Otherwise, the code after the 4 first characters of Tag35B is matched against the Common security code.
So, if for example the code in the Incoming Message for Tag35B = /XS/123456789, it will be matched against the Common security code = 123456789.
If the incoming message cannot be matched against any code, then we save the incoming message but do not apply the MATCH action on it nor on the related transfer; the flag MatchB is set to false. This means that the incoming message will have to be treated via the Security Matching Window.
ISIN can split MT536 message by using environment property SPLIT_MT536 = true.
If set to true: The environment property will split the MT536 per transaction (i.e. one BO Message per transaction in MT536).
If set to false: It will create single BO Message (default behavior).
Attributes
If you add SecurityMatching to the domain “MessageAttributeCopier”, the following attributes are not copied to the cancellation message, if any: _Matching_Reason and _Matching_Status.
Proprietary Account
When the incoming MT536 or MT537 contains a proprietary account, it is split between each sub-account and reconciled using the Security Reconcile Window (menu item reporting.SecurityReconcileWindow
).
You can select the ACOW reference. It allows displaying all the transfers where XferAttributes.ClientRef = ACOW and all the messages where MsgAttributes.ClientRef = ACOW.
When the MT537 message has not been indexed to a transfer, you can use the Security Reconcile window to Force Match the message (or multiple messages) to a transfer:
When clicking on Force Match, the Transfer Id is set on the Message Id in order to perform the indexation. During indexation, if the ACOW reference does not give the message id of the transfer, it checks if this reference matches the XferAttributes.ClientRef. If Data Source Scheme = IBRC and ACOW reference does not match XferAttributes.ClientRef, then it looks at MT537 field :20C::MITI// and see if it matches the transfer attribute T2S_Reference.
When integrating the MT537, the message field MATCHB is set to true if the message has been indexed to a transfer or false otherwise.
MT540, MT541, MT542, MT543
An incoming MT540-MT543 is received. Its reference (tag 20C::SEME) is stored in the Msg attribute AgentRef. The incoming MT540-MT543 can be matched through the Matching Manager with a Transfer.
Then, an Incoming MT544-M547 is received. Its tag 20C::RELA contains the reference SEME of the Incoming MT540-MT543. Therefore, the incoming MT544-MT547 can be automatically indexed to the incoming MT540-MT543 and the trade (the indexation is done thanks to the tag 20C:RELA of the MT544-MT547 compared to the AgentRef attribute of the MT540-MT543).
Tag 95P is added for Data Source Scheme = ECLR (Euroclear) and CEDE (Clearstream) - Participant Account owner - SWIFT address of the PO (for direct participant) or SWIFT address of PO custodian (for indirect participant).
When the MatchIncomingSecurity rule is doing a SPLIT, it sets the transfer attribute MatchIncomingSecurity = true. You can add the transfer rule CheckMatchWithMessageTemplate on the transition VERIFIED - AUTO_SETTLE - SETTLED that checks this attribute.
If it is true, and the rule param contains the incoming message template, the partial transfer moves to status SETTLED. If it is true and the rule param does not contain the incoming message template, the partial transfer moves to status VERIFIED.
If it is false or not set, the partial transfer moves to status SETTLED.
MT536, MT544, MT545, MT546, MT547
For MT536, MT544, 545, 546 and 547, we apply the action MATCH on the incoming message and PARTIAL_SETTLE (if CHECK_QUANTITY_FOR_SECURITY_MATCHING is set to false and the quantity of the incoming message is lower then the quantity of the outgoing message or of the transfer) or SETTLE actions on the related transfer based on Tag 23G (Function) and 36B (Quantity Type and Quantity).
When LOOK_PARENT_CONTACT = true, the receiver of the incoming message is set to the PO of the trade related to the outgoing message linked to the incoming message.
If there is no linked message or no trade is found, or LOOK_PARENT_CONTACT = false, the receiver is set to the first legal entity that matches the BIC code of the message.
Checks are done on:
Function
(NEWM for new message / CANC for cancel message).
If the Message Function of the incoming message is different from the function of the outgoing message, we do not MATCH messages; the flag MatchB is set to false. This means that the incoming message will have to be treated via the Security Matching Window.
For MT544, 545, 546 and 547 bearing a function CANC, we match the outgoing message (CANC) with the incoming message and apply the MATCH action on the incoming message when the related outgoing message (CANC) is found and Quantity Type, Security Code and function matches; no action is applied on the transfer which stays in CANCELED or REMOVED status.
Type of Quantity
Same behavior as MT548.
Security Code
Same behavior as MT548.
If one of these criteria do not match between outgoing (or related transfer) and incoming messages, then the incoming MT544, 545, 546 and 547 are saved but blocked in VERIFIED (action MATCH is not applied on the INCOMING message); as a consequence, the related transfer stays in its original status (e.g. VERIFIED).
Quantity
If the incoming message quantity is lower than the outgoing message quantity (or related transfer), and if CHECK_QUANTITY_FOR_SECURITY_MATCHING is set to false, we apply the PARTIAL_SETTLE action on the transfer (and MATCHED action on the incoming message). If the CHECK_QUANTITY_FOR_SECURITY_MATCHING is set to false we block the incoming message in VERIFIED status and the incoming message will have to be treated via the Security Matching Window.
When a PARTIAL_SETTLE action is applied on the related transfer, we CANCEL the initial transfer and create two new transfers (bearing the reference of the Parent Transfer).
By default, the new transfer corresponding to the part which is settled goes to SETTLED applying the AUTO_SETTLE action and CheckToBeSettled workflow rule.
The new transfer corresponding to the part of the transfer which is not settled goes to UNSETTLED (or similar status) applying the AUTO_FAIL action and CheckToBeFailed workflow rule.
By default, MT544-MT547 PAIN messages apply partial settlements and MT544-MT547 PARC messages only
apply partial settlements if the message quantity matches the remaining quantity. If environment property
PartialSettlementNoCheck = true, MT544-MT547 PARC messages apply partial settlements without checking of the
remaining quantity.
When the incoming message quantity matches the outgoing message quantity (or related transfer security quantity), the system applies the SETTLE action on the related transfer, it sets on the transfer the Real Settle Date displayed in the incoming message and the eventual Real Cash Amount settled. The incoming messages goes to MATCHED based on the INCOMING message workflow suggested.
Amount
When environment property CHANGE_CASH_SIGN_FOR_PARTIAL_SETTLE =true, the system bypasses the check that the cash amount of an incoming netted transfer cannot have an opposite sign from the outgoing transfer.
Propagating References to UNSETTLED/FAILED transfer
Upon partial settlement of MT54x messages, the following attributes are set on the resulting failed transfer:
• | OriginalReference – Reference from original transfer |
• | OriginalUTI_Ref - UTI_Ref from original transfer |
• | OriginalCommon_Reference - Common_Reference from original transfer |
• | OriginalState_Ref - State_Ref from original transfer |
• | OriginalT2S_Ref - T2S_Ref from original transfer |
• | Original<attribute> - <attribute> from original transfer defined in domain “OriginalMT54xCancelReference”. |
Example, if domain “OriginalMT54xCancelReference” contains Value = CustomRef, then attribute OriginalCustomRef is set to CustomRef of original transfer.
Cancel Message on UNSETLLED/FAILED transfer
You can generate a cancel message on the UNSETLLED/FAILED transfer by applying action CANCEL_MSG.
Such message should be configured with the template SecuritiesCancelation.selector so that the references that have been propagated to the UNSETLLED/FAILED transfer are set on the message.
If you are not using IBRC, you can set environment property IBRC_CHECK = false, to bypass the IBRC check to improve the performance of MT545 messages upload.
MT537 Penalty / MT548 Penalty
When integrating an MT537/MT548 with function of the message = PENA (:23G:PENA), an MT537/MT548PENA message is created which is indexed to the message id specified in the ACOW or RELA reference (:20C::RELA//MT541REF001), and a Simple Transfer penalty trade is created.
Tag 23 is saved in message attribute "Message_Function".
A cash penalty rate is applied based on the type of fail.
When MT548 sender legal entity attribute Data Source Scheme is defined in domain “CSDR_DataSourceScheme_ACOW”, MT548-PENA (22H::STST//PENA) messages are truncated per block :16R:PENDET (repetitive block) instead of block :16R:PENA and are indexed with block :16R:RELTRAN field :20C::ACOW// where the id set in this field is the same as the one displayed in same block field :20C::RELA//.
MT537 messages are indexed using the following algorithm:
The system first looks for a reference in ACOW or RELA in incoming MT537 and tries to match it to message attribute:
• | PORef - If found, process ends and message is indexed (if Is External = False) |
• | AgentRef - If found, process ends and message is indexed (if Is External = True) |
If not found:
• | Look for Xfer with Xfer attribute T2Sref with same value as reference in tag MITI |
• | Look for Xfer with Xfer attribute Common_Reference with same value as as reference in tag COMM |
• | Look for Xfer with Xfer attribute Clientref with same value as as reference in tag ACOW |
MT537
Daily frequency - Provides a daily penalty report that includes new and amended penalties, and daily bilateral net amounts per counterparty, currency, custodian.
Monthly (14th business day of the following month) - Provides monthly penalty report with monthly bilateral net amounts per counterparty, currency, custodian, and a list of the penalties of the month.
Monthly (15th business day of the following month) - Provides a report with net amounts per currency, custodian to be paid / received on the 17th on the month.
Monthly (17th business day of the following month) - Collects and re-distributes penalties as needed.
MT548 - CA Claim
The MT548 is indexed to the CA trade Claim using the MT548 field 20C::PREV// that is = to the message Id of the underlying transaction that is failed.
When receiving an MT548 with message function CLAI (:22F::SETR//), the system indexes the incoming message to a CA trade and/or transfer using the incoming field :20C::PREV as being the message_id of the original settlement instruction and the CA trade keyword CAFailedTransfer, as being the transfer Id creating the CA trade claim.
MT544-7 - CA Claim
The MT544-7 is indexed to the CA Claim transfer using the MT544-7 field 20C::PREV// that is = to the message Id of the underlying transaction that is failed.
When receiving an MT544-7 with message function CLAI (:22F::SETR//), the system indexes the incoming message to a CA trade and/or transfer using the incoming field :20C::PREV as being the message_id of the original settlement instruction and the CA trade keyword CAFailedTransfer, as being the transfer Id creating the CA trade claim.
The MT544-7, once indexed to the corresponding CA claim transfer, applies the action SETTLE on the transfer.
NO PARTIAL SETTLEMENT is allowed on CA market claims.
If several transfers are generated from a CA trade claim, then the system indexes the MT544-7 to the transfer where transfer amount = MT544-7 field 19A::ESTT.
3.2 Manual Matching
From the Calypso Navigator, navigate to Processing > Matching > Security Matching (menu action reporting.SecurityMatchingWindow
) to perform manual matching.
» | Enter search criteria as needed and click Load – The search criteria are described below. |
» | You can also click Default to load the default template. |
You can define templates from the Configure menu.
» | You can configure the color of the transfers / messages based on their status using the Color menu. |
– | Matched : Messages/transfers that are matched |
– | UnMatched : Messages/transfers that are not matched |
– | Processed : Messages/transfers that have been processed during the current session |
– | Included : Messages/transfers loaded from the “Include Transfers from Messages” or “Include Messages from Transfers” |
Search Criteria
Fields |
Description |
Value Date Start/End |
Enter the Value Start Date and Value End Date as needed to load the transfers and messages. |
Trade Date Start/End |
Enter the Trade Start Date and Trade End Date as needed to load the transfers and messages. |
Trade Date From ...To |
Same as “Value Date From.. To” but for Trade Date. No default value. |
Custodian |
Click ... to select a legal entity of role Agent. |
Transfer Status |
Click ... to select transfer status codes as needed. |
Custodian BIC |
Enter the BIC code. You can also enter a few letters of the BIC code, and click ... to display the corresponding contacts. Then select a contact. |
Message Status |
Click ... to select message status codes as needed. |
Swift Type |
Click ... to select a swift message type as needed. |
Filter Set |
Select a filter set as needed to filter transfers. |
Message Type |
Click ... to select message types as needed. |
Transfer Type |
Click ... to select a transfer types as needed. |
Quantity From/To |
Enter a range of traded quantities as needed. |
Currency |
Click ... to select settlement currencies ad needed. |
Nominal Amount From/To |
Enter a range of traded nominal amounts as needed. |
Swift Function |
Click ... to select swift functions as needed. |
Security Code |
You can select a security code and its value to load the corresponding product. The types of products that can be searched from this field can be set in the domain “ProductSelectorTypes.Repo". |
Reference |
You can select a reference and its value to load the corresponding message / transfer. If you select "Reference", you can load transfers / messages based on the RELA field. For "Reference", if your Reference is 12345 you will be able to find the transfers/messages using “12345”, “123%”, “%345” or “%34%”. |
Include Transfers from Messages |
Check to load transfers/messages that satisfy the criteria,and their associated transfers. |
Include Messages From Transfers |
Check to load transfers/messages that satisfy the criteria, and their associated messages. |
Functions
Once the messages and transfers are loaded, you can select a transfer and a message, and apply the following actions:
• | Match - To match the selected transfer and the selected message - You will be prompted to enter a comment that will be stored in the message attribute MatchingComment. |
• | Force Match - To force matching of the selected transfer and the selected message in case they don't match. |
• | Undo - To undo a function previously applied to the selected transfer and the selected message. |
• | Reject - To reject an incoming message. |
Matching Process
The Security Matching tool allows manually matching an incoming message that the system has not been able to match automatically with a Calypso transfer.
There can be several reasons why an incoming message has not been matched automatically. Depending on the type of matching criteria that is not respected, you will have different operations to do and will be able or not to match manually the incoming message with an outgoing message (or related transfer).
Below is the list of reasons why an incoming message would not be matched with a Calypso transfer.
Different or empty reference (TAG 20C RELA) (not blocking)
You have to investigate and find the eventual Calypso transfer that could match with this incoming message. If you find a Calypso transfer that has the same characteristics (except the reference), you will be able to match them. If one (or more) of the characteristic of the transfer the user has selected is different, you may face one the case described below.
Different Message Function, Security Code, Type of Quantity and/or Quantity (blocking)
You won’t be able to match an incoming message with a Calypso transfer if the Message Function, the Security Code, the Type of Quantity and/or the Quantity is/are different. If you try to match them, you will get an error message displaying the list of items that do not match.
If the Message Function, the Security code and/or the Type of Quantity does not match, you can just reject the incoming message. It is not possible to force the matching. If the Quantity is different, you will be able to match them depending on the case described below.
Different Quantity (can be blocking)
• | Incoming Message Quantity lower than Calypso transfer Quantity (not blocking): |
In this case, you can split the Calypso transfer you want to match with this incoming message. To do so, right click on the transfer and apply the action SPLIT. Input the Quantity and Cash Amount you want for each new transfer and apply. You will then be able to match the incoming message and the transfer coming from the split that has the right Quantity.
• | Incoming Message Quantity higher than Calypso transfer Quantity (blocking): |
In this case, you can just reject the incoming message as it is not possible to force the matching of an incoming message that as a Quantity higher than the Calypso transfer selected.
If the matching can manually be achieved (matching criteria respected but reference different or not existing), the impacts of the Match process are different on the Message and on the Transfer:
• | On the Message - The system applies the action MATCH (whatever the status of the incoming message selected). If the incoming message was not indexed (no transfer id was set on it), the system sets in this field the transfer id of the Calypso transfer the incoming message is manually matched with. |
• | On the Transfer - The action applied depends on the type of incoming message (MT548 or MT54X) and depends on the incoming message function. |
– | Incoming Message MT548: |
Only the Message Function INST is implemented. As a consequence, if the MT548 received has not the Message Function INST, the system won’t apply any action on the related transfer. The transfer will remain it is original status. You will have to apply manually the expected action. Future development could be planed once the particular case of CAST clearly defined (not which status the transfer is supposed to reach but which action has to be applied as only action are coded in Calypso core.)
If the MT548 received has the Message Function INST, the system will set the id of the message selected in the MessageId attribute and it will also store the Reference of the incoming message (TAG 20C RELA) in the Reference attribute. Depending on the content of the incoming message (especially TAG25G MTCH//MACH or MTCH//NMAT) the system will either apply the action MATCH or the action UNMATCH on the selected transfer.
– | Incoming Message MT54X: |
Only the Message Function NEWM is implemented. As a consequence, if the MT54X received has not the Message Function NEWM, the system won’t apply any action on the related transfer. The transfer will remain it is original status. You will have to apply manually the expected action. Future development could be planed once the particular case of CANC and RVSL clearly defined (not which status the transfer is supposed to reach but which action has to be applied as only action are coded in Calypso core.)
If the MT54X received has the Message Function INST, the system will set the id of the message selected in the MessageId attribute and it will also store the Reference of the incoming message (TAG 20C RELA) in the Reference attribute. Depending on the content of the incoming message (especially TAG 36B corresponding to the quantity defined) the system will either apply the action SETTLE on the related transfer (in case of full settlement) or it will require first a split of the related transfer (in case of partial settlement). Once the original transfer will be split, the user will be able to match the transfer corresponding to the settle quantity with the incoming message. The action SETTLE will be applied to this transfer. When the system applies the SETTLE action on the transfer, it updates the settle date and eventually the cash settlement amount of the transfer.
Cash Difference
If PARTIAL_CASH_FOR_SECURITY_MATCHING is true, and WRITE_OFF_FOR_SECURITY_MATCHING is true, and the cash difference is within the Manual settlement tolerance, the failed transfer becomes a settled WRITE_OFF transfer.
Undo Process
The impact of the Undo process is different on the transfer and on the message.
• | On the Message - The system applies the action UNDO to the selected message. The workflow rule UnSetXferMessageRef is applied and as a consequence the content of the TransferId, TradeId and MatchingComment is emptied. This rule also sets the MatchB attribute to false and it changes the status of the incoming message to PENDING (according to the incoming message workflow suggested). |
• | On the Transfer - The UnSetXferReference also applies the action UNDO (or action specified in comment) on the indexed transfer. It removes the transfer attributes defined in the domain “UnSetXferMessageRef”. If there was only one id listed it the MessageId attribute, it also removes the content of the attribute Reference. |
Reject Process
The Reject process can only be applied to an incoming message. It also only impacts the Message. It just applies the action REJECT to the incoming message selected.
3.3 Alleged Messages
The system only processes MT578/MT586 messages where the Function of the Message (Field :23G::) contains one of the following values:
• | NEWM - New message. |
• | CANC - Cancellation Request - Message requesting the cancellation of a previous alleged message – Used when an account servicer wants to inform the account owner that the alleged settlement is canceled (by counterparty or account servicer), or a detail has changed. |
• | REMO – Removal - Message sent to acknowledge that a previously alleged message is no longer valid – Used when an alleged message is no longer outstanding (because the alleged party sent its instruction, i.e. the counterparty transaction has been matched). |
New Messages (23G:: NEWM)
When an MT578 or an individual level MT586 Alleged Settlement message is received, Calypso will create a message of type INC_SETTALLEGE.
From the incoming message workflow this message will have a status of Alleged.
Calypso will not attempt to “match” the incoming alleged message to a Calypso object (Trade/Transfer or Outgoing Message) and therefore Calypso will not attach the Alleged message to a Calypso object.
The Alleged message will be displayable on the Message Report.
You can also run the Matching Manager to view possible matches. The Matching Manager requires the Matchable Builder engine, and the Matching engine to be running in order to create matchable items from incoming items and outgoing items, and to display possible matches.
See Matching Manager for details.
Canceled Messages (23G:: CANC)
When Calypso receives an incoming MT578/586 message with a Message Function of CANC Calypso will update the status of the previously received MT576/586 to Canceled.
Removed Messages (23G:: REMO)
When Calypso receives an incoming MT578/586 message with a Message Function of REMO Calypso will update the status of the previously received MT576/586 to Removed.
4. CSDR - Calculation of Penalties for Fails
You can setup the calculation of the following penalties:
• | Settlement Fail Penalty (SEFP): Penalties for matched trades but failing to settle |
• | Late Matching Fail Penalty (LMFP): Penalties for matching after Intended Settlement Date |
The scheduled task CSDR_PENALTY_ESTIMATION allows calculating the SEFP and LMFP penalties for security transfers with product code CSDR_Eligibility = Y and transfer attribute Matching_Status = MTCH//NMAT.
Example:
The penalty rate is based on product code CSDR_Penalty_Category and is defined in the domain “CSDRApplicableRates” as:
Value = CSDR_Penalty_Category or ISO currency
Comment = Penalty rate in bps or quote name of the Rate Index to be applied
The penalty rate is applied to the price on the valuation date: rate * price * quantity.
Examples:
Name = CSDRApplicableRates
Value = EUR
Comment = MM.EUR.EONIA.1D.EONIA
Name = CSDRApplicableRates
Value = Shares,liquid,non-SME
Comment = 1
The domain CSDRPenaltyDirection should contain the penalty direction based on transfer attribute Matching_Reason.
Examples:
Name = CSDRPenaltyDirection
Value = PENF//LACK_PAY
Comment = PAY
Name = CSDRPenaltyDirection
Value = PENF//LACK_RECEIVE
Comment = RECEIVE
The transfer workflow rule PropagateCSDREstimatedPenalties is used to propagate the transfer attributes to the penalty trades. It should be added on the following transitions:
VERIFIED - UPDATE_PENALTY - VERIFIED
FAILED - UPDATE_PENALTY - FAILED
The penalties are calculated by the CSDR_PENALTY_ESTIMATION scheduled task. The only task attribute is the transfer workflow action to be applied to the transfers. It should be the same action as the action previously configured with the workflow rule PropagateCSDREstimatedPenalties.
Example:
When multiple agents have the same BIC Code as Tag 95P:ASDP, the agent with Contact LE Role = Agent is selected.
The penalties are stored in the transfer attributes LMFP_EstimatedAmount, LMFP_EstimatedDate, SEFP_EstimatedAmount, SEFP_EstimatedAmount.
The transfer attribute Penalties_EstimatedAmount contains LMFP_EstimatedAmount + SEFP_EstimatedAmount.
Example:
5. MT530 Generation
5.1 Setup Requirements
Legal Entity Attributes
Set the attribute OPT_OUT_INDICATOR and PARTIAL_INDICATOR on the counterparty as needed.
Message Setup
The static data filter checks that the transfer action is CHG_DETAIL.
In the domain "XferAttributes.RemoveForSPLIT", you can specify which transfer attribute needs to be removed when performing a split. It should contain Reference. This is used to populate Tag 20C::PREV on the MT530 message with the message ID of the correct MT543 message which is linked to the Transfer on which the CHG_DETAIL action is applied.
5.2 Process
To generate an MT530 message, apply the action CHG_DETAIL to a transfer.
It brings up the Transfer Settlement Details Input window where the default values are set according the existing transfer attributes.
Any amendments are made using the respective Override attributes.
Editable attributes are defined in the domain "XferAttributes.CHG_DETAIL.Editable".
If no attributes are defined, all the fields are editable.
The MT530 message is generated.
The MT548 received following a change request indicates either the amendment has been accepted or rejected, using MT530 field :25D::TPRC//PACK (accepted) or REJT (rejected). The MT530 message will be accepted or rejected accordingly.
5.3 Buy-In Process
For the buy-in process, you first need to apply action CHG_DETAIL to a failed transfer and change Hold Release to NPRE. The corresponding MT530 message is generated.
Then apply the CHG_DETAIL action again when the buy-in process has been initiated, and specify the details of the buy-in:
The corresponding MT530 message is generated with the buy-in information.
On the buy-in trade, you need to set trade keyword SETR = BYIY so that it can be set on the generated MT541.
6. Swift MX Messages
You can use Swift MX messages instead of Swift MT messages.
6.1 Message Coverage
Swift MX | Description | Swift MT | Function 23G |
---|---|---|---|
sese.020 |
Securities Transaction Cancellation Request (outgoing). |
MT540 Receive Free MT541 Receive Against Payment MT542 Deliver Free MT543 Deliver Against Payment |
CANC |
sese.023 |
Securities Settlement Transaction Instruction (outgoing). |
MT540 Receive Free MT541 Receive Against Payment MT542 Deliver Free MT543 Deliver Against Payment |
NEWM |
sese.021 |
Status Request on sese.023 |
|
|
sese.024 |
Securities Settlement Transaction Status Advice (incoming). |
MT548 Settlement Status and Processing Advice |
INST |
sese.025 |
Securities Settlement Transaction Confirmation (incoming). |
MT544 Receive Free Confirmation MT545 Receive Against Payment Confirmation MT546 Deliver Free confirmation MT547 Deliver Against Payment confirmation |
NEWM |
sese.027 |
Securities Transaction Cancellation Request Status Advice (incoming). |
MT548 Settlement Status and Processing Advice |
CAST |
sese.028 |
Alleged Settlement |
New MT578 |
|
sese.029 |
Alleged Settlement |
Removed MT578 |
|
sese.030 |
Securities Settlement Conditions Modification Request (outgoing). |
MT530 Transaction Processing Command |
|
sese.031 |
Securities Settlement Conditions Modification Status Advice (incoming). |
MT548 Settlement Status and Processing Advice |
|
sese.020 |
Alleged Settlement |
Canceled MT578 |
|
semt.017 |
Securities Transaction Posting Report |
MT536 |
|
semt.018 |
Securities Transaction Pending Report |
MT537 |
|
semt.021 |
Statement Request for semt.017 Please refer to Calypso Messages documentation, Statement Requests. |
MT549 |
|
6.2 Domain Values
The following messages need to be added to the domain "incomingType": INCOMING_SESE024, INCOMING_SESE025, INCOMING_SESE027, INCOMING_SESE031, SESE020, SESE028, SESE029, SEMT017, SEMT018.
The comment should be set to INCOMING except for the messages below.
For SESE020, SESE028 and SESE029, the comment should be set to INC_SETTALLEGE.
For SEMT017, the comment should be set to POS_RECON.
The domain "IncomingSecurityAdvice" defines the list of "sese" messages to be accepted by the rule MatchIncomingSecurityAdvice: sese.024, sese.025, sese.027, sese.031, sese.020, sese.028, sese.029.
The domain "MX.Templates" contains all Swift MX messages.
The domain "MX.Versions" contains all the Swift MX messages and their version number.
Domain "MessageExcludeTemplates" contains sese.030.001.
When the SWIFT BIC code is looked up in the LE Contact, it is using Contact Type = ALL by default. Then the corresponding processing org is selected.
You can use another contact type by adding it to the domain “MappingIncomingWithContact”:
Value = <message type>
Comment = <LE Contact type to be used to lookup the processing org>
Example:
Value = SEMT017
Comment = MatchingSystem
If there is no contact with this contact type, the first contact found is used.
6.3 sese.023.T2S
When trade keyword STCO = BPSS, /SctiesSttlmTxInstr/SttlmParams contains:
<SttlmTxCond>
<Cd>BPSS</Cd>
</SttlmTxCond>
6.4 sese.024.T2S
When counterparty attribute INTERNAL_SETTLEMENT = INTS, tag /SctiesSttlmTxStsAdvc/SttlmParams/ contains:
<SttlmTxCond>
<Cd>INTS</Cd>
</SttlmTxCond>
Message attribute Processing_Status based on the field /SctiesSttlmTxStsAdvc/PrcgSts/PdgPrcg with value IPRC//PPRC.
Message attribute Processing_Reason based on the field SctiesSttlmTxStsAdvc/PrcgSts/PdgPrcg/Rsn/Cd/Cd with value PPRC//PREA etc.
Message attribute Matching_Date based on the field SctiesSttlmTxStsAdvc/TxDtls/MtchdStsTmStmp.
Message attribute Acknowledged_Date based on the field /SctiesSttlmTxStsAdvc/TxDtls/AckdStsTmStmp.
Message attribute AdditionalReasonInformation based on /Document/SctiesSttlmTxStsAdvc/PrcgSts/Rjctd/Rsn/AddtlRsnInf
Message attribute AdditionalReasonInformation based on /Document/SctiesSttlmTxStsAdvc/PrcgSts/Canc/Rsn/AddtlRsnInf
6.5 semt.027
Message attribute AdditionalReasonInformation based on /Document/SctiesTxCxlReqStsAdvc/PrcgSts/Rjctd/Rsn/AddtlRsnInf
Message attribute AdditionalReasonInformation based on /Document/SctiesTxCxlReqStsAdvc/PrcgSts/Dnd/Rsn/AddtlRsnInf
6.6 semt.017
Message attributes:
• | PeriodFrom |
• | PeriodTo |
• | Frequency_Indicator |
You can use the Security Reconcile Window (menu item reporting.SecurityReconcileWindow
) to reconcile incoming messages with outgoing messages (see above in MT536 integration for examples).
You can add more templates to the domain "SecReconWindowSwiftTypes" to have them available in the Security Reconciliation window as needed.
6.7 semt.018
Message attributes:
XML Tag |
Path |
Message Attribute |
---|---|---|
<SctiesTxPdgRpt> | <SctiesTxPdgRpt> | Message_Function |
<StmtId> | /Document/SctiesTxPdgRpt/StmtGnlDtls/StmtId | AgentRef |
<SfkpgAcct> | /Document/SctiesTxPdgRpt/SfkpgAcct | PO_Account |
<AcctOwnrTxId> | /Document/SctiesTxPdgRpt/Sts/Tx/AcctOwnrTxId | Client_Ref |
<SctiesTxTp> | /Document/SctiesTxPdgRpt/Sts/Tx/TxDtls/SttlmTxOrCorpActnEvtTp/SctiesTxTp/Cd | Trade_Type |
<SctiesMvmntTp> | /Document/SctiesTxPdgRpt/Sts/Tx/TxDtls/SctiesMvmntTp | MvtType |
<Pmt> | /Document/SctiesTxPdgRpt/Sts/Tx/TxDtls/Pmt | Money Amount |
<FinInstrmId> | /Document/SctiesTxPdgRpt/Sts/Tx/TxDtls/FinInstrmId/ISIN | Security_Code |
<PstngQty> | /Document/SctiesTxPdgRpt/Sts/Tx/TxDtls/PstngQty/Qty | Nominal |
PstngAmt> | /Document/SctiesTxPdgRpt/Sts/Tx/TxDtls/PstngAmt/Amt | SettleAmount |
<SttlmDt> | /Document/SctiesTxPdgRpt/Sts/Tx/TxDtls/SttlmDt/Dt | PreperationDate |
<MtchgSts> | /Document/SctiesTxPdgRpt/Txs/StsAndRsn/IfrrdMtchgSts/Umtchd | Matching_Status |
<SttlmSts> | /Document/SctiesTxPdgRpt/Txs/StsAndRsn/SttlmSts/Pdg/Rsn/Cd/Cd | Processing Status |
6.8 Message Setup for Bonds
Define PO and Receiver as needed.
Address = SWIFT
Gateway = MX
Format = MX
Event | Message Type | Template Name | Static Data Filter |
---|---|---|---|
VERIFIED_SEC_DELIVERY | SEC_DELIVERY_MSG | sese.030.001 |
|
VERIFIED_SEC_RECEIPT | SEC_RECEIPT_MSG | sese.030.001 | |
VERIFIED_SEC_RECEIPT |
SESE_RECEIPT |
SecuritiesSettlementTransactionInstruction.selector |
|
VERIFIED_SEC_DELIVERY |
SESE_DELIVERY |
SecuritiesSettlementTransactionInstruction.selector |
|
CANCELED_SEC_RECEIPT |
SESE_RECEIPT |
SecuritiesSettlementTransactionInstruction.selector |
|
CANCELED_SEC_DELIVERY |
SESE_DELIVERY |
SecuritiesSettlementTransactionInstruction.selector |
|
SECURITY_TRANSACTION_STATUS |
ALL |
sese.021.001 |
|
For T2S messages, you need to use the templates:
• | SecuritiesSettlementTransactionInstructionT2S.selector with the static data filter "ApplyXferAction" |
ApplyXferAction - Static Data Filter IN "XferAction<>CHG_DETAIL" and "XferAction<>UPDATE_MATCHING"
XferAction<>CHG_DETAIL - Transfer Action NOT IN CHG_DETAIL
XferAction<>UPDATE_MATCHING - Transfer Action NOT IN UPDATE_MATCHING
• | sese.030.001.T2S with the static data filter "XferAction=CHG_DETAIL". |
XferAction=CHG_DETAIL - Transfer Action IN CHG_DETAIL
The gateway formats the envelop of the message to comply with DataPDU or Swift Alliance Lite (https://www2.swift.com/uhbonline/books/public/en_uk/al_2_2_autoc_inst_user_guide_20111118/b93.htm). The value is MX for standard and SAA for both DataPDU and Swift Alliance Lite.
6.9 Incoming Message Workflow - Subtype = INCOMING
Orig Status | Action | Resulting Status | STP | Rules | Task | Static Data Filter |
---|---|---|---|---|---|---|
ALLEGED |
CANCEL | CANCELED | F |
|
T |
|
ALLEGED | MATCH | PROCESSED | T |
|
T |
MT578-NOT NEWM |
ALLEGED | REMOVE |
CANCELED |
F |
|
T |
|
INVESTIGATE | CANCEL |
CANCELED |
F |
|
T |
|
INVESTIGATE | PROCESSED | ALLEGED | T | MatchIncomingSecurityAdvice |
T |
|
NONE | NEW | PENDING |
F |
|
F |
|
PEND SETT UPDATE | CANCEL |
CANCELED |
F |
|
F |
|
PEND SETT UPDATE | MATCH | VER SETT UPDATE | T | SetXferMessageRef | T |
|
PEND SETT UPDATE | REJECT | REJECTED |
F |
|
T |
|
PEND STAT UPDATE | CANCEL | CANCELED |
F |
|
F |
|
PEND STAT UPDATE | MATCH | PROCESSED | T | MatchIncomingSecurityAdvice |
F |
MT548_IPRC_TRPC |
PEND STAT UPDATE |
MATCH |
VER SETT UPDATE |
T |
SetXferMessageRef |
F |
MT548_SETT |
PEND STAT UPDATE |
MATCH |
VER STAT UPDATE |
T |
SetXferMessageRef |
T |
MT548_MTCH |
PEND STAT UPDATE | REJECT | REJECTED |
F |
|
T |
|
PENDING | CANCEL | CANCELED |
F |
|
F |
|
PENDING | PROCESS | INVESTIGATE | T |
|
F |
MT578,586 |
PENDING |
PROCESS |
PEND SETT UPDATE |
T |
|
T |
MT544-7,SESE025 |
PENDING |
PROCESS |
PEND STAT UPDATE |
T |
|
T |
MT537,MT548,SESE024, SESE027,SESE031 |
PROCESSED | CANCEL | CANCELED | F |
|
F |
|
PROCESSED |
UNDO | PEND SETT UPDATE |
F |
UnSetXferMessageRef |
T |
MT544-7,SESE025 |
VER SETT UPDATE | CANCEL | CANCELED |
F |
|
F |
|
VER SETT UPDATE |
MATCH | PROCESSED |
T |
MatchIncomingSecurity |
T |
|
VER SETT/STAT | CANCEL | CANCELED |
F |
F |
|
|
VER SETT/STAT | MATCH | PROCESSED |
T |
MatchIncomingSecurity,
|
T |
|
VER STAT UPDATE | CANCEL | CANCELED |
F |
F |
|
|
VER STAT UPDATE | MATCH | PROCESSED | T | MatchIncomingSecurityAdvice |
T |
|
Where the following static data filters need to be defined:
• | MT544-7,SESE025 |
• | MT537,MT548,SESE024,SESE027,SESE031 |
• | MT548_IPRC_TRPC |
Incoming sese.023 Messages
The following message attributes are populated:
Del Type - DeliveryType=//Document/SctiesSttlmTxInstr/SttlmTpAndAddtlParams/Pmt/text()
MvtType - MvtType=//Document/SctiesSttlmTxInstr/SttlmTpAndAddtlParams/SctiesMvmntTp/text()
TradeDate - TradeDate=//Document/SctiesSttlmTxInstr/TradDtls/TradDt/Dt/Dt/text()
SettleDate - SettleDate=//Document/SctiesSttlmTxInstr/TradDtls/SttlmDt/Dt/Dt/text()
Security Code - ISIN=//Document/SctiesSttlmTxInstr/FinInstrmId/ISIN/text()
Nominal - Quantity=//Document/SctiesSttlmTxInstr/QtyAndAcctDtls/SttlmQty/Qty/Unit/text()|//Document/SctiesSttlmTxInstr/QtyAndAcctDtls/SttlmQty/Qty/FaceAmt/text()
Cntp Agent - DelAgent=//Document/SctiesSttlmTxInstr/DlvrgSttlmPties/Pty1/Id/AnyBIC/text()|//Document/SctiesSttlmTxInstr/DlvrgSttlmPties/Pty1/Id/NmAndAdr/Nm/text()|//Document/SctiesSttlmTxInstr/DlvrgSttlmPties/Pty1/Id/PrtryId/Id/text()
Cntp Agent - RecAgent=//Document/SctiesSttlmTxInstr/RcvgSttlmPties/Pty1/Id/AnyBIC/text()|//Document/SctiesSttlmTxInstr/RcvgSttlmPties/Pty1/Id/NmAndAdr/Nm/text()|//Document/SctiesSttlmTxInstr/RcvgSttlmPties/Pty1/Id/PrtryId/Id/text()
Cash Amount - SettleAmount=//Document/SctiesSttlmTxInstr/SttlmAmt/Amt/text()
Ccy - SettleCurrency=//Document/SctiesSttlmTxInstr/SttlmAmt/Amt/@Ccy
Other Security Code - OtherID = /Document/SctiesSttlmTxInstr/FinInstrmId/OthrId/Id/text()
6.10 Incoming Message Workflow - Subtype = INC_SETTALLEGE
sese.029 (REMOVE) / sese.020 (CANCEL) are linked to the original sese.028 (NEW) message via the unique identifier TxId. The system creates a linkage between the BO messages by storing the BO message id of sese.028 in the Msg Linked Id of the related sese.029 and sese.020 messages.
The workflow rule MatchIncomingSecurityAdvice also supports sese allegement messages:
• | In case of incoming sese.029, the workflow rule will apply action REMOVE on linked message sese.028. and message sese.029 will go straight to status MATCHED. If the action is not available, the workflow rule will return false and throw an exception. The message sese.029 will remain in status INVESTIGATE. If the linked message is not available, the workflow rule will return false and throw an exception. The message sese.029 will be stuck in previous status INVESTIGATE |
• | In case of incoming sese.020, the workflow rule will apply action CANCEL on linked message sese.028. and message sese.020 will go straight to status MATCHED. If the action is not available, the workflow rule will return false and throw an exception. The message sese.020 will remain in status INVESTIGATE. If the linked message is not available, the workflow rule will return false and throw an exception. The message sese.020 will be stuck in previous status INVESTIGATE |
Note that the set up below is just a suggestion and that the configuration can be adjusted as needed.
MatchIncomingSecurityAdvice workflow rule on INVESTIGATE – PROCESS – ALLEGED transition:
SD Filter on ALLEGED – MATCH – MATCHED transition:
6.11 Incoming Message Workflow - Subtype = POS_RECON
Orig Status | Action | Resulting Status | STP | Rules | Task | Static Data Filter |
---|---|---|---|---|---|---|
NONE | NEW | UNPROCESSED |
F |
|
F |
|
UNPROCESSED |
PROCESS |
PROCESSED |
T |
|
T |
6.12 Payment Message Workflow
On the PENDING - AUTHORIZE - TO_BE_SENT transition, add the workflow rule SetXferMsgRef to set the transfer attribute Reference on the associated security transfer.
This rule sets the xfer attribute Reference = Message Id on the security transfer associated with the payment message.
Used for sese.023 integration / sese.021 generation.
6.13 Allegement Messages Matching
The incoming Allegement Message sese.028 can be matched against the outgoing sese.023 (SecuritiesSettlementTransactionInstruction.selector) based on the matching context tracking config.
The value SESE028 needs to be added to the domain "ExternalMessageField.MessageMapper".
Sample Tracking Matching Context
6.14 Scheduled Task MESSAGE_MATCHING
Specific MX attributes
• | Swift Message delimiter = </Env:RequestPayload> |
• | External Message Type = MX |
6.15 Example
Trade captured with the following trade keywords (T2S additional fields).
Message sese.023.001 is generated:
Message sese.024.001 is integrated leading the message to PROCESSED and the referenced instruction to MATCHED:
Releasing the Preadvice mode by applying the transfer action CHG_DETAIL triggers a message sese.030.001:
Finally, integrating the settlement confirmation sese.025.001 moves the transfer to SETTLE.
6.16 Generating a sese.021 Message
In order to generate a sese.021 message, the message engine needs to subscribe to PSEventGenericOnObject events.
From the Transfer report, right-click a security transfer and choose Process > Security Transaction Status to generate a sese.021 message.
The sese.021 message gets generated with AccntOwnrTxId = sese.023 Message Id which is picked from xfer attribute Reference.
Example:
7. Iberclear Swift Messages
7.1 Proprietary Accounts and Sub-Accounts
A proprietary account is a SETTLE account of SubType Security, defined with "Is Proprietary" checked, and the account attribute XferAgentAccount that contains the account at Iberclear.
A sub-account of a proprietary account is defined with the Proprietary Account and a Sub-Account Type. Sub-account types can be defined in the domain "SubAccountType".
The trades are directly impacting the sub-accounts and not the proprietary account but the settlement return messages contain the proprietary account.
The account attribute IsDefault must be set to true for the sub-accounts with sub-account type = AWAS. In this case, the BALANCE FROM and TO format does not display the Data Source Scheme.
Example: It displays :93A::FROM//AWAS instead of :93A::FROM/IBRC/AWAS.
7.2 Integrating Settlement Restrictions
This section describes the settlement restriction process: Generation of MT524, and integration of MT508 and MT538.
The outgoing MT524 message is sent by PO or account owner to its account servicing institution (or custodian) to instruct the movement of securities within the PO holdings (Nostro sub-accounts).
This message must not be used to move securities out of or into a safekeeping account. It instructs only movements that affect the status/availability of the security, that is, movements from one sub-balance to another or intra-position transfers, within a safekeeping account.
The incoming MT508 message is sent by the account servicing institution (or custodian) to an account owner or PO to confirm the increase or decrease in securities with a given status within a holding, that is, intra-position transfer.
The incoming MT524 is creating Transfer Agent trades between two sub-accounts.
The incoming MT538 message allows reconciling settlement restrictions. One message is sent per proprietary account. It is split between each sub-account and reconciled using the Security Reconcile Window.
Setup Requirements
LifeCycle engine: You need to add TransferAgent to the domain "LifeCycleEntityType", and to launch the LifeCycle engine. This applies the same action on the second transfer of the TransfertAgent trade.
Message configurations for MT524 messages.
You can use a static data filter that filters trades based on the Trade element "Is Same Proprietary".
Integration by sub-account is triggered if the sender LE attribute "UseSubBalance" is set to true.
Generating MT524 Messages
The MT524 is sent when transferring securities from one sub-account to another sub-account within the same proprietary account using Transfer Agent trades when the "Msg" checkbox is checked.
Sub-accounts are defined with a proprietary account and a type.
Integrating MT508 Intra-Position Advices
The incoming MT508 is used to confirm participants the execution of a movement between balances of the same securities proprietary account.
Add MT508 to the domain "incomingType". The Comment should contain the incoming message type.
INCOMING Message Workflow
• | NONE – New – PENDING |
• | PENDING – PROCESS – INVESTIGATE, Use Stp = true, SDFilter = MT508, rule = SetXferMessageRef |
• | INVESTIGATE – MATCH – PROCESSED, Use Stp = true, rule = MatchIncomingSecurity |
MatchIncomingSecurity - This rule applies to the indexed transfer. The action applied to the transfer depends on the type of incoming message. For MT508, the system applies the action SETTLE or PARTIAL_SETTLE (if environment property CHECK_QUANTITY_FOR_SECURITY_MATCHING is set to false and if the quantity settled is lower that the quantity of the transfer).
SetXferMessageRef - This rule applies the action UPDATE on the indexed transfer and sets the attributes of the incoming message in the transfer attributes. It also sets in the attribute MessageId of the indexed transfer the incoming message id.
MT508 messages are integrated using the scheduled task MESAGE_MATCHING.
The system indexes the MT508 to the previously sent MT524 using the linked reference and updates the corresponding transfer accordingly.
The following transfer attributes are saved on the transfer:
When integrating the message MT508, need to record as incoming msg and xfer attributes the following:
• | ReconciledAmount = Amount field :36B::PSTT//FAM/ |
• | FailedAmount = Amount field :36B::RSTT//FAM/ |
• | AgentRef = MT508 reference field :20C::SEME/ |
• | PORef = Reference = MT524 linked reference field :20C::RELA/ |
• | T2S_Ref = MT508 T2S reference field :20C::MITI/ |
• | PCTI_Reference = MT508 Iberclear reference field :20C::PCTI/ |
• | Format Issue = Format issue when integrating the message |
• | PO Account = Proprietary account deducted from field 97::SAFE/ and account attribute XferAgentAccount |
In case environment property LOOK_PARENT_CONTACT = true, if the PO of the incoming message with proper BIC Code is a parent PO, then we look at accounts associated with children PO for which XferAgentAccount = Tag 97 of incoming message to set the proper PO.
• | Security Code = ISIN field :35B::ISIN/ |
• | NominalAmount = Amount field :36B::ESTT//FAM/ |
Integrating MT524 Messages
Add MT524 to the domain "incomingType". The Comment should contain the incoming message type.
The integration of MT524 (using INCOMING message workflow) creates a Transfer Agent trade where:
• | Cpty = PO defined in the Safekeeping account of the message MT524 (field 97B:: SAFE/IBRC/CEND/) where the reference is mapped with the Proprietary Account property XferAgentAccount |
• | Book = book defined in the PO attribute LE.DEFAULT_BOOK |
• | Trade Date = MT524 field 98C:PREP date/time |
• | Settle Date = MT524 field 98A:SETT date |
• | Transfer Type = SECURITY |
• | Security/ISIN = Security/ISIN defined in the MT524 field 35B::ISIN |
• | Quantity = MT524 field 36B::SETT/FAMT/trade quantity |
• | Nominal = deducted from quantity using the bond set up face value |
• | From = SDI that is linked to the nostro account defined by the sub-account type in field :93A::FROMIBRC/ |
• | To = SDI that is linked to the nostro account defined by the sub-account type in field :93A::TOBAIBRC/ |
Trade keywords:
• | State_Ref |
• | Common_Reference |
• | T2S_Ref |
• | PCTI_Reference |
• | PORef |
• | IncomingTrade = true |
Integrating MT538 Messages
The incoming MT538 message allows reconciling settlement restrictions. One message is sent per proprietary account. It is split between each sub-account and reconciled using the Security Reconcile Window.
The following reconciliation keys are used:
• | Transaction Settlement date :98A::SETT// |
• | Identification of the proprietary account :97A::SAFE//IBRC/CEND/XferAgentAccount property |
• | ISIN :35B::ISIN |
• | Quantity of securities :36B::ESTT//FAMT/100 |
• | Transaction reference :20C::PCTI// |
You can reconcile the messages using the Security Reconcile Window (menu action reporting.SecurityReconcileWindow
).
7.3 MT54X Specific Format for Iberclear
The following fields are specific to Iberclear - They are populated if PO agent legal entity attribute Data Source Scheme = IBRC and if Iberclear is the place of settlement.
Sequence A – Tag 98C – Processing Date/Time - MESSAGE_CREATIONDATE Format yyyyMMDDHHMMSS.
Sequence C – Tag 95P – Participant Account owner - SWIFT address of the PO (for direct participant) or SWIFT address of PO custodian (for indirect participant).
Sequence C – Tag 97B – Safekeeping Account - PO agent account number.
Sequence E – Tag 22F – Sub-account type.
Sequence B – Tag 25D – Value of trade keyword Matching_Status - Add Matching_Status to domains "tradeKeyword" and "PropagateTradeKeyword", and set workflow rule PropagateTradeKeyword in transfer workflow.
Sequence F – Other Party Central Counterparty
The following fields are only populated if the trade keyword CCP contains the SWIFT address of a CCP configured in the domain “MEFFCLEAR.BIC”.
• | Sequence E - Settlement Details - :22F::CCPT//YCCP |
• | Optional Repetitive Sequence F - Other Parties |
Field :95P::TRAG// (Triparty Agent) = SWIFT address code of the central counterparty being involved in the operation = Trade keyword CCP
Field :95P::BRKR// (Broker) = BIC code of the PO used in the SDI
Field :97A::SAFE// (account where the security is maintained) = Account set in the PO legal entity attribute MeffclearAccount.
Sequence E – Tag 22F - Settlement Details Bilateral Transaction
Values for :22F::SETR/:
• | ProductType=Repo / Subtype = Repo, Value = //SBBK |
• | ProductType=Repo / Subtype = Reverse Repo, Value = //BSBK |
• | ProductType=TransferAgent, Value = //OWNI |
• | ProductType=Repo / Subtype=BuySellBack, Value = //BSBK |
• | ProductType=Repo / Subtype=SellBuyBack, Value = //SBBK |
• | ProductType=Bond, Value = /IBRC/OTCS |
• | ProductType=SecLending / Direction=both / Loan Type = Fee Unsecured, Value = //OWNE |
• | ProductType=SecLending / Direction=Lending / Loan Type <> Fee Unsecured, Value = //SECL |
• | ProductType=SecLending / Direction=Borrowing / Loan Type <> Fee Unsecured, Value = //SECB |
If the SDI attribute "FinancialIntermediary" is set, then Value = OAUX.
Added an LE attribute in CSD format on the PO Agent.
If the LE attribute CSD format is set to:
• | TRUE, then check Data Source Scheme of the PSET and generate MT54X messages with CSD specific format. |
• | FALSE, then continue with the process as it is (check if Receiver=PSET) to generate MT54X messages with CSD specificities. |
7.4 MT530 Specific Format for Iberclear
Block A – Tag 98C – Processing Date/Time - MESSAGE_CREATIONDATE Format yyyyMMDDHHMMSS.
Bock A – Tag 95P – Participant Account owner - SWIFT address of the PO (for direct participant) or SWIFT address of PO custodian (for indirect participant).
Block A– Tag 97B – Safekeeping Account - PO agent account number.
Block B - Tag 20C –References
The following fields are stored as transfer attributes when integrating MT548 messages using the transfer workflow rule "SetXferMessageRef":
• | State_Ref |
• | Common_Reference |
• | T2S_Ref |
• | PCTI_Reference |
• | PORef |
Add the domain "XferMessageRef" to list all the message attributes that need to be set as transfer attributes for the workflow rule SetXferMessageRef.
• | Matching_Status |
• | Matching_Reason |
• | Settlement_Status |
• | Settlement_Reason |
• | RejectReason |
• | PREP_Date |
• | PORef |
• | AgentRef |
• | PCTI_Reference |
• | T2S_Ref |
• | State_Ref |
• | Common_Reference |
• | FailedAmount |
• | ReconciledAmount |
7.5 Auto-Collateralization
This section describes the auto-collateralization on stock. The on-stock procedure is triggered intraday when the DCA account linked to the securities account for collateral supply lacks funds to settle sufficiently a transaction.
When the auto-collateralization process is triggered, Iberclear will send intraday the following messages.
Integration of MT543 to Create Repo Intraday
Integration of MT543 where Sequence E - Settlement Details field :22F::SETR//COLO triggers the creation of a repo trade.
Security Matcher: The messages (MT543, MT547, MT541, MT548, and MT545) related to auto-collateralization are identified based on the following information:
• | Sequence E - Settlement Details field :22F::SETR//COLO |
• | Sequence A – Linkage field :20C::PCTI// reference same per instruction and its related messages. |
• | Sequence E - Settlement Parties field receiving (REAG) account :97B::SAFE/IBRC/CEND/ account property ‘Auto-Collateralization’ set to true. |
Repo trade is created with:
• | Repo Type = Standard |
• | Direction = Repo |
• | Book = LE attribute.DEFAULT_BOOK_COLLATERAL of the receiver of the SWIFT (PO) |
• | Mirror Book = LE attribute.MIRROR_BOOK_COLLATERAL of the receiver of the SWIFT (PO) |
• | Counterparty = Short name of the receiver of the SWIFT with role = PO |
• | Trade Date = Start Date = Field :98A::TRAD//8!n |
• | End Date = Field :98A::SETT//8!n |
• | Sec. Code = Field :35B:ISIN |
• | Sec. Quantity = Field :36B ::SETT//FAMT/15d |
• | Sec. Value + Sec. Currency = Field :19A::SETT//[N]3!a15d where the 3 characters corresponds to the currency. |
• | Cash Frequency = ZC |
• | Cash Fixed Rate = 0.000 |
Legal entity attributes:
DEFAULT_BOOK
MIRROR_BOOK
The following trade keywords are set:
• | TradeType = Iberclear Auto-Collateralization |
• | ReceivingAccount = Account name of the sub-account AWAS where Proprietary account is populated in field :97B::SAFE/IBRC/CEND/ReceivingAccount under :95P::REAG section |
• | ProvidingAccount = Account name of the sub-account where Proprietary account is populated in field :97B::SAFE/IBRC/CEND/ProvidingAccount under :95P::DEAG section and where the sub-account type is populated under field :22F::SSBT/IBRC/EEUR => PO Account |
• | PCTI_Reference = Field :20C::PCTI// of the incoming MT543 Sequence A. |
• | SettlementDetails = field :22F::SETR//COLO |
• | PORef = Field :20C::SEME// of the incoming MT543. |
• | Matching_Status = Field :25D::MTCH//MACH of the incoming MT543. |
The trade keyword PCTI_Reference must be added to the domain “PropagateTradeKeyword” in order to create a transfer attribute PCTI on the transfers.
The mirrored trade has the following trade keywords:
• | TradeType = Iberclear Auto-Collateralization |
• | ReceivingAccount = Account Name of the sub-account AWAS where Proprietary account is populated in field :97B::SAFE/IBRC/CEND/ReceivingAccount under :95P::REAG section |
• | ProvidingAccount = Account name of the sub-account where Proprietary account is populated in field :97B::SAFE/IBRC/CEND/ProvidingAccount under :95P::DEAG section and where the sub-account type is populated under field :22F::SSBT/IBRC/ => PO account |
• | SettlementDetails = field :22F::SETR//COLO |
• | Matching_Status = Field :25D::MTCH//MACH of the incoming MT543. |
Integration of MT547 to Settle Transfer
Security matcher: Index MT547 – SETTR//COLO with the repo start leg transfer using the following matching criteria:
• | MT547 field :20C::PCTI// = Transfer attribute PCTI_Reference |
• | Event type = SEC_DELIVERY |
The system applies the action SETTLE or PARTIAL_SETTLE on the linked/related transfer.
Integration of MT541 to Index to the far leg Transfer
Indexing the incoming message MT541-PREA to the far leg of the repo using the Event type = SEC_RECEIPT where:
• | Sequence E - Settlement Details field :22F::SETR//COLO: |
• | Trade keyword TradeType = Iberclear Auto-Collateralization and |
• | Sequence E - Settlement Details field :22F::SETR//COLO = transfer attribute SettlementDetails |
• | :97B::SAFE/IBRC/CEND/IBRCBBVAESMMXXX000000001P0EX = trade keyword ProvidingAccount. |
• | Field :35B:ISIN = Trade ISIN |
• | Field :98A::SETT// = Trade End date |
• | Field :98A::TRAD// = Trade Start Date |
When there are several candidate transfers (same day, same ISIN, same amount), the MT541 is linked to the first transfer found that is not yet linked to any MT541 (as per xfer attributes).
The transfer is updated with the following attributes using SetXferMessageRef rule:
• | PORef = Field :20C::SEME// of the incoming MT541. |
• | Matching_Status = Field :25D::MTCH//MACH of the incoming MT541 |
• | HoldRelease = NPRE (Holding the settlement linked to the MT541-PREA) |
• | PCTI_Reference = incoming message field :20C::PCTI// |
Generation of MT530 to Release Payment
Using action CHG_DETAIL, change the value of HoldRelease attribute from YPRE to NPRE leading to the generation of the MT530.
Add the following values to domain "XferAttributes":
• | LinkAction |
• | LinkQualifier |
• | LinkQualifierOverride |
• | LinkReference |
• | LinkReferenceOverride |
Add the following values to domain "XferAttributes.CHG_DETAIL.Editable":
• | LinkQualifierOverride |
• | LinkReferenceOverride |
Tag :20C::PCTI// is populated with transfer attribute PCTI_Reference and :20C::PREV// with transfer attribute PORef only when trade keyword TradeType = Iberclear Auto-Collateralization is populated. If not, the standard MT530 template is used.
Integration of MT548 - SETR//COLO Confirming Change
Security matcher: Index MT548– SETTR//COLO with the repo transfer using the following matching criteria:
• | MT548 field :20C::PCTI// = Transfer attribute PCTI_Reference |
• | Event type = SEC_DELIVERY |
Update the linked transfer with the attributes listed in the linkage information from the incoming MT548 as transfer attributes:
• | State_Ref |
• | Common_Reference |
• | T2S_Ref |
• | PCTI_Reference |
• | PORef |
Integration of MT545 - SETR//COLO to Settle the Transfer
Security matcher: Index MT545 – SETTR//COLO with the repo end leg transfer using the following matching criteria:
• | MT545 field :20C::PCTI// = Transfer attribute PCTI_Reference |
• | Event type = SEC_RECEIPT |
The system applies the action SETTLE or PARTIAL_SETTLE on the linked/related transfer.
7.6 Blocking Securities
You can capture Transfer Agent trades to block positions on "blocking accounts" (using sub-account type AWAS). This generates MT542 and MT540 messages.
You need to set the following trade keywords on the trades:
• | "Matching_Status" = MTCH//MACH |
• | "BenefCodeReason" |
• | "BenefName" |
• | "PARTIAL_INDICATOR" |
• | "SETR" |
• | "STCO" |
Example:
Unblocking Process
You can apply the workflow transfer action UNBLOCK on the transfers previously created. It needs the transfer workflow rule CreateOppositeXferAgentTrade which:
• | Creates a new Transfer Agent trade, opposite if the trade linked to the transfer to which the action is applied |
• | Propagates the transfer attributes to the new trade |
• | Sets the trade keyword AutomaticTrade = True |
7.7 Pledging Securities
You can capture Transfer Agent trades to pledge positions. This generates MT542 and MT540 messages.
You need to set the following trade keywords on the trades:
"Matching_Status" = MTCH//MACH
"BenefCodeReason"
"BenefName"
"SETR" = IBRC/CUPG to mention this is the pledging process
"PARTIAL_INDICATOR" = NPAR
"STCO"
Example:
Add BenefCodeReason, BenefName, PARTIAL_INDICATOR, SETR, STCO to domain "PropagateTradeKeyword".
Unpledging Process
You can apply the workflow transfer action UNBLOCK on the transfers previously created. It needs the transfer workflow rule CreateOppositeXferAgentTrade which:
• | Creates a new Transfer Agent trade, opposite if the trade linked to the transfer to which the action is applied |
• | Propagates the transfer attributes to the new trade |
• | Sets the trade keyword AutomaticTrade = Yes |
7.8 Settling Penalty Trades
The flag MatchB is now set to true for incoming MT545/MT547 messages linked to penalty transfers.
This allows the workflow rule MatchIncomingSecurity to support transfers of type PENALTY.
• | If message amount > transfer amount – No action. |
• | If message amount = transfer amount - Action SETTLE is applied to the penalty transfer |
• | If message amount < transfer amount - Action PARTIAL_SETTLE is applied to the penalty transfer |
Note that this only applies if the Netting Type of the netted transfer containing penalty transfers has the netting key TransferType.
8. Clearstream Specificity
If Agent of the PO has Legal Entity attribute Data Source Scheme = CEDE, and Place of Settlement (PSET) is equal to agent of the PO (Cleastream), and Trade Type = “Repo”, and Repo Type = “Standard”:
Tag 22F::SETR// of block SETDET is set to “TRAD”.
9. Euroclear Specificity
If Agent of the PO has Legal Entity attribute Data Source Scheme = ECLR, and Place of Settlement (PSET) is equal to agent of the PO (Euroclear), and Trade Type = “Repo”, and Repo Type = “Standard”:
Tag 22F::SETR// of block SETDET is set to “TRAD”.
10. Repos
You should use the templates MT54XREPO for repo messages.
Default Behavior
22F:SETR is set to REPU for all Security Settlement Messages (MT541/3) when:
Trade Product = Repo
AND Direction = Repo
AND Repo Type not equal to Triparty, Buysellback nor Pledge
22F:SETR is set to RVPO for all Security Settlement Messages (MT541/3) when:
Trade Product = Repo
AND Direction = Reverse
AND Repo Type not equal to Triparty, Buysellback nor Pledge
BuySide Behavior
You need to add the following transfer attributes: EventTypeActionName and Returned_Collateral_Id.
If you set SDI Attribute RepoSettleIndicator = Alternative on the Processing Org.
Tag 22F:SETR is set as follows:
If you set SDI Attribute RepoLinkedMessages = true on the Processing Org.
On a collateral return, if transfer attribute Returned_Collateral_Id is set, Tag 20C::PREV// is set to the message ID of the original collateral payment message.
11. VP Securities Swift Messages
The following fields are specific to VP Securities - They are populated when PO agent legal entity attribute Data Source Scheme = VPDK and SDI attribute T2S = true on the counterparty SDI.
25D::MTCH//MACH - The trade keyword Matching_Status must be set to MTCH//MACH and added to domains PropagateTradeKeyword and xferAttributes.
:22F::STCO//DLWM - Delivery without matching
:22F::SETR//OWNE - Account to account transfer
:97A::SAFE//<SDI account>
• | When xfer Payer Role = PO, this field contains the Counterparty SDI A/C. |
• | When Xfer Payer Role = Counterparty, this field contains the PO SDI A/C. |
:20C::PROC//<message ID> - Unique message id, different from :20C::SEME//
12. Processing GC Pooling Settlement Messages
To process GC Pooling Settlement Messages, you need to set the Domain Value GCPoolingSettlement = SettlementOnly (Default value is blank).
For GC Pooling, Clearstream is the sender of MT544-7 and MT536 messages. These messages confirm the settlement of the collateral allocations.
There can be 2 types of messages:
- Messages related to the GC Pooling baskets: These are recognized based on a specific security code GCPool_PFOD=true (e.g. DE000CASHPY4)
- Messages related to other securities (GCPool_PFOD=false). For these, you need to make other validations on sender and accounts, as the same sender can send messages not related to GC Pooling.
The messages for sender other than GC Pooling baskets can be identified based on the following criteria:
1. Sender
To identify Sender, you need to set LE attribute ‘GCPoolingSettleConfSender’ for Eurex GC Pooling Triparty Agents. When the Sender of the Incoming Message has LE attribute GCPoolingSettleConfSender then check for Safekeeping Account criteria, else standard integration process is continued.
2. Safekeeping Account
You can identify Safekeeping account in tag 97A::SAFE:
- If MT536 Incoming Message is available from 97A::SAFE under block :16R:SUBSAFE else, under block :16R: GENL
- If MT544-47 Incoming Message is available from 97A::SAFE under block :16R: FIAC
Note: The value in the tag must match Account Property ‘XferAgentAccount’ of the Calypso Account.
If an Account Property ‘ReservationAccount/SegregationAccount/PledgeAccount’ = True then check next criteria, else the message is not related to GC Pooling and standard integration process is continued.
3. Not a Source Account
To identify such source account, you need to set the Domain Value “GCPoolingSourceAccount” that stores list of potential source accounts.
Check if Counterparty Safekeeping account is available in block 16R SETPRTY as follows:
With the above config when MT544, MT545 or MT536 messages with:
22H::REDE//RECE →Safekeeping accounts in 97a::SAFE/ for parties 95a::DEAG, 95a::DECU and 95a::SELL
22H::REDE//RECE →If at least one of those safekeeping accounts is included in the Domain Value: GCPoolingSourceAccount → Then criteria is not met.
When MT546, MT547 or MT536 messages with:
22H::REDE//DELI →Safekeeping accounts in 97a::SAFE/ for parties 95a::REAG, 95a::RECU and 95a::BUYR
22H::REDE//DELI →If at least one of those safekeeping accounts is included in the Domain Value GCPoolingSourceAccount →Then criteria is not met.
When Incoming Settlement Confirmation Message is related to GC Pooling, the BO Message is created with the Message attribute “GCPoolingSettleMessage”.
SimpleTransfer Trade of Type ‘Cash’ is created if ISIN has the Security Code = GCPool_PFOD, else SimpleTransfer Trade of Type ‘Security’ is created.
MT548 Settlement Status
MT548 messages for GC Pooling collateral allocation can be identified as follows.
- If Sender and Safekeeping Account criteria are met, the BO Message is created with the Message attribute “GCPoolingSettleMessage”.