Skip to main content

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:

  1. Hardcoded default settings built into the Fidessa Adapter.
  2. Settings from the "adapterConfig" top-level key in the custom-configs.json file are merged with the default settings (new settings are added, existing settings are overridden).
  3. 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.