UndertakingAmendmentV01

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.