tsrv.018.001.01
The TradeStatusReport message is exchanged between parties involved in the trade finance domain to report the transaction level status of a transaction previously received. It informs the sender about the positive or negative status of the referenced transaction, such as acceptance or rejection resulting from technical validation performed by the parser and/or front-office applications. It can be used, for example, to acknowledge receipt of a transaction, to report a syntactical error, to report an unrecognised digital signature, to indicate that further processing is pending, and to indicate that a transaction has been technically accepted for processing by the back-office application. Multiple TradeStatusReport messages may be progressively sent in response to the incremental processing of a single transaction.
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 %% TradeStatusReportV01 recursion level 0 with max 0 TradeStatusReportV01 *-- "1..1" TradeStatusReport1 : TradeStatusAdviceDetails TradeStatusReportV01 *-- "0..1" PartyAndSignature2 : DigitalSignature
Now, we will zero-in one-by-one on each of these building blocks.
TradeStatusAdviceDetails building block
Details of the trade status report. Details of the trade status report. For comparison, see the ISO20022 official specification
classDiagram direction tb %% TradeStatusReport1 recursion level 0 with max 1 class TradeStatusReport1{ Status UndertakingStatus1Code AdditionalInformation IsoMax35Text } TradeStatusReport1 *-- "1..1" OriginalMessage1 : OriginalMessageDetails TradeStatusReport1 *-- "0..0" StatusReasonInformation8 : StatusReason %% OriginalMessage1 recursion level 1 with max 1 class OriginalMessage1{ MessageDefinitionIdentifier IsoMax35Text BusinessMessageIdentifier IsoMax35Text CreationDate IsoISONormalisedDateTime CopyDuplicate CopyDuplicate1Code } OriginalMessage1 *-- "1..1" IParty9Choice : From OriginalMessage1 *-- "1..1" IParty9Choice : To %% StatusReasonInformation8 recursion level 1 with max 1 class StatusReasonInformation8{ AdditionalInformation IsoMax105Text } StatusReasonInformation8 *-- "0..1" PartyIdentification32 : Originator StatusReasonInformation8 *-- "0..1" IStatusReason6Choice : Reason
TradeStatusReport1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
OriginalMessageDetails | Information concerning the original message to which the TradeStatusReport is sent in response. | OriginalMessage1 - Required 1..1 |
Status | Specifies the processing status of the original message. | UndertakingStatus1Code - Required 1..1 |
StatusReason | Set of elements used to provide detailed information on the status reason. | StatusReasonInformation8 - Unknown 0..0 |
AdditionalInformation | Additional information related to the report. | IsoMax35Text - Optional 0..1 |
DigitalSignature building block
Digital signature of the report. Entity involved in an activity. For comparison, see the ISO20022 official specification
classDiagram direction tb %% PartyAndSignature2 recursion level 0 with max 1 PartyAndSignature2 *-- "1..1" PartyIdentification43 : Party PartyAndSignature2 *-- "1..1" ProprietaryData3 : Signature %% PartyIdentification43 recursion level 1 with max 1 class PartyIdentification43{ Name IsoMax140Text CountryOfResidence CountryCode } PartyIdentification43 *-- "0..1" PostalAddress6 : PostalAddress PartyIdentification43 *-- "0..1" IParty11Choice : Identification PartyIdentification43 *-- "0..1" ContactDetails2 : ContactDetails %% ProprietaryData3 recursion level 1 with max 1 ProprietaryData3 *-- "1..1" SkipProcessing : Any
PartyAndSignature2 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Party | Entity involved in an activity. | PartyIdentification43 - Required 1..1 |
Signature | Signature of a party. | ProprietaryData3 - Required 1..1 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the TradeStatusReportV01 implementation follows a specific implementaiton pattern. First of all, TradeStatusReportV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, TradeStatusReportV01Document implements IOuterDocument. Because TradeStatusReportV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type TradeStatusReportV01.
classDiagram class IOuterRecord TradeStatusReportV01 --|> IOuterRecord : Implements TradeStatusReportV01Document --|> IOuterDocument~TradeStatusReportV01~ : Implements class IOuterDocument~TradeStatusReportV01~ { TradeStatusReportV01 Message }
Document wrapper for serialization
The only real purpose TradeStatusReportV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:tsrv.018.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using TradeStatusReportV01.ToDocument() method. The returned TradeStatusReportV01Document value will serialize correctly according to ISO 20022 standards.
classDiagram TradeStatusReportV01Document *-- TradeStatusReportV01 : 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:tsrv.018.001.01">
<TradStsRpt>
<TradStsAdvcDtls>
<!-- TradeStatusAdviceDetails inner content -->
</TradStsAdvcDtls>
<DgtlSgntr>
<!-- DigitalSignature inner content -->
</DgtlSgntr>
</TradStsRpt>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_9hy8JXltEeG7BsjMvd1mEw_-944920037"
name="TradeStatusReportV01"
definition="The TradeStatusReport message is exchanged between parties involved in the trade finance domain to report the transaction level status of a transaction previously received. It informs the sender about the positive or negative status of the referenced transaction, such as acceptance or rejection resulting from technical validation performed by the parser and/or front-office applications. It can be used, for example, to acknowledge receipt of a transaction, to report a syntactical error, to report an unrecognised digital signature, to indicate that further processing is pending, and to indicate that a transaction has been technically accepted for processing by the back-office application. Multiple TradeStatusReport messages may be progressively sent in response to the incremental processing of a single transaction."
registrationStatus="Registered"
messageSet="_SiMuI9n1EeGEPsbnW6ebrw"
xmlTag="TradStsRpt"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_9hy8JnltEeG7BsjMvd1mEw_-979867813"
name="TradeStatusAdviceDetails"
definition="Details of the trade status report."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TradStsAdvcDtls"
complexType="_-C4P-HltEeG7BsjMvd1mEw_2067370861" />
<messageBuildingBlock
xmi:id="_9hy8J3ltEeG7BsjMvd1mEw_-480119583"
name="DigitalSignature"
definition="Digital signature of the report."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="DgtlSgntr"
complexType="_k4nFNZKuEeGnRMFvqYmPBQ" />
<messageDefinitionIdentifier
businessArea="tsrv"
messageFunctionality="018"
flavour="001"
version="01" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.