tsrv.005.001.01
The UndertakingAmendment message is sent (and is thus issued) by the party that issued the undertaking. The message may be sent either directly to the beneficiary or via an advising party. The proposed undertaking amendment could be to a demand guarantee, standby letter of credit, or counter-undertaking (counter-guarantee or counter-standby). The message provides details on proposed changes to the undertaking, for example, to the expiry date, the amount, and terms and conditions of the undertaking. It may also be used to propose the termination or cancellation of the undertaking. Under practice and law, this communication binds the party issuing it. The message constitutes an operative financial instrument.
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 %% UndertakingAmendmentV01 recursion level 0 with max 0 class UndertakingAmendmentV01{ BankToBankInformation IsoMax2000Text } UndertakingAmendmentV01 *-- "1..1" Amendment1 : UndertakingAmendmentDetails UndertakingAmendmentV01 *-- "0..1" PartyAndSignature2 : DigitalSignature
Now, we will zero-in one-by-one on each of these building blocks.
UndertakingAmendmentDetails building block
Details related to the proposed undertaking amendment. Details of the amendment. For comparison, see the ISO20022 official specification
classDiagram direction tb %% Amendment1 recursion level 0 with max 1 class Amendment1{ SequenceNumber IsoMax4AlphaNumericText DateOfIssuance IsoISODate BeneficiaryConsentRequestIndicator IsoYesNoIndicator AdditionalInformation IsoMax2000Text } Amendment1 *-- "1..1" Undertaking7 : UndertakingIdentification Amendment1 *-- "0..1" PartyIdentification43 : AdvisingParty Amendment1 *-- "0..1" PartyIdentification43 : SecondAdvisingParty Amendment1 *-- "0..1" UndertakingTermination3 : TerminationDetails Amendment1 *-- "0..1" UndertakingAmount2 : UndertakingAmountAdjustment Amendment1 *-- "0..1" ExpiryDetails1 : NewExpiryDetails Amendment1 *-- "0..1" PartyIdentification43 : NewBeneficiary Amendment1 *-- "0..0" Narrative1 : NewUndertakingTermsAndConditions Amendment1 *-- "0..1" Undertaking11 : LocalUndertaking Amendment1 *-- "0..1" CommunicationChannel1 : DeliveryChannel Amendment1 *-- "0..0" Document9 : EnclosedFile %% Undertaking7 recursion level 1 with max 1 class Undertaking7{ Identification IsoMax35Text } Undertaking7 *-- "1..1" PartyIdentification43 : Issuer %% 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 %% 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 %% UndertakingTermination3 recursion level 1 with max 1 class UndertakingTermination3{ EffectiveDate IsoISODate AdditionalInformation IsoMax2000Text } UndertakingTermination3 *-- "0..1" ITerminationReason1Choice : Reason %% UndertakingAmount2 recursion level 1 with max 1 class UndertakingAmount2{ AdditionalInformation IsoMax2000Text } UndertakingAmount2 *-- "1..1" IAmount1Choice : AmountChoice %% ExpiryDetails1 recursion level 1 with max 1 class ExpiryDetails1{ AdditionalExpiryInformation IsoMax2000Text } ExpiryDetails1 *-- "0..1" ExpiryTerms1 : ExpiryTerms %% 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 %% Narrative1 recursion level 1 with max 1 class Narrative1{ Text IsoMax20000Text } Narrative1 *-- "0..1" INarrativeType1Choice : Type %% Undertaking11 recursion level 1 with max 1 Undertaking11 *-- "0..1" UndertakingAmount2 : NewUndertakingAmount Undertaking11 *-- "0..1" ExpiryDetails1 : NewExpiryDetails Undertaking11 *-- "0..1" PartyIdentification43 : NewBeneficiary Undertaking11 *-- "0..1" Narrative1 : NewUndertakingTermsAndConditions Undertaking11 *-- "0..1" CommunicationChannel1 : DeliveryChannel %% CommunicationChannel1 recursion level 1 with max 1 class CommunicationChannel1{ Method ExternalChannel1Code DeliverToName IsoMax140Text } CommunicationChannel1 *-- "1..1" IPartyType1Choice : DeliverToPartyType CommunicationChannel1 *-- "0..1" PostalAddress6 : DeliverToAddress %% Document9 recursion level 1 with max 1 class Document9{ Identification IsoMax35Text Enclosure IsoMax2MBBinary } Document9 *-- "1..1" IUndertakingDocumentType1Choice : Type Document9 *-- "0..1" IDocumentFormat1Choice : Format Document9 *-- "0..1" PartyAndSignature2 : DigitalSignature
Amendment1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
SequenceNumber | Sequence number assigned by the issuer to each proposed amendment of the undertaking. | IsoMax4AlphaNumericText - Required 1..1 |
DateOfIssuance | Date on which the proposed amendment is issued. | IsoISODate - Required 1..1 |
UndertakingIdentification | Identification of the undertaking. | Undertaking7 - Required 1..1 |
AdvisingParty | Party asked to advise the proposed amendment to the beneficiary or to another advising party at the request of the issuer. | PartyIdentification43 - Optional 0..1 |
SecondAdvisingParty | Additional party asked to advise the proposed amendment. | PartyIdentification43 - Optional 0..1 |
TerminationDetails | Details concerning the requested termination of the undertaking. | UndertakingTermination3 - Optional 0..1 |
UndertakingAmountAdjustment | Requested increase or decrease to the amount of for the undertaking. | UndertakingAmount2 - Optional 0..1 |
NewExpiryDetails | Requested new expiry terms for the undertaking. | ExpiryDetails1 - Optional 0..1 |
NewBeneficiary | Requested new beneficiary of the undertaking. | PartyIdentification43 - Optional 0..1 |
NewUndertakingTermsAndConditions | Requested new terms and conditions of the undertaking. | Narrative1 - Unknown 0..0 |
LocalUndertaking | Amendment details related to the local undertaking. | Undertaking11 - Optional 0..1 |
BeneficiaryConsentRequestIndicator | Indicates whether or not consent is requested from the beneficiary. | IsoYesNoIndicator - Optional 0..1 |
DeliveryChannel | Communication channel for delivery of the proposed amendment. | CommunicationChannel1 - Optional 0..1 |
EnclosedFile | Document or template enclosed in the proposed amendment. | Document9 - Unknown 0..0 |
AdditionalInformation | Additional information related to the proposed amendment. | IsoMax2000Text - Collection 0..5 |
BankToBankInformation building block
Additional information specific to the bank-to-bank communication. Specifies a character string with a maximum length of 2000 characters. For comparison, see the ISO20022 official specification This message is declared as Max2000Text in the ISO specification. In our implementation, it is represented in source code as IsoMax2000Text. Due to global using directives, it is treated as a System.String by the compiler and runtime.
DigitalSignature building block
Digital signature of the proposed undertaking amendment. 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 UndertakingAmendmentV01 implementation follows a specific implementaiton pattern. First of all, UndertakingAmendmentV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, UndertakingAmendmentV01Document implements IOuterDocument. Because UndertakingAmendmentV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type UndertakingAmendmentV01.
classDiagram class IOuterRecord UndertakingAmendmentV01 --|> IOuterRecord : Implements UndertakingAmendmentV01Document --|> IOuterDocument~UndertakingAmendmentV01~ : Implements class IOuterDocument~UndertakingAmendmentV01~ { UndertakingAmendmentV01 Message }
Document wrapper for serialization
The only real purpose UndertakingAmendmentV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:tsrv.005.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using UndertakingAmendmentV01.ToDocument() method. The returned UndertakingAmendmentV01Document value will serialize correctly according to ISO 20022 standards.
classDiagram UndertakingAmendmentV01Document *-- UndertakingAmendmentV01 : 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.005.001.01">
<UdrtkgAmdmnt>
<UdrtkgAmdmntDtls>
<!-- UndertakingAmendmentDetails inner content -->
</UdrtkgAmdmntDtls>
<BkToBkInf>
<!-- BankToBankInformation inner content -->
</BkToBkInf>
<DgtlSgntr>
<!-- DigitalSignature inner content -->
</DgtlSgntr>
</UdrtkgAmdmnt>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_9gAzdnltEeG7BsjMvd1mEw_-1766556993"
name="UndertakingAmendmentV01"
definition="The UndertakingAmendment message is sent (and is thus issued) by the party that issued the undertaking. The message may be sent either directly to the beneficiary or via an advising party. The proposed undertaking amendment could be to a demand guarantee, standby letter of credit, or counter-undertaking (counter-guarantee or counter-standby). The message provides details on proposed changes to the undertaking, for example, to the expiry date, the amount, and terms and conditions of the undertaking. It may also be used to propose the termination or cancellation of the undertaking. Under practice and law, this communication binds the party issuing it. The message constitutes an operative financial instrument."
registrationStatus="Registered"
messageSet="_SiMuI9n1EeGEPsbnW6ebrw"
xmlTag="UdrtkgAmdmnt"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_9gAzd3ltEeG7BsjMvd1mEw_-531936320"
name="UndertakingAmendmentDetails"
definition="Details related to the proposed undertaking amendment."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="UdrtkgAmdmntDtls"
complexType="_9-jwoHltEeG7BsjMvd1mEw_-951875342" />
<messageBuildingBlock
xmi:id="_825P83_6EeGOn4dfTT_QdQ"
name="BankToBankInformation"
definition="Additional information specific to the bank-to-bank communication."
registrationStatus="Provisionally Registered"
maxOccurs="5"
minOccurs="0"
xmlTag="BkToBkInf"
simpleType="_YYn11dp-Ed-ak6NoX_4Aeg_2132907481" />
<messageBuildingBlock
xmi:id="_9gAzeHltEeG7BsjMvd1mEw_1718202663"
name="DigitalSignature"
definition="Digital signature of the proposed undertaking amendment."
registrationStatus="Provisionally Registered"
minOccurs="0"
xmlTag="DgtlSgntr"
complexType="_k4nFNZKuEeGnRMFvqYmPBQ" />
<messageDefinitionIdentifier
businessArea="tsrv"
messageFunctionality="005"
flavour="001"
version="01" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.