QuoteAcknowledgement(b) message has mismatching MsgType name in FIX 4.2 Orchestra XML. Original documentation for 4.2 specifies “QuoteAcknowledgement” for both message and MsgType.
Agree, message name was changed from “QuoteAcknowledgement” in FIX 4.2 to “MassQuoteAcknowledgement” in FIX 4.3. No change in value of msgType attribute.
FIX 4.2 added message MassQuote(i) along with two new groups: QuoteEntryGrp(2043) and QuotSetGrp(2049). These groups use multiple fields that following the “Quote” naming convention, such as QuoteID(117), QuoteSetID(302) and QuoteEntryID(299).
Hence I believe there is a typo in the name QuotSetGrp present in the Orchestra XML specs for FIX 4.2, 4.4 and FIX Latest. The latter two specs should use added="FIX.4.2".
Repeating groups were not officially introduced until FIX 4.3 with the exception of the StandardHeader and StandardTrailer. The legacy FIXimate for FIX 4.2 does not show any, the NumInGroup field was synonymous with the group name back then. The Basic Repository as machine-readable artefact for FIX 4.2 did not have them and neither did the specification document.
However, they were there semantically and hence they have been modelled with Orchestra groups/components already for FIX 4.2 even though, technically, they were not added until FIX 4.3 or FIX 4.4. The pedigree had to use “FIX.4.2” inside the Orchestra XML file for FIX 4.2. QuotSetGrp is not the only one, there are 22 such groups. The inconsistency of the pedigree is worth analyzing and can be resolved. Note that the group names do not appear in the FIX 4.2 specification and were taken from FIX 4.3 or FIX 4.4. That is also not 100% correct but it is a trade-off.
Using “Quot” instead of “Quote” is not a typo for QuotSetGrp and other group names. They were chosen at the time and we would not do that for new fields, components or groups anymore. There are similar cases with “Px” vs “Price” and “Qty” vs “Quantity” where we have both.
The main obstacle to resolve the inconsistency of the FIX 4.2 pedigree of groups with that of higher versions is that it is not enough to align the pedigree of the groups across versions. All of their elements also have added=”FIX.4.4” as that was the FIX version when the groups were officially created. Even the pedigree in the FIX 4.2 Orchestra XML file is not always correct. It correctly states that AllocGrp was added with FIX 2.7 but erroneously claims that the first 3 tags (79, 80, 81) were added with FIX 4.0 instead of FIX 2.7.
The main objective of creating Orchestra XML files for FIX 4.2 and FIX 4.4 was to provide a snapshot of the FIX Protocol for those versions in the same representation as FIX Latest.
Many of the repeating fields/groups mentioned in the 4.2 source specifications are present in previous versions. The language clearly specifies repeating fields and NoXXX fields even if they are not expressed as group structures with NumInGroup datatypes.
For pedigree history, it makes a lot of sense to model the repeating fields/structures as groups from when they were added in earlier versions.
From a usability and tooling perspective, this creates:
consistent grouping in generated code or documentation
reduced churn in adding and deprecating fields
easier discoverability (users search a consistent set of group structures, not annotations/documentation)
Extract showing an early version of AllocGrp from the FIX 2.7 documentation shows presence of the NoAllocs field along with highlighted repeating group fields.
Correct, the Orchestra XML file for FIX 4.2 “borrowed” the group name from a higher version and that name does not have an “e” and should be “QuotEntryGrp”.
The FIX 4.2 XML includes group UnderlyingInstrument(1021) that is not linked to anything and appears to be an exact duplicate of UndInstrmtGrp(2066) which is used in the SecurityDefinition and SecurityDefinitionRequest messages (and appears in later versions of the spec).
<fixr:group added="FIX.4.2" id="1021" name="UnderlyingInstrument">
<fixr:numInGroup id="146"></fixr:numInGroup>
...
<fixr:annotation>
<fixr:documentation>Number of legs that make up the Security</fixr:documentation>
</fixr:annotation>
</fixr:group>
@martinat FIX 4.2 did not have any components other than StandardHeader/Trailer. There is an error in that we should have “borrowed” UndInstrmtGrp from FIX 4.4 and not UnderlyingInstrument. This will be corrected in FIX 4.2. The usages are correct, the group definition of UnderlyingInstrument is simply redundant and can be removed as it is not used anywhere.