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.