Echo Configuration Between FIXEdge and Simple Client (Fix Client Simulator)

  1. Add new Session to FIXEdge.properties ( FIXEdge1\conf\FIXEdge.properties )
    Add a session TestEchoAcceptor to the list of sessions (multiple sessions should be separated by a comma):

    FIXEdge.properties
    FixLayer.FixEngine.Sessions = TestEchoAcceptor

    And configure session parameters:

    FIXEdge.properties
    FixLayer.FixEngine.Session.TestEchoAcceptor.Version = FIX44
    FixLayer.FixEngine.Session.TestEchoAcceptor.StorageType = persistentMM
    FixLayer.FixEngine.Session.TestEchoAcceptor.Role = Acceptor
    FixLayer.FixEngine.Session.TestEchoAcceptor.SenderCompID = FIXEDGE
    FixLayer.FixEngine.Session.TestEchoAcceptor.TargetCompID = FIXECHOCLIENT
    FixLayer.FixEngine.Session.TestEchoAcceptor.Description = FIX session for echo testing
    FixLayer.FixEngine.Session.TestEchoAcceptor.StartTime = 08:00
    FixLayer.FixEngine.Session.TestEchoAcceptor.TerminateTime = 23:59
    FixLayer.FixEngine.Session.TestEchoAcceptor.RecreateOnLogout = true
    FixLayer.FixEngine.Session.TestEchoAcceptor.IntradayLogoutTolerance = true
  2. Configure BL rules ( FIXEdge1\conf\BL_Config.xml )

    BL_Config.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <FIXEdge>
    	<BusinessLayer> 
    		<!-- Rule messages from Simple Client send back switching SenderCompID and TargetCompID --> 
    		<Rule>
    			<Source> 
    				<FixSession SenderCompID="FIXECHOCLIENT" TargetCompID="FIXEDGE"/>
    			</Source> 
    			<Action>
    				<Send>
    					<FixSession SenderCompID="FIXEDGE" TargetCompID="FIXECHOCLIENT"/>
    				</Send>
    			</Action>
    		</Rule>
    		<DefaultRule>
    			<Action>
    				<DoNothing/>
    			</Action>
    		</DefaultRule> 
    	</BusinessLayer> 
    </FIXEdge>


  3.  Run FIXEdge.
    E.g. via run script:

    • Windows: <FIXEdge installation dir>\FIXEdge\bin\FixEdge1.run.cmd

    • Linux: <FIXEdge installation dir>/FIXEdge/bin/FixEdge1.run.sh


  4.  Open FIX Client Simulator. (It can be found in the FIX Antenna .NET Wrapper package).
    And create a new session (select Session menu -> Create New ...) as Initiator with the following parameters:

    Session type: Initiator
    SenderCompID = FIXECHOCLIENT
    TargetCompID = FIXEDGE
    FIX Version = 4.4
    Remote Port = 8901ListenPort parameter in FIXEdge's engine.properties )
    Remote Host = localhost (or IP address/hostname of the FIXEdge server)

    Please note that SenderCompID on the FIX Client Simulator side should have the same value as TargetCompId on the FIXEdge side
    And TargetCompId on the FCS side should be the same as SenderCompID on FIXEdge's side.

  5. Send message from FIX Client Simulator ( Pipe character is used to represent SOH character )

    New Order - Echo test.msg
    8=FIX.4.4|9=175|35=D|49=FIXECHOCLIENT|56=FIXEDGE|34=2|52=20131125-09:37:09.680|11=Order#1|21=1|100=1|55=TESTSMBL|54=1|60=20131124-04:11:46.768|38=20000|40=2|44=34.7|10=203|

     The file with FIX message example and SOH delimiters: NewOrderEchoTestMessage.txt

  6. Echo message from FIXEdge is received:

    Receive.msg
    Incoming message: 8=FIX.4.49=14935=D49=FIXEDGE56=FIXECHOCLIENT34=352=20140228-14:43:19.01811=Order#121=1100=155=TESTSMBL54=160=20131124-04:11:46.76838=2000040=244=34.710=074

Troubleshooting:

  • FIXEdge should be up and running state after step 4.
  • There are [ERROR] or [FATAL] error records in FIXEdge logs FIXEdge1\log\FIXEdge.log.
  • The FCS and FIXEdge have up-to-date licenses.
  • If a session can't be established due to sequence number issues this can be resolved by cleaning logs on both sides.