FIX and FIXML Dictionaries Customization Guide

FIX and FIXML Dictionaries Customization Guide

This article describes how to customize FIX and FIXML dictionaries

The articles describe:

  • how FIX and FIXML dictionaries are built,

  • how to customize dictionaries:

    • how to define a custom tag;

    • how to extend existing message with a custom tag;

    • how to extend the list of custom tag values;

    • how to define a custom message etc. 

When you are applying customizations for FIX and FIXML dictionaries to build a custom FIX FIXML converter make sure that both dictionaries fully correspond to each other.

How to customize a FIX dictionary

In order to apply any customizations for a standard FIX Dictionary it is necessary to do the following: 

  1. Refer to fixdic.xml 

  2. Apply changes 

  3. Store changes to the file  

Fixdic.xml structure

FIX dictionary consists of the following blocks:

Block name

Description

Block name

Description

<fixdic>

 

FIX dictionary main node

<typelist>

 

Data types list definition

->

<typedef >

Data type definition

<fielddic>

 

FIX tags and values identifier

->

<valblockdef>

FIX tag values block definition

->

<fielddef>

FIX tag definition

<msgdic>

 

Messages and component blocks definition

->

<blockdef>

Definition of the Component Block used in FIX message

->

<msgdef>

FIX message definition

An example of FIXdic.xml structure is given below.

Examples of different customizations

How to add a custom value to the existing FIX tag

Example 1: Valid values for AllocRejCode (88) tag should be extended with custom value "14” (unknown clearing account).  

Definition: AllocRejCode (88) tag is defined in the following way:

According to this definition, it is necessary to refer to FIX tags values blocks named “AllocRejCode” and specify the following (refer to text marked bold dark blue)

Example 2: Valid values for MDEntryType (269) tag should be extended with custom value “R” (Rolling average). 

Definition: Find MDEntryType (269) tag definition in the file and add the value as illustrated in the example below:

fixdic50sp2.xml
<fielddic> <!-- ... --> <fielddef tag="269" name="MDEntryType" type="char"> <!-- ... --> <item val="R">Rolling average</item> </fielddef> <!-- ... --> </fielddic>

How to change ‘required’ attribute of a tag in FIX message

Example: It is necessary to change the „required‟ attribute for Password (554) tag from „not required‟ to „required‟ in FIX message User Request (MsgType = „BE‟)

Definition: Refer to <msgdic> section and find User Request (MsgType = „BE‟) message definition. Find Password (554) tag definition in message definition and add the following attribute (if absent) req = “Y” (refer to marked bold dark blue).  

If the tag was defined as „not required‟ via req = “N” attribute, its value should be changed to “Y”.

How to change ‘required’ attribute of a tag in component block

Example: It is necessary to change the „required‟ attribute for Commission (12) and Commission Type (13) tags from „not required‟ to „required‟ in Commission Data component block. 

Definition: Refer to <msgdic> section and find Commission Data component block definition. Define the following attribute (if absent) req = “Y” in component block Commission (12) and Commission Type (13) tags (refer to marked bold dark blue). 

 If the tag was defined as „not required‟ via req = “N” attribute, its value should be changed to “Y”.

How to change ‘required’ attribute of a component block in FIX message

Example: It is necessary to change „required‟ attribute in Settlement Instruction Request (MsgType = „AV‟) message for “Parties” component block from „not required‟ to „required‟.  

Definition: Refer to <msgdic> section and find Settlement Instruction Request (MsgType = „AV‟) message definition. Find “Parties” component block definition in message definition and add the following attribute (if absent) req = “Y” (refer to marked bold dark blue).  

If the tag was defined as „not required‟ via req = “N” attribute, its value should be changed to “Y”.

The same can be done if it is necessary to change the „required‟ attribute for tag inside a repeating group.

How to add a custom tag to the existing FIX message

Example 1: It is necessary to add a custom tag PolicyCode (8060) as the "not required" field in New Order Single (MsgType = "D") message. The tag has no predefined valid values; the data type for values is String.   

Definition

1. Declare a custom FIX tag in the fields dictionary (<fielddic> section). Define the new field parameters within <fielddef> declaration as below:

fixdic50sp2.xml