trea.007.001.02
Scope The NonDeliverableForwardNotification message is sent by a central system to a participant to provide details of a non deliverable forward trade. Usage The notification is sent by a central settlement system to the two trading parties after it has received create, amend or cancel messages from both. The message may also contain information on the settlement of the trade.
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
%% NonDeliverableForwardNotificationV02 recursion level 0 with max 0
NonDeliverableForwardNotificationV02 *-- "1..1" TradePartyIdentification3 : TradingSideIdentification
NonDeliverableForwardNotificationV02 *-- "1..1" TradePartyIdentification3 : CounterpartySideIdentification
NonDeliverableForwardNotificationV02 *-- "0..1" OpeningData2 : OpeningData
NonDeliverableForwardNotificationV02 *-- "0..1" ClosingData2 : ValuationData
NonDeliverableForwardNotificationV02 *-- "1..1" TradeStatus1 : TradeInformationAndStatus
NonDeliverableForwardNotificationV02 *-- "0..1" SettlementData2 : SettlementData
Now, we will zero-in one-by-one on each of these building blocks.
TradingSideIdentification building block
Specifies the trading side of the non deliverable trade which is reported. Entity involved in an activity. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% TradePartyIdentification3 recursion level 0 with max 1
TradePartyIdentification3 *-- "0..1" FundIdentification2 : FundInformation
TradePartyIdentification3 *-- "1..1" IPartyIdentification8Choice : SubmittingParty
TradePartyIdentification3 *-- "1..1" IPartyIdentification8Choice : TradeParty
%% FundIdentification2 recursion level 1 with max 1
class FundIdentification2{
FundIdentification IsoMax35Text
AccountIdentificationWithCustodian IsoMax35Text
}
FundIdentification2 *-- "0..1" IPartyIdentification8Choice : CustodianIdentification
%% IPartyIdentification8Choice recursion level 1 with max 1
%% IPartyIdentification8Choice recursion level 1 with max 1
TradePartyIdentification3 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| FundInformation | Identifies the fund which is one of the parties in a treasury trade. | FundIdentification2 - Optional 0..1 |
| SubmittingParty | Specifies the party which submits a treasury trade to a matching system or to a settlement system or to a counterparty. | IPartyIdentification8Choice - Required 1..1 |
| TradeParty | Specifies the party which originated a treasury trade. This party may be the same as the submitting party. | IPartyIdentification8Choice - Required 1..1 |
CounterpartySideIdentification building block
Specifies the counterparty of the non deliverable trade which is reported. Entity involved in an activity. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% TradePartyIdentification3 recursion level 0 with max 1
TradePartyIdentification3 *-- "0..1" FundIdentification2 : FundInformation
TradePartyIdentification3 *-- "1..1" IPartyIdentification8Choice : SubmittingParty
TradePartyIdentification3 *-- "1..1" IPartyIdentification8Choice : TradeParty
%% FundIdentification2 recursion level 1 with max 1
class FundIdentification2{
FundIdentification IsoMax35Text
AccountIdentificationWithCustodian IsoMax35Text
}
FundIdentification2 *-- "0..1" IPartyIdentification8Choice : CustodianIdentification
%% IPartyIdentification8Choice recursion level 1 with max 1
%% IPartyIdentification8Choice recursion level 1 with max 1
TradePartyIdentification3 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| FundInformation | Identifies the fund which is one of the parties in a treasury trade. | FundIdentification2 - Optional 0..1 |
| SubmittingParty | Specifies the party which submits a treasury trade to a matching system or to a settlement system or to a counterparty. | IPartyIdentification8Choice - Required 1..1 |
| TradeParty | Specifies the party which originated a treasury trade. This party may be the same as the submitting party. | IPartyIdentification8Choice - Required 1..1 |
OpeningData building block
Set of data specified for the opening of a non deliverable trade. List of elements which specify the opening of a non deliverable trade. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% OpeningData2 recursion level 0 with max 1
class OpeningData2{
TradeDate IsoISODate
NotificationIdentification IsoMax35Text
CommonReference IsoMax35Text
RelatedReference IsoMax35Text
AmendOrCancelReason IsoMax35Text
}
OpeningData2 *-- "1..1" AmountsAndValueDate1 : TradeAmounts
OpeningData2 *-- "1..1" AgreedRate1 : AgreedRate
OpeningData2 *-- "1..1" NonDeliverableForwardValuationConditions2 : ValuationConditions
%% AmountsAndValueDate1 recursion level 1 with max 1
class AmountsAndValueDate1{
TradingSideBuyAmount IsoActiveOrHistoricCurrencyAndAmount
TradingSideSellAmount IsoActiveOrHistoricCurrencyAndAmount
SettlementDate IsoISODate
}
%% AgreedRate1 recursion level 1 with max 1
class AgreedRate1{
ExchangeRate IsoBaseOneRate
UnitCurrency CurrencyCode
QuotedCurrency CurrencyCode
}
%% NonDeliverableForwardValuationConditions2 recursion level 1 with max 1
class NonDeliverableForwardValuationConditions2{
SettlementCurrency ActiveOrHistoricCurrencyCode
ValuationDate IsoISODate
AdditionalValuationInformation IsoMax140Text
}
NonDeliverableForwardValuationConditions2 *-- "0..1" IPartyIdentification8Choice : SettlementParty
OpeningData2 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| TradeDate | Date at which the trading parties execute a treasury trade. | IsoISODate - Required 1..1 |
| NotificationIdentification | Refers to the identification of a notification assigned by the trading side. | IsoMax35Text - Required 1..1 |
| CommonReference | Reference common to the parties of a trade. | IsoMax35Text - Optional 0..1 |
| RelatedReference | Refers to the identification of a previous event in the life of a non deliverable forward trade. | IsoMax35Text - Optional 0..1 |
| AmendOrCancelReason | Describes the reason for the cancellation or the amendment. | IsoMax35Text - Optional 0..1 |
| TradeAmounts | Specifies the amounts of the non deliverable trade which is reported. | AmountsAndValueDate1 - Required 1..1 |
| AgreedRate | Exchange rate between two currencies. The rate is agreed by the trading parties during the negotiation process. | AgreedRate1 - Required 1..1 |
| ValuationConditions | Set of parameters used to calculate the valuation rate to be applied to a non-deliverable agreement. | NonDeliverableForwardValuationConditions2 - Required 1..1 |
ValuationData building block
Set of data specified for the valuation of a non deliverable trade. Set of data specified for the fixing of a non deliverable trade. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% ClosingData2 recursion level 0 with max 1
class ClosingData2{
TradeDate IsoISODate
NotificationIdentification IsoMax35Text
CommonReference IsoMax35Text
RelatedReference IsoMax35Text
AmendOrCancelReason IsoMax35Text
}
ClosingData2 *-- "1..1" AmountsAndValueDate1 : TradeAmounts
ClosingData2 *-- "1..1" AgreedRate1 : ValuationRate
ClosingData2 *-- "1..1" ValuationData2 : ValuationInformation
%% AmountsAndValueDate1 recursion level 1 with max 1
class AmountsAndValueDate1{
TradingSideBuyAmount IsoActiveOrHistoricCurrencyAndAmount
TradingSideSellAmount IsoActiveOrHistoricCurrencyAndAmount
SettlementDate IsoISODate
}
%% AgreedRate1 recursion level 1 with max 1
class AgreedRate1{
ExchangeRate IsoBaseOneRate
UnitCurrency CurrencyCode
QuotedCurrency CurrencyCode
}
%% ValuationData2 recursion level 1 with max 1
class ValuationData2{
ValuationReference IsoMax35Text
SettlementCurrency ActiveOrHistoricCurrencyCode
AdditionalValuationInformation IsoMax140Text
}
ValuationData2 *-- "0..1" IPartyIdentification8Choice : SettlementParty
ClosingData2 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| TradeDate | Date at which the trading parties have agreed on a valuation rate for a non deliverable trade. | IsoISODate - Required 1..1 |
| NotificationIdentification | Refers to the identification of a trade assigned by the trading side of a non deliverable forward trade. | IsoMax35Text - Required 1..1 |
| CommonReference | Reference common to the parties of a trade. | IsoMax35Text - Optional 0..1 |
| RelatedReference | Refers to the identification of a previous event in the life of a non deliverable forward trade. | IsoMax35Text - Optional 0..1 |
| AmendOrCancelReason | Describes the reason for the cancellation or the amendment. | IsoMax35Text - Optional 0..1 |
| TradeAmounts | Specifies the amounts traded at the valuation of a non-deliverable trade. | AmountsAndValueDate1 - Required 1..1 |
| ValuationRate | Rate obtained at valuation time by following the valuation conditions (agreed upon by the trading parties at the opening of the non-deliverable contract). | AgreedRate1 - Required 1..1 |
| ValuationInformation | Set of parameters used to calculate the valuation rate to be applied to a non-deliverable agreement. | ValuationData2 - Required 1..1 |
TradeInformationAndStatus building block
Provides information on the status of a trade in a central system. Specifies the status of a trade in a central settlement system. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% TradeStatus1 recursion level 0 with max 1
class TradeStatus1{
AllegedTrade IsoYesNoIndicator
MatchingSystemUniqueReference IsoMax35Text
Status TradeStatus1Code
ExtendedStatus IsoExtended350Code
StatusSubType IsoMax70Text
StatusTime IsoISODateTime
StatusOriginator IsoMax35Text
}
TradeStatus1 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| AllegedTrade | Specifies whether a trade is alleged or not. | IsoYesNoIndicator - Optional 0..1 |
| MatchingSystemUniqueReference | Reference to the unique identification assigned to a trade by a central matching system. | IsoMax35Text - Required 1..1 |
| Status | Specifies the status of a trade. | TradeStatus1Code - Optional 0..1 |
| ExtendedStatus | Description of the status of a trade when no coded form is available. | IsoExtended350Code - Optional 0..1 |
| StatusSubType | Additional information on the status of a trade in a central system. | IsoMax70Text - Optional 0..1 |
| StatusTime | Specifies the time at which a status was assigned. | IsoISODateTime - Optional 0..1 |
| StatusOriginator | Identifies the party which assigned a status to a treasury trade. | IsoMax35Text - Optional 0..1 |
SettlementData building block
Provides information on the settlement of a trade. Provides information on the settlement of a treasury trade. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% SettlementData2 recursion level 0 with max 1
class SettlementData2{
CashFlowUniqueReference IsoMax35Text
SettlementSystemUniqueReference IsoMax35Text
SettlementAmount IsoActiveOrHistoricCurrencyAndAmount
SettledAmount IsoActiveOrHistoricCurrencyAndAmount
RejectedAmount IsoActiveOrHistoricCurrencyAndAmount
SettlementDate IsoISODate
SettlementStatus SettlementStatus1Code
ExtendedSettlementStatus IsoExtended350Code
SettlementStatusSubType IsoMax70Text
Suspended IsoYesNoIndicator
Pending IsoYesNoIndicator
}
SettlementData2 *-- "1..1" IPartyIdentification8Choice : PayingParty
SettlementData2 *-- "1..1" IPartyIdentification8Choice : ReceivingParty
%% IPartyIdentification8Choice recursion level 1 with max 1
%% IPartyIdentification8Choice recursion level 1 with max 1
SettlementData2 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| CashFlowUniqueReference | Unique reference supplied by the trade processing system. | IsoMax35Text - Optional 0..1 |
| SettlementSystemUniqueReference | Unique reference assigned by a settlement system. | IsoMax35Text - Optional 0..1 |
| SettlementAmount | Original amount which should be settled. This information should be provided when the trade is partially settled or when the settlement is rejected. | IsoActiveOrHistoricCurrencyAndAmount - Required 1..1 |
| SettledAmount | Funds which the trading side is expected to receive. | IsoActiveOrHistoricCurrencyAndAmount - Optional 0..1 |
| RejectedAmount | Amount that cannot be settled by a settlement system. | IsoActiveOrHistoricCurrencyAndAmount - Optional 0..1 |
| PayingParty | Specifies the party that pays the settlement amount. | IPartyIdentification8Choice - Required 1..1 |
| ReceivingParty | Specifies the party that receives the settlement amount. | IPartyIdentification8Choice - Required 1..1 |
| SettlementDate | Date on which the settlement is due to settle. | IsoISODate - Required 1..1 |
| SettlementStatus | Specifies the status of a settlement eg rejected, settled or awaiting authorisation. | SettlementStatus1Code - Required 1..1 |
| ExtendedSettlementStatus | Description of the status of the settlement of a trade when no coded form is available. | IsoExtended350Code - Required 1..1 |
| SettlementStatusSubType | Additional information about the cause of the rejection of a settlement. | IsoMax70Text - Optional 0..1 |
| Suspended | Cash settlement is suspended. | IsoYesNoIndicator - Required 1..1 |
| Pending | Cash settlement is pending. | IsoYesNoIndicator - Required 1..1 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the NonDeliverableForwardNotificationV02 implementation follows a specific implementaiton pattern. First of all, NonDeliverableForwardNotificationV02 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, NonDeliverableForwardNotificationV02Document implements IOuterDocument. Because NonDeliverableForwardNotificationV02 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type NonDeliverableForwardNotificationV02.
classDiagram
class IOuterRecord
NonDeliverableForwardNotificationV02 --|> IOuterRecord : Implements
NonDeliverableForwardNotificationV02Document --|> IOuterDocument~NonDeliverableForwardNotificationV02~ : Implements
class IOuterDocument~NonDeliverableForwardNotificationV02~ {
NonDeliverableForwardNotificationV02 Message
}
Document wrapper for serialization
The only real purpose NonDeliverableForwardNotificationV02Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:trea.007.001.02’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using NonDeliverableForwardNotificationV02.ToDocument() method. The returned NonDeliverableForwardNotificationV02Document value will serialize correctly according to ISO 20022 standards.
classDiagram
NonDeliverableForwardNotificationV02Document *-- NonDeliverableForwardNotificationV02 : 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:trea.007.001.02">
<NDFNtfctnV02>
<TradgSdId>
<!-- TradingSideIdentification inner content -->
</TradgSdId>
<CtrPtySdId>
<!-- CounterpartySideIdentification inner content -->
</CtrPtySdId>
<OpngData>
<!-- OpeningData inner content -->
</OpngData>
<ValtnData>
<!-- ValuationData inner content -->
</ValtnData>
<TradInfAndSts>
<!-- TradeInformationAndStatus inner content -->
</TradInfAndSts>
<SttlmData>
<!-- SettlementData inner content -->
</SttlmData>
</NDFNtfctnV02>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_URegMNE8Ed-BzquC8wXy7w_1248981968"
name="NonDeliverableForwardNotificationV02"
definition="Scope
The NonDeliverableForwardNotification message is sent by a central system to a participant to provide details of a non deliverable forward trade.
Usage
The notification is sent by a central settlement system to the two trading parties after it has received create, amend or cancel messages from both. The message may also contain information on the settlement of the trade."
registrationStatus="Registered"
messageSet="_wRx2x02rEeG_I4xRYCA_7g"
xmlTag="NDFNtfctnV02"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_URegMdE8Ed-BzquC8wXy7w_942299240"
name="TradingSideIdentification"
definition="Specifies the trading side of the non deliverable trade which is reported."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TradgSdId"
complexType="_PdKWsdp-Ed-ak6NoX_4Aeg_-1580495666" />
<messageBuildingBlock
xmi:id="_URegMtE8Ed-BzquC8wXy7w_945996128"
name="CounterpartySideIdentification"
definition="Specifies the counterparty of the non deliverable trade which is reported."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="CtrPtySdId"
complexType="_PdKWsdp-Ed-ak6NoX_4Aeg_-1580495666" />
<messageBuildingBlock
xmi:id="_URegM9E8Ed-BzquC8wXy7w_159065050"
name="OpeningData"
definition="Set of data specified for the opening of a non deliverable trade."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="OpngData"
complexType="_U8POidp-Ed-ak6NoX_4Aeg_328638139" />
<messageBuildingBlock
xmi:id="_URegNNE8Ed-BzquC8wXy7w_1474183734"
name="ValuationData"
definition="Set of data specified for the valuation of a non deliverable trade."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="ValtnData"
complexType="_THtV2Np-Ed-ak6NoX_4Aeg_855669497" />
<messageBuildingBlock
xmi:id="_URegNdE8Ed-BzquC8wXy7w_1332886078"
name="TradeInformationAndStatus"
definition="Provides information on the status of a trade in a central system."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TradInfAndSts"
complexType="_Q7Ma8dp-Ed-ak6NoX_4Aeg_-931990425" />
<messageBuildingBlock
xmi:id="_URoRMNE8Ed-BzquC8wXy7w_941311999"
name="SettlementData"
definition="Provides information on the settlement of a trade."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="SttlmData"
complexType="_TJMjldp-Ed-ak6NoX_4Aeg_1219011122" />
<messageDefinitionIdentifier
businessArea="trea"
messageFunctionality="007"
flavour="001"
version="02" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.