reda.074.001.01
Scope: A collateral giver/taker sends a TripartyCollateralFinancialInstrumentRemovalRequest to the Triparty Agent to remove a financial instrument from the collateral pool.
The status of this request is provided with the reda.028 , the CollateralDataStatusAdvice.
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 %% TripartyCollateralUnilateralRemovalRequestV01 recursion level 0 with max 0 class TripartyCollateralUnilateralRemovalRequestV01{ RemovalRequestIdentification IsoMax35Text CollateralSide CollateralRole1Code } TripartyCollateralUnilateralRemovalRequestV01 *-- "1..1" Pagination1 : Pagination TripartyCollateralUnilateralRemovalRequestV01 *-- "1..1" PartyIdentification232 : PartyA TripartyCollateralUnilateralRemovalRequestV01 *-- "0..1" PartyIdentification232 : ClientPartyA TripartyCollateralUnilateralRemovalRequestV01 *-- "1..1" RequestDetails28 : RequestDetails TripartyCollateralUnilateralRemovalRequestV01 *-- "0..1" SupplementaryData1 : SupplementaryData
Now, we will zero-in one-by-one on each of these building blocks.
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 |
RemovalRequestIdentification building block
Unambiguous identification of the removal request as known by the account owner (or the instructing party managing the account).
Specifies a character string with a maximum length of 35 characters. For comparison, see the ISO20022 official specification This message is declared as Max35Text in the ISO specification. In our implementation, it is represented in source code as IsoMax35Text. Due to global using directives, it is treated as a System.String by the compiler and runtime.
PartyA building block
Instructing party sending the removal request. Identification of a party. For comparison, see the ISO20022 official specification
classDiagram direction tb %% PartyIdentification232 recursion level 0 with max 1 class PartyIdentification232{ LEI IsoLEIIdentifier } PartyIdentification232 *-- "1..1" IPartyIdentification120Choice : Identification PartyIdentification232 *-- "0..1" AlternatePartyIdentification7 : AlternateIdentification %% IPartyIdentification120Choice recursion level 1 with max 1 %% AlternatePartyIdentification7 recursion level 1 with max 1 class AlternatePartyIdentification7{ Country CountryCode AlternateIdentification IsoMax35Text } AlternatePartyIdentification7 *-- "1..1" IIdentificationType42Choice : IdentificationType
PartyIdentification232 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Identification | Unique and unambiguous way to identify an organisation. | IPartyIdentification120Choice - Required 1..1 |
LEI | Legal entity identification as an alternate identification for a party. | IsoLEIIdentifier - Optional 0..1 |
AlternateIdentification | Alternate identification for a party. | AlternatePartyIdentification7 - Optional 0..1 |
ClientPartyA building block
Party that instructs party A to send the message. Identification of a party. For comparison, see the ISO20022 official specification
classDiagram direction tb %% PartyIdentification232 recursion level 0 with max 1 class PartyIdentification232{ LEI IsoLEIIdentifier } PartyIdentification232 *-- "1..1" IPartyIdentification120Choice : Identification PartyIdentification232 *-- "0..1" AlternatePartyIdentification7 : AlternateIdentification %% IPartyIdentification120Choice recursion level 1 with max 1 %% AlternatePartyIdentification7 recursion level 1 with max 1 class AlternatePartyIdentification7{ Country CountryCode AlternateIdentification IsoMax35Text } AlternatePartyIdentification7 *-- "1..1" IIdentificationType42Choice : IdentificationType
PartyIdentification232 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Identification | Unique and unambiguous way to identify an organisation. | IPartyIdentification120Choice - Required 1..1 |
LEI | Legal entity identification as an alternate identification for a party. | IsoLEIIdentifier - Optional 0..1 |
AlternateIdentification | Alternate identification for a party. | AlternatePartyIdentification7 - Optional 0..1 |
CollateralSide building block
Specifies whether the client is the collateral taker or giver.
Identifies whether the reporting counterparty is a collateral provider or a collateral taker. For comparison, see the ISO20022 official specification This message is declared as CollateralRole1Code in the ISO specification. In our implementation, it is represented in source code as CollateralRole1Code. Due to global using directives, it is treated as a System.String by the compiler and runtime.
RequestDetails building block
Details of the request (the request details block is not repetitive to remove some complexity, only one removal request will be possible per message). Details of the financial instrument removal request. For comparison, see the ISO20022 official specification
classDiagram direction tb %% RequestDetails28 recursion level 0 with max 1 RequestDetails28 *-- "1..1" RemovalTypeAndReason1 : Removal RequestDetails28 *-- "0..0" IRemovalProcessing2Choice : FinancialInstrumentAndAttributes RequestDetails28 *-- "0..1" CollateralParties4 : Counterparty RequestDetails28 *-- "0..1" SecuritiesAccount19 : SafekeepingAccount RequestDetails28 *-- "0..1" BlockChainAddressWallet3 : BlockChainAddressOrWallet RequestDetails28 *-- "0..1" Reference21 : Reference %% RemovalTypeAndReason1 recursion level 1 with max 1 RemovalTypeAndReason1 *-- "1..1" IRemoval1Choice : RemovalType RemovalTypeAndReason1 *-- "0..1" GenericIdentification30 : Reason RemovalTypeAndReason1 *-- "0..1" IDateOrDateTimePeriod3Choice : ExclusionPeriod %% IRemovalProcessing2Choice recursion level 1 with max 1 %% CollateralParties4 recursion level 1 with max 1 CollateralParties4 *-- "1..1" PartyIdentification232 : PartyB CollateralParties4 *-- "0..1" PartyIdentification232 : ClientPartyB CollateralParties4 *-- "0..1" GenericIdentification37 : EligibilitySetProfile %% 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 %% Reference21 recursion level 1 with max 1 class Reference21{ SenderCollateralTransactionIdentification IsoMax35Text ReceiverCollateralTransactionIdentification IsoMax35Text SenderCollateralContractIdentification IsoMax35Text ReceiverCollateralContractIdentification IsoMax35Text CommonTransactionIdentification IsoMax52Text }
RequestDetails28 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Removal | Specifies the removal processing change requested. | RemovalTypeAndReason1 - Required 1..1 |
FinancialInstrumentAndAttributes | Specifies the financial instruments to be removed (identification or attributes). | IRemovalProcessing2Choice - Unknown 0..0 |
Counterparty | Identifies the collateral parties of a contract. | CollateralParties4 - Optional 0..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 |
Reference | References of the transaction for which the financial instrument removal request is required. | Reference21 - Optional 0..1 |
SupplementaryData building block
Additional information that can not be captured in the structured fields 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 TripartyCollateralUnilateralRemovalRequestV01 implementation follows a specific implementaiton pattern. First of all, TripartyCollateralUnilateralRemovalRequestV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, TripartyCollateralUnilateralRemovalRequestV01Document implements IOuterDocument. Because TripartyCollateralUnilateralRemovalRequestV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type TripartyCollateralUnilateralRemovalRequestV01.
classDiagram class IOuterRecord TripartyCollateralUnilateralRemovalRequestV01 --|> IOuterRecord : Implements TripartyCollateralUnilateralRemovalRequestV01Document --|> IOuterDocument~TripartyCollateralUnilateralRemovalRequestV01~ : Implements class IOuterDocument~TripartyCollateralUnilateralRemovalRequestV01~ { TripartyCollateralUnilateralRemovalRequestV01 Message }
Document wrapper for serialization
The only real purpose TripartyCollateralUnilateralRemovalRequestV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:reda.074.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using TripartyCollateralUnilateralRemovalRequestV01.ToDocument() method. The returned TripartyCollateralUnilateralRemovalRequestV01Document value will serialize correctly according to ISO 20022 standards.
classDiagram TripartyCollateralUnilateralRemovalRequestV01Document *-- TripartyCollateralUnilateralRemovalRequestV01 : 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:reda.074.001.01">
<TrptyCollUnltrlRmvlReq>
<Pgntn>
<!-- Pagination inner content -->
</Pgntn>
<RmvlReqId>
<!-- RemovalRequestIdentification inner content -->
</RmvlReqId>
<PtyA>
<!-- PartyA inner content -->
</PtyA>
<ClntPtyA>
<!-- ClientPartyA inner content -->
</ClntPtyA>
<CollSd>
<!-- CollateralSide inner content -->
</CollSd>
<ReqDtls>
<!-- RequestDetails inner content -->
</ReqDtls>
<SplmtryData>
<!-- SupplementaryData inner content -->
</SplmtryData>
</TrptyCollUnltrlRmvlReq>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_2uaNRys7EeySlt9bF77XfA"
name="TripartyCollateralUnilateralRemovalRequestV01"
definition="Scope:
A collateral giver/taker sends a TripartyCollateralFinancialInstrumentRemovalRequest to the Triparty Agent to remove a financial instrument from the collateral pool.

The status of this request is provided with the reda.028 , the CollateralDataStatusAdvice."
registrationStatus="Registered"
messageSet="_-NT5QSs5EeyjDaA8ufxSSw"
xmlTag="TrptyCollUnltrlRmvlReq"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_2uaNSSs7EeySlt9bF77XfA"
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="_2uaNSys7EeySlt9bF77XfA"
name="RemovalRequestIdentification"
definition="Unambiguous identification of the removal request as known by the account owner (or the instructing party managing the account).
"
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="RmvlReqId"
simpleType="_YW1tKdp-Ed-ak6NoX_4Aeg_1913463446" />
<messageBuildingBlock
xmi:id="_2uaNTSs7EeySlt9bF77XfA"
name="PartyA"
definition="Instructing party sending the removal request."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="PtyA"
complexType="_ApvkkMuqEeiWUeUVHQmKaw" />
<messageBuildingBlock
xmi:id="_2uaNTys7EeySlt9bF77XfA"
name="ClientPartyA"
definition="Party that instructs party A to send the message."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="ClntPtyA"
complexType="_ApvkkMuqEeiWUeUVHQmKaw" />
<messageBuildingBlock
xmi:id="_2uaNUSs7EeySlt9bF77XfA"
name="CollateralSide"
definition="Specifies whether the client is the collateral taker or giver.
"
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="CollSd"
simpleType="_pFIlUCDCEeaned5xL18mUQ" />
<messageBuildingBlock
xmi:id="_2uaNUys7EeySlt9bF77XfA"
name="RequestDetails"
definition="Details of the request (the request details block is not repetitive to remove some complexity, only one removal request will be possible per message)."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="ReqDtls"
complexType="_3bfJsStFEeySlt9bF77XfA" />
<messageBuildingBlock
xmi:id="_2uaNVSs7EeySlt9bF77XfA"
name="SupplementaryData"
definition="Additional information that can not be captured in the structured fields and/or any other specific block."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="SplmtryData"
complexType="_Qn0zC9p-Ed-ak6NoX_4Aeg_468227563" />
<messageDefinitionIdentifier
businessArea="reda"
messageFunctionality="074"
flavour="001"
version="01" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.