Fidessa
Overview
The Fidessa Adapter can be configured via the custom-configs.json file distributed with the bundle, as well as via the "customProperties" top-level key in the Fidessa Adapter app definition file. The custom-configs.json file also contains settings for controlling the login flow and configuring the initialization of the io.Connect API and the connection to the io.Connect platform (necessary when the Fidessa Adapter is running outside the io.Connect environment).
The configuration settings are merged and applied in the following order:
- Hardcoded default settings built into the Fidessa Adapter.
- Settings from the
"adapterConfig"top-level key in thecustom-configs.jsonfile are merged with the default settings (new settings are added, existing settings are overridden). - Settings from the
"customProperties"top-level key in the Fidessa Adapter app definition file are retrieved via the io.Connect API after a connection to the platform has been established and are merged on top of the existing ones (new settings are added, existing settings are overridden).
Configuration Settings
The custom-configs.json file located in the /adapter folder of the Fidessa Adapter bundle provides static configuration retrieved before the Fidessa Adapter connects to the io.Connect platform. It contains settings for determining the login flow, for configuring the initialization of the io.Connect API and the connection to the io.Connect platform when the adapter is running outside the io.Connect environment, and for the Fidessa Adapter itself.
The custom-configs.json file has the following properties:
| Property | Type | Description |
|---|---|---|
"adapterConfig" |
object |
Settings for the Fidessa Adapter itself. This object has the same shape as the "customProperties" object in the Fidessa Adapter app definition file. |
"disableDirectLogin" |
boolean |
If true, will disable automatic login and will display a login form instead. Defaults to false. |
"exposeAPI" |
boolean |
If true, will disable automatic login and will enable using a custom login flow. Defaults to false. |
"ioConfig" |
object |
A Config object that will be passed to the IODesktop() factory function, or a Config object that will be passed to the IOBrowser() factory function depending on the environment. Contains settings for initializing the respective io.Connect API and connecting to the io.Connect environment. |
The following example demonstrates using the custom-configs.json file to provide settings for connecting to the io.Connect platform (e.g., when the Fidessa Adapter is running in a web browser outside the io.Connect environment, or when the Fidessa Adapter is running inside the io.Connect environment, but you need to provide custom connection settings) and settings for the Fidessa Adapter itself:
{
// Settings for connecting to the io.Connect platform.
"ioConfig": {
"gateway": {
// WebSocket URL of the io.Connect Gateway.
"ws": "ws://localhost:8385"
},
// Valid credentials for authenticating with the io.Connect Gateway.
"auth": {
"username": "my-username",
"password": "my-password"
}
},
// Custom settings for the Fidessa Adapter.
"adapterConfig": {
"wsUrl": "ws://fidessa-host:port/ITP/",
"reconnectPeriodInBrowser": "2000(5)"
}
}You can also use the "customProperties" object in the Fidessa Adapter app definition file to provide settings for the Fidessa Adapter. The settings specified in the app definition file will override the ones specified in the "adapterConfig" object in the custom-configs.json file.
The following example demonstrates using the "customProperties" object in the app definition file to provide settings for the Fidessa Adapter:
{
"name": "FidessaAdapter",
"title": "Fidessa Adapter",
"type": "window",
"hidden": true,
"autoStart": true,
"service": true,
"allowMultiple": false,
"details": {
"url": "https://my-fidessa-adapter/index.html"
},
// Custom settings for the Fidessa Adapter, which will override the ones
// specified in the `"adapterConfig"` object in the `custom-configs.json` file.
"customProperties": {
"reconnectPeriod": "3000(5), 30000"
}
}The "adapterConfig" object in the custom-configs.json file and the "customProperties" object in the Fidessa Adapter app definition file have the following properties:
| Property | Type | Description |
|---|---|---|
"bloombergReconnectCooldownTime" |
number |
Interval in milliseconds to wait before attempting another invocation cycle of the Interop method specified in "bloombergReconnectMethod". On each io.Connect Channel update, the Fidessa Adapter initiates a check to determine whether the Bloomberg Adapter is connected to Bloomberg by using the method specified in "bloombergReconnectMethod" and the reconnection period specified in "bloombergReconnectPeriod". This cooldown time ensures that the Fidessa Adapter won't initiate too many connection check cycles if the io.Connect Channels are updated very frequently. Defaults to 15000. |
"bloombergReconnectMethod" |
string |
Name of an Interop method to use for forcing the Bloomberg Adapter to reconnect to Bloomberg. The method will be invoked periodically as specified in the "bloombergReconnectPeriod" property. Defaults to "T42.BBG.Reconnect". |
"bloombergReconnectPeriod" |
string |
A cycle of intervals and retry attempts for invoking the Interop method specified in "bloombergReconnectMethod". Accepts a string in the format <interval>(retries), <interval>(retries), ..., <interval>. The <interval> token specifies the interval in milliseconds between reconnection attempts, and the <retries> token specifies the number of attempts at that interval. You can specify as many <interval>(retries) segments as necessary. If the last segment doesn't have a <retries> token, the reconnection attempts will repeat indefinitely at the specified interval. Defaults to "1000(1)". |
"disableCache" |
boolean |
When true, bypasses the bidirectional de-duplication cache in the update facilitator, so every update is forwarded unconditionally. Useful when loop prevention is handled at the platform level or for debugging. Defaults to false. Available since Fidessa Adapter 2.2. |
"fidClientPath" |
string |
Path to the Fidessa viewCode string inside the client object in the io.Connect Channel context. Used when a Channel update triggers an update in Fidessa. The adapter navigates the client object using this path (split by "fidClientPathSep") to extract the viewCode to send to Fidessa. With the default value "id:com.fidessa.viewCode" (split by ":"), the adapter would look for client.id["com.fidessa.viewCode"]. Since the Service Mapper should write the client identifier as a plain string at client.id (e.g., { id: "VC001" }), this path will not resolve and the adapter will fall back to sending the client to the Service Mapper for reverse lookup. Adjust this path if your deployment uses a different channel context shape. Defaults to "id:com.fidessa.viewCode". |
"fidClientPathSep" |
string |
Separator to be used for splitting the value specified in "fidClientPath" into nested property access tokens. Necessary because the target key "com.fidessa.viewCode" contains dots. Defaults to ":". Available since Fidessa Adapter 1.1. |
"fimPath" |
string |
Path to the FIM code inside the instrument object in the io.Connect Channel context. Used when a Channel update triggers an update in Fidessa. If a value is found at this path, it's sent to Fidessa directly without calling any mapping service. Defaults to "id.fim". |
"reconnectMethod" |
string |
Interop method name that can be invoked to trigger an immediate reconnection attempt to the Fidessa WebSocket. Defaults to "T42.Fidessa.Reconnect". |
"reconnectPeriod" |
string |
Accepts a string in the format "<number>(<number>), <number>" which defines how the Fidessa Adapter should attempt reconnection. The first number in the string represents an interval in milliseconds at which to attempt reconnection, followed by the number of initial reconnection attempts (the second number in the brackets). The third number is also a reconnection interval in milliseconds which the Adapter should use after the initial reconnection attempts have failed. Defaults to "2000(5), 20000". |
"reconnectPeriodInBrowser" |
string |
See "reconnectPeriod". Defaults to "2000(5)". Available since Fidessa Adapter 1.1. |
"serviceMethod" |
string |
The name of the interop method to invoke for symbology enrichment. No implementation is shipped with the adapter — you must register this method in your environment. If the method is not found on the interop bus, the adapter skips the call and publishes original data. Set to "" to disable explicitly. See Mapping Services. Defaults to "Glue42.ContextMapper.Enhance". |
"throttleMs" |
number |
The time in milliseconds to wait and aggregate Channel updates before sending them to Fidessa. Defaults to 500. |
"useInternalMapper" |
object[] |
Array of regex-based mapping rule objects for instrument symbology conversion. When non-empty, replaces the Service Mapper for instruments (clients still use the Service Mapper if registered). See Mapping Services. Defaults to [] (disabled). Available since Fidessa Adapter 1.1. |
"wsUrl" |
string |
WebSocket URL to which to connect (and Fidessa is serving). Defaults to "ws://localhost:80/ITP/". |
Reconnection
Fidessa WebSocket
If for any reason the connection with the Fidessa WebSocket API is lost, the adapter will follow the instructions set in the "reconnectPeriod" property. By default, it will try to reconnect 5 times at a 2 second interval and after that, it will try to reconnect every 20 seconds.
When running inside io.Connect Browser or Chrome connected to io.Connect Desktop, the adapter uses the "reconnectPeriodInBrowser" property instead. By default, it will try to reconnect 5 times at a 2 second interval and then stop.
Bloomberg Reconnection
When the Fidessa Adapter is used together with the Bloomberg Adapter, it can automatically trigger Bloomberg reconnection attempts. On every genuine channel update received from an interop-enabled app, the adapter invokes the method specified by "bloombergReconnectMethod" (default: "T42.BBG.Reconnect") to ensure the Bloomberg Adapter is connected.
A cooldown mechanism prevents excessive calls: once a reconnection attempt has been made, the adapter waits for the duration specified by "bloombergReconnectCooldownTime" (default: 15 000 ms) before attempting again. If the Bloomberg reconnect method is not registered on the interop bus, the call is skipped silently.
Login
The adapter supports three login flows, controlled by the "disableDirectLogin" and "exposeAPI" properties in custom-configs.json. The internal logic is: autoLogin = !disableDirectLogin && !exposeAPI.
"disableDirectLogin" |
"exposeAPI" |
Flow |
|---|---|---|
false |
false |
Auto Login — the adapter uses credentials from "ioConfig" in custom-configs.json and connects immediately without user interaction. This is the default behavior. |
true |
false |
Manual Login — the adapter presents a login form where the user must enter the gateway URL, username, password, and Fidessa WebSocket URL. |
| any | true |
Custom Login Flow — the adapter dispatches a DOM event and waits for an external script to provide credentials programmatically. See Custom Login Flow below. |
Custom
This flow allows programmatic provisioning of credentials and gateway URL. The adapter dispatches a io.FA_CustomCredentialsFlow CustomEvent on window, and the custom logic handles the credential resolution.
The event detail payload contains:
| Property | Type | Description |
|---|---|---|
log |
function |
Wrapper around the io.Connect logger. Call as log(message, level). |
continueGWLogin |
function |
Call with an overrides object to continue the login flow. Returns a Promise that resolves with the io.Connect API instance. |
credentialsConfig |
object |
The current default credentials configuration. |
The continueGWLogin(overrides) function accepts an object with these optional fields:
| Property | Type | Description |
|---|---|---|
gwUrl |
string |
io.Connect gateway WebSocket URL. |
username |
string |
Username for authentication. |
password |
string |
Password for authentication. |
wsUrl |
string |
Fidessa WebSocket URL. |
Example (custom-login-flow.js):
window.addEventListener("io.FA_CustomCredentialsFlow", async ({ detail: {
log,
continueGWLogin,
credentialsConfig: currentCredentials
}}) => {
log("Executing custom login flow", "info");
const io = await continueGWLogin({
...currentCredentials,
gwUrl: "ws://localhost:8385",
username: "myUser",
password: "myPassword",
});
});To activate the Custom Login Flow, set "exposeAPI": true in custom-configs.json and load your event listener script (e.g., custom-login-flow.js) before the adapter initializes.