It’s a common requirement to use a standard message and to extend it to contain additional information required for further processing within a business.
Ideally these would be discussed with other market participants, and if desired, proposed as change requests to the current model so that the model can improve to cater for wider requirements.
In the meantime, there are a couple of ways to extend the messages,
before an extension becomes standard.
ISO 20022-1:2013 provides just one way to do this – the External Schema component type. It allows messages designers to specify where in a message addtional structured information may be added.
eg. A Securities Settlement Transaction Instruction, (sese.023)
may have many Supplementary Data elements which contain:
- an Envelope to contain additional information
- a Place And Name text field to associate it with a part of the document.
This is flexible, but requires parsing of the Place And Name.
A common alternative approach is to use derived types which add space for structured information.
This is realised in xml instances with the xsi:type attribute, usually indicating an extended type has been used from a extended type schema.
To generate the extended type schema, we extend the metamodel to include a derives relationship between Message Component Types. Derived Type add Elements to those from the Source type. To support a wide range of programming languages, this is limited to single inheritence, ie. a Type may derive from only one other Type.
The derived type is constrained to trace to the same Business Component as its source type. It’s simply adding additional items that implement the items to which the Business Component already relates.
Further, this can be used to generate message schema whose types are backwards compatible. For technologies that are type sensitive, it is possible to design messages that are the same as old messages, and just add additional items into new types, which means existing software can be edited to add new features, instead of renaming types.