ISO 20022 Business Application Header Message Usage Guide: Date: 2020-10-22
ISO 20022 Business Application Header Message Usage Guide: Date: 2020-10-22
ISO 20022 Business Application Header Message Usage Guide: Date: 2020-10-22
Date: 2020-10-22
1.3 Terminology
An ISO 20022 Message together with its Business Application Header forms a Business Message.
is from a business point of view the same as a transport scenario like this:
because the technical middle man is forwarding the message, without changing the contents.
However, as soon as a Business Application is in the middle (i.e. an Application that processes the
Business Message), it is identified in the BAH of the first message as the recipient, and in the BAH of
the second message as the sender, and therefore sends a different business message.
Although the BAH is not the transport header, data in the BAH, as data in the ISO 20022 message
itself, can be used by transport applications to determine the routing header since it does contain the
business sender, receiver and document details. It can also be used by the business applications to
determine the appropriate process to perform on the business message.
Refers to the
envelope
A valid XML instance would be structured as follows: schema
<?xml version="1.0" encoding="UTF-8"?>
Refers to the ISO
<n1:RequestPayload xmlns:n1="SWIFTNetBusinessEnvelope"
20022 Business
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Application Header
xmlns:n2="urn:iso:std:iso:20022:tech:xsd:head.001.001.02"
xsi:schemaLocation="SWIFTNetBusinessEnvelope AppHdrBizMsg.xsd">
<n2:AppHdr xmlns:n2="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
...
</n2:AppHdr>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08">
...
</Document>
</n1:RequestPayload>
Refers to the ISO
20022 Message
In the case of ISO 20022 messages without duplicated BAH elements, message deployment without
the BAH can produce challenging situations (i.e. bottom right scenario in above table).
In these scenarios, essential BAH elements like the unique message identifier (BAH element:
BusinessMessageIdentifier) or the message creation date (BAH element: CreationDate) cannot be
conveyed through the ISO 20022 message, nor through the BAH.
If for certain implementation communities the deployment of the BAH does not constitute a valid
choice, implementation communities are requested to get in contact with the ISO 20022 Registration
Authority (RA) for advice on how to proceed in order to employ a fully ISO 20022-compliant
implementation (e-mail: [email protected]).
Implementation communities may have alternative means to carry this information through non-ISO
20022 mechanisms (e.g. a network header). It should be noted that, in case of non-ISO 20022
mechanisms, not all scenarios covered in this BAH MUG could be fully implemented. For further
information, see chapter 2.3.
1
ISO 20022 messages without duplicated BAH elements are labelled, in the Business domain
catalogues on the ISO 20022 web-site, with the sentence “The message definitions below are intended
for use with the Business Application Header.”.
Above is the most common, vanilla scenario, i.e. no special features of this BAH are used.
When there is a 'middle man' between the two Business Applications, it is the function/role of that
middle man that will determine whether the Business Message from the middle man to Business
Application B is a new Business Message.
If the middle man only forwards the Business Message, i.e. it does not process the Business Message,
then only the transport header changes, but the Business Message (with its BAH) remains the same.
MessageElement Usage
Name
CharacterSet
From Id of BusinessApplication A
To Id of BusinessApplication B
BusinessMessageIdentifier Identification of the BusinessMessage A
MessageDefinitionIdentifier Identification of the MessageDefinition
BusinessService
MarketPractice
CreationDate Date (and time) of the creation of this
BusinessApplicationHeader (and BusinessMessage)
BusinessProcessingDate
CopyDuplicate
PossibleDuplicate
Priority
Signature
Related
EXAMPLE
A Securities Settlement platform serves as technical middle man:
<AppHdr>
<Fr>System Member A</Fr>
<To>System Member B</To>
…
<BizSvc>SnR</BizSvc>
…
</AppHdr>
EXAMPLE
1 John Doe at Bank A prepares the payments;
2 The same person creates an activity report on September 28th at 09:00AM UTC;
3 The same person signs it at 9:50AM UTC with the signature in the BAH;
4 The BAH contains the CreationDate of the BusinessMessage, the Document contains the
CreationDate of the activity report.
<AppHdr> (3)
<CreDt>2009-09-28T09:50:00Z</CreDt>
</AppHdr>
<Document>
<ActvtyRpt>… (2)
<RptId>
<CrDtTm>2009-09-28T09:00:00Z</CrDtTm>
</RptId>
</ ActvtyRpt >
</Document>
In this case, each additional character set will be specified in the CharacterSet MessageElement,
separated by a semicolon.
All relevant Text based Datatypes may then contain characters belonging to the character sets
specified in this MessageElement.
Some Text based DataTypes may be further constrained than what is specified here in which case the
character set restrictions specified in the BAH do not apply.
MessageElement Usage
Name
CharacterSet Character set 1; Character set 2
From Id of BusinessApplication A
To Id of BusinessApplication B
BusinessMessageIdentifier Identification of the BusinessMessage A
MessageDefinitionIdentifier Identification of the MessageDefinition
BusinessService
MarketPractice
CreationDate Date (and time) of the creation of this BusinessApplicationHeader
(and BusinessMessage)
BusinessProcessingDate
CopyDuplicate
PossibleDuplicate
Priority
Signature
Related
This enables the Receiver to unambiguously relate the BusinessMessage to the BusinessService in
which it is used.
Normally this MessageElement is used when this BusinessMessage is used in multiple services.
It can be the service identified by the service provider or a bilaterally / multilaterally agreed service.
Following MessageElements must be used:
MessageElement Usage
Name
CharacterSet
From Id of BusinessApplication A
To Id of BusinessApplication B
BusinessMessageIdentifier Identification of the BusinessMessage A
MessageDefinitionIdentifier Identification of the MessageDefinition
BusinessService Identification of the Service within which this Message is
exchanged
MarketPractice
CreationDate Date (and time) of the creation of this BusinessApplicationHeader
(and BusinessMessage)
BusinessProcessingDate
CopyDuplicate
PossibleDuplicate
Priority
Signature
Related
MessageElement Usage
Name
CharacterSet
From Id of BusinessApplication A
To Id of BusinessApplication B
BusinessMessageIdentifier Identification of the BusinessMessage A
MessageDefinitionIdentifier Identification of the MessageDefinition
BusinessService
MarketPractice The market practice to which the message conforms
CreationDate Date (and time) of the creation of this BusinessApplicationHeader
(and BusinessMessage)
BusinessProcessingDate
CopyDuplicate
PossibleDuplicate
Priority
Signature
Related
<AppHdr>
<Fr>Securities Settlement Platform</Fr>
<To>System Member</Fr>
…
<MktPrctc>
<Regy>MyStandards</Regy>
<Id>urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66</Id>
</MktPrctc>
…
</AppHdr>
<Document>
<LqdtyCdtTfr>…..</LqdtyCdtTfr>
</Document>
MessageElement Usage
Name
CharacterSet
From Id of BusinessApplication A
To Id of BusinessApplication B
BusinessMessageIdentifier Identification of the BusinessMessage A
MessageDefinitionIdentifier Identification of the MessageDefinition
BusinessService
MarketPractice
CreationDate Date (and time) of the creation of this BusinessApplicationHeader
(and BusinessMessage)
BusinessProcessingDate Processing date and time indicated by the sender for the
receiver of the business message
CopyDuplicate
PossibleDuplicate
Priority
Signature
Related
<AppHdr>
<Fr>Securities Settlement Platform</Fr>
<To>System Member</To>
…
<CreDt>2020-09-25T09:00:00Z</CreDt>
<BizPrcgDt>2020-09-28T09:00:00Z</BizPrcgDt>
…
</AppHdr>
<Document>
<LqdtyCdtTfr>...</LqdtyCdtTfr>
</Document>
MessageElement Usage
Name
CharacterSet
From Id of BusinessApplication A
To Id of BusinessApplication B
BusinessMessageIdentifier Identification of the BusinessMessage A
MessageDefinitionIdentifier Identification of the MessageDefinition
BusinessService
MarketPractice
CreationDate Date (and time) of the creation of this BusinessApplicationHeader
(and BusinessMessage)
BusinessProcessingDate
CopyDuplicate COPY
PossibleDuplicate
Priority
Signature
Related Copy of the relevant MessageElements of the
BusinessApplicationHeader of the original BusinessMessage
sent to Business Application B
MessageElement Usage
Name
CharacterSet
From Id of BusinessApplication A
To Id of BusinessApplication B
BusinessMessageIdentifier Identification of the BusinessMessage A
MessageDefinitionIdentifier Identification of the MessageDefinition
BusinessService
MarketPractice
CreationDate Date (and time) of the creation of this BusinessApplicationHeader
(and BusinessMessage)
BusinessProcessingDate
CopyDuplicate DUPL
PossibleDuplicate
Priority
Signature
Related Copy of the relevant MessageElements of the
BusinessApplicationHeader of the original BusinessMessage
sent to Business Application B
EXAMPLE
Upon request, the Securities Settlement platform resends BusinessMessage1
<AppHdr>
<Fr>Securities Settlement Platform</Fr>
<To>System Member</To>
…
<CpyDplct>DUPL</CpyDplct>
<Rltd>relev ant MessageElement s of original BA H</Rltd>
…
</AppHdr>
<Document>
MessageElement Usage
Name
CharacterSet
From Id of BusinessApplication A
To Id of BusinessApplication B
BusinessMessageIdentifier Identification of the BusinessMessage A
MessageDefinitionIdentifier Identification of the MessageDefinition
BusinessService
MarketPractice
CreationDate Date (and time) of the creation of this BusinessApplicationHeader
(and BusinessMessage)
BusinessProcessingDate
CopyDuplicate CODU
PossibleDuplicate
Priority
Signature
Related Copy of the relevant MessageElements of the
BusinessApplicationHeader of the copy BusinessMessage
sent to Business Application B
PossibleDuplicate is used when the Business Application that sent the message has not received any
reply (because of technical or other problems).
It will therefore resend THE SAME BusinessMessage, adding the relevant header elements from the
original BusinessMessage in the 'Related' MessageElement.
If the receiver did receive the original BusinessMessage identified in 'Related', then this
BusinessMessage MUST BE IGNORED.
If the receiver did NOT receive the original BusinessMessage, then it must treat this BusinessMessage
as if it was the original BusinessMessage.
MessageElement Usage
Name
CharacterSet
From Id of BusinessApplication A
To Id of BusinessApplication B
BusinessMessageIdentifier Identification of the BusinessMessage A
MessageDefinitionIdentifier Identification of the MessageDefinition
BusinessService
MarketPractice
CreationDate Date (and time) of the creation of this BusinessApplicationHeader
(and BusinessMessage)
BusinessProcessingDate
CopyDuplicate
PossibleDuplicate YES
Priority
Signature
Related Copy of the relevant MessageElements of the
BusinessApplicationHeader of the original BusinessMessage
sent to Business Application B
MessageElement Usage
Name
CharacterSet
From Id of BusinessApplication A
To Id of BusinessApplication B
BusinessMessageIdentifier Identification of the BusinessMessage A
MessageDefinitionIdentifier Identification of the MessageDefinition
BusinessService
MarketPractice
CreationDate Date (and time) of the creation of this BusinessApplicationHeader
(and BusinessMessage)
BusinessProcessingDate
CopyDuplicate
PossibleDuplicate
Priority The priority as defined within the BusinessService
Signature
Related
MessageElement Usage
Name
CharacterSet
From Id of BusinessApplication A
To Id of BusinessApplication B
BusinessMessageIdentifier Identification of the BusinessMessage A
MessageDefinitionIdentifier Identification of the MessageDefinition
BusinessService
MarketPractice
CreationDate Date (and time) of the creation of this BusinessApplicationHeader
(and BusinessMessage)
BusinessProcessingDate
CopyDuplicate
PossibleDuplicate
Priority
Signature Signature specification containing the signature of the
Sending Business Entity
Related
MessageElement Usage
Name
CharacterSet
From Id of BusinessApplication A
To Id of BusinessApplication B
BusinessMessageIdentifier Identification of the BusinessMessage A
MessageDefinitionIdentifier Identification of the MessageDefinition
BusinessService
MarketPractice
CreationDate Date (and time) of the creation of this BusinessApplicationHeader
(and BusinessMessage)
BusinessProcessingDate
CopyDuplicate
PossibleDuplicate
Priority
Signature
Related Copy of the relevant MessageElements of the
BusinessApplicationHeader of BusinessMessage A
As a business message may be related to multiple other business messages, it is necessary to be able
to distinguish the function of each of the business messages referred to. For this purpose, the
MessageDefinitionIdentifier of the business messages referred to can be used.
EXAMPLE
Consider the following scenario of the investment funds order execution business process.
The SubscriptionOrderConfirmationCancellationInstruction (setr.047) cancels a previously sent
SubscriptionOrderConfirmation (setr.012) and is related to a previously received SubscriptionOrder
(setr.010).
3.1 Introduction
Below list contains all MessageElements of the BusinessApplicationHeader.
For reference, this table lists the top MessageElement names of the BAH and their
equivalent XML abbreviation.
MessageElement abbreviation
Name
CharacterSet CharSet
From Fr
To To
BusinessMessageIdentifier BizMsgIdr
MessageDefinitionIdentifier MsgDefIdr
BusinessService BizSvc
MarketPractice MktPrctc
CreationDate CreDt
BusinessProcessingDate BizPrcgDt
CopyDuplicate CpyDplct
PossibleDuplicate PssblDplct
Priority Prty
Signature Sgntr
Related Rltd
a) Introducing the BAH for ISO 20022 message sets modelled for use with and without
the BAH
As such message sets do not require the use of the BAH, it is often the case that such message
sets are deployed with a non-ISO 20022 header, for instance, the SWIFTNet Application
Header.
As and when such communities decide to migrate from the proprietary header to the BAH, the
mapping table can be employed as a migration support tool.
It is not uncommon that in an end-to-end scenario the exchange of ISO 20022 message sets
spans multiple underlying networks, amongst others, SWIFTNet. SWIFTNet may still foresee
its own proprietary Application Header whilst others may already have migrated to using the
BAH.
character set -
the additionally used character set(s) in the BusinessMessage for Text
datatypes
BusinessMessageIdentifier <MessageReference>
the identification of the BusinessMessage, unique to the
SendingBusinessEntity
MessageDefinitionIdentifier <MessageIdentifier>
the identification of MessageDefinition
BusinessService Example: EnI <ServiceName>
Market Practice -
Set of rules agreed between parties that restricts the usage of
the messages in order to achieve better STP (Straight Through
Processing) rates.
CreationDate <CreationDate>
Creation date (and time) of the Business Message
Priority <Priority>
Relative indication of the processing precedence of the message over
a (set of) BusinessMessages with assigned priorities
Signature <Signed>
Contains the digital signature of the person authorised to sign this
BusinessMessage (based on W3C’s XML Signature standard)
BusinessMessage
character set _
the additionally used character set(s) in the BusinessMessage for Text
datatypes
MessageDefinitionIdentifier <eb:Property>
the identification of MessageDefinition
BusinessMessageIdentifier <eb:MessageId>
the identification of the BusinessMessage, unique to the
SendingBusinessEntity
Copy / Duplicate / _
Functionality to indicate this message is a copy / duplicate of another
BusinessMessage
Related Reference <eb:RefToMessageId>
Reference of the original BusinessMessage
Possible Duplicate _
The BusinessMessage may have been sent before.
Priority _
Relative indication of the processing precedence of the message over a
(set of) BusinessMessages with assigned priorities
Signature _
Contains the digital signature of the person authorised to sign this
BusinessMessage (based on W3C’s XML Signature standard)
CreationDate <eb:Timestamp>
Creation date (and time) of the BusinessMessage
Market Practice _
Set of rules agreed between parties that restricts the usage of the
messages in order to achieve better STP (Straight Through Processing)
rates.
BusinessMessageIdentifier <messageId>
the identification of the BusinessMessage, unique to the
SendingBusinessEntity
Possible Duplicate
The BusinessMessage may have been sent before.
Priority _
Relative indication of the processing precedence of the
message over a (set of) BusinessMessages with assigned
priorities
Signature <dsig:Signature>
Contains the digital signature of the person
authorised to sign this BusinessMessage
(based on W3C’s XML Signature standard)
CreationDate <creationTimestamp>
Creation date (and time) of the Business Message
The guidelines in the remainder of this annex can serve as an illustrative model. Based on the model,
specific guidelines can be created for each distinct use case in which the BAH signature mechanism
is to be employed.
The guidelines are pure technical guidelines, which only discuss the formal aspects of the
construction of the signature. All other aspects of the signature, such as, who can sign and such as
the message scenarios, which require signing, are not part of this annex.
4.2 Introduction
A digital signature is a mathematical scheme for verifying the authenticity of digital messages. A valid
digital signature, where the prerequisites are satisfied, gives a recipient sufficient confidence that the
message was created by a known sender (authentication) and that the message was not altered in
transit (integrity).
The optional Signature element of the BAH can be employed to contain the digital signature of the
Business Entity authorised to sign the Business Message, i.e. the ISO 20022 Business Application
Header and the ISO 20022 Message.
There is no support for signatures covering only a part of the business message.
The Signature must be structured as per the W3C XML Signatures specification and any additional
constraints stated for the service and business area within which this BusinessMessage is exchanged.
This requires that the creator of the Signature and all verifiers of that Signature agree how the
Signature is structured.
4.2.1 Current Signature Guidelines
The Business Application Header Message Usage Guidelines specifies: "Signature contains the digital
signature of the person authorised to sign this BusinessMessage (based on W3C’s XML Signature
standard)".
This means that:
• The Signature element conforms to the W3C Signature Syntax and
Processing Recommendation
• The BusinessMessage is the ISO 20022 Business Application Header and the
ISO 20022 Message
• The person authorised to sign is not further specified; this depends on the
particular context in which the message is sent.
As a reminder, the terminology of BusinessMessage, ISO 20022 Business Application Header and ISO
20022 Message is shown in the following picture
As shown, the SignedInfo contains one or more Reference elements. Each Reference identifies an
XML resource that is to be signed. The example in the picture shows a KeyInfo element with as content
a KeyValue. Using a Public Key Infrastructure
4.2.3 Scope of this documents Signature Guidelines
This document does not introduce any change in business requirements related to the signature within
the Business Application Header.
This document proposes the approach to implement the current signature guidelines. In particular, it
addresses the following
• The structure of the Signature
4.2.6 KeyInfo
The KeyInfo must contain the X509v3 certificate containing the validation key. Optionally, it can also
contain the certificates that are part of the certification chain. This depends on the allowed PKI
infrastructures used within the business context. For instance, when between sender and receiver
always the same PKI infrastructure is used, then it can be better to use the CA root certificate from
the environment than to check that the correct CA root certificate is used within the KeyInfo .
NOTE It is recommended not to use any other elements within the KeyInfo .
The KeyInfo itself is signed and must contain the Id attribute. This attribute should contain a unique
value.
The KeyInfo looks like:
The X509Certificate contains the certificate that is used to verify the Signature. In case the full
certification chain is to be present at least the CA root certificate is added as shown in the following
example. The order of the different certificates is not relevant.
<ds:KeyInfo Id="Unique-id-to-KeyInfo">
<ds:X509Data>
<ds:X509Certificate>MIID1DCCArygAwIB... </ds:X509Certificate>
<ds:X509Certificate>MIIDkDCCAnigUoSI... </ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
NOTE Inclusion of the entire certification chain is recommended. Only when signatures must be
performed using certified keys by a specific PKI infrastructure, only the signing certificate is sufficient.
4.2.7 SignedInfo
The SignedInfo contains the 3 Reference elements.
• Reference digesting the ISO 20022 Message
<ds:Reference URI="#Unique-id-to-KeyInfo">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>QYYVi9JdlsOxjplrW3vIjT8cWYyzYD4ZnnNJ9SH+dvQ=</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#Unique-id-to-KeyInfo"
Type="http://www.w3.org/2000/09/xmldsig#KeyInfo">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>QYYVi9JdlsOxjplrW3vIjT8cWYyzYD4ZnnNJ9SH+dvQ=</ds:DigestValue>
</ds:Reference>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-
sha256"/>
<ds:Reference URI="#Unique-id-to-KeyInfo">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue> QYYVi9JdlsOxjplrW3vIjT8cWYyzYD4ZnnNJ9SH+dvQ=
</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-
signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>
+OS/MM1NBTiOZWWpvzOWkfRjyP2/F1lg9P+zvC+Gulk=
</ds:DigestValue>
</ds:Reference>
<ds:Reference>
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue> QYYVi9JdlsOxjplrW3vIjT8cWYyzYD4ZnnNJ9SH+dvQ=
</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue> IKDs7kwX14CxK3AZ1ojJLr35A4eU/98tp/10KFQTtPOwR5WCKyx
4I05ZV1IljOpEgpkt6xejXhshaEnNBD5B5PII1VN6mviJJjU/njGikNeXzi1Djei2dPEap
nPX1f26UnQcgYTAqaSVwAnIR7L8/W2UeT8J9z8Rd1OebYV5xE8jVehbgMcAmJwv2rC/c2d
UkUe2/eBU0APyWGCgKawxGGAPLP3AS4+Mp0ODKlVp08rUzVOF+pFF/1dBknlK/v0dWkDdj
YvwFRvZhHXue/PYvMNtQBytMUUdB1MiQrNX0jSCE6Y2nljhTXdcrb2lgfgwCclB6xArBRV
WfMa0kQVQ4Q==
</ds:SignatureValue>
<ds:KeyInfo Id="Unique-id-to-KeyInfo">
<ds:X509Data>
<ds:X509Certificate>MIID1DCCArygAwIB </ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
1.2 20/10/2010 TSG Corrected typos, clarified 2.1.2, 3.x, 2.10, TOC
secretariat scenario 2, updated the
TOC.
Replaced
MessageInstanceIdentifier
by
BusinessMessageIdentifier
in chapter 3
Added new scenario 2.10