fxtr.008.001.04
Scope The ForeignExchangeTradeStatusNotification message is sent by a central system to the participant to notify the current status of a foreign exchange trade in the system. Usage This ForeignExchangeTradeStatusNotification message will be sent at specific times agreed upon by the central settlement system and a participant in a central settlement system.
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 %% ForeignExchangeTradeStatusNotificationV04 recursion level 0 with max 0 ForeignExchangeTradeStatusNotificationV04 *-- "1..1" TradeData7 : TradeData ForeignExchangeTradeStatusNotificationV04 *-- "0..1" RegulatoryReporting1 : RegulatoryReporting ForeignExchangeTradeStatusNotificationV04 *-- "0..1" SupplementaryData1 : SupplementaryData
Now, we will zero-in one-by-one on each of these building blocks.
TradeData building block
Provides information on the status of a trade in a system. Provides information on the status of a trade. For comparison, see the ISO20022 official specification
classDiagram direction tb %% TradeData7 recursion level 0 with max 1 class TradeData7{ MessageIdentification IsoMax35Text OriginatorReference IsoMax35Text MatchingSystemUniqueReference IsoMax35Text MatchingSystemMatchingReference IsoMax35Text MatchingSystemMatchedSideReference IsoMax35Text StatusOriginator IsoMax20Text CurrentStatusSubType StatusSubType1Code CurrentStatusDateTime IsoISODateTime PreviousStatusSubType StatusSubType1Code PreviousStatusDateTime IsoISODateTime ProductType IsoMax35Text SettlementSessionIdentifier IsoExact4AlphaNumericText SplitTradeIndicator IsoYesNoIndicator } TradeData7 *-- "1..1" StatusAndSubStatus1 : CurrentStatus TradeData7 *-- "0..1" IStatus6Choice : PreviousStatus %% StatusAndSubStatus1 recursion level 1 with max 1 class StatusAndSubStatus1{ SubStatusCode IsoExact4AlphaNumericText } StatusAndSubStatus1 *-- "1..1" IStatus13Choice : StatusCode %% IStatus6Choice recursion level 1 with max 1
TradeData7 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
MessageIdentification | Identification of the present message assigned by the party issuing the message. This identification must be unique amongst all messages of same type sent by the same party. | IsoMax35Text - Required 1..1 |
OriginatorReference | Represents the original reference of the instruction for which the status is given, as assigned by the participant that submitted the foreign exchange trade. | IsoMax35Text - Optional 0..1 |
MatchingSystemUniqueReference | Reference to the unique system identification assigned to the trade by the central matching system. | IsoMax35Text - Required 1..1 |
MatchingSystemMatchingReference | Unique matching identification assigned to the trade and to the matching trade from the counterparty by the central matching system. | IsoMax35Text - Optional 0..1 |
MatchingSystemMatchedSideReference | Identification to the unique reference from the central settlement system that allows the removal of alleged trades once the matched status notification for the matching side has been received. | IsoMax35Text - Optional 0..1 |
StatusOriginator | Party that assigned the status to the foreign exchange or derivative trade. | IsoMax20Text - Optional 0..1 |
CurrentStatus | Specifies the new status of a trade. | StatusAndSubStatus1 - Required 1..1 |
CurrentStatusSubType | Additional information on the current status of a trade in a central system. | StatusSubType1Code - Optional 0..1 |
CurrentStatusDateTime | Specifies the date and time at which the current status was assigned. | IsoISODateTime - Optional 0..1 |
PreviousStatus | Specifies the previous status of a trade. | IStatus6Choice - Optional 0..1 |
PreviousStatusSubType | Additional information on the previous status of a trade in a central system. | StatusSubType1Code - Optional 0..1 |
PreviousStatusDateTime | Specifies the date and time at which the previous status was assigned. | IsoISODateTime - Optional 0..1 |
ProductType | Specifies the product for which the status of the confirmation is reported. | IsoMax35Text - Optional 0..1 |
SettlementSessionIdentifier | To indicate the requested CLS Settlement Session that the related trade is part of. | IsoExact4AlphaNumericText - Optional 0..1 |
SplitTradeIndicator | To indicate if the trade is split. | IsoYesNoIndicator - Optional 0..1 |
RegulatoryReporting building block
This is information that is to be provided to trade repositories in the context of the regulatory standards around OTC derivatives, central counterparties and trade repositories. Includes data elements that can be used for reporting to trade repositories, it is not to be used on regular trade confirmations. Although some fields, for example, unique transaction identifier and prior unique transaction identifier, might be used on regular confirmations. For comparison, see the ISO20022 official specification
classDiagram direction tb %% RegulatoryReporting1 recursion level 0 with max 1 class RegulatoryReporting1{ ReportingJurisdiction IsoMax35Text ClearingThresholdIndicator IsoYesNoIndicator ClearedProductIdentification IsoMax35Text UnderlyingProductIdentifier UnderlyingProductIdentifier1Code AllocationIndicator AllocationIndicator1Code CollateralisationIndicator CollateralisationIndicator1Code ExecutionVenue IsoMax35Text NonStandardFlag IsoYesNoIndicator LinkSwapIdentification IsoExact42Text AdditionalReportingInformation IsoMax210Text } RegulatoryReporting1 *-- "0..1" IPartyIdentification73Choice : ReportingParty RegulatoryReporting1 *-- "0..1" UniqueTransactionIdentifier1 : TradingSideUniqueTransactionIdentifier RegulatoryReporting1 *-- "0..1" UniqueTransactionIdentifier1 : CounterpartySideUniqueTransactionIdentifier RegulatoryReporting1 *-- "0..1" IPartyIdentification73Choice : ClearingExceptionParty RegulatoryReporting1 *-- "0..1" ClearingBrokerIdentification1 : ClearingBrokerIdentification RegulatoryReporting1 *-- "0..1" IDateAndDateTimeChoice : ExecutionTimestamp %% IPartyIdentification73Choice recursion level 1 with max 1 %% UniqueTransactionIdentifier1 recursion level 1 with max 1 class UniqueTransactionIdentifier1{ UniqueTransactionIdentifier IsoMax105Text PriorUniqueTransactionIdentifier IsoMax105Text } %% UniqueTransactionIdentifier1 recursion level 1 with max 1 class UniqueTransactionIdentifier1{ UniqueTransactionIdentifier IsoMax105Text PriorUniqueTransactionIdentifier IsoMax105Text } %% IPartyIdentification73Choice recursion level 1 with max 1 %% ClearingBrokerIdentification1 recursion level 1 with max 1 class ClearingBrokerIdentification1{ SideIndicator SideIndicator1Code ClearingBrokerIdentification IsoMax35Text } %% IDateAndDateTimeChoice recursion level 1 with max 1
RegulatoryReporting1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
ReportingJurisdiction | Specifies the supervisory party to which the trade needs to be reported. | IsoMax35Text - Optional 0..1 |
ReportingParty | Identifies the party that is responsible for reporting the trade to the trade repository. | IPartyIdentification73Choice - Optional 0..1 |
TradingSideUniqueTransactionIdentifier | Specifies the unique transaction identifier (UTI) to be created at the time a transaction is first executed, shared with all registered entities and counterparties involved in the transaction, and used to track that particular transaction over its life. This identifier can also be known as the Unique Swap Identifier (USI).This is the UTI from the Trading Side party. | UniqueTransactionIdentifier1 - Optional 0..1 |
CounterpartySideUniqueTransactionIdentifier | Specifies the unique transaction identifier (UTI) to be created at the time a transaction is first executed, shared with all registered entities and counterparties involved in the transaction, and used to track that particular transaction over its life. This identifier can also be known as the Unique Swap Identifier (USI).This is the UTI from the Counterparty Side party. | UniqueTransactionIdentifier1 - Optional 0..1 |
ClearingExceptionParty | Identifies the party that is exempt from a clearing obligation. | IPartyIdentification73Choice - Optional 0..1 |
ClearingBrokerIdentification | Specifies the reference number assigned by the clearing broker. A distinction can be made between the reference for the Central Counterparty (CCP) leg and the reference for the client leg of the transaction. | ClearingBrokerIdentification1 - Optional 0..1 |
ClearingThresholdIndicator | Specifies whether the contract is above or below the clearing threshold. Where No indicates the contract is below the clearing threshold and Yes indicates the contract is above the clearing threshold. | IsoYesNoIndicator - Optional 0..1 |
ClearedProductIdentification | Specifies the reference number assigned by the Central Counterparty (CCP). | IsoMax35Text - Optional 0..1 |
UnderlyingProductIdentifier | Specifies the underlying product type. | UnderlyingProductIdentifier1Code - Optional 0..1 |
AllocationIndicator | Specifies whether the trade is a pre-allocation or a post-allocation trade, or whether the trade is unallocated. | AllocationIndicator1Code - Optional 0..1 |
CollateralisationIndicator | Specifies whether the transaction is collateralised. | CollateralisationIndicator1Code - Optional 0..1 |
ExecutionVenue | Specifies the trading venue of the transaction. | IsoMax35Text - Optional 0..1 |
ExecutionTimestamp | Specifies the date and time of the execution of the transaction in Coordinated Universal Time (UTC). | IDateAndDateTimeChoice - Optional 0..1 |
NonStandardFlag | Specifies whether the reportable transaction has one or more additional terms or provisions, other than those listed in the required real-time data fields, that materially affects the price of the reportable transaction. | IsoYesNoIndicator - Optional 0..1 |
LinkSwapIdentification | Specifies the common reference or correlation identification for a swap transaction where the near and far leg are confirmed separately. | IsoExact42Text - Optional 0..1 |
AdditionalReportingInformation | Specifies additional information that might be required by the regulator. | IsoMax210Text - Optional 0..1 |
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 ForeignExchangeTradeStatusNotificationV04 implementation follows a specific implementaiton pattern. First of all, ForeignExchangeTradeStatusNotificationV04 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, ForeignExchangeTradeStatusNotificationV04Document implements IOuterDocument. Because ForeignExchangeTradeStatusNotificationV04 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type ForeignExchangeTradeStatusNotificationV04.
classDiagram class IOuterRecord ForeignExchangeTradeStatusNotificationV04 --|> IOuterRecord : Implements ForeignExchangeTradeStatusNotificationV04Document --|> IOuterDocument~ForeignExchangeTradeStatusNotificationV04~ : Implements class IOuterDocument~ForeignExchangeTradeStatusNotificationV04~ { ForeignExchangeTradeStatusNotificationV04 Message }
Document wrapper for serialization
The only real purpose ForeignExchangeTradeStatusNotificationV04Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:fxtr.008.001.04’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using ForeignExchangeTradeStatusNotificationV04.ToDocument() method. The returned ForeignExchangeTradeStatusNotificationV04Document value will serialize correctly according to ISO 20022 standards.
classDiagram ForeignExchangeTradeStatusNotificationV04Document *-- ForeignExchangeTradeStatusNotificationV04 : 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:fxtr.008.001.04">
<FXTradStsNtfctn>
<TradData>
<!-- TradeData inner content -->
</TradData>
<RgltryRptg>
<!-- RegulatoryReporting inner content -->
</RgltryRptg>
<SplmtryData>
<!-- SupplementaryData inner content -->
</SplmtryData>
</FXTradStsNtfctn>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_t2x7Iew0EeG4a9QeNHA19w"
nextVersions="_7QPkkTJzEeOd1OidA-8_VQ"
name="ForeignExchangeTradeStatusNotificationV04"
definition="Scope

The ForeignExchangeTradeStatusNotification message is sent by a central system to the participant to notify the current status of a foreign exchange trade in the system.

Usage

This ForeignExchangeTradeStatusNotification message will be sent at specific times agreed upon by the central settlement system and a participant in a central settlement system."
registrationStatus="Provisionally Registered"
messageSet="_urpIICeJEeOCeO5e7islRQ"
xmlTag="FXTradStsNtfctn"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_t2x7I-w0EeG4a9QeNHA19w"
nextVersions="_7QPkkzJzEeOd1OidA-8_VQ"
name="TradeData"
definition="Provides information on the status of a trade in a system."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TradData"
complexType="_0HqjAew3EeGdCpA_VUPR-w" />
<messageBuildingBlock
xmi:id="_xavYcCjtEeK1Sbo8NpBROA"
nextVersions="_7QPklTJzEeOd1OidA-8_VQ"
name="RegulatoryReporting"
definition="This is information that is to be provided to trade repositories in the context of the regulatory standards around OTC derivatives, central counterparties and trade repositories."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="RgltryRptg"
complexType="_SEtVEyi-EeKnA5P_jl2DUw" />
<messageBuildingBlock
xmi:id="_OCmy4ynBEeKqmMA7_Y42sg"
nextVersions="_7QPklzJzEeOd1OidA-8_VQ"
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="fxtr"
messageFunctionality="008"
flavour="001"
version="04" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.