TripartyCollateralTransactionInstructionV01

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:&#xD;&#xA;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.&#xD;&#xA;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.&#xD;&#xA;&#xD;&#xA;Usage:&#xD;&#xA;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.&#xD;&#xA;&#xD;&#xA;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="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/DealTransactionDetails/DealDetailsAmount[*]/Transaction&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/DealTransactionDetails&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;BooleanRule xsi:type=&quot;DifferentFromValue&quot;&gt;&lt;leftOperand&gt;/GeneralParameters/ExposureType/Code&lt;/leftOperand&gt;&lt;rightOperand&gt;SecuritiesLendingAndBorrowing&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;BooleanRule xsi:type=&quot;Absence&quot;&gt;&lt;leftOperand&gt;/GeneralParameters/ExposureType/Proprietary&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <messageBuildingBlock
    xmi:id="_2uaNMSs7EeySlt9bF77XfA"
    name="TransactionInstructionIdentification"
    definition="Unambiguous identification of the instruction or the transaction as known by the instructing  or the receiving party.&#xD;&#xA;"
    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.&#xD;&#xA;"
    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.&#xD;&#xA;"
    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.&#xD;&#xA;"
    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.&#xD;&#xA;"
    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.