Integrating MT535 Messages
The Swift MT535 message is used to report, at a specified moment in time, the quantity and identification of financial instruments which the account servicer maintains for the account owner.
The statement is used to reconcile the books of the account owner and the account servicer for the specified safekeeping account or sub-safekeeping account.
This document describes the integration of MT535 messages regarding security balances (settled, lent and borrowed).
The system creates "external" inventory positions for these messages so that they can be reconciled with the inventory position computed by the system.
This document also describes the specific settings required for the autoloan features: the system can create lent and borrowed positions and create "autoloan" sec lending trades to offset balances as needed.
1. Setup Requirements
1.1 Account Setup
The settle account used to settle the trades should have the following characteristics:
» | Click Properties/Attributes, and set the XferAgentAccount attribute to the field Safekeeping Account ":97A::SAFE//35x" so that the account can be set on the integrated position. |
If several settle accounts have the same value for account property “XferAgentAccount”, you also need to set the account property "SubcustodianISO" to the ISO code of the sub-custodian's country- It will be compared to the ISO code of the sub-custodian's country retrieved from the MT535 field ":94C/F::SAFE".
In case environment property LOOK_PARENT_CONTACT = true, if the PO of the incoming message with proper BIC Code is a parent PO, we look at accounts associated with children PO for which XferAgentAccount = Tag 97 of incoming message to set the proper PO.
Also, when environment property LOOK_PARENT_CONTACT = true, if the sender Agent of the incoming message with proper BIC code is a parent agent, we look at Security accounts associated with children agents for which XferAgentAccount = Tag 97 of incoming message to set the proper PO (from the child agent account).
1.2 Messages
Add the following message type to the messageType domain:
• | POS_RECON for the integrated position |
1.3 Market Price
When importing MT535 messages, the market price from Tag 90 is stored if environment property CUSTODIAN_MARKET_PRICE = true.
It is stored in quote “Bond.<BondName>.<ISIN>.<MaturityD ate>.<Coupon>.<Custodian>”.
2. Integration of Standard MT535
2.1 Balance Types
The following balance types can be sent: AGGR (for aggregated balance), AVAI (for Available), and NAVL (for Not Available).
The Nostro Account is identified by the field :97A::SAFE/35n using XferAgentAccount account attribute.
The Available balance of the proprietary account is identified by the field :93B::AVAI//FAMT/900000, in the SUBSAFE sequence.
The Not Available balance of the proprietary account is identified by the field :93B::NAVL//FAMT/100000, in the SUBSAFE sequence.
If all three fields are present, the aggregate position identified by the field :93B::AGGR/FAMT/100000, is the sum of the available and not available balances.
These three balances types are ONLY used to update the following message attributes:
• | "Aggregate Quantity" for quantity set in AGGR field |
• | "Available Quantity" for quantity set in AVAI field |
• | "Not Available Quantity" for quantity set in NAVL field |
The Available balance is processed first to be saved as external position in Calypso. If not present, then aggregate balance is then processed.
If environment property NAVL_BALANCE_RECON = true, field :93B::NAVL// is stored under Unavailable Balance in the EXTERNAL/ACTUAL/SETTLE position and can be reconciled with Unavailable Balance in the INTERNAL/ACTUAL/SETTLE position (created from Unavailability Transfer).
When 97A::SAFE/ contains NONREF and the securities are separated by accounts in Sequence B, the system uses the sub-safekeeping accounts in Sequence B to identify the inventory account: field 97A::SAFE/ from SUBSAFE sequence.
In all cases, the external position created will be of type EXTERNAL/ACTUAL/SETTLE.
2.2 Custodian Attribute "Is28E_MORE"
Tag 28E in MT535 provides the page number of the message (within a statement) and a continuation indicator to indicate that the statement is to continue or that the message is the last page of the statement.
A logic is implemented in the system to process this field via a LE attribute Is28E_MORE on the custodian Legal Entity.
Default is true, there is no specific logic for field :28E:1/MORE.
If false, field :28E:1/MORE = :28E:1/ONLY and the ONLY functionality is applied, i.e. we will consider that all accounts with a balance are included in the message, and therefore for the other accounts we will reset the balance to zero.
2.3 Reconciliation
All imported messages are displayed in the BO Position Reconciliation report (menu action reporting.ReportWindow$BOReconciliation
) and matched with internal positions as applicable.
The purpose of this report is to identify the differences between the balances present in the system (internal) versus the balances reported by the custodian (external).
Differences can have multiple reasons and should be investigated via an analysis of the trades and transfers that make up the internal balance for a given date for the combination of security and account.
3. Integration Process by Sub-Account (Iberclear-specific)
Integration by sub-account is triggered if the sender LE attribute "UseSubBalance" is set to true.
In this case, the system creates a message per sub-accounts defined in both SUBBAL and BREAK sequences, splitting the M535 into several messages.
3.1 Definition of sub-accounts
In order to generate external positions for the sub-account balances, the user first needs to define one sub-account for each value present in the MT535 to be reconciled and link it to the main proprietary account.
Each sub-account should be defined with the appropriate sub-account type (see below as :70C::SUBB//35x and 13B::LOTS//35x).
See Sub-Account Definition for details.
Below is an example of sub-accounts structure for Iberclear:
Iberclear sub-account types for available position using field 13B::LOTS//35x are:
• | AWAS: Balance available |
• | AS01: Balance 1 |
• | AS02: Balance 2 |
• | AS03: Balance 3 |
• | APUI: Balance for last-resort loan |
• | ECO1: Balance for voluntary corporate events |
• | ECO2: Balance for voluntary corporate events |
• | EEUR: Balance for auto-collateralization |
• | EXXX: Balance for auto-collateralization of clients |
• | ECI1: Balance for voluntary corporate events |
• | ECI2: Balance for corporate events |
We expect the user to define one sub-account for each of the above values, all linked to the same proprietary account.
3.2 Balance Types
The Nostro Proprietary Account is identified by the field :97A::SAFE/35n using XferAgentAccount account attribute to identify the inventory account to which each sub-accounts defined in the message belong to.
The Available balance of the proprietary account is identified by the field :93B::AVAI//FAMT/900000, in the SUBSAFE sequence. The breakdown of the available balance into sub-accounts balances is detailed in the BREAK sequence.
The Not Available balance of the proprietary account is identified by the field :93B::NAVL//FAMT/100000, in the SUBSAFE sequence. The not available balance, if present, is detailed in the sub-accounts described in the SUBBAL sequence.
If all three fields are present, the aggregate position identified by the field :93B::AGGR/FAMT/100000, is the sum of the available and not available balances.
These three balances types are ONLY used to update the following message attributes:
• | "Aggregate Quantity" for quantity set in AGGR field |
• | "Available Quantity" for quantity set in AVAI field |
• | "‘Not Available Quantity" for quantity set in NAVL field |
3.3 Sub-Balance Types
The sub-balance types are identified in the sequences SUBBAL and BREAK.
The SUBBAL sequence is used to identify the blocked accounts.
Using the fields :93B::4!c//FAMT/[N]15d to identify the quantity along with field :70C::SUBB//35x to identify the sub-account type.
SWIFT qualifiers for blocked accounts using field 93B::4!c are:
• | BLCA: Blocked Corporate Action - Balance of financial instrument blocked following a corporate action, including proxy activities. |
• | BLOK: Blocked - Balance of financial instruments that are blocked. |
• | BLOT: Blocked Trading - Balance of financial instruments that are blocked for trading |
• | BLOV: Blocked Authenticity - Balance of financial instruments that are blocked for verification of authenticity. |
An external position will be created for each combination of fields :93::Quantity Type Code & :70C::SUBB/Sub-account Code that are listed in the SUBBAL sequence
Example:
:16R:SUBBAL
:93B::BLOK/FAMT/50000,
:70C::SUBB//BL01
The BREAK sequence is used to breakdown the available position into the different sub-accounts, using the fields :93B::LOTS//FAMT/[N]15d to identify the quantity along with field :13B::LOTS//35x to identify the sub-account type.
An external position will be created for each combination of fields :93::Quantity Type Code & :13B::LOTS/Sub-account Code that are listed in the BREAK sequence
Example:
:16R:BREAK
:93B::LOTS/FAMT/100000,
:13B::LOTS//AWAS
4. Autoloan Feature – Setup Requirements
4.1 Processing Org
On the Processing Org, create the legal entity attribute DEFAULT_BOOK, and select a default book to book the integrated position.
4.2 Messages
Add the following message type to the messageType domain:
• | POS_AUTOLOAN for the "autoloan" sec lending trades |
Create a workflow for the POS_AUTOLOAN message.
The following message attributes are used:
• | Msg_Attr.MessageRef |
• | Msg_Attr.PREP_date |
• | Msg_Attr.PO Account |
• | Msg_Attr.Security Code |
• | Msg_Attr.Attr.Quantity |
• | •Msg_Attr.Attr.MarketValuation |
• | Msg_Attr.Attr.Comment |
4.3 Trade Attributes
The following trade attributes (trade keywords) are populated on the "autoloan" sec lending trades:
• | EuroclearLendBorrowMarketValuation |
• | EuroclearLendBorrowProcessWindow |
• | WorkflowSubtype = Autoloan |
• | POSITION_DATE |
• | FULL_RETURN |
4.4 Inventory Position Types
The following balance types and movement types are used to identify the "autoloan" sec lending positions:
• | Balance SecurityLent Auto |
• | Balance SecurityBorrowed Auto |
• | Movement SecurityLent Auto |
• | Movement SecurityBorrowed Auto |
5. Autoloan Feature - Integration Process
The integration process is performed using the MESSAGE_MATCHING scheduled task. It integrates the message using TXT files.
The MT535 derived from RC30 will contain depot balances (these are settled balances in the entities accounts at Euroclear including the impact of any auto lending or borrowing), and will be integrated to update the settled balance of external back office position in order to reconcile the inventory position.
The MT535 derived from RC31 will contain lending and borrowing balances using the MT535 subsequence B1- Sub-balance Field :93C::LOAN or BORR//FAMT/15d. They will be integrated to create the lending and borrowing positions through the creation of "autoloan" sec lending trades.
In order to allow separate process into Calypso following the integration of the MT535, the header block needs to be populated with:
• | RC30 if the MT535 is meant to update the external back office position |
• | RC31 if the MT535 is meant to create/update the "autoloan" sec lending trades |
Example - We have the following bond trade.
Integration of MT535 Message
MT535_RC31_Creation_FR0000552210.txt
{1:F01SOGEUS33XXXX0000000000}{2:O5351631110926EUROCLERXXXX00000000001109261631N}{3:{RC31}}{4:
:16R:GENL
:28E:1/ONLY
:20C::SEME//P31201109261631
:23G:NEWM
:98C::STAT//20110926163100
:22F::SFRE//INDA
:22F::CODE//COMP
:22F::STTY//CUST
:22F::STBA//SETT
:97A::SAFE//3435
:17B::ACTI//Y
:17B::CONS//N
:16S:GENL
:16R:SUBSAFE
:16R:FIN
:35B:ISIN FR0000552210
:93B::AGGR//FAMT/1400000,
:16R:SUBBAL
:93C::LOAN//FAMT/NAVL/1400000,
:19A::HOLD//EUR1351401,66
:70C::SUBB//First real-time process window
:16S:SUBBAL
:16S:FIN
:16S:SUBSAFE
-}{5:}
Creation of the Initial "Autoloan" Trade
Trade Attributes (Keywords)
Inventory Position
Reported balance > balance on trade => Apply Increase action to trade with action quantity = reported balance - balance on trade.
• | Increase on 26/09/2011 to 1,500,000 |
• | Integration of MT535_RC31_Increase_ FR0000552210 |
Trade actions:
Inventory position:
Reported balance = balance on trade => No action.
Reported balance < balance on trade. => Apply Partial Return action to trade with action quantity = balance on trade - reported balance.
Trade actions:
Inventory position: