EP270-272 added to FIX Latest

The FIX Global Technical Committee (GTC) announces the addition of new Extension Packs to the FIX Latest specification, the normative specification of the FIX Protocol. The artifacts for the individual Extension Packs described below are available here. This blog further describes changes to the various repository artifacts provided for Extension Packs.

New Extension Packs

EP270 Extension of BeginString(8) for FIX Latest

This Extension Pack extends the values of BeginString(8) for FIX Latest to include the session profile identifiers for the FIX Session Layers of FIX 4.2 and FIX 4.4. Prior to this Extension Pack, FIX Latest required BeginString(8)=”FIXT.1.1” to reference FIX Transport, the FIX Session Layer introduced with FIX 5.0. With this extension, you no longer need to change your session layer. You can continue to use BeginString(8)=”FIX.4.2” or BeginString(8)=”FIX.4.4” together with the latest extensions made to the FIX Protocol. This officially codifies the use of all FIX Latest capabilities over a FIX 4.2 or FIX 4.4 Session Layer.

EP271 Errors and Omissions 2021

This Extension Pack contains a large number of errors and omissions discovered in the FIX Standard, e.g. misspellings or gaffes in the description. The various changes are not necessarily linked to one another. Most of them were collected over time in the discussion forum (see FIX Standard Errors and Omissions 2018-2021) or collected via emails from members. A new thread FIX Standard Errors and Omissions 2022 has been created for errors and omissions detected by the FIX Trading Community going forward. See ASBUILT document for details.

EP271 includes several corrections of the FIX Orchestra representations for FIX 4.2 and FIX 4.4. These XML files are maintained in the public GitHub repository Orchestrations in the folder “FIX Standard”. See ASBUILT document for details.

EP272 Code Set Extensions 2021

This Extension Pack adds a number of new codes (a.k.a. enumerated values) to existing code sets of the FIX specification based on communication from member firms and issues raised in the FIX discussion forum, e.g. in FIX Standard Errors and Omissions 2018-2021. The changes in this proposal are not considered to be errors but rather extensions identified by the GTC based on member feedback and internal analysis. The changes affect values of SecurityType(167), BenchmarkCurveName(221) and RelativeValueType(2530).

Changes to Artifacts as of EP272

The FIX Repository in its Orchestra XML format will eventually be the master source for all artifacts generated from the FIX Repository by the FIX Global Technical Committee for the community. The first step was already taken with the introduction of the fourth generation of FIXimate in September 2021 (see GTC blog here).

The next step now comes with the creation of the FIX Repository in its Unified XML format from Orchestra. The GTC will continue to provide the Unified XML repository file for backward compatibility. Compared to EP271 and earlier, there are changes to the Unified and the Orchestra XML files as described below.

Changes to the Orchestra Repository XML file as of EP272

Correction of pedigree information for repeating groups

An error related to the conversion of the Unified XML files to the Orchestra XML file was corrected where the pedigree of the entire repeating group differs from the repeating group’s special field with datatype of NumInGroup (i.e. NoXXX field). This occurred in rare cases when the group description is updated with a later EP. Note that FIXimate has also been updated to v4.0.2 to display the pedigree of NoXXX fields.

Addition of XML element <appinfo>

The schema of the FIX Orchestra V1.0 Technical Standard includes the <documentation> and <appinfo> elements as part of the <annotation> element. Previously, FIX Latest only used the <documentation> to capture the description of messages, fields etc. As of EP272, FIX Latest uses the <appinfo> element with the attribute “purpose” set to “FIXML” to capture information required to generate the FIXML schema files. Note that this enhancement is done as preparation to eventually generate the FIXML schema files directly from FIX Orchestra. Currently, they are still generated from the legacy Basic repository.

Change of values for the attribute “builtin”

The schema of the FIX Orchestra V1.0 Technical Standard includes an attribute “builtin” for the <mappedDatatype> element to indicate whether the builtin datatype is being used for the mapping. The attribute supports Boolean values and these have been changed from “0” and “1” to “false” and “true”. Both sets of values are supported by XML.

Removal of encoding-specific datatype samples

The <documentation> element contains the attribute “purpose” that supports a value of “EXAMPLE”. This has previously been used to capture sample data in tag=value or FIXML syntax. As of FIXimate v4.0 sample data is no longer displayed as this data is specific to an encoding. The related <documentation> elements have now also been removed from the Orchestra XML file. Some of the datatype descriptions still contain sample data in a specific syntax and will be removed at a later point in time. Such samples are contained in the technical specifications of the respective encoding standards (FIX TagValue and FIXML).

Removal of internal attributes

Each of the main repository elements (datatypes, fields, components, messages, and categories) had an attribute “latestEP” to indicate the highest number of the Extension Pack that made changes to its content. This information is no longer deemed relevant and has been removed.

Elements can have an attribute “issue” to capture identifiers of a ticketing system (e.g. Jira) as a reference. This was only used by the GTC in the early days and has now been removed. The GTC uses Jira as audit trail for repository changes and capture the EP that implemented the change.

Change of the file name for the Orchestra zip-file

The file name for the zip-file containing the Orchestra XML files changes from “OrchestraEPxxx.zip” to “FIXOrchestraRepository_FIX.Latest_EPxxx.zip” where “xxx” represents the number of the Extension Pack, e.g. FIXOrchestraRepository_FIX.Latest_EP272.zip.

Changes to the Unified Repository XML file as of EP272

Removal of presence attribute for NumInGroup fields

Unified XML repository file uses the presence attribute “required” for a small number of NumInGroup fields of repeating groups, e.g. MDFullGrp and NoMDEntries(268). A NumInGroup field has required=“1” in the definition of the repeating group in cases where the repeating group is required in the message(s) it is used. For example, MDFullGrp is only used in the message MarketDataSnapshotFullRefresh(35=W) where it is required.

The definition of a repeating group should be independent of its usage. The component reference contains the information as to whether it is required for this specific usage.

The attribute “required” is hence no longer used for NumInGroup fields. FIX Orchestra already dropped the corresponding attribute “presence” (presence=“required”).

Removal of internal attributes

The Unified XML repository file contains a list of abbreviations used for internal purposes to capture abbreviations of individual terms for the FIXML encoding of FIX field names. This information is not relevant outside of the GTC. This does not exist in the FIX Orchestra V1.0 Technical Standard.

The attributes “latestEP” and “issue” are no longer present in the Unified XML repository file as they have been removed from the Orchestra XML repository file (see above).

The Unified XML file distinguishes different types of components by means of its attribute “type”, e.g. whether they are a repeating group or not (Orchestra uses different elements, “group” and “component” for the same purpose). As part of the introduction of named components with FIX 4.4, two additional types of components, “ImplicitBlock” and “ImplicitBlockRepeating” were introduced. The need to make a distinction between “ImplicitBlock” and “ImplicitBlockRepeating” is no longer needed as of FIX 5.0 and has been removed. Additionally,  this “implicit” concept does not exist in FIX Orchestra, however, the Unified XML file created from the FIX Orchestra XML file will continue to distinguish between component types “Block” and “BlockRepeating”.

The Unified XML file contains two attributes “legacyPosition” and “legacyIndent” used internally for the generation of FIXimate up to Version 3.0. This is no longer used as of FIXimate Version 4.0 having the Orchestra XML file as source. The attributes have been set to zero. They cannot be removed as they are required by the Unified XML schema.

Change of descriptions having multiple paragraphs

A number of descriptions require more than one paragraph. Orchestra now provides each paragraph in a separate <documentation> element instead of using CR/LF. This eases the conversion to other formats such as markdown where paragraphs would need to be separated by a blank line in addition to a CR/LF.

Separation of Basic and Unified XML files

Previously, the release of an EP’s Basic and Unified XML files were combined into a single zip-file “FIXRepository_FIX.Latest_EPxxx.zip” where “xxx” represented the number of the Extension Pack. For each EP release, these artifacts are now separated into two zip-files, each named with the following pattern “FIXBasicRepository_FIX.Latest_EPxxx.zip” and “FIXUnifiedRepository_FIX.Latest_EPxxx.zip”.