auth.008.001.02
Scope A reporting institution, eg, an investment bank, sends the RegulatoryTransactionReport to a regulator or an intermediary (eg a reporting agent), to report the transaction details of a trade that has been executed on or off-exchange. Usage The message definition can be used to report more than one transaction. The message definition can also be used to specify, on a trade by trade basis, to which authorities the transaction report(s) need to be sent using the TransactionReportMarker.
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
%% RegulatoryTransactionReportV02 recursion level 0 with max 0
RegulatoryTransactionReportV02 *-- "1..1" DocumentIdentification8 : Identification
RegulatoryTransactionReportV02 *-- "1..1" TransactionDetails3 : TransactionDetails
RegulatoryTransactionReportV02 *-- "1..1" IPartyIdentification23Choice : ReportingInstitution
RegulatoryTransactionReportV02 *-- "0..1" IPartyIdentification24Choice : ReportingAgent
RegulatoryTransactionReportV02 *-- "0..1" Extension1 : Extension
Now, we will zero-in one-by-one on each of these building blocks.
Identification building block
Identification of the RegulatoryTransactionReport. Identifies the document by providing a unique identification and optionally the date/time of the creation of the document. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% DocumentIdentification8 recursion level 0 with max 1
class DocumentIdentification8{
Identification IsoMax35Text
CreationDateTime IsoISODateTime
}
DocumentIdentification8 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| Identification | Unique identification of the document. | IsoMax35Text - Required 1..1 |
| CreationDateTime | Date/time of the creation of the document. | IsoISODateTime - Optional 0..1 |
TransactionDetails building block
Provides details of the trade for which the transaction report is being sent. Details of the transaction. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% TransactionDetails3 recursion level 0 with max 1
class TransactionDetails3{
TradeReference IsoMax70Text
AssociatedTradeReference IsoMax70Text
TradeDateTime IsoISODateTime
Side OrderDriverCode
Capacity TradingCapacity3Code
SettlementAmount IsoActiveCurrencyAndAmount
SettlementDate IsoISODateTime
AdditionalInformation IsoMax350Text
}
TransactionDetails3 *-- "1..1" IPlaceOfTradeIdentification2Choice : PlaceOfTrade
TransactionDetails3 *-- "1..1" FinancialInstrument15 : FinancialInstrumentDetails
TransactionDetails3 *-- "0..10" IPartyIdentification24Choice : TransactionReportMarker
TransactionDetails3 *-- "1..1" IPartyIdentification11Choice : Counterparty
TransactionDetails3 *-- "0..1" PartyIdentification23 : Client
TransactionDetails3 *-- "1..1" IPriceRateOrAmountChoice : ExecutedTradePrice
TransactionDetails3 *-- "1..1" IUnitOrFaceAmountChoice : ExecutedTradeQuantity
TransactionDetails3 *-- "0..1" IPartyIdentification2Choice : ProxyHolder
%% IPlaceOfTradeIdentification2Choice recursion level 1 with max 1
%% FinancialInstrument15 recursion level 1 with max 1
FinancialInstrument15 *-- "1..1" ISecurityIdentification6Choice : Identification
FinancialInstrument15 *-- "0..1" SecurityInstrumentDescription2 : InstrumentDescription
FinancialInstrument15 *-- "0..1" ISecurityIdentification6Choice : UnderlyingInstrumentIdentification
%% IPartyIdentification24Choice recursion level 1 with max 1
%% IPartyIdentification11Choice recursion level 1 with max 1
%% PartyIdentification23 recursion level 1 with max 1
class PartyIdentification23{
BICOrBEI IsoAnyBICIdentifier
}
PartyIdentification23 *-- "1..1" GenericIdentification1 : ProprietaryIdentification
PartyIdentification23 *-- "0..1" NameAndAddress5 : NameAndAddress
%% IPriceRateOrAmountChoice recursion level 1 with max 1
%% IUnitOrFaceAmountChoice recursion level 1 with max 1
%% IPartyIdentification2Choice recursion level 1 with max 1
TransactionDetails3 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| TradeReference | Unique identification assigned to a trade. This is the reference generated by a firm or the reference allocated by the executing system if the trade was executed automatically. | IsoMax70Text - Required 1..1 |
| AssociatedTradeReference | Reference that links to other trades that are/will be sent, eg for straddles where put and call legs need to be reported together. | IsoMax70Text - Unknown 0..0 |
| PlaceOfTrade | Identifies the execution venue. In the case of an exchange or a Multilateral Trading Facility (MTF), this should be identified using a MIC code. In the case of a systematic internaliser, place of trade should be identified using a BIC code. | IPlaceOfTradeIdentification2Choice - Required 1..1 |
| TradeDateTime | Specifies the date/time on which the trade was executed. | IsoISODateTime - Required 1..1 |
| FinancialInstrumentDetails | Provides details of the financial instrument for which the transaction report is being sent. | FinancialInstrument15 - Required 1..1 |
| Side | Identifies whether the transaction was a buy or a sell from the perspective of the reporting firm. | OrderDriverCode - Required 1..1 |
| TransactionReportMarker | Identifies the regulator(s) to whom the transaction report must be sent. | IPartyIdentification24Choice - Collection 0..10 |
| Counterparty | Provides details of the counterparty. | IPartyIdentification11Choice - Required 1..1 |
| Client | Provides details of the client. | PartyIdentification23 - Optional 0..1 |
| Capacity | Identifies the trading capacity of the firm reporting the transaction, eg Agent or Principal. | TradingCapacity3Code - Required 1..1 |
| ExecutedTradePrice | Specifies the currency and price at which the trade has been executed, excluding commission or accrued interest. | IPriceRateOrAmountChoice - Required 1..1 |
| ExecutedTradeQuantity | Quantity of financial instrument executed by the trading party. | IUnitOrFaceAmountChoice - Required 1..1 |
| SettlementAmount | The total consideration or value. | IsoActiveCurrencyAndAmount - Optional 0..1 |
| SettlementDate | Identifies the intended settlement date. | IsoISODateTime - Optional 0..1 |
| ProxyHolder | Provides details of the person/organisation that has the power of attorney. | IPartyIdentification2Choice - Optional 0..1 |
| AdditionalInformation | Additional domestic regulatory transaction information. | IsoMax350Text - Optional 0..1 |
ReportingInstitution building block
Identification of the firm that is legally responsible for sending the transaction report. . Choice of identification of a party. The party can be identified by giving a BIC or a proprietary code. For comparison, see the ISO20022 official specification
classDiagram direction tb %% IPartyIdentification23Choice recursion level 0 with max 1
PartyIdentification23Choice members
| Member name | Description | Data Type / Multiplicity |
|---|
ReportingAgent building block
Identifies the intermediary which is reporting on behalf on the ReportingInstitution. If there is a reporting chain, then the last party should override the previous one. Choice of identification of a party. The party can be identified by providing a BIC or a MIC. For comparison, see the ISO20022 official specification
classDiagram direction tb %% IPartyIdentification24Choice recursion level 0 with max 1
PartyIdentification24Choice members
| Member name | Description | Data Type / Multiplicity |
|---|
Extension 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
%% Extension1 recursion level 0 with max 1
class Extension1{
PlaceAndName IsoMax350Text
Text IsoMax350Text
}
Extension1 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| PlaceAndName | Name qualifying the information provided in the Text field, and place where this information should be inserted. | IsoMax350Text - Required 1..1 |
| Text | Text of the extension. | IsoMax350Text - Required 1..1 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the RegulatoryTransactionReportV02 implementation follows a specific implementaiton pattern. First of all, RegulatoryTransactionReportV02 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, RegulatoryTransactionReportV02Document implements IOuterDocument. Because RegulatoryTransactionReportV02 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type RegulatoryTransactionReportV02.
classDiagram
class IOuterRecord
RegulatoryTransactionReportV02 --|> IOuterRecord : Implements
RegulatoryTransactionReportV02Document --|> IOuterDocument~RegulatoryTransactionReportV02~ : Implements
class IOuterDocument~RegulatoryTransactionReportV02~ {
RegulatoryTransactionReportV02 Message
}
Document wrapper for serialization
The only real purpose RegulatoryTransactionReportV02Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:auth.008.001.02’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using RegulatoryTransactionReportV02.ToDocument() method. The returned RegulatoryTransactionReportV02Document value will serialize correctly according to ISO 20022 standards.
classDiagram
RegulatoryTransactionReportV02Document *-- RegulatoryTransactionReportV02 : 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:auth.008.001.02">
<RgltryTxRpt>
<Id>
<!-- Identification inner content -->
</Id>
<TxDtls>
<!-- TransactionDetails inner content -->
</TxDtls>
<RptgInstn>
<!-- ReportingInstitution inner content -->
</RptgInstn>
<RptgAgt>
<!-- ReportingAgent inner content -->
</RptgAgt>
<Xtnsn>
<!-- Extension inner content -->
</Xtnsn>
</RgltryTxRpt>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_gKH798IFEeGllrOKQRUTYA_1289680586"
name="RegulatoryTransactionReportV02"
definition="Scope
A reporting institution, eg, an investment bank, sends the RegulatoryTransactionReport to a regulator or an intermediary (eg a reporting agent), to report the transaction details of a trade that has been executed on or off-exchange.
Usage
The message definition can be used to report more than one transaction. The message definition can also be used to specify, on a trade by trade basis, to which authorities the transaction report(s) need to be sent using the TransactionReportMarker."
registrationStatus="Registered"
messageSet="_wRoFwU2rEeG_I4xRYCA_7g"
xmlTag="RgltryTxRpt"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_gKH7-MIFEeGllrOKQRUTYA_1289680640"
name="Identification"
definition="Identification of the RegulatoryTransactionReport."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Id"
complexType="_RXNBiNp-Ed-ak6NoX_4Aeg_-320016249" />
<messageBuildingBlock
xmi:id="_gKRs8MIFEeGllrOKQRUTYA_1289680605"
name="TransactionDetails"
definition="Provides details of the trade for which the transaction report is being sent."
registrationStatus="Provisionally Registered"
minOccurs="1"
xmlTag="TxDtls"
complexType="_S-6mMdp-Ed-ak6NoX_4Aeg_-160365271" />
<messageBuildingBlock
xmi:id="_gKRs8cIFEeGllrOKQRUTYA_1289680665"
name="ReportingInstitution"
definition="Identification of the firm that is legally responsible for sending the transaction report.
."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="RptgInstn"
complexType="_QReIgdp-Ed-ak6NoX_4Aeg_-1086683076" />
<messageBuildingBlock
xmi:id="_gKRs8sIFEeGllrOKQRUTYA_1289680990"
name="ReportingAgent"
definition="Identifies the intermediary which is reporting on behalf on the ReportingInstitution. If there is a reporting chain, then the last party should override the previous one."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="RptgAgt"
complexType="_QReIhNp-Ed-ak6NoX_4Aeg_-550871246" />
<messageBuildingBlock
xmi:id="_gKRs88IFEeGllrOKQRUTYA_1289680973"
name="Extension"
definition="Additional information that cannot be captured in the structured elements and/or any other specific block."
registrationStatus="Provisionally Registered"
minOccurs="0"
xmlTag="Xtnsn"
complexType="_Q6vvCNp-Ed-ak6NoX_4Aeg_1503007069" />
<messageDefinitionIdentifier
businessArea="auth"
messageFunctionality="008"
flavour="001"
version="02" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.