How to set up custom FIX dictionaries

FIX Antenna Java supports customized FIX protocols via using custom FIX Antenna dictionaries for FIX sessions. 

The format of the FIX Antenna dictionary is different from the QuickFIX dictionaries format.

FIX Antenna C++/.NET dictionaries format

To support it, please first specify the 'customFIXVersions' section in the FIX Antenna configuration file (fixengine.properties). 

fixengine.properties
# comma separated list of custom FIX dictionary aliases
customFixVersions=FIX44Custom,FIX50Custom

# pair of 'fixVersion' and 'fileName' for each FIX dictionary alias with pattern:
# customFixVersion.<custom FIX version alias>.fixVersion=<base standard FIX version>
# customFixVersion.<custom FIX version alias>.fileName=<custom FIX dictionary file name>

# example of custom FIX dictionary based on FIX.4.4
customFixVersion.FIX44Custom.fixVersion=FIX.4.4
customFixVersion.FIX44Custom.fileName=classpath:fixdic44-custom.xml

# examples of custom FIX dictionary based on FIX.5.0
customFixVersion.FIX50Custom.fixVersion=FIX.5.0
customFixVersion.FIX50Custom.fileName=classpath:fixdic50-custom.xml


The next step is to set defined dictionary aliases as a session's fixVersion or appVersion in the configuration file:

# comma separated list of configured sessions
sessionIDs=session1,session2,session3

# session1 configured with default 'FIX.4.4' dictionary
sessions.session1.sessionType=acceptor
sessions.session1.fixVersion=FIX.4.4
sessions.session1.senderCompID=senderCompID1
sessions.session1.targetCompID=targetCompID1

# session2 configured with custom 'FIX44Custom' dictionary
sessions.session2.sessionType=acceptor
sessions.session2.fixVersion=FIX44Custom
sessions.session2.senderCompID=senderCompID2
sessions.session2.targetCompID=targetCompID2

# session3 configured with custom 'FIX50Custom' dictionary
sessions.session3.sessionType=acceptor
sessions.session3.fixVersion=FIXT.1.1
sessions.session3.appVersion=FIX50Custom
sessions.session3.senderCompID=senderCompID3
sessions.session3.targetCompID=targetCompID3


The same can be done in the application code:

// creating connection parameters
SessionParameters sessionParameters = new SessionParameters();
sessionParameters.setFixVersion(FIXVersion.FIXT11);
// configured with custom 'FIX50Custom' dictionary
sessionParameters.setAppVersion("FIX50Custom");