FIXICC User Guide

FIXICC User Guide



1. Overview

FIX Integrated Control Center is an application providing out-of-the-box monitoring and administration capabilities for FIX Edge and any applications embedding FIX Antenna C++, FIX Antenna Java, FIX Antenna .NET. FIXICC is a Java-based standalone application that runs on any platform.

2. Requirements

Hardware



CPU

Minimum

1.0 GHz

Recommended

2.6 GHz

Memory

Disk Space

512 Mb

50 Mb

2 Gb

200 Mb



Software

  • One of the supported Operating Systems:

    • Microsoft Windows XP Professional SP3

    • Microsoft Windows Vista

    • Microsoft Windows 7

    • Microsoft Windows 10

    • Ubuntu 9.04

    • Solaris OS version 10 (SPARC)

    • Solaris OS version 10 (x86/x64 Platform Edition)

    • Macintosh OS X 10.5 Intel

    • Macintosh OS X 10.5 PPC

3. Installation

FIXICC and FIXICC Agent are standalone applications, which can be installed along with FIXEdge or separately.For more details on how to install these applications without FIXEdge refer to 'Manual Installation' section 

3.1. Manual installation

FIXICC installation

Installation from zip archive

  1. Unzip fixicc-x.y.z.zip file into any folder on machine.

  2. (Skip this step if you install FIXICC v. 2.9.16 or higher)
    Place license file (fixaj2-license) into FIXICC root directory (for examle, C:\Users\User\FIXICC).

  3. Start FIXICC via 'fixicc.exe' file from FIXICC 'bin' directory.

Installation from the Setup Wizard

FIXICC can also be installed using Setup Wizard:

  1. Run fixicc.x.y.z-setup.exe

  2. Read and agree with license agreement.

  3. Choose folder to install FIXICC to.

  4. (Skip this step if you install FIXICC v. 2.9.16 or higher)
    Specify path to license file (fixaj2-license). This is an optional step. If skipped, license file may be deployed later using Help → Import License menu option.

  5. Specify if the following should be created: folder in Start menu, icons on a desktop and/or on Quick Launch panel.

  6. Press Install button and install FIXICC.

FIXICC Agent installation

Installation from zip archive

  1. Unzip fixicc-agent-x.y.z.zip file into any folder on machine where FIX Edge is installed.

  2. (Skip this step if you install FIXICC Agent v. 2.9.16 or higher)
    Place license file (fixaj2-license) into FIXICC Agent 'license' folder.

  3. Install FIXICC Agent via 'fixicc-agent.bat' located in FIXICC Agent's 'bat' folder. Use this command: fixicc-agent.bat install. This will install it as a service.

  4. Run FIXICC Agent using "fixicc-agent.bat start" command.

Installation from the Setup Wizard

FIXICC Agent can also be installed using Setup Wizard:

  1. Run fixicc-agent.x.y.z-setup.exe.

  2. Read and agree with license agreement.

  3. Choose the folder to install FIXICC Agent to. Note, it should be installed on the same machine where FIX Edge.

  4. (Skip this step if you install FIXICC Agent v. 2.9.16 or higher)
    Point to license file (fixaj2-license). This is an optional step. If skipped, add license later to the agent’s license folder.

  5. Specify the path to FIX Edge location, its essentials (server’s start, stop and process id file) and configuration files (engine.properties, FIXEdge.properties and business rules configuration – BL_Config.xml).



  6. Specify FIXICC Agent connection parameters:
    FIXICC Agent port – port accepting connections from FIXICC. NOTE, if you use several instances of FIX Edge on same machine, then each FIXICC Agent instance should use different AgentServerPort which should not be equal to FIXEdge ListenPort;
    FIXICC Agent Service name – service name to be displayed in Local Services;
    Admin Session SenderCompID – set ID to be used as SenderCompID of administration session between FIXICC Agent and FIX Edge (tag 49). NOTE, the value of this parameter may be arbitrary, but if several FIXEdge instances and several FIXICC Agent instances run on the same server, then this parameter should be different across all instances;
    Admin Session Username – username to be used in Logon message submitted via administration session between FIXICC Agent and FIX Edge (tag 553), the value of this parameter should match the value of Admin session username, specified for FIXEdge during its installation;
    Admin Session Password – password to be used in Logon message submitted via administration session between FIXICC Agent and FIX Edge (tag 554), the value of this parameter should match the value of Admin session password, specified for FIXEdge during its installation.




  7. Specify if the following should be created: folder in Start menu, icons on a desktop and/or on Quick Launch panel.

  8. Press 'Install' button and install FIXICC Agent.

4. Configuration

FIXEdge C++ is supplied with already pre-configured administrative sessions (for more details on accomplished configuration refer to 3.1).

4.1. Configure FIX Administrative interface in FIX Antenna C++ based products 

If FIXICC and FIXICC agents are installed separately from FIX Edge or any other server, the administrative session connection parameters should be configured manually.

The steps below demonstrate how to configure administrative session 

  1. Enable monitoring feature in the engine.properties file

    engine.properties

    Monitoring.Enable = true
  2. Specify the monitoring port for administrative sessions. This step is optional

    engine.properties

    Monitoring.ListenPort = 8909

    If the monitoring port is not configured Administrative session can connect to the ListenPort.

  3. Specify administrative session parameters and add the session to the list of administrative sessions in engine.properties.

    engine.properties

    # The list of administrative sessions separated by comma. Monitoring.AdminSessionNames = AdminClient Monitoring.AdminSession.AdminClient.TargetCompId = AdminClient Monitoring.AdminSession.AdminClient.Version = FIX44 Monitoring.AdminSession.AdminClient.Username = user Monitoring.AdminSession.AdminClient.Password = pass Monitoring.AdminSession.AdminClient.IntradayLogoutToleranceMode = true Monitoring.AdminSession.AdminClient.IgnoreSeqNumTooLowAtLogon = true

    FIX engine will accept the FIX Session with SenderCompId=FIXADMIN

    But if the AdminClient session is connected FIX Engine will not accept other administrative sessions. For multiple administrative sessions, the user should specify all required sessions in session Monitoring.AdminSessionNames list with own sets of parameters.

  4. Optionally, if it is required to restrict connections for administrative sessions from unexpected hosts the user can set the permitted address:

    engine.properties

    Monitoring.AdminSession.AdminClient.SourceIPaddress = 127.0.0.1

    FIX Engine will accept the administrative connections only from a localhost

For the configuration above the administration session above will be configured as:

4.1.1 Administrative sessions functionality

Direct Connections may have not some functions that the FIXICC agent provides, please find below the list of the functions that may appear as gray in FIXICC.

The functions that are not showed in below, are available for Direct Connections.

To see the full list of functions go to Functionality

Additional GUI functionality that available only with connection to the FIXICC agent

Server level 
  • Start Server

  • Stop Server

  • Load Engine Configuration

  • Deploy Server Configuration

  • Latency

  • Load FIXEdge Configuration

  • Load BL Configuration

  • Clean Logs

Session level 
  • Edit Session

Session Log browsing

FIXEye must be installed.

  • Open Incoming Message Log

  • Open Outgoing Message Log

  • Open All Message Logs

  • Search In All Message Logs

Schedules level
  • Schedule details

  • Edit schedule

  • Remove schedule

4.2. FIXICC Agent Configuration

In order to adjust the FIXICC Agent configuration, refer to the 'conf' folder.

  1. Check the values of the parameters in 'agent.properties' file

  2. Verify the correctness of the administrative session parameters in 'fixengine.properties'.


    # Name of the custom package. This property is using for the extending the count of admin-commands. autostart.acceptor.targetIds= # Storage directory, could be either absolute path (like /tmp/logs or c:\fixengine\logs) storageDirectory=logs # provide fast in-memory storage, but during session restart all messages will be lost storageFactory=com.epam.fixengine.storage.InMemoryStorageFactory #Sets queue mode. This property makes sense only if FilesystemStorageFactory is set. #Set to "false" for persistent queue (slower but no messages will be lost), "true" for in-memory queue (faster #but less safe, some messages may be lost). inMemoryQueue=true # Maximum message size supported by this FIX engine instance. The parameter must be integer and not #negative. Should be set to a greater than expected maximum message by approximately 1-5%. maxMessageSize=1024000 # Toggle on/off the validation of incoming messages according to the base of custom dictionaries. validation=false # This parameter allow to automatically resolve sequence gap problem (for example, when there is every #day #sequence reset). Supported values: #Recommended value - Always - session will send logon with 34= 1 and 141=Y every times (during #connection and reconnection). #OneTime - session will send logon with 34= 1 and 141=Y only one time (during connection). #Never - this means that user can sets the 34= 1 and 141=Y from session parameters by hand.forceSeqNumReset=Always
  3. If necessary, adjust FIXICC Agent logging configuration in 'log4j.properties' file. For more details refer to http://logging.apache.org/log4j/1.2/index.html .


  4. Number of agent folder copies should be equal to number of FIXICC Agent instances you are going to use on this machine. Multiple FIXICC Agent instances can be used on single machine, for example to monitor several FIXEdge instances installed on this machine.
    In such case, change the following properties in  'wrapper.conf' file: wrapper.console.title, wrapper.ntservice.name and wrapper.ntservice.displayname (Note, their values should be unique across all FIXICC Agent instances).
    I.e., 3 FIXICC Agent instances residing on the same machine can be called: "FIXICC - Agent Server #1", "FIXICC - Agent Server #2" and "FIXICC - Agent Server #3".
    Where instance #1 will have the following properties in 'wrapper.conf' file:


    wrapper.console.title=FIXICC - Agent Server #1 wrapper.ntservice.name=FIXICC - Agent Server #1 wrapper.ntservice.displayname=FIXICC - Agent Server #1


    Important: "fixicc-agent.bat install" command can be run only after these changes are made and absence of duplicated service names is verified.

    Please note: 'agent.properties' should also be changed according to new servers parameters.

5. Connect To Server

5.1. Run FIXICC using executable file

In order to run FIXICC installed as a standalone application use executable file (fixicc.exe) located in FIXICC 'bin' directory. Servers configured during FIX Edge installation will be displayed under 'Servers' on the left hand side of FIXICC GUI.

5.2. Add server

If FIXEdge, FIXICC and FIXICC agent were installed all together, FIXICC is already pre-configured to monitor relevant FIXEdge (this was accomplished during installation process, see  3.1 for more details).
In this case, installed server will be displayed under 'Servers' on the left hand side of FIXICC GUI.

If FIXICC and FIXICC Agent were installed separately from FIX Edge or any other server, FIXICC should be configured manually. See below for more details.

Please note:

FIXICC offers two methods of connecting to the server: direct access and access via FIXICC agent. Differences in server configuration for both methods will be described in this section.



  1. Start FIXICC.

  2. Click Add Server icon or choose the same command in the context menu.

  3. Set the following mandatory parameters:
    - Server name – any value describing the server being added;
    - Type - B2BITS FIXEdge (if monitored server is FIXEdge) or Generic FIX Server – otherwise;
    - Host:
    1) specify host where server is installed (for direct access mode);
    2) specify host where FIXICC Agent is installed (for FIXICC + FIXICC Agent mode).
    - Port:
    1) specify server listening port (for direct access mode);
    2) specify FIXICC Agent listening port – AgentServerPort (for FIXICC + FIXICC Agent mode).
    - Username – specify admin session username:
    1) Monitoring.AdminSession.AdminClient.Username (for direct access mode);
    2) EngineConnectionDetails.AdminSession.Username (for FIXICC + FIXICC Agent mode).




  4. Set the following extended parameters: (optional step)
    - SenderCompID - ID that to be used as SenderCompID in administration session between:
    1) FIXICC and FIXEdge (tag 49) (for direct access mode). This ID should be equal to Monitoring.AdminSession.AdminClient.TargetCompId from FIXEdge 'engine.properties' file.
    2) FIXICC and FIXICC Agent (for FIXICC + Agent mode) – arbitrary name can be used. Value should be unique for each FIXICC Agent instance.

    - TargetCompID - ID to be used as TargetCompID in administration session between:
    1) FIXICC and FIXEdge (tag 56) (for direct access mode). NOTE, for FIXEdge, FIXAntenna C++ and FIXAntenna .NET this ID should always be set to "FIXADMIN". For FIX Antenna Java ID is a configurable parameter and should be equal to autostart.acceptor.targetIds=admin from FIX Antenna Java 'fixengine.properties' file.


    See below administration session parameters used in FIX Antenna Java (see 'fixengine.properties' file):

    autostart.acceptor.targetIds=admin

    autostart.acceptor.admin.login=admin

    autostart.acceptor.admin.password=admin

    autostart.acceptor.admin.ip=*

    autostart.acceptor.admin.fixServerListener=com.epam.admintool.AdminTool


    2) FIXICC and FIXICC Agent (for FIXICC +  FIXICC Agent mode) – any value an be used (should be unique for each FIXICC Agent instance).




  5. Click Finish. Now new server is added to the list of 'Servers'.

5.3. Connect To the Server

Select required server from the 'Servers' list and depending on preferred connection type:

•     click “Connect”  button or go to “Server → Connect” context menu option to establish a direct connection to the server.

or

•   connect via FIXICC agent. The algorithm remains the same, but FIXICC Agent should be started before clicking the “Connect” button.

You need specify admin session password:
1) Monitoring.AdminSession.AdminClient.Password (for direct access mode);
2) EngineConnectionDetails.AdminSession.Password (for FIXICC + FIXICC Agent mode).



Please note, the following operations are supported only via the FIXICC Agent:

•        Managing engine configuration

•        Managing session

•        Administrating server



6. Functionality

6.1. Server level

Start Server

Once you have successfully connected to the server, it can be started by clicking “Start Server” button or navigating to “Server → Start Server” submenu.

You can also do right mouse click on required server and select “Start Server” from popped up context menu.



Server details

All servers added to FIXICC are listed on the right side of the window in a table view.

The following health statuses are indicated for each monitored server in the 'Status' column and next to the server in the 'Servers' list:

Double click on a server from the 'Servers' list expands list of pre-configured sessions and add-on components (for FIXEdge only; add-on components include Transport Adaptors, Handlers, etc).



Edit Server Details

You can edit details of any added server using right‐click menu for relevant server and selecting “Edit Server”.



All changes will be applied only after you reconnect to modified server.



Edit Server Configuration

FIXICC allows direct (right from the application) configuration of server you are connected to via FIXICC Agent. The following settings can be accessed:

  • Engine configuration (for both FIXEdge, FIX Antenna C++/.NET/Java or another generic FIX server)

  • FIX Server configuration including its Business Layer (for FIXEdge only).

Each set of configuration parameters can be loaded for selected server via corresponding 'Server' submenu option or via right-mouse-click menu.

Or use the following toolbar buttons:

The file will be opened in the right panel as a plain editable text document.

When you finish editing the configuration click the “Deploy Server Configuration” button or select the corresponding option from the 'Server' submenu.
Relevant configuration file will be overwritten and the previous version backed‐up as engine_YYYYMMDD‐HHmmss.properties where YYYYMMDD‐HHmmss is a time stamp of file modification.
In addition to the automatic back‐up, it is highly recommend to update revision number to avoid possible difficulties in tracking the change history.

Important: all changes will be made for selected Server.

Stop Server

In order to stop the server, select it from 'Servers' list and and click "Stop Server” button or go to “Server → Stop Server” context menu.

You can also do right mouse click the required server and select “Stop Server” from the context menu.

After 'Stop server' command was given to the server, it will gracefully close all open FIX session, stop all running Transport Adaptor(s) and Handler(s), disconnect from any middle-ware (the last two are FIXEdge specific) and then stop the process.



Disconnect From Server

In order to disconnect from the server, select it from 'Servers' list and and click "Disconnect” button or go to “Server → Disconnect” context menu.
 

You can also do right mouse click the required server and select “Disconnect” from the context menu.

Disconnection from the server will not affect its operation. If server was up and running before disconnection attempt was performed, it will continue running. If it was stopped, will remain stopped.



Remove Server

Select the required server from the list and click the “Remove Server”  button or go to “Server → Remove Server” to remove it from the list.

You can also right click the required server and select “Remove Server” from the context menu.

You should disconnect from the server before removing it from the list of servers.

Server removal will not affect its operation. If server was up and running before it was removed from the list of monitored servers, it will continue running. If it was stopped, will remain stopped.



Import / Export Server Configuration

You can import and/or export server configuration from/to a file. This can be handy when backing‐up your configuration or sharing it with someone else. You can either go to “File” submenu or do right mouse click on a selected server to select the required option.

Clean Logs

You can clean the server’s logs (the files are located in folder log of server) if FIXICC is connected to server via FIXICC Agent. Select the required server from the list and click the “Clean Logs” button or go to “Server → Clean Logs”.



6.2. Session level

Once server is added, you will be able to view, configure and manage FIX sessions. This section describes what can be done to a FIX session.
All possible actions are available in the 'Session' submenu and 'Session Administration' toolbar. 
Note, “View → Toolbars” context menu item can be used to hide/unhide this toolbar. 

Add Session

In order to add new FIX session, select necessary server and click “Add Session” button or go to “Session → Add session to server” context menu item.
The same can also be achieved via right mouse click on selected server and referring to 'Add Session to the Server' menu item. 

By default, only mandatory fields should be specified:

  • Session Type 

  • FIX Version 

  • Remote Host and Port 

  • Sender and Target CompIDs 

  • SSL connection


Any session configuration can be saved as default by clicking “Save as default” button to create new session with pre-defined custom parameters.

Full list of settings is available by clicking on the “Advanced >>” button.



New sessions can be added so:

  • For FIX Antenna: only once it is started.

  • For FIX Edge: at any time. If server is stopped, new session will be recorded in the configurations file.



Session Qualifier

To establish several sessions with the same SenderCompId and TargetCompId, both Initiator and Acceptor should create several session objects which differ from each other by SessionQualifier property. SessionQualifier property on the Initiator side must be the same as SessionQualifier property of the corresponding session on acceptor side. When Initiator connects to Acceptor, it sends SessionQualifier along with SenderCompId and TargetCompId in logon message. The SessionQualifier tag in the Logon message is optional and can be configured in the engine.properties file. When Acceptor receives logon message with the SessionQualifier it searches for a registered session with SessionId corresponding to received TargetCompId, SenderCompId, and SessionQualifier. If the session is found it is associated with the incoming connection, otherwise, the connection is rejected.
If the user creates a session by passing only SenderCompId and TargetCompId parameters (without SessionQualifier), the SessionId structure is created and stored internally with empty qualifier_ property. If Acceptor registers a session without session qualifier it won't accept any incoming connection with session qualifier defined in logon message. And vice versa, if Acceptor has registered a session or several sessions with qualifiers, it won't accept connections from Initiators without SessionQualifier.

Also SessionQualifierTag is available for defining a tag containing SessionQualifier name (LogonMessageSessionQualifierTag parameter in FIXEdge.properties).

Refer to: How to use SessionQualifier

Extended Settings tab


The following optional parameters can be set:

  • FIX Engine Session ID

  • Sender/Target SubIDs and Location IDs

  • Storage type: 'Persistent' to temporarily store messages on a hard drive (recommended to be able to restore in case of a failure) or 'Transient' storing messages in memory to increase throughput and decrease latency. Note, if 'Transient' mode is selected all  information will be lost in case of failure

  • Engine behavior when session is not available: store messages for later delivery (default one) or reject them.

  • Socket operation priority to control threads allocation, the following options are available: 

    • Even (default), i.e. threads are allocated 

    • or Aggressive Send, Aggressive Receive or Aggressive Send & Receive corresponding to separate threads for sending, receiving and both sending and receiving respectively. All these settings will improve latency but affect throughput.

  • Forced Reconnect: parameter to specify whether all non‐gracefully terminated sessions will try to reconnect.

  • Disable TCP Buffer: another configuration option to lower latency, but affecting throughput as messages will be sent independently, not in packages.

Sequence Numbers tab

This tab allows you to manage sequence numbers by doing the following:

  • Set/change In/Out session sequence numbers

  • Accept/reject all incoming connections ignoring too low sequence numbers at Logon via 'Ignore Sequence Number Too Low At Logon'

  • Enable/disable continuing sequence numbers after logout and further create session wit the same ID via 'Intraday Logout Tolerance mode

  • Control sequence numbers reset policy via 'Force SeqNum Reset Mode'. The following setting are available:

    • always

    • never

    • only in initial state

    • according to server defaults

Security tab

This tab allows specifying properties for user authentication at logon as well as data encryption settings.

  • Parameters for user authentication: username and password 

  • Encryption type: PKCS, DES, PKCS_DES, PGP_DES, PGP_DES_MD5 or PEM_DES_MD5. Make sure that counterparty is aware of your security settings.

Backup Connection tab

Allows specifying backup connection to assure the uninterrupted information exchange. Check the corresponding box and specify the following:

  • Backup host and port

  • Auto Switch: is recommended to avoid manual switch each time the connection becomes unstable

  • Enable Cyclic Switch: for automatic switching back to primary connection in case the backup one is unstable or lost.

  • Active Connection to specify which connection is used: "primary" or "backup". The "restore" value means that previous connection (primary or backup) is used to establish connection.

Note: if the primary connection is a SSL connection, then backup connection will use the same SSL parameters (certificate, protocols) as the primary connection (specified in the SSL tab).

Custom Logon tab

Custom FIX Logon (MsgType = 'A') message can be specified in this tab.

Scheduler tab

Old-style Scheduler tab

New-style Scheduler tab was introduced in FIXICC 2.10.1 with FIXEdge 6.0.

Since FIXEdge 6.0 if you want to keep Old-style Scheduler tab in FIXICC, you should not specify FIXICC.Schedules property equal to true in the FIXEdge.properties configuration file.

This tab allows specifying scheduled tasks for FIX sessions (functionality is available for FIX Edge only)
It is possible to switch between custom and default scheduler. In order to do so, switch between "Session starts/stops with the server (according to default scheduler)" and "Session starts/stops according to scheduler”.
For custom scheduler you can configure:

  • Start/Connect/Disconnect/Terminate time (in local FIX Server time)

  • Immediate session start (upon its creation) by checking the "Start Session Right Now" option. In this case, its further operation will be determined by schedule, if it is specified

  • Whether session should be recreated on Logout. Initiator-session will be recreated after receiving Logout and Acceptor-session will wait for incoming connection.

  • Whether session should be terminated on Logout. Initiator-session will terminate after receiving Logout.

New-style Scheduler tab

New-style Scheduler tab was introduced in FIXICC 2.10.1 with FIXEdge 6.0.

Since FIXEdge 6.0 to activate New-style Scheduler tab functionality in FIXICC you should specify FIXICC.Schedules property equal to true in the FIXEdge.properties configuration file.

This tab allows to define the schedule for the FIX session in a new, more flexible format (functionality is available for FIXEdge only).

All the date/time properties of schedule are defined in CRON format. CRON expressions have the following syntax:

┌──────────── second (0 - 59) │ ┌───────────── minute (0 - 59) | │ ┌───────────── hour (0 - 23) | │ │ ┌───────────── day of month (1 - 31) | │ │ │ ┌───────────── month (1 - 12) | │ │ │ │ ┌───────────── day of week (1 - 7: Sunday to Saturday) | │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * * * * * *



Support of the CRON expressions is limited by quartz. In particular, specifying both a day-of-week and a day-of-month values is prohibited (you'll need to use the '*' character in one of these fields).

The only note here is that '*' character is used instead of '?' character in compare with quartz.

It is possible to switch between existing schedules, define custom session schedule or choose default settings:

When choose <Inherit from default>, no schedule is specified and default properties will be appliedIf default properties are not specified in FIXEdge.properties, FIX Session will be started/stoped with the server.