FIX Client Simulator User Guide
- 1 Product Overview
- 2 FIX Client Simulator features
- 3 Prerequisites and System Requirements
- 4 Configuration
- 5 FIX Session creation
- 5.1 Session parameters
- 5.1.1 Required parameters
- 5.1.2 Extended parameters
- 5.1.3 BackupConnectionParameters
- 5.1.4 SSL configuration
- 5.1 Session parameters
- 6 Kafka Session creation
- 6.1 Kafka session parameters
- 6.1.1 Main parameters
- 6.1.2 Authentication parameters
- 6.1.3 SSL parameters
- 6.1 Kafka session parameters
- 7 Multiline session display
- 8 Manual sequence numbers definition and reset
- 9 Display administrative messages in the console
- 10 Sending messages
- 11 Message re-sending
- 12 Sending selected messages
- 13 Sending messages one by one
- 14 Autoincrement tag values
- 15 Replay log
- 16 Events monitoring
- 17 Grid view
- 18 Detailed message view from Events Viewer
- 19 Searching for a raw message
- 20 Writing messages
- 21 Loading predefined message or message batch
- 22 Create messages from the template
- 23 Generate messages
- 24 Adding custom dictionaries
- 25 Table view
- 26 Create and run test scenarios
- 26.1 Create test scenario manually
- 26.2 Referring on repeating group without concrete index
- 26.3 Managing the balance of quantities for the FIX message
- 26.4 Setting up delay property for separate messages in ExpectThenSend command
- 26.5 Record test scenario automatically
- 26.6 Edit test scenario
- 26.7 Rename test scenario
- 26.8 Remove test scenario
- 27 Save session configuration
- 28 Closing session
- 29 Restore session logs
- 30 Troubleshooting
Product Overview
EPAM B2BITS FIX Client Simulator (FCS) is a rich desktop UI application. It allows to simulate multiple FIX protocol-defined buy-side- and sell-side-oriented workflows and create repeatable test scenarios for FIX sessions. FCS combines the ability to generate, manually enter, and edit FIX messages in row format and via pre-defined forms. It allows to assemble and replay FIX messages in a highly automated fashion with automatic handling of sequence numbers and identities.
FCS is used in the following use cases:
OMS/EMS functional and stress testing
Automated FIX integration testing
FIX protocol implementations
Errors reproducing
FCS covers all spectrum of FIX protocol versions and supports custom extensions and QuickFIX-formatted dictionaries.
FIX Client Simulator features
Establishing multiple acceptor and/or initiator sessions on local and/or remote hosts
Support of unregistered acceptor sessions
Restarting the working session with or without session logs restoration
Restoring session state and configurations on FCS startup
Support of all FIX message types (pre-trade, trade, post-trade, market data, etc.)
Standard 4.0 - FIXLatest FIX application versions support
Custom dictionaries support
Overriding SenderCompID and TargetCompID for the established session
Manual sequence numbers definition or reset
Validation of incoming and outgoing FIX and QuickFIX messages
Wide range of FIX session settings including Custom Logon message
Replaying selected log files
Ability to load, modify, and send a file containing a preset message or batch of messages
Enabling/disabling message re-sending
Sending messages in a defined interval
Tag values autoincrement
Events monitoring:
sent and received messages
session states
Creating, recording, editing, and running test scenarios for FIX sessions
Prerequisites and System Requirements
FIX Client Simulator is based on FIX Antenna C/C++/.NET FIX Engine. It can be installed separately or as a part of the FIX Antenna .NET package.
Any modern Intel-based server or workstation with a 64-bit CPU can be used as hardware.
Supported operating systems:
Windows 7
Windows 8
Windows 10
Windows 11
Windows Server 2008 R2
Windows Server 2012
Windows Server 2016
Ubuntu Linux 20.04
Ubuntu Linux 22.04
Rocky Linux 8
macOS
(For Windows users only) Latest (14.42.34438.0) Microsoft Visual C++ Redistributable Package (x64) should be installed before the FIX Client Simulator's installation.
(For Linux and macOS users only) Download and install Wine from the official site to run the FIX Client Simulator.
Installation on Linux Mint and Ubuntu
FCS has been available on Linux since the FIX Client Simulator 3.5.0 release.
To install FIX Client Simulator on Linux Mint and Ubuntu follow the instructions below:
Install Wine (instruction for Ubuntu and Mint).
Install Winetricks using the following commands:
sudo apt install winetricksInstall .NET Framework 4.8 using the following commands:
winetricks --force dotnet48 winetricks --force corefontsIf Wine prompts for installing Mono, click Cancel. Please refer to the HowTo section for more details.
Navigate to the FCS folder and run it.
cd ./FCS_<version> wine Fcs.exe
Installation on macOS
FCS has been available on macOS since the FIX Client Simulator 3.5.0 release.
To install FIX Client Simulator on macOS follow the instructions below:
Install Wine
Option 1 - Download and install Wine from the official site
Option 2 - Download and install Wine using Brew
brew install --cask wine-stable
Navigate to the FCS folder and run it.
Option 1 - via Terminal
cd ./FCS_<version> wine Fcs.exeOption 2 - via context menu
In addition, you can use modern Wine wrappers like Whisky. Whisky has a modern UI and active community support.
Configuration
FIX Client Simulator can be configured in the Fcs.exe.config file via the following properties:
Property Name | Description | Required | Default Value |
|---|---|---|---|
DaysToKeepEventViewLog | This property is available since the FIX Client Simulator 3.3.0 version. This property defines the number of days for which the session logs in Events Viewer will be restored during the logs restoration process. Possible values: int | N | 0 |
MainWindowTitle | This property is available since the FIX Client Simulator 3.6.0 version. This property defines the name of the main FCS application window. If not defined then the default 'EPAM® FIX Client Simulator' title will be displayed. Possible values: string | N | null |
StoreSettingsInUserFolder | This property is available since the FIX Client Simulator 3.2.0 version. This property defines whether the user.config file will be stored in the current user directory. Possible values: true | false | N | false |
TestScenarioFolder | This property is available since the FIX Client Simulator 3.7.0 version. This property defines the path to the system directory where created Test Scenarios will be stored. When the TestScenarioFolder property is defined with the default 'null' value all created Test Scenarios must be stored in the default TestScenarios folder within the application package. Possible values: string | N | null |
FIX Session creation
To create a session, choose: Session → Create new FIX session...:
Specify needed parameters in the Create Session window. When configuration is done, click “OK”. After the session is created, you will see it in the Session List section. All received messages will be displayed in the Events Viewer section below.
Session parameters
The left column of the Create Session window includes all required parameters. If at least one of them is specified incorrectly, the session will not be created.
The right column includes extended parameters that are optional.
Required parameters
Session type: Defines a type of the created session – Initiator or Acceptor.
SenderCompID: Key parameter for purposes of session identification. Sets value of SenderCompID (49) tag in outgoing FIX messages.
TargetCompID: Key parameter for purposes of session identification. Sets value of TargetCompID (56) tag in outgoing FIX messages.
FIX Version: Drop-down list of all available protocol versions, including custom parsers, if configured.
Remote host: Defines a network IP address of the computer, to which connection is established (for initiator).
Remote port: Defines a port's network number on the computer, to which connection is established (for initiator).
Heartbeat interval: Defines the heartbeat interval (seconds) – a time interval between Heartbeat messages
InSeqNum: Defines the initial incoming sequence number. It is expected that the first incoming message will have the specified sequence number.
If set to -1 and SeqNum reset is not enabled then SeqNum will be defined based on existing session logs
OutSeqNum: Defines the initial outgoing sequence number. The first outgoing message will be sent with the specified sequence number.
If set to -1 and SeqNum reset is not enabled then SeqNum will be defined based on existing session logs.
Use custom logon message: If enabled, allows to use custom logon, which should be entered to corresponding field.
Persistent storage type: If enabled, incoming and outgoing messages will be persisted in log files. If disabled, messages will be stored in memory and sessions' state won't be restored after FCS restart.
Reset SeqNum: Allows to select sequence numbers reset strategy. Available options: Reset SeqNums, Don't Reset SeqNums, Don't Reset SeqNums with 141=N.
Extended parameters
Using of extended session parameters can be enabled by checking "Use Extended properties" check-box.
SenderSubID: Sets value of SenderSubID (50) tag in outgoing FIX messages
TargetSubID: Sets value of TargetSubID (57) tag in outgoing FIX messages
SenderLocationID: Sets value of SenderLocationID (142) tag in outgoing FIX messages
TargetLocationID: Sets value of TargetLocationID (143) tag in outgoing FIX messages
Qualifier: Allows setting the name of SessionQualifier.
SourceIPaddress: Defines the expected value of the sourceIP address. If the real value is not equal to the expected one then the session is disconnected without sending a message and an error condition is generated in the log output (for acceptor).
UserName: Sets the value of the Username (553) tag in the Logon message.
Password: Sets the value of the Password (554) tag in the Logon message.
FAST templates: Defines the path to file with FAST templates. If specified, session will be created as FAST session.
Encryption: List of available encryption techniques to mask the application messages.
IntradayLogoutToleranceMode: Defines using of the Intraday Logout Tolerance mode in the session.
ForceSeqNumReset: Defines using the Force Sequence Number Reset mode for the session.
ForcedReconnect: Applied to initiator session. In case there is no acceptor exists (FCS is unable to establish connection), this property works with the 'Reconnect.MaxTries' property in 'engine.properties':
if ForceReconnect = false, the parameter Reconnect.MaxTries will be ignored, session does not try to reconnect;
if ForceReconnect = true, the parameter Reconnect.MaxTries will be used, session will try to reconnect 'Reconnect.MaxTries' times.
EnableMessageRejecting: When set to 'true', the session rejects application messages when the session is unable to send them during a specified period or was disconnected.
IgnoreSeqNumTooLowAtLogon: Defines how the FCS should resolve ‘Sequence number is too low’ problem at a logon message. When enabled the session ignores error and continues to work with received sequence number.
BackupConnectionParameters
The FIX Client Simulator 3.10.0 release introduces the "Backup Connection Parameters" section, which allows configuring a backup connection to ensure a seamless transition if the primary connection fails.
Host: Defines a network IP address of the computer, to which backup connection is established (for initiator).
Port: Defines a port's network number on the computer, to which backup connection is established (for initiator).
EnableCyclicSwitchToBackupConnection: If it is set as "true", a backup session can automatically switch back to the active session once the backup connection has problems.
EnableAutoSwitchToBackupConnection: If it is set as "true", an active session can automatically reconnect to its backup session in case there is a problem to connect to host/port of the active one.
KeepConnectionState: If enabled, the same log files for both connections are used. If disabled, separate logs will be created for the backup connection
SSL configuration
Using SSL can be enabled by checking "Use SSL" check-box.
SSL Protocols: List of supported SSL protocol versions. Allows to select needed versions to be used.
Ciphers: Comma-separated list of ciphers to use. The default OpenSSL built-in configuration is used in case of parameter absence.
Certificate: Path to SSL certificate.
Private Key: Path to SSL private key. If it is omitted Engine tries to load the private key from the same file as SSLCertificate parameter states.
Validate Peer Certificate: If set to "true" then connection counter-parties without a certificate are rejected. SSLCACertificate parameter must be specified.
CA Certificate file: This is a path to the file containing CA certificates.
Kafka Session creation
To create a session, choose: Session → Create new Kafka Session...:
Specify needed session parameters in the Create Kafka Session window and click “OK”. After the Kafka session is created you will see it in the Session List section. All sent or received messages will be displayed in the Events Viewer section below.
Kafka session parameters
Main parameters
Session type: Defines a type of the created session.
Remote host: Defines a network IP address of the Kafka broker.
Remote port: Defines a port's network number of the Kafka broker.
Topic: Name of a topic to send or consume messages.
Key: A Key attached to each message sent from Producer session.
Group: A Group to which created consumer session relates.
From: Partition Offset for created Consumer session.
Authentication parameters
Mechanism: Defines authentication mechanism used for connection (None, SASL/PLAIN)
Username: Available if SASL/PLAIN authentication method is used. Sets the value of the Username used to establish connection.
Password: Available if SASL/PLAIN authentication method is used. Sets the value of the Password used to establish connection.
SSL parameters
Using of SSL can be enabled by checking “Enable SSL” check-box.
Client key: Path to SSL private key.
Client certificate: Path to SSL certificate.
Validate broker certificate: If enabled, two-way TLS is used.
Certificate Authority: Path to the file containing CA certificates.
Multiline session display
The FIX Client Simulator 3.9.0 update allows to view sessions with multiple lines within the Session list. This view can be accessed by following these steps:
Go to the Options menu
Select the Multiple session information
After enabling "Multiple session information" in the Options menu, the details for each session in the list will now be displayed across multiple lines.
This provides a clearer view of all the information for each session
Manual sequence numbers definition and reset
To define sequence numbers manually, open the Create Session window and specify values in InSeqNum and OutSeqNum input fields:
To reset sequence numbers manually open the Create Session window and tick Reset Sequence number.
Display administrative messages in the console
To see or hide administrative messages in the console open the Create Session window and select the Show session messages checkbox.
Alternatively, you can select a session and select the Show session messages option in the Session menu or in the context menu of the session window.
This setting is stored as other session settings and restored after the session restart.
Sending messages
In order to send a message, please specify the message in the Send Message tab, choose a session, and press the Send all or Send current and go Next button. Please note that the sequence number and sending time will be set automatically.
For Kafka session, you can send any text you need, including arbitrary content such as JSON; tags overriding is not available for such messages.
To override SenderCompID and TargetCompID select the Override SenderCompIDs or Override TargetCompID option in the main application menu in the Options section.
To specify the message-sending rate and count (number of messages to be sent at once) enter the value in the Rate and Send count input fields on the Send Message tab.
Message re-sending
To enable message re-sending open Options from the context menu and select the Allow message re-sending option.
Sending selected messages
This feature is available since the FIX Client Simulator 3.0.0 release.
In order to send message(s), open the Send Message tab, choose a session, and type the message(s) in the text box. To send all messages specified in Send Message tab, press the Send all button.
To send only selected message(s) select it in the Send Message tab and press Send Selected button. Only message(s) starting with the 8 tag and ending with the 10 tag will be sent.
The sent message will be highlighted in light grey.
Sending messages one by one
To send messages one by one select the message in the Send Message tab and press the Send Current and go Next button. The first sent message will be highlighted in light grey and the next message will be highlighted in dark grey.
To reset the selection of messages, please press the Reset button.
Autoincrement tag values
The feature works with a FIX or Kafka session
The ability to set the value starting from which the value of the tag will be autoincremented is available since FIX Client Simulator 3.1.0 release.
When sending messages, the values of the specified tags can be automatically increased with each sending. Tag numbers that must be changed are set in the Autoincrement tags field.
If you want to change the values of several tags, the tag numbers must be separated by a space, e.g. '11 38'.
If the tag is included in the Repeating group, the root tag must go first then the '/' symbol, and then the particular tag number, e.g. '453/448'.
If you want to set the value starting from which the value of the tag must be autoincremented, the tag and its value must be separated by the '=' symbol, e.g. '11 = 100' or '58 = "Hello 22"' - for value with the space or '58="Hello \" 22"' - for value with the space and " symbol.
Starting from FIX Client Simulator 3.2.0 release autoincrementation can be reset only by changing the value in the Autoincrement tags field.
Possible Autoincrement Scenarios:
String Values
If the string concludes with a numeric value, the autoincrement operation increases this number by one. For example, if the initial value is "Test1", autoincremented values will be "Test2", "Test3", and so forth.
If the string ends with any non-numeric character, the value "1" is appended to the string, and subsequent increments follow numerically. For instance, starting from "Test," the autoincremented values will be "Test1", "Test2", etc.
Numeric Values
For Integer values, the autoincrement operation increases the value by one. For example, an initial value of "10243" will be followed by "10244," "10245," and so on.
For floating-point (double) values, the increment is determined by the smallest precision of the value. For example, 0.5 will be incremented by 0.1 (resulting in 0.6, 0.7, etc.), while 0.15 will be incremented by 0.01 (resulting in 0.16, 0.17, etc.).
Time Values
For time fields, the current time in UTC is applied.
For DateTime fields, the current DateTime in UTC is applied.
Replay log
The feature works with a FIX or Kafka session
The ability to replay QuickFIX-formatted log files is available since FIX Client Simulator 3.1.0 release.
To send messages from the log file to a session (replay log file), please specify the log file in the Replay tab, choose a session, and press the Play button.
Log files of the following formats may be replayed:
*.in
*.out
*.fix
*.msg
*.body
Also provides the ability:
to suspend sending messages from the log (Pause button)
to stop sending messages from the log (Stop button)
to send messages one by one (just after Loading file, after Pause, after Stop. Next button)
Please note that the Replay function does not send Administrative messages (35=0, 35=A, 35=5, 35=3, 35=2, 35=4, and 35=2) by design.
To send a specific range of messages it is possible to specify a filter by Sequence numbers or/and types of messages (Filter).
The log can be replayed several times. The number of replays is set by the Send count parameter.
The Send count parameter is ignored if messages are sent one by one
To specify the message-sending rate for message sending enter the value in the Rate field in the Replay tab. Also, the interval can be calculated based on the timestamp in the log file (Use the timestamps tick).
In addition, the interval for sending messages is changed by setting a multiplier other than one (Speed parameter).
Events monitoring
The upper right part of the FIX Client Simulator window displays the message(s) to be sent.
The upper left part shows the list of active sessions.
The lower part is the Events Viewer section, where each record corresponds to one event and consists of the event time, name, and description.
The New Events Viewer interface described below is available since the FIX Client Simulator 2.28.0 release.
Events Viewer displays events and messages of the chosen session in the Session List section. If you choose several sessions, all events belonging to the sessions are displayed in the Events Viewer section.
Whole messages or only their parts can be copied from the Events Viewer section.
To copy the whole message with the timestamp it must be selected by highlighting content within a single line or selecting multiple full lines, right-clicked on and then the Copy action must be selected in the context menu.
To copy the FIX message without timestamp it must be right-clicked on and then the Copy FIX Messages action must be selected from the context menu.
To copy the part of the message this part must be selected/highlighted and right-clicked on and then the Copy action must be selected in the context menu.
Checkboxes on the bottom of the Event Viewer section allow you to adjust the completeness of the event display, including messages. You can show or hide timestamps, header, or trailer of a FIX message, application messages, and session messages.
Events and messages in the Events Viewer section can be filtered using the Filter events by text field. All special symbols are supported except '/'.
Incoming, outgoing, and console messages are highlighted with different colors for visual usability. The colors can be changed in the Fcs.exe.config file.
The Events Viewer section can be spliced into three windows (Incoming, Outgoing, and Console) by choosing the Split Window checkbox. No highlighting is applied in this mode.
It is possible to auto-scroll the events by clicking Events Viewer → Auto scroll in the main menu so that Events Viewer will display the latest events first.
To clear the Events Viewer section select the Clear event viewer option from the Events Viewer menu.