Envelope
Summary
We propose an Envelope MessageDefinition whose sole purpose is to contain multiple MessageDefinition.
This enables a Business Application Header (BAH) to be packaged with other Messages in a single Message Instance.
Background
The ISO20022-1:2013 metamodel defines a MessageDefinition is a “formal description of the structure of a MessageInstance”, which contain “a set of structured infromation exchanged between BusinessRoles in the scope of a BusinessTransaction”.
Each MessageDefinitions is the logical level of a MessageTransmission, which is the “passing of information from one Participant to another in the context of a BusinessTransaction” at the conceptual level.
In essence, this means that each MessageDefinition should fully describe the message between participants in the business communication layer.
However there is a lot of business information common across messages,
so this has been put into the Business Application Header.
The BAH FAQ provides more background.
The BAH Message Usage Guide describes one approach to packaging with a bespoke XML Schema that contains one BAH, and one payload.
This bespoke schema is not itself a registered ISO 20022 message definition.
Alternatives
The BAH has been modelled in the e-Repository as a MessageDefinition.
The advantage of this approach is that newer versions of the BAH,
can be used with any version of other messages.
It could instead be modelled as a MessageComponent,
which would allow it to be included as a MessageBuildingBlock
into other MessageDefinitions, making it more like a header.
A disadvantage of this approach is that each version of a message
would be stuck with their version of the BAH.
Proposal
We propose Envelope MessageDefinition whose sole purpose is to contain multiple MessageDefinition.
- EnvelopeAny
- has a Content <<MessageBuildingBlock>> to contain any items.
- EnvelopeBAH
- has a Header <<MessageBuildingBlock>> to contain 1 BAH.
- has a Body <<MessageBuildingBlock>> to contain another item.
Which would result in (unabbreviated) schema a bit like:
<Envelope ... > <Content> <AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02" ... > ... </AppHdr> <Document xmlns="urn:iso:std:iso:20022:tech:xsd:reda.020.001.01" ... > ... </Document> </Content> </Envelope>
<Envelope ... > <Header> <AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02" ... > ... </AppHdr> </Header> <Body> <Document xmlns="urn:iso:std:iso:20022:tech:xsd:reda.020.001.01" ... > ... </Document> </Body> </Envelope>