UndertakingIssuanceV01

tsrv.001.001.01

The UndertakingIssuance message is sent (and is thus issued) by the party issuing the undertaking to the beneficiary. The message may be sent either to the beneficiary directly or via an advising party. The undertaking could be a demand guarantee, standby letter of credit, or counter-undertaking (counter-guarantee or counter-standby). It contains details on the applicable rules, expiry date, the amount, required documents, and terms and conditions of the undertaking. The message constitutes an operative financial instrument. Under the United Nations Convention on Independent Guarantees and Stand-by Letters of Credit (http://www.uncitral.org), 1996, Article 2, “an undertaking is an independent commitment, known in international practice as an independent guarantee or as a standby letter of credit, given by a bank or other institution or person (‘guarantor/issuer’) to pay to the beneficiary a certain or determinable amount upon simple demand or upon demand accompanied by other documents, in conformity with the terms and any documentary conditions of the undertaking, indicating, or from which it is to be inferred, that payment is due because of a default in the performance of an obligation, or because of another contingency, or for money borrowed or advanced, or on account of any mature indebtedness undertaken by the principal/applicant or another person”.

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
%% UndertakingIssuanceV01 recursion level 0 with max 0
class UndertakingIssuanceV01{
    BankToBeneficiaryInformation IsoMax2000Text
    BankToBankInformation IsoMax2000Text
}
UndertakingIssuanceV01 *-- "1..1" Undertaking3 : UndertakingIssuanceDetails
UndertakingIssuanceV01 *-- "0..1" PartyAndSignature2 : DigitalSignature
  

Now, we will zero-in one-by-one on each of these building blocks.

UndertakingIssuanceDetails building block

Independent undertaking, such as a demand guarantee or standby letter of credit, that provides financial assurance, to be collected on the presentation of documents that comply with its terms and conditions. Independent undertaking, such as a demand guarantee or standby letter of credit, that provides financial assurance, to be honoured on the presentation of documents that comply with its terms and conditions. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% Undertaking3 recursion level 0 with max 1
class Undertaking3{
    Identification IsoMax35Text
    Name UndertakingIssuanceName1Code
    IssuanceType IssuanceType1Code
    DateOfIssuance IsoISODate
    ConfirmationIndicator IsoYesNoIndicator
    ConfirmationPartyType ExternalTypeOfParty1Code
    MultipleDemandIndicator IsoYesNoIndicator
    PartialDemandIndicator IsoYesNoIndicator
    ConfirmationChargesPayableBy ExternalTypeOfParty1Code
    TransferChargesPayableBy ExternalTypeOfParty1Code
    TransferIndicator IsoYesNoIndicator
    AdditionalInformation IsoMax2000Text
}
Undertaking3 *-- "0..1" IUndertakingType1Choice : Type
Undertaking3 *-- "0..0" PartyIdentification43 : Applicant
Undertaking3 *-- "1..1" PartyIdentification43 : Issuer
Undertaking3 *-- "1..0" PartyIdentification43 : Beneficiary
Undertaking3 *-- "0..1" PostalAddress12 : PlaceOfIssue
Undertaking3 *-- "0..1" PartyIdentification43 : AdvisingParty
Undertaking3 *-- "0..1" PartyIdentification43 : SecondAdvisingParty
Undertaking3 *-- "1..1" UndertakingAmount1 : UndertakingAmount
Undertaking3 *-- "1..1" ExpiryDetails1 : ExpiryDetails
Undertaking3 *-- "0..0" PartyAndType1 : AdditionalParty
Undertaking3 *-- "1..1" GovernanceRules1 : GovernanceRulesAndLaw
Undertaking3 *-- "0..0" UnderlyingTradeTransaction1 : UnderlyingTransaction
Undertaking3 *-- "0..1" Presentation1 : PresentationDetails
Undertaking3 *-- "1..0" Narrative1 : UndertakingTermsAndConditions
Undertaking3 *-- "0..0" AutomaticVariation1 : AutomaticAmountVariation
Undertaking3 *-- "0..1" CommunicationChannel1 : DeliveryChannel
Undertaking3 *-- "0..0" Document9 : EnclosedFile
Undertaking3 *-- "0..1" Undertaking4 : RequestedLocalUndertaking
%% IUndertakingType1Choice recursion level 1 with max 1
%% 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
%% 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
%% PostalAddress12 recursion level 1 with max 1
class PostalAddress12{
    TownName IsoMax35Text
    CountrySubDivision IsoMax35Text
    Country CountryCode
}
%% 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
%% UndertakingAmount1 recursion level 1 with max 1
class UndertakingAmount1{
    Amount IsoActiveCurrencyAndAmount
    PlusTolerance IsoPercentageRate
    AdditionalInformation IsoMax2000Text
}
%% ExpiryDetails1 recursion level 1 with max 1
class ExpiryDetails1{
    AdditionalExpiryInformation IsoMax2000Text
}
ExpiryDetails1 *-- "0..1" ExpiryTerms1 : ExpiryTerms
%% PartyAndType1 recursion level 1 with max 1
PartyAndType1 *-- "1..1" IPartyType1Choice : Type
PartyAndType1 *-- "0..1" PartyIdentification43 : Party
%% GovernanceRules1 recursion level 1 with max 1
GovernanceRules1 *-- "1..1" IGovernanceIdentification1Choice : RuleIdentification
GovernanceRules1 *-- "0..1" Location1 : ApplicableLaw
GovernanceRules1 *-- "0..0" Location1 : Jurisdiction
%% UnderlyingTradeTransaction1 recursion level 1 with max 1
class UnderlyingTradeTransaction1{
    Identification IsoMax35Text
    TransactionDate IsoISODate
    TenderClosingDate IsoISODate
    TransactionAmount IsoActiveCurrencyAndAmount
    ContractAmountPercentage IsoPercentageRate
    AdditionalInformation IsoMax2000Text
}
UnderlyingTradeTransaction1 *-- "1..1" IUnderlyingTradeTransactionType1Choice : Type
%% Presentation1 recursion level 1 with max 1
class Presentation1{
    AdditionalInformation IsoMax2000Text
}
Presentation1 *-- "0..1" IPresentationMedium1Choice : Medium
Presentation1 *-- "0..1" IPlaceOrUnderConfirmationChoice1 : PlaceOfPresentationOrUnderConfirmationChoice
Presentation1 *-- "0..0" Document8 : Document
%% Narrative1 recursion level 1 with max 1
class Narrative1{
    Text IsoMax20000Text
}
Narrative1 *-- "0..1" INarrativeType1Choice : Type
%% AutomaticVariation1 recursion level 1 with max 1
class AutomaticVariation1{
    Identification IsoMax35Text
    Type VariationType1Code
    AdditionalInformation IsoMax2000Text
}
AutomaticVariation1 *-- "1..0" AmountAndTrigger1 : AmountAndTrigger
%% 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
%% Undertaking4 recursion level 1 with max 1
class Undertaking4{
    Name UndertakingName1Code
    Type ExternalUndertakingType1Code
    DateOfIssuance IsoISODate
    ConfirmationIndicator IsoYesNoIndicator
    MultipleDemandIndicator IsoYesNoIndicator
    PartialDemandIndicator IsoYesNoIndicator
    ConfirmationChargesPayableBy ExternalTypeOfParty1Code
    TransferChargesPayableBy ExternalTypeOfParty1Code
    TransferIndicator IsoYesNoIndicator
    AdditionalInformation IsoMax2000Text
}
Undertaking4 *-- "1..0" PartyIdentification43 : Applicant
Undertaking4 *-- "1..0" PartyIdentification43 : Beneficiary
Undertaking4 *-- "0..1" PartyIdentification43 : AdvisingParty
Undertaking4 *-- "0..1" PartyIdentification43 : SecondAdvisingParty
Undertaking4 *-- "1..1" UndertakingAmount1 : LocalUndertakingAmount
Undertaking4 *-- "1..1" ExpiryDetails1 : ExpiryDetails
Undertaking4 *-- "0..0" PartyAndType1 : AdditionalParty
Undertaking4 *-- "1..1" GovernanceRules1 : GovernanceRulesAndLaw
Undertaking4 *-- "0..0" UnderlyingTradeTransaction1 : UnderlyingTransaction
Undertaking4 *-- "0..1" Presentation1 : PresentationDetails
Undertaking4 *-- "1..1" UndertakingWording1 : UndertakingWording
Undertaking4 *-- "0..0" AutomaticVariation1 : AutomaticAmountVariation
Undertaking4 *-- "0..1" CommunicationChannel1 : DeliveryChannel
  

Undertaking3 members

Member name Description Data Type / Multiplicity
Identification Unique and unambiguous identifier assigned by the issuer to the undertaking, for example the guarantee or standby number. IsoMax35Text - Required 1..1
Name Name of undertaking such as, demand guarantee, standby letter of credit. UndertakingIssuanceName1Code - Required 1..1
Type Type of undertaking, for example, performance, payment. IUndertakingType1Choice - Optional 0..1
IssuanceType Type of the undertaking issuance. IssuanceType1Code - Required 1..1
Applicant Party named in the undertaking as the “applicant”. PartyIdentification43 - Unknown 0..0
Issuer Party that issues the undertaking (or counter-undertaking). PartyIdentification43 - Required 1..1
Beneficiary Party in whose favour the undertaking (or counter-undertaking) is issued. PartyIdentification43 - Unknown 1..0
DateOfIssuance Date on which the undertaking is issued. IsoISODate - Required 1..1
PlaceOfIssue Location which is to be regarded as the place from which the undertaking is issued. PostalAddress12 - Optional 0..1
AdvisingParty Party asked to advise the undertaking 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 undertaking. PartyIdentification43 - Optional 0..1
UndertakingAmount Details related to the amount of the undertaking. UndertakingAmount1 - Required 1..1
ExpiryDetails Details related to the expiry of the undertaking. ExpiryDetails1 - Required 1..1
ConfirmationIndicator Indicates whether or not the advising bank (confirmer) is requested to add its confirmation to the undertaking. IsoYesNoIndicator - Optional 0..1
ConfirmationPartyType Indicates the type of party requested to add its confirmation to the undertaking. ExternalTypeOfParty1Code - Optional 0..1
AdditionalParty Party, in addition to the other parties specified in the undertaking, that is also related to the undertaking. PartyAndType1 - Unknown 0..0
GovernanceRulesAndLaw Rules and laws governing the undertaking. GovernanceRules1 - Required 1..1
UnderlyingTransaction Details of the underlying transaction for which the undertaking is issued. UnderlyingTradeTransaction1 - Unknown 0..0
PresentationDetails Presentation details related to the undertaking. Presentation1 - Optional 0..1
UndertakingTermsAndConditions Terms and conditions of the undertaking. Narrative1 - Unknown 1..0
MultipleDemandIndicator Indicates that multiple demands are not permitted. IsoYesNoIndicator - Optional 0..1
PartialDemandIndicator Indicates that partial demands/drawings are not permitted. IsoYesNoIndicator - Optional 0..1
ConfirmationChargesPayableBy Indicates whether the applicant/obligor or beneficiary is responsible for payment of the confirmation charges. ExternalTypeOfParty1Code - Optional 0..1
TransferChargesPayableBy Indicates whether the applicant/obligor or beneficiary is responsible for payment of the transfer charges. ExternalTypeOfParty1Code - Optional 0..1
AutomaticAmountVariation Details related to a variation in amount that is automatically applied. AutomaticVariation1 - Unknown 0..0
DeliveryChannel Details of the communication channel. CommunicationChannel1 - Optional 0..1
TransferIndicator Indicates whether the undertaking is transferable. IsoYesNoIndicator - Optional 0..1
EnclosedFile Document or template enclosed in the undertaking directly related to the issued undertaking. Document9 - Unknown 0..0
AdditionalInformation Additional information related to the undertaking. IsoMax2000Text - Collection 0..5
RequestedLocalUndertaking Details of the local or ancillary undertaking requested to be issued by a local or other issuing institution. Undertaking4 - Optional 0..1

BankToBeneficiaryInformation building block

Additional information specific to the bank-to-beneficiary 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.

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 undertaking. 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 UndertakingIssuanceV01 implementation follows a specific implementaiton pattern. First of all, UndertakingIssuanceV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, UndertakingIssuanceV01Document implements IOuterDocument. Because UndertakingIssuanceV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type UndertakingIssuanceV01.

classDiagram
    class IOuterRecord
    UndertakingIssuanceV01 --|> IOuterRecord : Implements
    UndertakingIssuanceV01Document --|> IOuterDocument~UndertakingIssuanceV01~ : Implements
    class IOuterDocument~UndertakingIssuanceV01~ {
        UndertakingIssuanceV01 Message
     }
  

Document wrapper for serialization

The only real purpose UndertakingIssuanceV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:tsrv.001.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using UndertakingIssuanceV01.ToDocument() method. The returned UndertakingIssuanceV01Document value will serialize correctly according to ISO 20022 standards.

classDiagram
    UndertakingIssuanceV01Document *-- UndertakingIssuanceV01 : 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.001.001.01">
    <UdrtkgIssnc>
        <UdrtkgIssncDtls>
            <!-- UndertakingIssuanceDetails inner content -->
        </UdrtkgIssncDtls>
        <BkToBnfcryInf>
            <!-- BankToBeneficiaryInformation inner content -->
        </BkToBnfcryInf>
        <BkToBkInf>
            <!-- BankToBankInformation inner content -->
        </BkToBkInf>
        <DgtlSgntr>
            <!-- DigitalSignature inner content -->
        </DgtlSgntr>
    </UdrtkgIssnc>
</Document>

Data from ISO specification

This is the technical data from the specification document.

<messageDefinition
  xmi:id="_9faWgnltEeG7BsjMvd1mEw_256886753"
  name="UndertakingIssuanceV01"
  definition="The UndertakingIssuance message is sent (and is thus issued) by the party issuing the undertaking to the beneficiary. The message may be sent either to the beneficiary directly or via an advising party. The undertaking could be a demand guarantee, standby letter of credit, or counter-undertaking (counter-guarantee or counter-standby). It contains details on the applicable rules, expiry date, the amount, required documents, and terms and conditions of the undertaking. The message constitutes an operative financial instrument.&#xD;&#xA;Under the United Nations Convention on Independent Guarantees and Stand-by Letters of Credit (http://www.uncitral.org), 1996, Article 2, &quot;an undertaking is an independent commitment, known in international practice as an independent guarantee or as a standby letter of credit, given by a bank or other institution or person ('guarantor/issuer') to pay to the beneficiary a certain or determinable amount upon simple demand or upon demand accompanied by other documents, in conformity with the terms and any documentary conditions of the undertaking, indicating, or from which it is to be inferred, that payment is due because of a default in the performance of an obligation, or because of another contingency, or for money borrowed or advanced, or on account of any mature indebtedness undertaken by the principal/applicant or another person&quot;."
  registrationStatus="Registered"
  messageSet="_SiMuI9n1EeGEPsbnW6ebrw"
  xmlTag="UdrtkgIssnc"
  rootElement="Document"
  xmlns:xmi="http://www.omg.org/XMI">
  <constraint
    xmi:id="_xZ_fCBW8EeKtPMeuz5Qhfw"
    name="Applicant1Rule"
    definition="If IssuanceType is &quot;ISSU&quot; then Applicant must be present."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/Applicant[*]&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/IssuanceType&lt;/leftOperand&gt;&lt;rightOperand&gt;ISSU&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_xZ_fCxW8EeKtPMeuz5Qhfw"
    name="Applicant2Rule"
    definition="If IssuanceType is &quot;ISAD&quot; then Applicant must be present."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/Applicant[*]&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/IssuanceType&lt;/leftOperand&gt;&lt;rightOperand&gt;ISAD&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_xZ_fDhW8EeKtPMeuz5Qhfw"
    name="Applicant3Rule"
    definition="If IssuanceType is &quot;ISCO&quot; then Applicant must be present."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/Applicant[*]&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/IssuanceType&lt;/leftOperand&gt;&lt;rightOperand&gt;ISCO&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_xZ_fERW8EeKtPMeuz5Qhfw"
    name="Applicant4Rule"
    definition="If IssuanceType is &quot;CRQL&quot; then Applicant must not be present."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Absence&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/Applicant[*]&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/IssuanceType&lt;/leftOperand&gt;&lt;rightOperand&gt;CRQL&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_xZ_fFBW8EeKtPMeuz5Qhfw"
    name="Applicant5Rule"
    definition="If IssuanceType is &quot;QRQC&quot; then Applicant must not be present."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Absence&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/Applicant[*]&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/IssuanceType&lt;/leftOperand&gt;&lt;rightOperand&gt;QRQC&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_xZ_fFxW8EeKtPMeuz5Qhfw"
    name="Applicant6Rule"
    definition="If IssuanceType is &quot;CRQB&quot; then Applicant must not be present."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Absence&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/Applicant[*]&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/IssuanceType&lt;/leftOperand&gt;&lt;rightOperand&gt;CRQB&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_DsiCSBW9EeKtPMeuz5Qhfw"
    name="IssuanceType1Rule"
    definition="If IssuanceType is &quot;CRQL&quot; then LocalUndertakingDetails must be present."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/RequestedLocalUndertaking&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/IssuanceType&lt;/leftOperand&gt;&lt;rightOperand&gt;CRQL&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_DsiCSxW9EeKtPMeuz5Qhfw"
    name="IssuanceType2Rule"
    definition="If IssuanceType is &quot;QRQC&quot; then LocalUndertakingDetails must be present."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/RequestedLocalUndertaking&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/IssuanceType&lt;/leftOperand&gt;&lt;rightOperand&gt;CRQC&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_DsiCThW9EeKtPMeuz5Qhfw"
    name="IssuanceType3Rule"
    definition="If IssuanceType is &quot;CRQB&quot; then LocalUndertakingDetails must be present."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/RequestedLocalUndertaking&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/IssuanceType&lt;/leftOperand&gt;&lt;rightOperand&gt;CRQB&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_DsiCURW9EeKtPMeuz5Qhfw"
    name="IssuanceType4Rule"
    definition="If IssuanceType is &quot;ISSU&quot; then LocalUndertakingDetails must not be present."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Absence&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/RequestedLocalUndertaking&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/IssuanceType&lt;/leftOperand&gt;&lt;rightOperand&gt;ISSU&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_DsiCVBW9EeKtPMeuz5Qhfw"
    name="IssuanceType5Rule"
    definition="If IssuanceType is &quot;ISAD&quot; then LocalUndertakingDetails must not be present."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Absence&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/RequestedLocalUndertaking&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/IssuanceType&lt;/leftOperand&gt;&lt;rightOperand&gt;ISAD&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_DsiCVxW9EeKtPMeuz5Qhfw"
    name="IssuanceType6Rule"
    definition="If IssuanceType is &quot;ISCO&quot; then LocalUndertakingDetails must not be present."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Absence&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/RequestedLocalUndertaking&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/UndertakingIssuanceDetails/IssuanceType&lt;/leftOperand&gt;&lt;rightOperand&gt;ISCO&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <messageBuildingBlock
    xmi:id="_9faWg3ltEeG7BsjMvd1mEw_-1948679398"
    name="UndertakingIssuanceDetails"
    definition="Independent undertaking, such as a demand guarantee or standby letter of credit, that provides financial assurance, to be collected on the presentation of documents that comply with its terms and conditions."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="UdrtkgIssncDtls"
    complexType="_90kuMnltEeG7BsjMvd1mEw_-642295687" />
  <messageBuildingBlock
    xmi:id="_izALUBHpEeKdLJc0LFyn4w"
    name="BankToBeneficiaryInformation"
    definition="Additional information specific to the bank-to-beneficiary communication."
    registrationStatus="Provisionally Registered"
    maxOccurs="5"
    minOccurs="0"
    xmlTag="BkToBnfcryInf"
    simpleType="_YYn11dp-Ed-ak6NoX_4Aeg_2132907481" />
  <messageBuildingBlock
    xmi:id="_yNRl43_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="_9faWhHltEeG7BsjMvd1mEw_-2129518569"
    name="DigitalSignature"
    definition="Digital signature of the undertaking."
    registrationStatus="Provisionally Registered"
    minOccurs="0"
    xmlTag="DgtlSgntr"
    complexType="_k4nFNZKuEeGnRMFvqYmPBQ" />
  <messageDefinitionIdentifier
    businessArea="tsrv"
    messageFunctionality="001"
    flavour="001"
    version="01" />
</messageDefinition>

ISO Building Blocks

The following items are used as building blocks to construct this message.