colr.019.001.01
Scope: This message is sent by a trading party to its triparty agent to instruct the agent to perform a specific action on a collateral management transaction. It is also sent by an account owner to an account servicer where the account servicer manages the account at the triparty agent on behalf of the trading party. The account owner may be a global custodian which manages an account with a triparty agent on behalf of their client or an investment management institution or a broker/dealer which has an account with their custodian.
Usage: The triparty collateral management service is used by two trading parties at the agreement of a business transaction (for example, a repo, a securities loan, … ) when they want to secure the transaction with collateral. The management of this collateral (that is, agreeing on quantity and type, marking to market, … ) is done by a third party, the triparty collateral manager.
Before starting to use these services, the three parties will first sign a contract in which they stipulate the rules of the agreement.
Message Construction
Every ISO20022 message has at the highest level what we call ‘building blocks’. Because the message is constructed as immutable records, the association is by composition. Below you can see the relationship between the message and its constituent building blocks: For comparison, see the ISO20022 official specification
classDiagram direction LR %% TripartyCollateralTransactionInstructionV01 recursion level 0 with max 0 TripartyCollateralTransactionInstructionV01 *-- "1..1" TransactionIdentifications45 : TransactionInstructionIdentification TripartyCollateralTransactionInstructionV01 *-- "0..1" Linkages58 : Linkages TripartyCollateralTransactionInstructionV01 *-- "1..1" Pagination1 : Pagination TripartyCollateralTransactionInstructionV01 *-- "1..1" CollateralParameters10 : GeneralParameters TripartyCollateralTransactionInstructionV01 *-- "1..1" CollateralParties10 : CollateralParties TripartyCollateralTransactionInstructionV01 *-- "1..1" DealTransactionDetails5 : DealTransactionDetails TripartyCollateralTransactionInstructionV01 *-- "1..1" CollateralDate2 : DealTransactionDate TripartyCollateralTransactionInstructionV01 *-- "0..1" SecuritiesMovement9 : SecuritiesMovement TripartyCollateralTransactionInstructionV01 *-- "0..1" CashMovement8 : CashMovement TripartyCollateralTransactionInstructionV01 *-- "0..1" OtherParties38 : OtherParties TripartyCollateralTransactionInstructionV01 *-- "0..1" SupplementaryData1 : SupplementaryData
Now, we will zero-in one-by-one on each of these building blocks.
TransactionInstructionIdentification building block
Unambiguous identification of the instruction or the transaction as known by the instructing or the receiving party.
Provides unambiguous instruction or transaction identification information. For comparison, see the ISO20022 official specification
classDiagram direction tb %% TransactionIdentifications45 recursion level 0 with max 1 class TransactionIdentifications45{ ClientCollateralInstructionIdentification IsoMax35Text ClientCollateralTransactionIdentification IsoMax35Text TripartyAgentServiceProviderCollateralInstructionIdentification IsoMax35Text TripartyAgentServiceProviderCollateralTransactionIdentification IsoMax35Text CommonTransactionIdentification IsoMax52Text }
TransactionIdentifications45 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
ClientCollateralInstructionIdentification | Unique reference identifying the collateral management instruction from the client’s point of view. Identifies the potential match. | IsoMax35Text - Required 1..1 |
ClientCollateralTransactionIdentification | Unique reference identifying the collateral management transaction from the client’s point of view. Present in case of a decrease. | IsoMax35Text - Optional 0..1 |
TripartyAgentServiceProviderCollateralInstructionIdentification | Reference assigned to the instruction by the triparty-agent/service-provider. | IsoMax35Text - Optional 0..1 |
TripartyAgentServiceProviderCollateralTransactionIdentification | Unique reference identifying the triparty-agent/service-provider collateral management transaction from the triparty-agent’s/service-provider’s point of view. | IsoMax35Text - Optional 0..1 |
CommonTransactionIdentification | Unique identification (UTI) agreed upon by the two trade counterparties to identify the trade. | IsoMax52Text - Optional 0..1 |
Linkages building block
Link to another transaction (or instruction) that must be processed after, before or at the same time.
Information related to a linked transaction. For comparison, see the ISO20022 official specification
classDiagram direction tb %% Linkages58 recursion level 0 with max 1 Linkages58 *-- "0..1" IDocumentNumber5Choice : MessageNumber Linkages58 *-- "1..1" IReferences70Choice : References %% IDocumentNumber5Choice recursion level 1 with max 1 %% IReferences70Choice recursion level 1 with max 1
Linkages58 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
MessageNumber | Message type number/message identifier of the message referenced in the linkage sequence. | IDocumentNumber5Choice - Optional 0..1 |
References | Reference to the linked transaction or instruction. | IReferences70Choice - Required 1..1 |
Pagination building block
Page number of the message and continuation indicator to indicate that the multi-part preliminary advice is to continue or that the message is the last page of the multi-part preliminary advice. Number used to sequence pages when it is not possible for data to be conveyed in a single message and the data has to be split across several pages (messages). For comparison, see the ISO20022 official specification
classDiagram direction tb %% Pagination1 recursion level 0 with max 1 class Pagination1{ PageNumber IsoMax5NumericText LastPageIndicator IsoYesNoIndicator }
Pagination1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
PageNumber | Page number. | IsoMax5NumericText - Required 1..1 |
LastPageIndicator | Indicates the last page. | IsoYesNoIndicator - Required 1..1 |
GeneralParameters building block
Specifies the different parameters of the collateral transaction or instruction. Parameters which explicitly state the conditions that must be fulfilled before a particular triparty collateral instruction/transaction can be confirmed. These parameters are defined by the instructing party in compliance with triparty collateral rules in the market the instruction/transaction will take place. For comparison, see the ISO20022 official specification
classDiagram direction tb %% CollateralParameters10 recursion level 0 with max 1 class CollateralParameters10{ CollateralSide CollateralRole1Code TransferTitle IsoYesNoIndicator AutomaticAllocation IsoYesNoIndicator FailedSettlementSalvation IsoYesNoIndicator MainTradingAccountCollateralisation IsoYesNoIndicator } CollateralParameters10 *-- "1..1" ICollateralTransactionType1Choice : CollateralInstructionType CollateralParameters10 *-- "1..1" IExposureType23Choice : ExposureType CollateralParameters10 *-- "0..1" IRateOrType1Choice : ValueSoughtMarginRate CollateralParameters10 *-- "0..1" GenericIdentification30 : SettlementProcess CollateralParameters10 *-- "0..1" GenericIdentification30 : Priority CollateralParameters10 *-- "0..1" BasketIdentificationAndEligibilitySetProfile1 : BasketIdentificationAndEligibilitySetProfile CollateralParameters10 *-- "0..1" IResponseStatus9Choice : ResponseStatus CollateralParameters10 *-- "0..1" AdditionalInformation24 : AdditionalInformation %% ICollateralTransactionType1Choice recursion level 1 with max 1 %% IExposureType23Choice recursion level 1 with max 1 %% IRateOrType1Choice recursion level 1 with max 1 %% GenericIdentification30 recursion level 1 with max 1 class GenericIdentification30{ Identification IsoExact4AlphaNumericText Issuer IsoMax35Text SchemeName IsoMax35Text } %% GenericIdentification30 recursion level 1 with max 1 class GenericIdentification30{ Identification IsoExact4AlphaNumericText Issuer IsoMax35Text SchemeName IsoMax35Text } %% BasketIdentificationAndEligibilitySetProfile1 recursion level 1 with max 1 BasketIdentificationAndEligibilitySetProfile1 *-- "0..1" GenericIdentification1 : PreferentialBasketIdentificationNumber BasketIdentificationAndEligibilitySetProfile1 *-- "0..1" GenericIdentification1 : FallbackStartingBasketIdentification BasketIdentificationAndEligibilitySetProfile1 *-- "0..1" GenericIdentification1 : ExclusionBasketIdentification BasketIdentificationAndEligibilitySetProfile1 *-- "0..1" GenericIdentification1 : EligibilitySetProfile %% IResponseStatus9Choice recursion level 1 with max 1 %% AdditionalInformation24 recursion level 1 with max 1 class AdditionalInformation24{ CollateralInstruction IsoMax350Text Note IsoMax350Text }
CollateralParameters10 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
CollateralInstructionType | Specifies the type of collateral instruction. | ICollateralTransactionType1Choice - Required 1..1 |
ExposureType | Specifies the underlying business area/type of trade causing the exposure. | IExposureType23Choice - Required 1..1 |
CollateralSide | Specifies whether the client is the collateral taker or giver. | CollateralRole1Code - Required 1..1 |
ValueSoughtMarginRate | Percentage by which the collateral value sought is increased, in selecting securities for a collateral basket, to reflect the taker’s margin requirements. Margin or haircut to be applied on the exposure amount, expressed as a percentage. | IRateOrType1Choice - Optional 0..1 |
TransferTitle | Change of title for the collateral. If N then collateral is pledged. | IsoYesNoIndicator - Optional 0..1 |
SettlementProcess | Specifies the settlement process in which the collateral will be settled. | GenericIdentification30 - Optional 0..1 |
Priority | Specifies the priority with which the instruction needs to be executed. | GenericIdentification30 - Optional 0..1 |
AutomaticAllocation | Specifies whether the allocation of the collateral is manual or automatic. | IsoYesNoIndicator - Optional 0..1 |
FailedSettlementSalvation | Specifies whether the taker is allowed to solve the failing settlement by proposing other collateral movements. | IsoYesNoIndicator - Optional 0..1 |
MainTradingAccountCollateralisation | Specifies if the main trading account is included in the pool of securities positions available for collateralisation. It is used in case of re-use of collateral to specify the account from which the securities collateral is taken from. | IsoYesNoIndicator - Optional 0..1 |
BasketIdentificationAndEligibilitySetProfile | Provides information on the baskets identification and the Eligibility Set Profile. | BasketIdentificationAndEligibilitySetProfile1 - Optional 0..1 |
ResponseStatus | Collateral taker’s answer to the collateral giver instruction. | IResponseStatus9Choice - Optional 0..1 |
AdditionalInformation | Provides additional information to a collateral instruction. | AdditionalInformation24 - Optional 0..1 |
CollateralParties building block
Identifies the chain of collateral parties.
Choice of format for the trading capacity. For comparison, see the ISO20022 official specification
classDiagram direction tb %% CollateralParties10 recursion level 0 with max 1 CollateralParties10 *-- "1..1" PartyIdentificationAndAccount202 : PartyA CollateralParties10 *-- "0..1" PartyIdentificationAndAccount202 : ClientPartyA CollateralParties10 *-- "1..1" PartyIdentificationAndAccount203 : PartyB CollateralParties10 *-- "0..1" PartyIdentificationAndAccount203 : ClientPartyB CollateralParties10 *-- "0..1" PartyIdentification136 : TripartyAgent CollateralParties10 *-- "0..1" SecuritiesAccount19 : CollateralAccount %% PartyIdentificationAndAccount202 recursion level 1 with max 1 class PartyIdentificationAndAccount202{ LEI IsoLEIIdentifier } PartyIdentificationAndAccount202 *-- "1..1" IPartyIdentification120Choice : Identification PartyIdentificationAndAccount202 *-- "0..1" AlternatePartyIdentification7 : AlternateIdentification PartyIdentificationAndAccount202 *-- "0..1" SecuritiesAccount19 : SafekeepingAccount PartyIdentificationAndAccount202 *-- "0..1" BlockChainAddressWallet3 : BlockChainAddressOrWallet PartyIdentificationAndAccount202 *-- "0..1" PartyIdentification136 : AccountOwner PartyIdentificationAndAccount202 *-- "0..1" ITradingPartyCapacity5Choice : PartyCapacity %% PartyIdentificationAndAccount202 recursion level 1 with max 1 class PartyIdentificationAndAccount202{ LEI IsoLEIIdentifier } PartyIdentificationAndAccount202 *-- "1..1" IPartyIdentification120Choice : Identification PartyIdentificationAndAccount202 *-- "0..1" AlternatePartyIdentification7 : AlternateIdentification PartyIdentificationAndAccount202 *-- "0..1" SecuritiesAccount19 : SafekeepingAccount PartyIdentificationAndAccount202 *-- "0..1" BlockChainAddressWallet3 : BlockChainAddressOrWallet PartyIdentificationAndAccount202 *-- "0..1" PartyIdentification136 : AccountOwner PartyIdentificationAndAccount202 *-- "0..1" ITradingPartyCapacity5Choice : PartyCapacity %% PartyIdentificationAndAccount203 recursion level 1 with max 1 class PartyIdentificationAndAccount203{ LEI IsoLEIIdentifier } PartyIdentificationAndAccount203 *-- "1..1" IPartyIdentification120Choice : Identification PartyIdentificationAndAccount203 *-- "0..1" AlternatePartyIdentification7 : AlternateIdentification PartyIdentificationAndAccount203 *-- "0..1" SecuritiesAccount19 : SafekeepingAccount PartyIdentificationAndAccount203 *-- "0..1" BlockChainAddressWallet3 : BlockChainAddressOrWallet PartyIdentificationAndAccount203 *-- "0..1" ITradingPartyCapacity5Choice : PartyCapacity %% PartyIdentificationAndAccount203 recursion level 1 with max 1 class PartyIdentificationAndAccount203{ LEI IsoLEIIdentifier } PartyIdentificationAndAccount203 *-- "1..1" IPartyIdentification120Choice : Identification PartyIdentificationAndAccount203 *-- "0..1" AlternatePartyIdentification7 : AlternateIdentification PartyIdentificationAndAccount203 *-- "0..1" SecuritiesAccount19 : SafekeepingAccount PartyIdentificationAndAccount203 *-- "0..1" BlockChainAddressWallet3 : BlockChainAddressOrWallet PartyIdentificationAndAccount203 *-- "0..1" ITradingPartyCapacity5Choice : PartyCapacity %% PartyIdentification136 recursion level 1 with max 1 class PartyIdentification136{ LEI IsoLEIIdentifier } PartyIdentification136 *-- "1..1" IPartyIdentification120Choice : Identification %% SecuritiesAccount19 recursion level 1 with max 1 class SecuritiesAccount19{ Identification IsoMax35Text Name IsoMax70Text } SecuritiesAccount19 *-- "0..1" GenericIdentification30 : Type
CollateralParties10 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
PartyA | Instructing party sending the collateral instruction. | PartyIdentificationAndAccount202 - Required 1..1 |
ClientPartyA | Party that instructs party A to send the message. | PartyIdentificationAndAccount202 - Optional 0..1 |
PartyB | Counterparty of party A. | PartyIdentificationAndAccount203 - Required 1..1 |
ClientPartyB | Party that instructs party B to settle the instruction on its behalf. | PartyIdentificationAndAccount203 - Optional 0..1 |
TripartyAgent | Party that handles tri-party transactions. | PartyIdentification136 - Optional 0..1 |
CollateralAccount | Account where the collateral is held during the lifecycle of the transaction. | SecuritiesAccount19 - Optional 0..1 |
DealTransactionDetails building block
Specifies the information related to the deal.
Details of the triparty collateral transaction deal. For comparison, see the ISO20022 official specification
classDiagram direction tb %% DealTransactionDetails5 recursion level 0 with max 1 class DealTransactionDetails5{ ConcentrationLimit IsoYesNoIndicator MinimumNoticePeriod IsoExact3NumericText Spread IsoPercentageRate Payment DeliveryReceiptType2Code TerminationOption RepoTerminationOption1Code } DealTransactionDetails5 *-- "0..1" PlaceOfTradeIdentification1 : PlaceOfTrade DealTransactionDetails5 *-- "1..1" IClosingDate4Choice : ClosingDate DealTransactionDetails5 *-- "0..1" CollateralAmount18 : DealDetailsAmount DealTransactionDetails5 *-- "0..1" IRateOrName4Choice : PricingRateAndIndex DealTransactionDetails5 *-- "0..1" IFrequencyRateFixing1Choice : OvernightFrequencyRateFixing DealTransactionDetails5 *-- "0..1" IInterestComputationMethodFormat4Choice : DayCountBasis DealTransactionDetails5 *-- "0..1" IOptionType6Choice : OptionType %% PlaceOfTradeIdentification1 recursion level 1 with max 1 class PlaceOfTradeIdentification1{ LEI IsoLEIIdentifier } PlaceOfTradeIdentification1 *-- "0..1" MarketIdentification84 : MarketTypeAndIdentification %% IClosingDate4Choice recursion level 1 with max 1 %% CollateralAmount18 recursion level 1 with max 1 class CollateralAmount18{ CompoundSimpleAccrualCalculation CalculationMethod1Code InterestPaymentDelay IsoMax3NumericText } CollateralAmount18 *-- "0..1" AmountAndDirection49 : Transaction CollateralAmount18 *-- "0..1" AmountAndDirection49 : Termination CollateralAmount18 *-- "0..1" AmountAndDirection49 : Accrued CollateralAmount18 *-- "0..1" IFrequency38Choice : PaymentFrequency CollateralAmount18 *-- "0..0" CollateralTransactionAmountBreakdown2 : TransactionAmountBreakdown CollateralAmount18 *-- "0..1" AmountAndDirection49 : ValueSought %% IRateOrName4Choice recursion level 1 with max 1 %% IFrequencyRateFixing1Choice recursion level 1 with max 1 %% IInterestComputationMethodFormat4Choice recursion level 1 with max 1 %% IOptionType6Choice recursion level 1 with max 1
DealTransactionDetails5 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
PlaceOfTrade | Place at which the instrument was traded. | PlaceOfTradeIdentification1 - Optional 0..1 |
ConcentrationLimit | Indicates whether a concentration limit applies to the transaction; if no limit applies, there is no constraint on how much of the collateral basket can be made up of one security. | IsoYesNoIndicator - Optional 0..1 |
MinimumNoticePeriod | Identifies the number of days in which the cash investor and dealer can agree to revisit the terms of an agreement. | IsoExact3NumericText - Optional 0..1 |
ClosingDate | Closing date/time or maturity date/time of the transaction. | IClosingDate4Choice - Required 1..1 |
DealDetailsAmount | Specifies the details for the deal amounts. | CollateralAmount18 - Optional 0..1 |
PricingRateAndIndex | Interest rate to be paid on the transaction amount as agreed between the counterparties and the tenor of the interest rate index. | IRateOrName4Choice - Optional 0..1 |
OvernightFrequencyRateFixing | Indicates for a floating rate transaction if an overnight frequency rate fixing should be applied. If not present, a periodic fixing frequency will be applied (default is N). | IFrequencyRateFixing1Choice - Optional 0..1 |
Spread | Premium or discount applied on a given rate. | IsoPercentageRate - Optional 0..1 |
DayCountBasis | Specifies the computation method of (accrued) interest of the financial instrument. | IInterestComputationMethodFormat4Choice - Optional 0..1 |
Payment | Specifies whether the instruction is free or against payment. | DeliveryReceiptType2Code - Optional 0..1 |
OptionType | Specifies whether it is a call option (right to purchase a specific underlying asset) or a put option (right to sell a specific underlying asset). | IOptionType6Choice - Optional 0..1 |
TerminationOption | Indication whether the counterparties to the transaction have agreed to an evergreen or extendable repo. | RepoTerminationOption1Code - Optional 0..1 |
DealTransactionDate building block
Identifies the dates related to the triparty collateral instruction or transactions. Dates related to the triparty collateral instruction or transactions.
For comparison, see the ISO20022 official specification
classDiagram direction tb %% CollateralDate2 recursion level 0 with max 1 class CollateralDate2{ TradeDate IsoISODate SettlementDate IsoISODate } CollateralDate2 *-- "0..1" IDateAndDateTime2Choice : RequestedExecutionDate %% IDateAndDateTime2Choice recursion level 1 with max 1
CollateralDate2 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
TradeDate | Date the transaction was agreed between the trading parties. | IsoISODate - Optional 0..1 |
RequestedExecutionDate | Date/time at which the instructing party requests the instruction to be executed. | IDateAndDateTime2Choice - Optional 0..1 |
SettlementDate | Date on which the financial instruments are to be delivered or received. | IsoISODate - Optional 0..1 |
SecuritiesMovement building block
Securities movements. Movements of securities. For comparison, see the ISO20022 official specification
classDiagram direction tb %% SecuritiesMovement9 recursion level 0 with max 1 class SecuritiesMovement9{ SecuritiesMovementType CollateralEntryType1Code CollateralMovement IsoYesNoIndicator ClientSecuritiesMovementIdentification IsoMax35Text TripartyAgentServiceProviderSecuritiesMovementIdentification IsoMax35Text } SecuritiesMovement9 *-- "1..1" SecurityIdentification19 : FinancialInstrumentIdentification SecuritiesMovement9 *-- "1..1" IFinancialInstrumentQuantity33Choice : Quantity SecuritiesMovement9 *-- "0..1" SecuritiesAccount19 : SafekeepingAccount SecuritiesMovement9 *-- "0..1" BlockChainAddressWallet3 : BlockChainAddressOrWallet %% SecurityIdentification19 recursion level 1 with max 1 class SecurityIdentification19{ ISIN IsoISINOct2015Identifier Description IsoMax140Text } SecurityIdentification19 *-- "0..0" OtherIdentification1 : OtherIdentification %% IFinancialInstrumentQuantity33Choice recursion level 1 with max 1 %% SecuritiesAccount19 recursion level 1 with max 1 class SecuritiesAccount19{ Identification IsoMax35Text Name IsoMax70Text } SecuritiesAccount19 *-- "0..1" GenericIdentification30 : Type %% BlockChainAddressWallet3 recursion level 1 with max 1 class BlockChainAddressWallet3{ Identification IsoMax140Text Name IsoMax70Text } BlockChainAddressWallet3 *-- "0..1" GenericIdentification30 : Type
SecuritiesMovement9 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
SecuritiesMovementType | Specifies whether the quantity of financial instrument is to be delivered or received. | CollateralEntryType1Code - Required 1..1 |
FinancialInstrumentIdentification | Financial instrument representing a sum of rights of the investor vis-a-vis the issuer. | SecurityIdentification19 - Required 1..1 |
Quantity | Quantity of financial instrument. | IFinancialInstrumentQuantity33Choice - Required 1..1 |
SafekeepingAccount | Account where financial instruments are maintained. | SecuritiesAccount19 - Optional 0..1 |
BlockChainAddressOrWallet | Blockchain address or wallet where digital assets are maintained. This is the equivalent of safekeeping account for digital assets. | BlockChainAddressWallet3 - Optional 0..1 |
CollateralMovement | Indicates whether the financial instrument is delivered/received as collateral or as a loan. | IsoYesNoIndicator - Required 1..1 |
ClientSecuritiesMovementIdentification | Reference assigned by the party A to the financial instrument movement. | IsoMax35Text - Optional 0..1 |
TripartyAgentServiceProviderSecuritiesMovementIdentification | Reference assigned by the triparty agent to the financial instrument movement. | IsoMax35Text - Optional 0..1 |
CashMovement building block
Cash movements. Movements of cash. For comparison, see the ISO20022 official specification
classDiagram direction tb %% CashMovement8 recursion level 0 with max 1 class CashMovement8{ CashMovement CollateralEntryType1Code CashAmount IsoActiveCurrencyAndAmount CollateralMovement IsoYesNoIndicator ClientCashMovementIdentification IsoMax35Text TripartyAgentServiceProviderCashMovementIdentification IsoMax35Text } CashMovement8 *-- "0..1" ICashAccountIdentification5Choice : CashAccount %% ICashAccountIdentification5Choice recursion level 1 with max 1
CashMovement8 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
CashMovement | Specifies whether the cash amount is to be delivered or received. | CollateralEntryType1Code - Required 1..1 |
CashAmount | Amount of the cash movement | IsoActiveCurrencyAndAmount - Required 1..1 |
CashAccount | Account in which cash is maintained. | ICashAccountIdentification5Choice - Optional 0..1 |
CollateralMovement | Specifies whether the amount is delivered/received as part of collateral or not. | IsoYesNoIndicator - Required 1..1 |
ClientCashMovementIdentification | Reference assigned by party A to the cash movement. | IsoMax35Text - Optional 0..1 |
TripartyAgentServiceProviderCashMovementIdentification | Reference assigned by the triparty agent to the cash movement. | IsoMax35Text - Optional 0..1 |
OtherParties building block
Other business parties relevant to the transaction.
Other business parties relevant to the transaction/Instruction For comparison, see the ISO20022 official specification
classDiagram direction tb %% OtherParties38 recursion level 0 with max 1 OtherParties38 *-- "0..1" PartyIdentification136 : Issuer OtherParties38 *-- "0..0" PartyIdentification149 : Investor %% PartyIdentification136 recursion level 1 with max 1 class PartyIdentification136{ LEI IsoLEIIdentifier } PartyIdentification136 *-- "1..1" IPartyIdentification120Choice : Identification %% PartyIdentification149 recursion level 1 with max 1 class PartyIdentification149{ LEI IsoLEIIdentifier } PartyIdentification149 *-- "1..1" IPartyIdentification134Choice : Identification
OtherParties38 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Issuer | Issuer of the financial instrument. | PartyIdentification136 - Optional 0..1 |
Investor | Instructing party, either an individual or organisation, whose assets are being invested. | PartyIdentification149 - Unknown 0..0 |
SupplementaryData building block
Additional information that cannot be captured in the structured elements and/or any other specific block. Additional information that can not be captured in the structured fields and/or any other specific block. For comparison, see the ISO20022 official specification
classDiagram direction tb %% SupplementaryData1 recursion level 0 with max 1 class SupplementaryData1{ PlaceAndName IsoMax350Text } SupplementaryData1 *-- "1..1" IsoSupplementaryDataEnvelope1 : Envelope %% IsoSupplementaryDataEnvelope1 recursion level 1 with max 1
SupplementaryData1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
PlaceAndName | Unambiguous reference to the location where the supplementary data must be inserted in the message instance. In the case of XML, this is expressed by a valid XPath. | IsoMax350Text - Optional 0..1 |
Envelope | Technical element wrapping the supplementary data. | IsoSupplementaryDataEnvelope1 - Required 1..1 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the TripartyCollateralTransactionInstructionV01 implementation follows a specific implementaiton pattern. First of all, TripartyCollateralTransactionInstructionV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, TripartyCollateralTransactionInstructionV01Document implements IOuterDocument. Because TripartyCollateralTransactionInstructionV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type TripartyCollateralTransactionInstructionV01.
classDiagram class IOuterRecord TripartyCollateralTransactionInstructionV01 --|> IOuterRecord : Implements TripartyCollateralTransactionInstructionV01Document --|> IOuterDocument~TripartyCollateralTransactionInstructionV01~ : Implements class IOuterDocument~TripartyCollateralTransactionInstructionV01~ { TripartyCollateralTransactionInstructionV01 Message }
Document wrapper for serialization
The only real purpose TripartyCollateralTransactionInstructionV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:colr.019.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using TripartyCollateralTransactionInstructionV01.ToDocument() method. The returned TripartyCollateralTransactionInstructionV01Document value will serialize correctly according to ISO 20022 standards.
classDiagram TripartyCollateralTransactionInstructionV01Document *-- TripartyCollateralTransactionInstructionV01 : Document
Sample of message format
This is an abbreviated version of what the message should look like.
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:colr.019.001.01">
<TrptyCollTxInstr>
<TxInstrId>
<!-- TransactionInstructionIdentification inner content -->
</TxInstrId>
<Lnkgs>
<!-- Linkages inner content -->
</Lnkgs>
<Pgntn>
<!-- Pagination inner content -->
</Pgntn>
<GnlParams>
<!-- GeneralParameters inner content -->
</GnlParams>
<CollPties>
<!-- CollateralParties inner content -->
</CollPties>
<DealTxDtls>
<!-- DealTransactionDetails inner content -->
</DealTxDtls>
<DealTxDt>
<!-- DealTransactionDate inner content -->
</DealTxDt>
<SctiesMvmnt>
<!-- SecuritiesMovement inner content -->
</SctiesMvmnt>
<CshMvmnt>
<!-- CashMovement inner content -->
</CshMvmnt>
<OthrPties>
<!-- OtherParties inner content -->
</OthrPties>
<SplmtryData>
<!-- SupplementaryData inner content -->
</SplmtryData>
</TrptyCollTxInstr>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_2uaNLSs7EeySlt9bF77XfA"
name="TripartyCollateralTransactionInstructionV01"
definition="Scope:
This message is sent by a trading party to its triparty agent to instruct the agent to perform a specific action on a collateral management transaction.
It is also sent by an account owner to an account servicer where the account servicer manages the account at the triparty agent on behalf of the trading party. The account owner may be a global custodian which manages an account with a triparty agent on behalf of their client or an investment management institution or a broker/dealer which has an account with their custodian.

Usage:
The triparty collateral management service is used by two trading parties at the agreement of a business transaction (for example, a repo, a securities loan, ... ) when they want to secure the transaction with collateral. The management of this collateral (that is, agreeing on quantity and type, marking to market, ... ) is done by a third party, the triparty collateral manager.

Before starting to use these services, the three parties will first sign a contract in which they stipulate the rules of the agreement."
registrationStatus="Registered"
messageSet="_-NT5QSs5EeyjDaA8ufxSSw"
xmlTag="TrptyCollTxInstr"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<constraint
xmi:id="_2uaNLys7EeySlt9bF77XfA"
name="Securities lending and Transaction Amount"
definition="If deal transaction details is present and that collateral exposure is securities lending or borrowing then transaction amount is optional otherwise it is mandatory."
registrationStatus="Provisionally Registered"
expression="<RuleDefinition><ComplexRule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ComplexRule"><mustBe><connector>AND</connector><BooleanRule xsi:type="Presence"><leftOperand>/DealTransactionDetails/DealDetailsAmount[*]/Transaction</leftOperand></BooleanRule></mustBe><onCondition><connector>AND</connector><BooleanRule xsi:type="Presence"><leftOperand>/DealTransactionDetails</leftOperand></BooleanRule><BooleanRule xsi:type="DifferentFromValue"><leftOperand>/GeneralParameters/ExposureType/Code</leftOperand><rightOperand>SecuritiesLendingAndBorrowing</rightOperand></BooleanRule><BooleanRule xsi:type="Absence"><leftOperand>/GeneralParameters/ExposureType/Proprietary</leftOperand></BooleanRule></onCondition></ComplexRule></RuleDefinition>" />
<messageBuildingBlock
xmi:id="_2uaNMSs7EeySlt9bF77XfA"
name="TransactionInstructionIdentification"
definition="Unambiguous identification of the instruction or the transaction as known by the instructing or the receiving party.
"
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TxInstrId"
complexType="_HZc9IRIqEeyZaPkaPAzTvQ" />
<messageBuildingBlock
xmi:id="_2uaNMys7EeySlt9bF77XfA"
name="Linkages"
definition="Link to another transaction (or instruction) that must be processed after, before or at the same time.
"
registrationStatus="Provisionally Registered"
minOccurs="0"
xmlTag="Lnkgs"
complexType="_3zSo0FSDEemTt7251YwCKw" />
<messageBuildingBlock
xmi:id="_2uaNNSs7EeySlt9bF77XfA"
name="Pagination"
definition="Page number of the message and continuation indicator to indicate that the multi-part preliminary advice is to continue or that the message is the last page of the multi-part preliminary advice."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Pgntn"
complexType="_xhMHQa6XEees_ufOy2ci-g" />
<messageBuildingBlock
xmi:id="_2uaNNys7EeySlt9bF77XfA"
name="GeneralParameters"
definition="Specifies the different parameters of the collateral transaction or instruction."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="GnlParams"
complexType="_KuBgcSs9EeySlt9bF77XfA" />
<messageBuildingBlock
xmi:id="_2uaNOSs7EeySlt9bF77XfA"
name="CollateralParties"
definition="Identifies the chain of collateral parties.
"
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="CollPties"
complexType="_YgDQfSs-EeySlt9bF77XfA" />
<messageBuildingBlock
xmi:id="_2uaNOys7EeySlt9bF77XfA"
name="DealTransactionDetails"
definition="Specifies the information related to the deal.
"
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="DealTxDtls"
complexType="_udySIRIbEeyLzJfz3xPQNA" />
<messageBuildingBlock
xmi:id="_2uaNPSs7EeySlt9bF77XfA"
name="DealTransactionDate"
definition="Identifies the dates related to the triparty collateral instruction or transactions."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="DealTxDt"
complexType="_qxz5MRInEeyZaPkaPAzTvQ" />
<messageBuildingBlock
xmi:id="_2uaNPys7EeySlt9bF77XfA"
name="SecuritiesMovement"
definition="Securities movements."
registrationStatus="Provisionally Registered"
minOccurs="0"
xmlTag="SctiesMvmnt"
complexType="_TSUjIStFEeySlt9bF77XfA" />
<messageBuildingBlock
xmi:id="_2uaNQSs7EeySlt9bF77XfA"
name="CashMovement"
definition="Cash movements."
registrationStatus="Provisionally Registered"
minOccurs="0"
xmlTag="CshMvmnt"
complexType="_rn_kOxIwEeydmIVkS03esw" />
<messageBuildingBlock
xmi:id="_2uaNQys7EeySlt9bF77XfA"
name="OtherParties"
definition="Other business parties relevant to the transaction.
"
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="OthrPties"
complexType="_Ga5BAMIsEei34K_Q744LyA" />
<messageBuildingBlock
xmi:id="_2uaNRSs7EeySlt9bF77XfA"
name="SupplementaryData"
definition="Additional information that cannot be captured in the structured elements and/or any other specific block."
registrationStatus="Provisionally Registered"
minOccurs="0"
xmlTag="SplmtryData"
complexType="_Qn0zC9p-Ed-ak6NoX_4Aeg_468227563" />
<messageDefinitionIdentifier
businessArea="colr"
messageFunctionality="019"
flavour="001"
version="01" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.