TripartyCollateralUnilateralRemovalRequestV01

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:&#xD;&#xA;A collateral giver/taker sends a TripartyCollateralFinancialInstrumentRemovalRequest to the Triparty Agent to remove a financial instrument from the collateral pool.&#xD;&#xA;&#xD;&#xA;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.&#xD;&#xA;"
    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).&#xD;&#xA;"
    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.&#xD;&#xA;"
    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.