Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Introduction

The 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, the FMXML handler does the reverted conversationconversion. There is an An example of a FIX message and the result of such conversation conversion is given in the following 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

Code Block
languagehtml/xml
<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:

  • FIX session. : FIXEdge receives FIX messages from it (say FIX messages with 35=D)
  • FMXML handler. : FIXEdge converts source messages to XML and wrap them into 35=n messages.
  • IBM MQ Transport adapter. : FIXEdge sends XML data wrapped into 35=n messages to an external messaging system (IBM WebSphere in this case).

FMXML handler specification

The FMXML handler does the following steps on FIX massages:

  • if If there is 35=n message in the input of the handler than then FMXML to FIX transformation takes place. 
  • in In case of other MsgType messages in the input of the handler FIX to FMXML transformation takes place. 
  • standard Standard FIX tags like CheckSum (10), BodyLength(9), MsgSeqNum(34) are ignored during transformations.

FMXML format specification

Code Block
languagehtml/xml
<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 the FMXML Handler produces. One may use XSLT transformations to transform FMXML output to virtually any XML schema. 

Date/Time conversations

By default the 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 following table:

...

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: 

Code Block
languagehtml/xml
<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>