ICE Trade Capture Solution Upgrade Instruction

Overview

This article is intended to help customers who use ICE Trade Capture connection to upgrade their FIXEdge-based solution to the latest version. The article provides upgrade instruction for the following scenarios:

  • Pure installation of the new version of the ICE Trade Capture solution;
  • Upgrade of the existing ICE Trade Capture setup.

Please note, if you have multiple connections (not only ICE Trade Capture) on the same FIXEdge instance, contact SupportFIXAntenna@epam.com to get full upgrade instruction.

Pure installation of the new version of ICE Trade Capture solution

This section shows how to set up a new version of ICE Trade Capture solution. It is assumed that:

  • The package contains the latest ICE Trade Capture Solution version with all the new features and bug fixes.
  • Package contains only one ICE Handler component and only one ICE Trade Capture session supposed to be connected to only one ICE Trade Capture feed.
  • All customer's specific ICE Trade Capture configurations and database schemes will be discarded.
  • No migration of existing data from the current database to the new upgraded database takes place (means new clean Database from the package to be set up).
  • It is required to enter all ICE specific credentials to the new configuration setup following the instruction.
  • After the solution start, trades from last 2 days will be re-requested and stored into the database.

Preparation

  1. Make sure you have sufficient administration permissions for further uninstall/install procedures.
  2. Download the new ICE Trade Capture solution package for the corresponding OS version from the Client Space.
  3. Keep your current installation for backup purposes.
  4. Make a copy of your current Database scheme;
  5. Make a copy of your current license (engine.license file). If your license has expired or was lost, contact sales@btobits.com to obtain the new one.

Upgrade Process

  1. Unpack the new version of ICE Trade Capture solution to a separate folder.
  2. Take the details from you current installation and adjust the configuration following the step 3 from How to deploy the package and make it work.
  3. In case several ICE Handler components should be used to connect to multiple ICE Trade Capture feeds:
    1. Create copies of the ICE Handler from the new package (libICEHandler-gcc44-MD-x64.so in Linux package and ICEHandler-vc10-MD-x64.dll in Windows package), give them names according to your specifics, and put to the /bin folder.
    2. Adjust configuration accordingly.
  4. Copy your FIXEdge license into the license file path.
  5. Stop your current FIXEdge instance.
  6. Stop your current FIXICC-agent instance.
  7. Uninstall your current FIXEdge and FIXICC Agent instances (means deregister these services from the system):
    1. For Windows: run FIXEdge1.uninstall.cmd from the /bin directory and uninstallService.FIXEdge1.bat from fixicc-agent\bat directory.
    2. For Linux: run uninstallDaemon.sh from fixicc-agent\bat directory.
  8. Remove all the files except servers.xml from FIXICC's working dir .fixicc/dev usually placed in the C:\Users\%USER%\AppData\Roaming directory.
  9. Upgrade the Database scheme with the new one provided in the package in the DB_script directory.
  10. Execute 'MSSQL_ICETrdCapt.sql', 'MSSQL_ICESecDef.sql', 'MSSQL_ICEStrategies.sql', and 'MSSQL_ICE_sp_AllocationReport.sql' scripts against the database to create or upgrade stored procedures (adjust change the database name if necessary). 
  11. Install new FIXEdge and FIXICC Agent instances (means register these services in the system):
    1. For Windows: run FIXEdge1.install.cmd from the /bin directory and installService.FIXEdge1.bat from the fixicc-agent\bat directory.
    2. For Linux: run installDaemon.sh from fixicc-agent\bat directory.
  12. Start the new FIXICC-agent instance.
  13. Start FIXEdge via FIX Integrated Control Center (FIXICC).

In order to ensure that the upgraded ICE Trade Capture solution was successfully setup, please check the FixEdge.log file:

  • Find the following record with the target FIXEdge version:

    FixEdge.log
    2016-09-20 10:46:19,459 UTC   INFO    [CC_Layer]  5552  FIXEdge Version X.Y.Z (rxyz) started
  • Make sure there are no [ERROR] records in the log file.

How to revert the upgrade procedure

If you need to revert changes in order to use your original ICE Trade Capture version (that was used before the upgrade), you need to do the following steps:

  1. Stop the FIXEdge instance.
  2. Stop the FIXICC-agent instance.
  3. Uninstall the FIXEdge and FIXICC Agent instances (which means deregister them from the system).
  4. Remove all the files except servers.xml from FIXICC's working dir .fixicc/dev usually placed in the C:\Users\%USER%\AppData\Roaming directory.
  5. Restore the Database scheme used previously.
  6. Install the FIXEdge instance of the previously used ICE Trade Capture package.
  7. Install the FIXICC-agent instance of the previously used ICE Trade Capture package.
  8. Start the FIXICC-agent process of the previously used ICE Trade Capture package.
  9. Start the FIXEdge process of the previously used ICE Trade Capture package.

Upgrade of the existing ICE Trade Capture setup

This section shows how to upgrade an existing version of ICE Trade Capture solution. It is assumed that after the upgrade:

  • ICE Trade Capture solution will contain latest FIXEdge version with all the new features and bug fixes.
  • All customer's specific ICE Trade Capture configurations and database schemes will be kept as is (means no ICE Trade Capture specific changes and enhancements from the new package will come).
  • All the existing data in the current Database will be kept as is.

Upgrade Preparation

  1. Make sure you have sufficient administration permissions for further uninstall/install procedures.
  2. Download the new ICE Trade Capture solution package for the corresponding OS version from the Client Space.
  3. Stop the FIXEdge instance.
  4. Stop the FIXICC-agent instance.
  5. Remove all the files except servers.xml from FIXICC's working dir .fixicc/dev usually placed in the C:\Users\%USER%\AppData\Roaming directory.
  6. Make a backup copy of your current installation (configuration and binaries).
  7. Make a backup copy of your current license (engine.license). If your license has expired or was lost, contact sales@btobits.com to obtain the new one.

Upgrade Process

  1. Upgrade FIXEdge:
    1. For Windows version:
      Replace* all the files in the <bin> directory with new binaries from the package.
    2. For Linux version:
      Replace* files in  <bin> directory with new binaries from the package - all except *.sh files.

      If you have several ICE Handlers in the <bin> directory, update all of them. To do that you need to create copies of the ICE Handler from the new package, give them names according to your specifics and replace your current binaries with new ones.

  2. Upgrade FIXICC:
    1. Replace* the whole <fixicc-agent> directory with a new one from the package;
    2. Replace* the whole <fixicc> directory with a new one from the package.

      "Replace" in this context means that files should be deleted from the current FIXEdge directory and new files from the package should be added there. This clarification is made in order to avoid the situation when two (or more) same libraries with different versions appear in the directory as it may cause issues.

  3. Replace the <jre> directory with a new one from the package.
  4. Update all the files in the FIXEdge /conf directory with files from the new package except the following ones which should be preserved from your current installation:
    1. FIXEdge.properties
    2. ICEProperties.properties
    3. BL_Config.xml
  5. Update database stored procedures, using 'MSSQL_ICETrdCapt.sql', 'MSSQL_ICESecDef.sql', 'MSSQL_ICEStrategies.sql', and 'MSSQL_ICE_sp_AllocationReport.sql' scripts (adjust change the database name if necessary).
  6. Start the FIXICC-agent instance.
  7. Start the FIXEdge via FIX Integrated Control Center (FIXICC).

In order to ensure that the upgraded ICE Trade Capture solution was successfully setup, please check the FixEdge.log file:

  • Find the following record with the target FIXEdge version:

    FixEdge.log
    2016-09-20 10:46:19,459 UTC   INFO    [CC_Layer]  5552  FIXEdge Version X.Y.Z (rxyz) started
  • Make sure there are no [ERROR] records in the log file.

How to revert the upgrade procedure

In order to revert the upgrade, you should take your made backup copy and go through all the steps described above. 

In other words, the procedure is absolutely the same, the only difference is that your backup copy is the target solution version in this case.

Upgrade of the existing configuration files to SQL Stored Procedures (since FIXEdge 6.7.1)

We recommend upgrading to a new version of the ICE TC Solution.

  • The new interface of Security Definition (35=d) messages has been fully supported and enabled by default.
  • SQL Stored Procedures are used instead of JavaScripts for data processing and saving to DB. The performance of Security Definition (35=d) message processing is increased.
  • Defined Strategy (35=UDS) messages have been fully supported and enabled by default.
  • Subscribed to security definitions and UDS real-time published over the session has been added.

This section contains a list of changes that need to be made to update the ICE Trade Capture Solution configuration. The upgrade process is similar to the process described in this section Upgrade of the existing ICE Trade Capture setup. But, no migration of existing data from the current database to the newly upgraded database takes place (means a new clean Database from the package to be set up).

ICE Trade Capture configuration update (instead of Upgrade of the existing ICE Trade Capture setup, step 4)

Update all the files in the FIXEdge /conf directory with files from the new package except the following ones which should be preserved from your current installation:

  1. engine.properties
  2. FIXEdge.properties
  3. ICEProperties.properties
  4. BL_Config.xml

Adjust ICE Trade Capture configuration (typically located here ‘C:/B2BITS/FIXEdge/FIXEdge1/conf/’). Make a backup copy of your current configuration before. 

  • Update the engine.properties file.
      • Specify the parameters as further described:
        • AdditionalParsersList = FIX44ICETC
  • Update the FIXEdge.properties file.
      • Update the Version parameter for ICESession as further described:
        • FixLayer.FixEngine.Session.ICESession.Version = FIX44ICETC
      • Add the AsyncProcessing and QueueSizeLimit parameters for ICESession as further described:
        • FixLayer.FixEngine.Session.ICESession.AsyncProcessing = true
        • FixLayer.FixEngine.Session.ICESession.AsyncProcessing.QueueSizeLimit = -1
      • Remove ICEProxySender and ICEProxyReceiver sessions (if specified):
        • FixLayer.FixEngine.Session.ICEProxySender.
        • FixLayer.FixEngine.Session.ICEProxyReceiver.
        • Exclude them from the FixLayer.FixEngine.Sessions parameter value list
        • Remove the description of the sessions. Remove all settings, starting with
      • Add the Username and Password parameters for ICESession as further described:
        • FixLayer.FixEngine.Session.ICESession.Username = <ICEUserName>
        • FixLayer.FixEngine.Session.ICESession.Password = <ICEUserPassword>
  • Update the ICEProperties.properties file for UDS messages handling (if you want to receive UDS messages).
      • Add Define Strategy subscriptions to the necessary markets using provided examples in the "Security Definition Subscriptions" section:
        • ICESession.UDSSubscriptions.<Subscription_Name>.SecurityID = ice_market_type_i
        • Add a security definition subscription name to the list in the ICESession.UDSSubscriptions property
        • Specify SecurityID  for added defined strategy subscription as described in the instruction below:

Parameter values SecurityDefinitionSubscriptions and UDSSubscriptions must be unique. Names of subscriptions should not be the same for receiving Security Definition response (35=d) and Defined Strategies (35=UDS) messages.

  •  Update the BL_Config.xml file.
      • Change ICEReports, ICESecurityDefinitions History descriptions as further described (adjust change the ConnectionString parameter if necessary):     

        BL_Config.xml
         <History 	Name="ICEReports"           
        		StorageType="ODBC"         
        		TableName="ICEReports"            
        		ColumnSize="1024000"
        		UseStoredProcForInsert="true"
        		StoredProcName="SaveReports"         
        		ConnectionString="DSN=ICE_Trades;UID=ice_admin;Pwd=temp_pass;">   
        	<KeyField ColumnName="xmlData" ColumnSize="1024000">213</KeyField>   
        </History>
          
        <History 	Name="ICESecurityDefinitions"          
        		StorageType="ODBC"            
        		TableName="ICESecurityDefinitions"            
        		ColumnSize="1024000"
        		UseStoredProcForInsert="true"
        		StoredProcName="SaveDefinitions"           
        		ConnectionString="DSN=ICE_Trades;UID=ice_admin;Pwd=temp_pass;">     
        	<KeyField ColumnName="xmlData" ColumnSize="1024000">213</KeyField>    
        </History>
      • Add ICEDefinedStrategy History descriptions as further described (adjust change the ConnectionString parameter if necessary): 

        BL_Config.xml
        <History 	Name="ICEDefinedStrategy"
                     	StorageType="ODBC"
                     	TableName="ICEDefinedStrategy"
                     	ColumnSize="1024000"
                        UseStoredProcForInsert="true"
                        StoredProcName="SaveStrategies"
                     	ConnectionString="DSN=ICE_Trades;UID=ice_admin;Pwd=temp_pass;">
              	<KeyField ColumnName="xmlData" ColumnSize="1024000">213</KeyField> 
        </History>
      • Add ICEAllocationReports History descriptions as further described (adjust change the ConnectionString parameter if necessary):

        BL_Config.xml
            <History Name="ICEAllocationReports"
                     StorageType="ODBC"
                     TableName="ICEAllocationReport"
                     ColumnSize="1024000"
        			 UseStoredProcForInsert="true"
        			 StoredProcName="SaveAllocationReports"
                     ConnectionString="DSN=ICE_Trades;UID=ice_admin;Pwd=temp_pass;">
              <KeyField ColumnName="xmlData" ColumnSize="1024000">213</KeyField>	
            </History>
      • Remove all other ICE Solution History descriptions, e.g.:
        • ICEReportsSides
        • ICEReportsSidesParties
        • ICEReportsSidesAllocsPty
        • ICEReportsLegs
        • ICEReportsLegsNestedPty
        • ICEReportsCombiDefinitions (if specified)
        • Sent_Messages_ICE
        • ICESecurityDefinitions,
        • ICESecurityDefUnderlyings
        • ICEUnderlyingSecurityAltID (if specified)
        • ICESecurityBlockDetails (if specified)          
      • Remove Routing Rules descriptions for ICESession:
        • «forward to loopback»
        • «ICEProxySender»
        • «Save ICE Trade Capture Reports»
        • «Save ICE Security Definitions»
      • Add "Register messages in ICEHandler" rule descriptions as further described:

        BL_Config.xml
             <Rule Description="Register messages in ICEHandler" >
                          <Source Name=".*ICESession"/>
                          <Condition>
                                      <EqualField Field="35">
                                                  <Val>d</Val>
                                                  <Val>AE</Val>
                                                  <Val>B</Val>
        						<Val>AS</Val>
                                      </EqualField>
                          </Condition>
                          <Action>
                                      <HandlerAction Name="ICEHandler"/>
                          </Action>
              </Rule>
      • Add "Register UDS messages with rejected response type in ICEHandler" rule descriptions as further described:

        BL_Config.xml
          <Rule Description="Register UDS messages with rejected response type in ICEHandler" >
        		<Source Name=".*ICESession"/>
        		<Condition>
        			<EqualField Field="35" Value="UDS"/>
        			<EqualField Field="323">
        				<Val>5</Val>
        				<Val>10</Val>
        			</EqualField>
        		</Condition>
        		<Action>
        		<HandlerAction Name="ICEHandler"/>
        		</Action>
        	</Rule>
      • Add "Save ICE Trade Capture Report data" rule descriptions as further described: 

        BL_Config.xml
        Config.xml 
              <Rule Description="Save ICE Trade Capture Report ">
                          <Source Name=".*ICESession" />
                          <Condition>
                                      <EqualField Field="35" Value="AE" />
                          </Condition>
                          <Action>
                                      <HandlerAction Name="FMXMLHandler" EntryIndex="true" />
                                      <SaveToHistory Name="ICEReports" />
                          </Action>
              </Rule>
      • Add "Save ICE Trade Capture Report data" rule descriptions as further described:

        BL_Config.xml
              <Rule Description="Save ICE Security Definition data">
                     	    <Source Name=".*ICESession" />
                            <Condition>
                                      <EqualField Field="35" Value="d" />
                            </Condition>
                            <Action>
                                      <HandlerAction Name="FMXMLHandler" EntryIndex="true" />
                                      <SaveToHistory Name="ICESecurityDefinitions" />
                            </Action>
                </Rule>
      • Add "Save ICE UDS data" rule descriptions as further described:

        BL_Config.xml
            	<Rule Description="Save ICE UDS data">       
        		    <Source Name=".*ICESession" />
                            <Condition>
                                      <EqualField Field="35" Value="UDS" />
                            </Condition>
                            <Action>
                                       <HandlerAction Name="FMXMLHandler" EntryIndex="true" />
                                       <SaveToHistory Name="ICEDefinedStrategy" />
                            </Action>
                </Rule>
      • Add " Save ICE Allocation Report data" rule descriptions as further described:

        BL_Config.xml
             	<Rule Description="Save ICE Allocation Report data">       
        		    <Source Name=".*ICESession" />
                            <Condition>
                                      <EqualField Field="35" Value="AS" />
                            </Condition>
                            <Action>
                                       <HandlerAction Name="FMXMLHandler" EntryIndex="true" />
                                       <SaveToHistory Name="ICEAllocationReports" />
                            </Action>
                </Rule>
  • Remove ICESecDef.js and ICETrdCapt.js files from the FIXEdge configuration directory.

Database Schema update

  • Make a copy of your current Database scheme.
  • Run the MSSQL_ICE_database.sql script. This script recreates these tables (data will be lost):
    • Trade Capture Report (MsgType = ''AE")
      • Table: ICEReports
      • Table: ICEReportsSides
      • Table: ICEReportsSidesParties
      • Table: ICEReportsSidesAllocsPty
      • Table: ICEReportsLegs
      • Table: ICEReportsLegsNestedPty
      • Table: ICEReportsCombiDefinitions
      • Table: Sent_Messages_ICE
    • Security Definition (MsgType = ''d")
      • Table: ICESecurityDefinitions
      • Table: ICESecurityDefUnderlyings
      • Table: ICEUnderlyingSecurityAltID
      • Table: ICESecurityBlockDetails
    • Defined Strategy (MsgType = ''UDS")
      • Table: ICEDefinedStrategy
      • Table: ICEDefinedStrategyBlockDetails
      • Table: ICEDefinedStrategyLegs
  • Run MSSQL_ICESecDef.sql, MSSQL_ICEStrategies.sql, MSSQL_ICETrdCapt.sql andMSSQL_ICE_sp_AllocationReport.sql scripts to create Stored Procedures.