TradeStatusReportV01

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.