Introduction

FMXML handler is a FIXEdge component used in BL configurations. Its primary task to convert any FIX message (except MsgType(35)=n) to XML representation. In case of 35=n messages FMXML handler does the reverted conversion. An example of a FIX message and the result of such conversion is given in the table below:

FIX 4.4 representationFMXML representation

8=FIX.4.4
9=0332
35=D
49=FTRDRETD0
56=IDEALRETD0
43=N
52=20131118-10:21:56
97=N
115=NFSC
2007=e6a85d48-81df-40c3-a54c-23b2aa85191b:RETAILEQUITY
21=2
22=1
48=0456BC5L1
54=1
38=1000
40=1
44=0
59=1
1=Account10
2002=CH1
2005=12345
2000=Act10Name
2001=N
2003=C1TD
11=e6a85d48-81df-40c3-a54c-23b2aa85191b
60=20131118-05:21:46
2008=G12345
2011=Rep1

<FIXMessage>
	<f8>FIX.4.4</f8>
	<f35>D</f35>
	<f49>FTRDRETD0</f49>
	<f56>IDEALRETD0</f56>
	<f43>N</f43>
	<f52>20131118-10:21:56</f52>
	<f97>N</f97>
	<f115>NFSC</f115>
	<f2007>e6a85d48-81df-40c3-a54c-23b2aa85191b:RETAILEQUITY</f2007>
	<f21>2</f21>
	<f22>1</f22>
	<f48>0456BC5L1</f48>
	<f54>1</f54>
	<f38>1000</f38>
	<f40>1</f40>
	<f44>0</f44>
	<f59>1</f59>
	<f1>Account10</f1>
	<f2002>CH1</f2002>
	<f2005>12345</f2005>
	<f2000>Act10Name</f2000>
	<f2001>N</f2001>
	<f2003>C1TD</f2003>
	<f11>e6a85d48-81df-40c3-a54c-23b2aa85191b</f11>
	<f60>20131118-05:21:46</f60>
	<f2008>G12345</f2008>
	<f2011>Rep1</f2011>
</FIXMessage>


Typical use case

Here is a sequence diagram for a typical FMXML's use case.

There are three main components in it:

FMXML handler specification

FMXML handler does the following steps on FIX massages:

FMXML format specification

<FIXMessage>
	<!-- FIX tags -->
	<f[tag1]>value1</f[tag1]>
	<f[tag2]>value2</f[tag2]>
	<!-- FIX repeating group -->
	<g[tag3] v="value3">
		<e>
			<f[tag4]>value4</f[tag4]>
		</e>
		<e>
			<f[tag5]>value5</f[tag5]>
		</e>
	</g[tag3]>
</FIXMessage>

Further XML message transformations

It is not necessary that external system can process XML messages in the format FMXML Handler produces. One may use XSLT transformations to transform FMXML output to any XML schema. 

Date/Time conversations

By default FMXML handler does not change values of FIX tags during transformations. However there are differences between Date/Time data representation in FIX and in XML. See the table below for further details.


FIX XML
UTCTimestamp

YYYYMMDD-HH:MM:SS

YYYYMMDD-HH:MM:SS.sss

YYYY-MM-DDTHH:MM:SS

YYYY-MM-DDTHH:MM:SS.sss

UTCDateOnlyYYYYMMDDYYYY-MM-DD
LocalMktDateYYYYMMDDYYYY-MM-DD

 

 Use the ConvertDateTime = "true" attribute to convert date/time values properly. See the example of BL rule:

<DllHandlers>
	<Handler Name="FMXMLHandler" 
		Description="FMXML Handler" 
		DllName="bin/FMXMLHandler-vc10-MD-x64.dll" 
		VerifyHandlersVersion="true" 
		ProcessorsCount="2" />
</DllHandlers>

<Rule>
    <Source>
        <Client Name="SplitterTA" />
    </Source>
    <Condition>
        <MatchField Field="35" Value="n" />
    </Condition>
    <Action>
        <Script Language="XSLT" Field="213" LengthField="212" FileName="AE.xslt"/>
        <HandlerAction Name="FMXMLHandler" ConvertDateTime = "true"/>
        <Send>
            <FixSession/>
        </Send>
    </Action>
</Rule>