Imported from previous forum
[ original email was from Nikhil Bose - assistsoft@yahoo.com ]
Hello,
A client of mine wants to build a system where they want to extend some of the business-level functionality of FIX messages. They would like to use existing FIX engines as much as possible, which means trying to minimize changes. The counterparties would be using FIX engines from other vendors. So my question is:
-
Is it preferable to "overload" existing FIX message types with additional business functionality instead of defining new user-defined FIX message types? One reason for this would be that existing FIX engine might not be able to cope with FIX MsgType fields that are more than 1 character long (MsgType "U?").
-
Similarly, is it preferable to “overload” some of the existing FIX tags with additional valid values, and business functionality instead of defining new user-defined tags in the 5000-9999 range? New user-defined tags might clash with the counterparty’s usage of those tags, etc.
Any thoughts, opinions, experience is welcome.
Nikhil
[ original email was from Ryan Pierce - rpierce@taltrade.com ]
> 1) Is it preferable to "overload" existing FIX message types with additional business functionality instead of defining new user-defined FIX message types? One reason for this would be that existing FIX engine might not be able to cope with FIX MsgType fields that are more than 1 character long (MsgType "U?").
The general rule of thumb is, when possible, try to extend an existing message rather than creating a new one.
If you need more functionality in the FIX Order message, by all means, add user-defined fields rather than creating a U? message for the Order. If these fields are usable by several firms in the industry, then you should recommend them for inclusion in the next FIX version.
If you need functionality not addressed by any of the FIX messages, then new ones must be created. For instance, the Market Data messages were so significantly different from Quote that extending Quote simply wasn’t possible. Likewise, if the user-defined messages you create are applicable to several firms in the industry, they should be proposed for inclusion in the next FIX version.
> 2) Similarly, is it preferable to “overload” some of the existing FIX tags with additional valid values, and business functionality instead of defining new user-defined tags in the 5000-9999 range? New user-defined tags might clash with the counterparty’s usage of those tags, etc.
I’m not really sure of the best way to handle this. Additional enumerations in existing fields useful to several firms should be recommended for inclusion, but how one addresses the issue prior to the next FIX version (adding them, or making new user-defined fields) is not clear.
I remember, in the overhaul of data typing, talk of creating a data type for “Enumeration” and “Multi-Value Enumeration”. If this were done, assuming no conflicts in any existing Enumerations, then one could say something like “U?” is a user-defined value within an existing enumeration. The down side of this is that I’m not sure it can translate well to XML. I think this should be considered for the next FIX version; Scott, could you please add a tracking tag? Also, would this cause a big problem with FIXML validation?