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.