# FX Sales configuration

This page lists the configuration options for FX Sales.

For information on where and how to set configuration options, see [Configuring FX Sales](st-configuring-fx-sales.md).

## APP_ID

The StreamLink application identifier. The application identifier distinguishes client traffic in StreamLink log files and in Liberator license monitoring.

|     |     |
| --- | --- |
| **Type** | String |
| **Valid values** | If your Liberator is licensed at the application level, then APP_ID must match an application identifier that your Liberator is licensed to accept. |
| **Default value** | 'fxsales' |

**Example**

```js
ExtendedAppConfig.APP_ID = 'my_sales_app';
```

## BLOCK_TRADING.ENABLED

Set to true to enable the block trade feature.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['BLOCK_TRADING.ENABLED'] = true;
```

## BLOCK_TRADING.TIMEOUTBAR.RUN.LOW.ENABLED

**From:** 2.16

Set to true to change the colour of the Block Trades timeout bar when a stream or quote is about to expire. See also, [`BLOCK_TRADING.TIMEOUTBAR.RUN.LOW.TIMETHRESHOLD`](#block_tradingtimeoutbarrunlowtimethreshold).

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['BLOCK_TRADING.TIMEOUTBAR.RUN.LOW.ENABLED'] = false;
```

## BLOCK_TRADING.TIMEOUTBAR.RUN.LOW.TIMETHRESHOLD

**From:** 2.16

The remaining time, in seconds, at which the colour of the Block Trades timeout bar changes to indicate that a stream or quote is about to expire. See also, [`BLOCK_TRADING.TIMEOUTBAR.RUN.LOW.ENABLED`](#block_tradingtimeoutbarrunlowenabled).

|     |     |
| --- | --- |
| **Type** | Integer |
| **Valid values** | 0 to the JavaScript constant [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER). |
| **Default value** | 5 |

**Example**

```js
ExtendedAppConfig['BLOCK_TRADING.TIMEOUTBAR.RUN.LOW.TIMETHRESHOLD'] = 10;
```

## BLOTTER_DEFAULT_EXPORT_FORMAT

The default file-format for data exported from blotters using the export icon (icon:mail-forward[]). Users can set their own preferred file-format in the User Settings dialog.

For related information, see:

* [CAPLIN.USER_PREFERENCES.ENABLED](#caplinuserpreferencesenabled)
* [Obtain a container snapshot in a CSV or XLSX file](../caplin-platform/liberator/liberator-obtain-a-container-snapshot-in-a-csv-or-xlsx-file.md)
* [Format fields for export to a CSV or XLSX file](../caplin-platform/liberator/liberator-format-fields-for-export-to-a-csv-or-xlsx-file.md)

|     |     |
| --- | --- |
| **Type** | String |
| **Valid values** | This configuration option accepts one of the following file formats: * 'xlsx': Office Open XML Workbook (Microsoft Excel 2007+) * 'csv': Comma-separated values |
| **Default value** | 'xlsx' |

**Example**

```js
ExtendedAppConfig.BLOTTER_DEFAULT_EXPORT_FORMAT = 'csv';
```

## BROWSER_CHECK

Configures app behaviour when users access the application with an unsupported browser. Define supported browsers and their minimum versions using [`BROWSER_CHECK_SUPPORTED_BROWSERS`](#browser_check_supported_browsers).

Available from FX Sales version 3.12+.

|     |     |
| --- | --- |
| **Type** | Boolean \ |
| String | **Default value** |
| `false` | **Valid values** |

**Example value**

```js
"soft"
```

## BROWSER_CHECK_SUPPORTED_BROWSERS

A list of supported browsers along with their _minimum_ major versions that will bypass [`BROWSER_CHECK`](#browser_check) warnings. When the browser check is run, the items listed here are compared to values extracted from the browser’s [User Agent](https://en.wikipedia.org/wiki/User-Agent_header) HTTP header.

Available from FX Sales version 3.12+.

|     |     |
| --- | --- |
| **Type** | Array of objects |
| **Valid values** | An array of objects of the following specification: |
```
{
  name: <name>,
  major: <major_version>
}
` Where `<name>` is one of the following FX Sales' constants: * `BROWSER.Chrome` * `BROWSER.Firefox` * `BROWSER.Edge` To use the FX Sales' `BROWSER` object in ExtendedAppConfig.js, import `BROWSER` from `@caplin/core`: |
```js
import { BROWSER } from "@caplin/core";
` To override this configuration option in an external configuration file, use the following string values directly rather than via the `BROWSER` object: * "Google Chrome" * "Firefox" * "Microsoft Edge" |

## CAPLIN.AUDIO

A reference to an audio configuration object (see `caplinx/AudioConfig.js`).

|     |     |
| --- | --- |
| **Type** | Array of objects |
| **Valid values** | Valid reference to an array of objects (see `caplinx/AudioConfig.js`) |
| **Default value** | `AudioConfig` (a reference to the array exported by `caplinx/AudioConfig.js`) |

**Example**

```js
ExtendedAppConfig['CAPLIN.AUDIO'] = MyAudioConfig;
```

## CAPLIN.AUDIO.ENABLED

Set to true to enable audio notifications in FX Sales.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.AUDIO.ENABLED'] = true;
```

## CAPLIN.AUDIO.FILTER_FIELD_VALUES

Restricts sales-intervention blotter audio notifications to new deals with field-value pairs matching the key-value pairs in a JavaScript object.

|     |     |
| --- | --- |
| **Type** | JavaScript object |
| **Valid values** | Map of strings. Key names are case sensitive (a key name of `pricingMode` does not match a field name of `PricingMode`). |
| **Default value** | `{}` |

**Example: restrict notifications to records with a "PricingMode" field set to "Manual"**

```js
ExtendedAppConfig['CAPLIN.AUDIO.FILTER_FIELD_VALUES'] = {"PricingMode":"Manual"};
```

## CAPLIN.AUDIO.INTERVENTION.OPTIONS

Sets the audio files available for audio notifications in the Sales Intervention interface.

|     |     |
| --- | --- |
| **Type** | Array of strings |
| **Valid values** | Each string must have a corresponding configuration object in the CAPLIN.AUDIO array. |
| **Default value** | `['none', 'chaching', 'clinking', 'coin', 'glassclink', 'jump', 'laser', 'pindrop', 'poolball', 'pop', 'pop2', 'swordclink', 'tap', 'thump', 'thwach']` |

**Example**

```js
ExtendedAppConfig['CAPLIN.AUDIO.INTERVENTION.OPTIONS'] = ['none', 'chaching', 'clinking'];
```

## CAPLIN.CLIENTINFO.TEMPLATEID

The HTML template for the client info bar.

**📌 NOTE**\
The client info bar is no longer rendered by template, and this configuration item may be removed in a later release of FX Sales.

|     |     |
| --- | --- |
| **Type** | String |
| **Valid values** | Valid template id |
| **Default value** | 'caplinx.motf.clientinfo.client-info' |

**Example**

```js
ExtendedAppConfig['CAPLIN.CLIENTINFO.TEMPLATEID'] = 'caplinx.motf.clientinfo.my-client-info';
```

## CAPLIN.CLIENTSEARCH.USERSTEMPLATEID

The HTML template for the search side-panel.

**Deprecation notice**: as of FX Sales 1.12, the search side-panel has been deprecated in favour of the modal search dialog and may be removed in a later release. See [CAPLIN.USERSEARCH.MODAL.ENABLED](#caplinusersearchmodalenabled).

|     |     |
| --- | --- |
| **Type** | String |
| **Valid values** | Valid template id |
| **Default value** | 'caplinx.users.clientsearch.client-search-users' |

**Example**

```js
ExtendedAppConfig['CAPLIN.CLIENTSEARCH.USERSTEMPLATEID'] = 'caplinx.users.clientsearch.my-client-search-users';
```

## CAPLIN.CONTAINER.DOCKING_ENABLED

Set to true to allow users to dock sales-ticket containers to the bottom of the FX Sales window.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.CONTAINER.DOCKING_ENABLED'] = false;
```

## CAPLIN.DECISIONSUPPORT.ENABLED

Set to `true` to display the Decision Support bar at the top of the FX Sales window.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.DECISIONSUPPORT.ENABLED'] = true;
```

## CAPLIN.DUPLICATE.TRADE.ENABLED

**From:** 2.16

Set to `true` to enable the **Duplicate** option in the **More Actions** menu of trade confirmations.

This feature enables a user to request a new quote based on the details of a previous trade.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.DUPLICATE.TRADE.ENABLED'] = true;
```

## CAPLIN.FX.ACCOUNT.SERVICE.STORE.SELECTED.ACCOUNT

Set to true to persist accounts set on the Account Service (AccountService class) so that the accounts are reloaded the next time the application is started.

**📌 NOTE**\
The Account Service is no longer used by FX Sales and this configuration option may be removed in a later release of FX Sales.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.FX.ACCOUNT.SERVICE.STORE.SELECTED.ACCOUNT'] = true;
```

## CAPLIN.FX.TILE.ALLOW_BROKEN_DATES

Determines whether FX tiles can stream rates for trades settling on broken dates:

* Set to true to allow FX tiles to stream rates for broken dates.
* Set to false to allow FX tiles to stream rates for spot and standard tenors only.

If set to false, then selecting a broken date in an FX tile replaces the tile’s rates with the text 'RFS'. Clicking 'RFS' opens a sales ticket, regardless of the value of configuration option [CAPLIN.FX.TILE.ONE_CLICK_TRADE](#caplinfxtileone_click_trade).

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.FX.TILE.ALLOW_BROKEN_DATES'] = true;
```

## CAPLIN.FX.TILE.ENABLE_SWAP_LADDER

Determines if the swap ladder view is enabled on FX tiles.

**Deprecation note**: As of FX Sales version 3.24 this has been deprecated in favour of the `swapLadderEnabled` [user config](../fx-integration-api/fxapi-user-config.md) property.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Default value** | `true` |
| **Since** | 1.19.0 |
| **Deprecated** | 3.24.0 |

## CAPLIN.FX.TILE.ONE_CLICK_TRADE

Determines the action performed when a user clicks on a rate in an FX tile:

* Set to true to execute an ESP trade at the client’s default margin.
* Set to false to launch a sales ticket.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |
| **Removed** | 4.1.0 |

**Example**

```js
ExtendedAppConfig['CAPLIN.FX.TILE.ONE_CLICK_TRADE'] = true;
```

## CAPLIN.FX.TILE.SHOW.FWD_MID_POINTS

Set to true to display a mid-rate on FX tiles displaying forward rates.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.FX.TILE.SHOW.FWD_MID_POINTS'] = true;
```

## CAPLIN.FX.TILE.SHOW.SPOT_MID_RATE

Set to true to display a mid-rate on FX tiles displaying spot rates.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppCofig['CAPLIN.FX.TILE.SHOW.SPOT_MID_RATE'] = true;
```

## CAPLIN.FX.TILE.UPDATE_SUBSCRIPTION_ON_AMOUNT_BLUR

Determines how frequently an FX tile re-subscribes to streaming prices when a tile’s amount field is edited:

* Set to true to re-subscribe when focus leaves the amount field.
* Set to false to re-subscribe on each keystroke in the amount field.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.FX.TILE.UPDATE_SUBSCRIPTION_ON_AMOUNT_BLUR'] = true;
```

## CAPLIN.FX.TILE.USE.DEFAULT.ACCOUNT

Set to true to apply the permissions associated with a client’s default trading account to the FX tiles in the Client View. If a client has no default account or has insufficient permissions granted to their account, then some or all of the FX tiles in the client view will be disabled.

Set to false to enable all FX tiles in the Client View without regard to the permissions granted to the client’s default trading account.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.FX.TILE.USE.DEFAULT.ACCOUNT'] = true;
```

## CAPLIN.LOGIN

The configuration object for the built-in login page.

|     |     |
| --- | --- |
| **Type** | JavaScript object |
| **Valid values** | See CAPLIN.LOGIN configuration object below |
| **Default value** | The object exported by module `default-aspect/src/caplinx/LoginConfig.js` |

**CAPLIN.LOGIN configuration object**

| Property | Type | Description |
| --- | --- | --- |
| title | String | The title to display for the login page. |
| usernameFormat | String or Regex | The name of a validator or a regular expression. A validator, 'email', is provided out-of-the-box to validate email addresses. |
| usernameMessage | String | The message displayed when a username format is incorrect. |
| links | Array of Link objects (see table below) | Text and hyperlinks to display on the login page. |
| keyMasterUrl | String | The URL of the KeyMaster servlet. |
| loginBackground | String | The background image of the login page. |
| loginCompanyLogo | String | The company logo on the login page. |
| loginProductLogo | String | The product logo on the login page. |
| forgottenPasswordFunction | JavaScript function | Function that handles a password recovery request. See example code below. |

**Link object specification**

| Property | Type | Description |
| --- | --- | --- |
| text | String | The text to display |
| url | String | [optional] The URL to navigate to on clicking the text |

**Example CAPLIN.LOGIN object**

```js
{
  title: i18n('reactloginpage.title'),
  usernameFormat: 'email',
  usernameMessage: i18n('reactloginpage.login.user.name.validation'),
  loginBackground: 'unbundled-resources/images/login_screen_bg.jpg',
  loginCompanyLogo: 'unbundled-resources/images/login_screen_company_logo.svg',
  loginProductLogo: 'unbundled-resources/images/login_screen_product_logo.png',
  links: [
    {
      text: "Caplin © " + ((new Date).getFullYear())
    },
    {
      url: "https://www.caplin.com/business/cookie-policy",
      text: i18n('reactloginpage.footer.cookies')
    },
    {
      url: "https://www.caplin.com/business/terms-conditions",
      text: i18n('reactloginpage.footer.terms')
    },
    {
      url: "https://www.caplin.com/business/privacy",
      text: i18n('reactloginpage.footer.privacy')
    }
  ],
  keyMasterUrl: "servlet/StandardKeyMaster",
  forgottenPasswordFunction: ForgottenPasswordExample
}
```

**Example function for the forgottenPasswordFunction property**

```js
export const ForgottenPasswordExample = function(loginData, callback) {
  /**
  * example:
  * loginData = { user: "st1@caplin.com" }
  */
  setTimeout(function() {
    if(callback) {
      callback({
        success: true,
        message: ""
      });
    }
  }, 1000);
};

export default ForgottenPasswordExample;
```

## CAPLIN.MOTF.ORDER.MARGIN.DEFAULT

The margin, in pips, to use when a streaming order rate does not include a margin.

|     |     |
| --- | --- |
| **Type** | Integer |
| **Valid values** | [CAPLIN.MOTF.ORDER.MARGIN.MIN](#caplinmotfordermarginmin) to [CAPLIN.MOTF.ORDER.MARGIN.MAX](#caplinmotfordermarginmax) |
| **Default value** | 0 |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.ORDER.MARGIN.DEFAULT'] = 2;
```

## CAPLIN.MOTF.ORDER.MARGIN.ENABLED

Set to true to allow users to adjust the margin on individual orders.

Set to false to use the default order margin, set by the configuration option [CAPLIN.MOTF.ORDER.MARGIN.DEFAULT](#caplinmotfordermargindefault).

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.ORDER.MARGIN.ENABLED'] = false;
```

## CAPLIN.MOTF.ORDER.MARGIN.MAX

The maximum margin, in pips, for orders. If a user sets an order margin higher than the maximum margin, then the margin is reset to the maximum value.

|     |     |
| --- | --- |
| **Type** | Integer |
| **Valid values** | From [CAPLIN.MOTF.ORDER.MARGIN.MIN](#caplinmotfordermarginmin) to the JavaScript constant `[Number.MAX_SAFE_INTEGER](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)`. |
| **Default value** | 1000 |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.ORDER.MARGIN.MAX'] = 2000;
```

## CAPLIN.MOTF.ORDER.MARGIN.MIN

The minimum margin, in pips, for orders. If a user sets an order margin lower than the minimum margin, then the margin value is reset to the minimum value.

|     |     |
| --- | --- |
| **Type** | Integer |
| **Valid values** | From JavaScript constant `[Number.MIN_SAFE_INTEGER](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER)` to [CAPLIN.MOTF.ORDER.MARGIN.MAX](#caplinmotfordermarginmax) |
| **Default value** | -1000 |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.ORDER.MARGIN.MIN'] = -500;
```

## CAPLIN.MOTF.ORDER.DISCRETION.ENABLED

Set to false, this will hide the slippage on the FX Orders Ticket, Order Confirmation and PDF.

|     |     |
| --- | --- |
| **Type** | Integer |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.ORDER.DISCRETION.ENABLED'] = false;
```

## CAPLIN.MOTF.TICKET.ACCOUNT.ALLOW_NULL_SELECTION

Set to true to allow users to execute trades against a null trading account. The null account is labelled '-' in the ticket’s account dropdown, and is sent to the server as the value '-|-'.

Set to false to require users to execute trades against a named trading account.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTIF.TICKET.ACCOUNT.ALL_NULL_SELECTION'] = true;
```

## CAPLIN.MOTF.TICKET.ACCOUNT.AUTO_SELECT_FIRST

Determines the action performed following the selection of a client in a sales ticket:

* Set to true to automatically select the first of the client’s trading accounts.
* Set to false to leave the client’s trading account unselected.

If a client only has one account, then client’s account will always be automatically selected.

This configuration option does not apply to tickets opened by clicking **New trade**, which always automatically select the first of the client’s trading accounts.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTIF.TICKET.ACCOUNT.AUTO_SELECT_FIRST'] = true;
```

## CAPLIN.MOTF.TICKET.APPLY_ALL_IN_MARGIN_TO_FORWARD

Determines how a forward quote is re-calculated following a user-adjustment to the all-in-margin:

* Set to true to achieve the new all-in-margin by automatically adjusting the forward margin.
* Set to false to achieve the new all-in-margin by automatically adjusting the spot margin.

In the event that there is a precision mismatch between the three margins (spot, forward, and all-in), any extra precision will be rolled onto the forward margin regardless of the value of this configuration option.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.APPLY_ALL_IN_MARGIN_TO_FORWARD'] = true;
```

## CAPLIN.MOTF.TICKET.AUTO_QUOTE

Determines whether the Auto-Quote feature is enabled. Auto-Quote streamlines the processes of requesting and re-requesting a quote.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.AUTO_QUOTE'] = true;
```

The table below compares the process of requesting and re-requesting a quote when Auto-Quote is enabled and when Auto-Quote is disabled.

**Requesting a quote using a ticket opened by clicking **New trade****

| Auto-Quote | Behaviour |
| --- | --- |
| Enabled | The quote is automatically requested when when all parameters for the quote have been completed. |
| Disabled | The user clicks **Get quote** to request a quote. |

**Requesting a quote using a ticket opened from an FX tile**

| Auto-Quote | Behaviour |
| --- | --- |
| Enabled | The quote is automatically requested. |
| Disabled | The user clicks **Get quote** to request a quote. |

**Changing a quote’s parameters and re-quoting**

| Auto-Quote | Behaviour |
| --- | --- |
| Enabled | The user can edit the quote’s parameters on-the-fly. If the Amount or Settlement parameters are changed, then the ticket automatically requests a new quote. By default, the existing quote’s margins are retained in the new quote. To reset the margins when requoting, see [CAPLIN.MOTF.TICKET.MARGIN.APPLY_DEFAULT_ON_REQUOTE](#caplinmotfticketmarginapply_default_on_requote). |
| Disabled | To change the quote’s parameters, the user must cancel the current quote, edit the parameters of the trade, and click **Get quote** to request a new quote. |

## CAPLIN.MOTF.TICKET.CLIENT_RATE_ALWAYS_EDITABLE

Overrides the default behaviour for when a client-rate field can, and cannot, be edited. By default, rates and margins are only editable when they are locked (fixed). Locks are mutually exclusive: when a quote’s margin is locked (fixed), the quote’s client-rate is unlocked (floating).

* Set this option to true to allow a user to edit the client-rate field regardless of whether the user has locked the client-rate.
* Set this option to false to allow a user to edit the client-rate field only when the user has locked the client-rate.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.CLIENT_RATE_ALWAYS_EDITABLE'] = true;
```

## CAPLIN.MOTF.TICKET.DEFAULTS

The default values for fields in the sales ticket.

|     |     |
| --- | --- |
| **Type** | Object |
| **Valid values** | A JavaScript object with properties corresponding to trade field names. |
| **Default value** | `{}` |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.DEFAULTS'][TRADE_FIELDS.CURRENCY_PAIR] = 'GBPUSD';
```

## CAPLIN.MOTF.TICKET.EXECUTE.BUTTON.ALWAYS_ENABLED

Determines when the execute buttons on a ticket are enabled:

* Set to true to allow a user to click the execute button on a sales ticket when either the client rate or the margin is locked.
* Set to false to allow a user to click the execute button only when the client rate is locked (fixed).

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.EXECUTE.BUTTON.ALWAYS_ENABLED'] = false;
```

## CAPLIN.MOTF.TICKET.EXECUTE.BUTTON.UPDATE.SIDE

Determines whether ticket rates are labelled in terms of the base currency or the quote (term) currency in a traded currency pair:

* Set to true to label rates in terms of the base currency. For example, the bid rate for GBPUSD would be labelled as "Bank buys GBP".
* Set to false to label rates in terms of the quote (term) currency. For example, the bid rate for GBPUSD would be labelled as "Bank sells USD".

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.EXECUTE.BUTTON.UPDATE.SIDE'] = false;
```

## CAPLIN.MOTF.TICKET.FWD.MARGIN.MAX

The maximum forward margin, in points. If a user sets a forward margin to a value higher than the maximum value, then the margin resets to the maximum value.

|     |     |
| --- | --- |
| **Type** | Integer |
| **Valid values** | From [CAPLIN.MOTF.TICKET.FWD.MARGIN.MIN](#caplinmotfticketfwdmarginmin) to the JavaScript constant `[Number.MAX_SAFE_INTEGER](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)` |
| **Default value** | 1000 |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.FWD.MARGIN.MAX'] = 2000;
```

## CAPLIN.MOTF.TICKET.FWD.MARGIN.MIN

The minimum forward margin, in points. If a user sets a forward margin to a value lower than the minimum value, then the margin resets to the minimum value.

|     |     |
| --- | --- |
| **Type** | Integer |
| **Valid values** | From the JavaScript constant [Number.MIN_SAFE_INTEGER](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER) to [CAPLIN.MOTF.TICKET.FWD.MARGIN.MAX](#caplinmotfticketfwdmarginmax) |
| **Default value** | -1000 |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.FWD.MARGIN.MIN'] = -500;
```

## CAPLIN.MOTF.TICKET.LOCKING_MODE

Set to true to give users the option of choosing which locking mode sales tickets operate in: locked margins or locked client-rates. Set to false to restrict the locking mode to locked margins.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.LOCKING_MODE'] = false;
```

## CAPLIN.MOTF.TICKET.MARGIN.APPLY_DEFAULT_ON_REQUOTE

When Auto-Quoting is enabled, this option determines whether margins should reset to the client’s default margin on re-quoting. Tickets automatically request a re-quote if Auto-Quoting is enabled and a change is made to a quote’s Amount field or Settlement field.

* Set to true to requote using the client’s default margins, as supplied by the `DefaultSpotMargin` field and the `DefaultFwdMargin` field in the pricing stream.
* Set to false to re-quote using the current margins in the ticket.

To enable ticket auto-quoting, see [CAPLIN.MOTF.TICKET.AUTO_QUOTE](#caplinmotfticketauto_quote).

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.LOCKING_MODE'] = true;
```

## CAPLIN.MOTF.TICKET.MARGIN_BASIS_POINTS.ENABLED

Set to true to allow users to adjust margins using basis points.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.MARGIN_BASIS_POINTS.ENABLED'] = true;
```

## CAPLIN.MOTF.TICKET.MISSED_TRADE.ENABLED

Set to true to display a **Missed trade** button alongside the ticket’s **Cancel Trade** button. The **Missed Trade** button cancels the trade and records that the client rejected the quoted price.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.MISSED_TRADE.ENABLED'] = true;
```

## CAPLIN.MOTF.TICKET.MISSED_TRADE.REQUIRE_LOCKED_SIDE

Determines the conditions for the display of the **Missed Trade** button on tickets for two-way trades. The **Missed Trade** button is always visible on one-way trades.

* Set to true to display the **Missed Trade** button for two-way trades only when a client rate is locked. This extra condition makes it clear which rate in a two-way trade was rejected by the client.
* Set to false to always display the **Missed Trade** button on two-way trades.

To enable missed-trade tracking, see [CAPLIN.MOTF.TICKET.MISSED_TRADE.ENABLED](#caplinmotfticketmissed_tradeenabled).

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.MISSED_TRADE.REQUIRE_LOCKED_SIDE'] = true;
```

## CAPLIN.MOTF.TICKET.RATE.APPLY_MARGIN_ROUNDING

Whether to round or truncate margins that have a higher precision than their fields' display precision. The display precision, in decimal places (dps), is specified in the `SpotRateDPS` and `AllInRateDPS` fields in the trader-rate stream. When a margin field’s raw value has a higher precision than the margin field’s display precision, the field is highlighted and the raw value is displayed in the field’s tooltip.

* Set this option to true to round high-precision margins. Ask margins are rounded up; bid margins are rounded down. For example, an ask margin of 1.115 rounded to a dps of 2 is 1.12, and a bid margin of 1.115 rounded to a dps of 2 is 1.11.
* Set this option to false to truncate high-precision margins. For example, an ask or bid margin of 1.115 truncated to a dps value of 2 is 1.11.

**📌 NOTE**\
High-precision all-in-margins are always rounded to the `AllInRateDPS` (up for ask; down for bid). On executing a trade, the raw spot margin is adjusted (if required) so that _raw_trader_rate_ ± _raw_all-in-margin_ = _rounded_all-in-margin_.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.RATE.APPLY_MARGIN_ROUNDING'] = false;
```

## CAPLIN.MOTF.TICKET.RATE.APPLY_RATE_ROUNDING

Whether to round or truncate rates that have a higher precision than the rate field’s display precision. The display precision, in decimal places (dps), is specified in the trader-rate stream. When a rate field’s raw value has a higher precision than the rate field’s display precision, the field is highlighted and the raw value is displayed in the field’s tooltip.

* Set this option to true to round high-precision rates. Ask rates are rounded up; bid rates are rounded down. For example, an ask rate of 1.115 rounded to a dps of 2 is 1.12, and a bid rate of 1.115 rounded to a dps of 2 is 1.11.
* Set this option to false to truncate high-precision rates. For example, an ask or bid rate of 1.115 truncated to a dps value of 2 is 1.11.

**📌 NOTE**\
High-precision all-in-rates are always rounded to the `AllInRateDPS` (up for ask; down for bid). On executing a trade, the raw spot margin is adjusted (if required) so that _raw_trader_rate_ ± _raw_all-in-margin_ = _rounded_all-in-margin_.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.RATE.APPLY_RATE_ROUNDING'] = false;
```

## CAPLIN.MOTF.TICKET.SHOW.FWD_MID_POINTS

Set to true to display mid-points on a sales ticket for a forward trade.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.SHOW.FWD_MID_POINTS'] = true;
```

## CAPLIN.MOTF.TICKET.SHOW.SPOT_MID_RATE

Set to true to display the mid-rate on a sales ticket for a spot trade.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.SHOW.SPOT_MID_RATE'] = true;
```

## CAPLIN.MOTF.TICKET.SPOT.MARGIN.MAX

The maximum spot margin, in pips. If a user sets a spot margin to a value higher than the maximum value, then the margin resets to the maximum value.

|     |     |
| --- | --- |
| **Type** | Integer |
| **Valid values** | From [CAPLIN.MOTF.TICKET.SPOT.MARGIN.MIN](#caplinmotfticketspotmarginmin) to the JavaScript constant `[Number.MAX_SAFE_INTEGER](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)` |
| **Default value** | 1000 |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.SPOT.MARGIN.MAX'] = 2000;
```

## CAPLIN.MOTF.TICKET.SPOT.MARGIN.MIN

The minimum spot margin, in pips. If a user sets a spot margin to a value lower than the minimum value, then the margin resets to the minimum value.

|     |     |
| --- | --- |
| **Type** | Integer |
| **Valid values** | From the JavaScript constant `[Number.MIN_SAFE_INTEGER](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER)` to [CAPLIN.MOTF.TICKET.SPOT.MARGIN.MAX](#caplinmotfticketspotmarginmax) |
| **Default value** | -1000 |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.SPOT.MARGIN.MIN'] = -500;
```

## CAPLIN.MOTF.TICKET.STREAMING_MODE

Set to true to allow the user to choose how trader-rate fields on sales tickets are updated: pricing stream or manually. Set to false to always update trader-rate fields from a pricing stream.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.STREAMING_MODE'] = true;
```

## CAPLIN.MOTF.TICKET.SWAP.MARGIN.MAX

The maximum swap margin, in points. If a user sets a swap margin to a value higher than the maximum value, then the margin resets to the maximum value.

|     |     |
| --- | --- |
| **Type** | Integer |
| **Valid values** | From [CAPLIN.MOTF.TICKET.SWAP.MARGIN.MIN](#caplinmotfticketswapmarginmin) to the JavaScript constant `[Number.MAX_SAFE_INTEGER](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)` |
| **Default value** | 1000 |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.SWAP.MARGIN.MAX'] = 2000;
```

## CAPLIN.MOTF.TICKET.SWAP.MARGIN.MIN

The minimum swap margin, in points. If a user sets a swap margin to a value lower than the minimum value, then the margin resets to the minimum value.

|     |     |
| --- | --- |
| **Type** | Integer |
| **Valid values** | From the JavaScript constant `[Number.MIN_SAFE_INTEGER](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER)` to [CAPLIN.MOTF.TICKET.SWAP.MARGIN.MAX](#caplinmotfticketswapmarginmax) |
| **Default value** | -1000 |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.SWAP.MARGIN.MIN'] = -500;
```

## CAPLIN.MOTF.TICKET.SWAP_REVERT_SPOT_SWITCH

When supplying a swap quote to FX Sales, the FX Integration API (FX API) switches the values in the bid and ask fields of the swap’s near leg. FX Sales requires that bid and ask values are in their correct fields, so by default FX Sales is configured to revert the switch made by the FX API.

* Set this option to true to revert the switch made by the FX Integration API.
* Set this option to false to accept the fields as they are supplied by the FX Integration API.

The default configuration (set to `true`) is suitable for the majority of architectures, but if a backend pricing system supplies the FX API with switched near-leg field values, then the switch performed by the FX API will be enough to correct the format of the near-leg, and FX Sales should not revert FX API’s switch.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.SWAP_REVERT_SPOT_SWITCH'] = false;
```

## CAPLIN.MOTF.TICKET.TIMEOUTBAR.RUN.LOW.ENABLED

Set to true to change the colour of the sales-ticket timeout bar when a stream or quote is about to expire. See also, [`CAPLIN.MOTF.TICKET.TIMEOUTBAR.RUN.LOW.TIMETHRESHOLD`](#caplinmotftickettimeoutbarrunlowenabled).

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.TIMEOUTBAR.RUN.LOW.ENABLED'] = false;
```

## CAPLIN.MOTF.TICKET.TIMEOUTBAR.RUN.LOW.TIMETHRESHOLD

The remaining time, in seconds, at which the colour of the sales-ticket timeout bar changes to indicate that a stream or quote is about to expire. See also, [`CAPLIN.MOTF.TICKET.TIMEOUTBAR.RUN.LOW.ENABLED`](#caplinmotftickettimeoutbarrunlowenabled).

|     |     |
| --- | --- |
| **Type** | Integer |
| **Valid values** | 0 to the JavaScript constant [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER). |
| **Default value** | 5 |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.TIMEOUTBAR.RUN.LOW.TIMETHRESHOLD'] = 10;
```

## CAPLIN.MOTF.TICKET.TRADE.DIRECTION

Determines which values are available in a ticket’s Trade Direction dropdown.

* **two-way**: allows one-way and two-way trade directions in the dropdown.
* **one-way**: allows only one-way trade directions in the dropdown.
* **disabled**: hides the Trade Direction dropdown, and the trade direction is set to two-way.

|     |     |
| --- | --- |
| **Type** | String |
| **Valid values** | The following constants in the caplin/motf/MarginConstants class: * TRADE_DIRECTION.MODE.TWO_WAY * TRADE_DIRECTION.MODE.ONE_WAY * TRADE_DIRECTION.MODE.DISABLED |
| **Default value** | `TRADE_DIRECTION_MODE.TWO_WAY` |

**Example**

```js
ExtendedAppConfig['CAPLIN.MOTF.TICKET.TRADE.DIRECTION'] = TRADE_DIRECTION_MODE.ONE_WAY;
```

## CAPLIN.MULTIPLECLIENTMANAGEMENT.ENABLED

Set to true to allow users to display sales tickets for different clients simultaneously. Set to false to allow users to display tickets for one client only.

When set to false, FX Sales enforces the following behaviour:

* Selecting a new client closes all open sales tickets.
* The client field in sales tickets is not editable.
* The **New Trade** button is only enabled once the user has selected a client.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.MULTIPLECLIENTMANAGEMENT.ENABLED'] = false;
```

## CAPLIN.ORDER_TICKET_SHOW_TRACKING_AGAINST_SECTION_ON_DELIVERABLE

Set to false, this will hide the tracking input for deliverable currency pairs on the orders input summary screen.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Default value** | true |
| **Since** | 3.16.0 |

**Example value**

```js
ExtendedAppConfig['CAPLIN.ORDER_TICKET_SHOW_TRACKING_AGAINST_SECTION_ON_DELIVERABLE'] = true;
```

## ORDER.TICKET.SHOW_NOTIFICATION_PANEL

Set to false, this will hide the notification panel on the orders input summary screen.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Default value** | true |
| **Since** | 3.16.0 |

**Example value**

```js
ExtendedAppConfig['ORDER.TICKET.SHOW_NOTIFICATION_PANEL'] = true;
```

## CAPLIN.PERMISSION.CONFIG.URL

The path to the permissions configuration file, which specifies the subjects that supply FX Sales with real-time permissioning data.

The default permissions configuration file, _unbundled-resources/customPermissionDatasourceDefinitions.xml_, contains the following configuration:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<permissionDatasourceDefinitions
  xmlns="http://schema.caplin.com/CaplinTrader/permissionDatasourceDefinitions">
    <permissionsource name="MASTER" role="Master"/>
    <permissionsource name="SLAVE1"/>
</permissionDatasourceDefinitions>
```

The configuration above configures FX Sales to subscribe to permissioning data in two containers:

* `/PERMISSIONS/MASTER/CONTAINER/_fx-sales-username_`
* `/PERMISSIONS/SLAVE1/CONTAINER/_fx-sales-username_`

|     |     |
| --- | --- |
| **Type** | String |
| **Valid values** | Valid path to the permissions XML file in the `unbundled-resources` directory of the FX Sales WAR file. |
| **Default value** | 'unbundled-resources/permissionDatasourceDefinitions.xml' |

**Example**

```js
ExtendedAppConfig['CAPLIN.PERMISSION.CONFIG.URL'] = 'unbundled-resources/customPermissionDatasourceDefinitions.xml';
```

## CAPLIN.PTA.ENTITY_SEARCH.ENABLED

Set to `true` to display the Client column in the allocation table of Post-trade Allocation tickets. The Client column allows a user to allocate a trade to a different client to the that of the original trade.

For more information on the Post-trade Allocation feature, see [Post-trade Allocation](st-post-trade-allocation.md) and [Implementing Post-trade Allocation](st-post-trade-allocation-implementing.md).

|     |     |
| --- | --- |
| **Type** | String |
| **Valid values** | `true`, `false` |
| **Available from** | FX Sales 2.14 |

**Example**

```js
ExtendedAppConfig['CAPLIN.PTA.ENTITY_SEARCH.ENABLED'] = true;
```

## CAPLIN.PTA.CAN_AMEND_WITH_NO_CHANGES

If enabled, when an Amend ticket is opened, it can be saved immediately, even if no changes have been made to it. If disabled, a change must be made for the user to be able to carry out an amend.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Default value** | `false` |
| **From** | 3.27.0 |

**Example value**

```js
true
```

## CAPLIN.SECURITY.PERMISSIONING.STATUS

Set to 'ENABLED' to enable client-side permission checks. Set to any value other than 'ENABLED' to disable client-side permission checks. This is used during development of FX Sales to test server-side permissioning by permitting all actions on the client-side.

|     |     |
| --- | --- |
| **Type** | String |
| **Valid values** | 'ENABLED', |
| **Default value** | 'ENABLED' |

**Example**

```js
ExtendedAppConfig['CAPLIN.SECURITY.PERMISSIONING.STATUS'] = 'DISABLED';
```

## CAPLIN.SESSION.TIMEOUT

The period of inactivity, in minutes, after which an FX Sales user is automatically logged out. Set this option to '0' to disable session timeouts.

|     |     |
| --- | --- |
| **Type** | Integer |
| **Valid values** | 0 to `[Number.MAX_SAFE_INTEGER](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)` |
| **Default value** | 0 |

**Example**

```js
ExtendedAppConfig['CAPLIN.SESSION.TIMEOUT'] = 30;
```

## CAPLIN.UNREGISTERED.CLIENT.DEALING

Collections of additional fields to display on FX tickets, keyed by values for the [User Details](../fx-integration-api/fxapi-user-details-service.md) `salesUserGroup` field.

When a client’s [User Details](../fx-integration-api/fxapi-user-details-service.md) `salesUserGroup` field matches the key for a collection of additional fields, the collection of fields is displayed on the FX ticket.

Each keyed collection of additional fields can contain any number of field definitions.

|     |     |
| --- | --- |
| **Type** | Object |
| **Valid values** | See CAPLIN.UNREGISTERED.CLIENT.DEALING object specification below |
| **Default value** | Imported from `apps/salestrader/src/salestrader-default-aspect/UnregisteredClientDealingConfig.js` |

**CAPLIN.UNREGISTERED.CLIENT.DEALING object specification**

```
{
  "__salesUserGroup__": {
    "__fieldname__": {
      "type": __string__, ①
      "label": __string__,
      "validators": [__object__, ...], ②
      "values": [__string__, ...] ③
    },
    ...
  },
  ...
}
```
1. See the `TYPES` property of the `cps-unregistered-client-dealing/UnregisteredClientDealingConstants` module
2. An optional array of objects that implement the `br/validation/Validator` interface.
3. Required when the `type` property is set to `TYPES.DROPDOWN`. An array of strings used to populate the dropdown.

The example below is a simplified version of the configuration in the default file `apps/salestrader/src/salestrader-default-aspect/UnregisteredClientDealingConfig.js`. In this example, the User Details `salesUserGroup` field distinguishes users by region, and the unregistered-client dealing config object has a set of fields defined for the sales user group `UK`.

**Example**

```js
var NotEmptyValidator = require("br-validation/NotEmptyValidator");
var TYPES = require("cps-unregistered-client-dealing/UnregisteredClientDealingConstants")
  .TYPES;

ExtendedAppConfig['UNREGISTERED.CLIENT.DEALING.CONFIG'] = {
  UK: { ①
    FirstName: {
      type: TYPES.TEXT,
      label: "First name",
      validators: [new NotEmptyValidator("Value should not be empty")]
    },
    LastName: {
      type: TYPES.TEXT,
      label: "Last name",
      validators: [new NotEmptyValidator("Value should not be empty")]
    },
    Purpose: {
      type: TYPES.DROPDOWN,
      label: "Purpose",
      values: [
        "Personal",
        "Business"
      ]
    },
    ContactAfterSettlement: {
      type: TYPES.CHECKBOX,
      label: "Contact after settlement"
    }
  }
};
```
1. Additional fields to display for clients with a User Details `salesUserGroup` field of `UK`.

## CAPLIN.USERPREFERENCES.ENABLED

Set to true to display the Settings icon (icon:cog[]) in the FX Sales toolbar.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.USERPREFERENCES.ENABLED'] = false;
```

## CAPLIN.USERPREFERENCES.PROFITCURRENCY.DEFAULT

Determines the user’s default profit currency when the user can set it via the user preferences.

|     |     |
| --- | --- |
| **Type** | String |
| **Valid values** | A three-letter currency code in the option [CAPLIN.USERPREFERENCES.PROFITCURRENCY.OPTIONS](#caplinuserpreferencesprofitcurrencyoptions) |
| **Default value** | 'USD' |

**Example**

```js
ExtendedAppConfig['CAPLIN.USERPREFERENCES.PROFITCURRENCY.DEFAULT'] = 'EUR';
```

## CAPLIN.USERPREFERENCES.PROFITCURRENCY.ENABLED

Set to true to display the Profit Currency user preference in the User Settings dialog.

For the user’s preference to take effect, the option [SHOWHOUSEPROFIT](#showhouseprofit) must also be enabled.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |
| **Removed** | 4.1.0 |

**Example**

```js
ExtendedAppConfig['CAPLIN.USERPREFERENCES.PROFITCURRENCY.ENABLED'] = false;
```

## CAPLIN.USERPREFERENCES.PROFITCURRENCY.OPTIONS

The list of currencies from which users can select their preferred profit currency.

|     |     |
| --- | --- |
| **Type** | Array of strings |
| **Valid values** | Array of standard three-letter currency codes. |
| **Default value** | +['USD', 'EUR', 'GBP']+ |

**Example**

```js
ExtendedAppConfig['CAPLIN.USERPREFERENCES.PROFITCURRENCY.OPTIONS'] =
  ['EUR', 'GBP', 'CHF'];
```

## CAPLIN.USERS.UNIQUE.FIELD

Determines which field is the unique identifier for a TOBO (trading on behalf of) user.

|     |     |
| --- | --- |
| **Type** | String |
| **Valid values** | Valid field name |
| **Default value** | 'UserID' |

**Example**

```js
ExtendedAppConfig['CAPLIN.USERS.UNIQUE.FIELD'] = 'AnotherFieldName';
```

## CAPLIN.USERSEARCH.MODAL.ENABLED

Set to true to enable the new search-dialog. Set to false to use the deprecated search-sidebar.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['CAPLIN.USERSEARCH.MODAL.ENABLED'] = false;
```

## CONNECTIVITY_DISPLAY_MODE

Sets the display format of the Connectivity Status component.

From FX Sales 3.3 to 3.12, this configuration option determines the display mode of the Connectivity Status component in the left-hand menu.

From FX Sales 3.13 onwards, this configuration option determines the display mode of the Connectivity Status component in the application’s top bar. A new configuration option, [CONNECTIVITY_DISPLAY_MODE_SIDE_MENU](#connectivity_display_mode_side_menu), configures the Connectivity Status component in the left-hand menu.

|     |     |
| --- | --- |
| **Type** | JavaScript constant |
| **Valid values** | * `CONNECTIVITY_DISPLAY.Full`: service-status icon, connection-quality icon, and textual descriptions * `CONNECTIVITY_DISPLAY.Dot`: service-status icon and connection-quality icon * `CONNECTIVITY_DISPLAY.Horizontal`: ***[default]*** service-status icon and textual description * `CONNECTIVITY_DISPLAY.Disabled`: hides the component * `null`: hides the component |
| **Default value** | `CONNECTIVITY_DISPLAY.Horizontal` |
| **Available from** | FX Sales 3.3.0 |

**Example**

```js
ExtendedAppConfig['CONNECTIVITY_DISPLAY_MODE'] = CONNECTIVITY_DISPLAY.Full;
```

## CONNECTIVITY_DISPLAY_MODE_SIDE_MENU

Sets the display format of the Connectivity Status component in the left-hand menu.

|     |     |
| --- | --- |
| **Type** | JavaScript constant |
| **Valid values** | * `CONNECTIVITY_DISPLAY.Full`: service-status icon, connection-quality icon, and textual descriptions * `CONNECTIVITY_DISPLAY.Dot`: service-status icon and connection-quality icon * `CONNECTIVITY_DISPLAY.Horizontal`: service-status icon and textual description * `CONNECTIVITY_DISPLAY.Disabled`:  ***[default]*** hides the component * `null`: hides the component |
| **Default value** | `CONNECTIVITY_DISPLAY.Disabled` |
| **Available from** | FX Sales 3.13.0 |

**Example**

```js
ExtendedAppConfig['CONNECTIVITY_DISPLAY_MODE_SIDE_MENU'] = CONNECTIVITY_DISPLAY.Full;
```

## DEFAULT_CURRENCY_PAIR

**From:** 2.10

The default currency pair for all components except tickets.

To set the default currency pair in tickets, see [CAPLIN.MOTF.TICKET.DEFAULTS](#caplinmotfticketdefaults).

|     |     |
| --- | --- |
| **Type** | String |
| **Valid values** | Valid currency pair code. |
| **Default value** |  |

**Example**

```js
ExtendedAppConfig['DEFAULT_CURRENCY_PAIR'] = 'EURUSD';
```

## DEFAULT_TRADER_SCREEN

Determines which screen is shown by default on application launch. Value can be any screen in the main layout.

See [`SIDEMENU.DEFAULT`](#sidemenudefault) for screens configured in your side menu. In your side menu config, you define target frames, such as:

```
targetFrame: "application.main-window.main-body.trader-overview",
```

The last part of this value (`trader-overview` in this example) can be used for the `DEFAULT_TRADER_SCREEN` configuration.

|     |     |
| --- | --- |
| **Type** | String |
| **Default value** | trader-overview |
| **Since** | 3.23.0 |

**Example value**

```js
sales-orders
```

## FEATURE_NEW_TRADE_BUTTON_ENABLED

Determines whether the "New Trade" button is shown in the side menu, and whether the corresponding "n" shortcut is enabled.

* Set to true to show the "New Trade" button and for the application to handle the "n" shortcut.
* Set to false to hide the "New Trade" button and for the application not to handle the "n" shortcut.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Default value** | true |
| **Since** | 3.23.0 |

**Example value**

```js
false
```

## FEATURE_NOTIFICATION_ENABLED

Determines whether the notifications feature is enabled.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Default value** | true |
| **Since** | 3.23.0 |

**Example value**

```js
false
```

## FX.ORDER.USE_STRATEGY_ID_FOR_REQUESTS

When true, the StrategyID field is used for all order requests. When false, the root OrderID field is used.
When OrderID contains a comma separated list of ID’s, the first ID in the list is used.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Default value** | `true` |
| **Since** | 3.25 |

## FX.TILE.USE_SWAP_POINT_SERVICE

When enabled, the FX tile swap ladders subscribe to the swap point subjects, as added in FXAPI 12.9.0, to display custom swap point values.
When disabled, the ladders use the default calculation of swap points from the near and far leg price updates.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Default value** | false |
| **Since:** | 4.0 |

**Example value**

```js
true
```

## FX.USE_CUSTOM_ERROR_MESSAGES

Determines whether your error messages are supplied from the back-end system on the stream, or if the application uses i18n error messages. 

* Set to true to use error messages supplied from the back-end system. 
* Set to false to use i18n error messages. 

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Default value** | false |

**Example value**

```js
false
```

## HEADER.CLIENTINFO.SHOW.ON.FRAMES

The screens and tabs on which the client-info bar is displayed.

|     |     |
| --- | --- |
| **Type** | Array of strings |
| **Valid values** | The `data-role-id` attribute of any HTML element configured as a target frame in the file `caplinx/SideMenuConfig.js`. |
| **Default value** | `['user-trade', 'order-trade']` |

**Example**

```js
ExtendedAppConfig['HEADER.CLIENTINFO.SHOW.ON.FRAMES'] = ['user-trade'];
```

## HIDDEN_SETTINGS

Provide an array of setting keys to hide from the settings menu

|     |     |
| --- | --- |
| **Type** | Array of `SETTING_KEY` values |
| **Default value** | `[SETTING_KEY.COST_CURRENCY, SETTING_KEY.DEFAULT_ENTITY, SETTING_KEY.TICKET_AUTO_QUOTE, SETTING_KEY.APPLICATION_THEME]` |
| **Since** | 4.1.0 |

**Example value**

```js
[SETTING_KEY.LOCALE]
```

## HISTORIC_SEARCH.ENABLED

Set to true to enable the Historic Search tab.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['HISTORIC_SEARCH.ENABLED'] = true;
```

## HISTORY_TAB.ENABLED

Set to true to enable the history tab.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |

**Example**

```js
ExtendedAppConfig['HISTORY_TAB.ENABLED'] = true;
```

## ORDER.EXCLUDED_NDF_FIELDS

Determines which ndf-specific fields should not be shown to the user on the order input, summary and print screens. Additionally, removes the fields from the order submit message.

|     |     |
| --- | --- |
| **Type** | JavaScript array of constants from the imported object `TRADE_FIELDS` and `TRADE_LEG_FIELDS` |
| **Valid values** | `TRADE_FIELDS.SETTLEMENT_CURRENCY`, `TRADE_FIELDS.FIXING_SOURCE`, `TRADE_LEG_FIELDS.ORDER_FIXING_DATE` |
| **Default value** | [] |
| **Since** | 3.16.0 |

**Example**

```js
ExtendedAppConfig['ORDER.EXCLUDED_NDF_FIELDS'] = [TRADE_FIELDS.SETTLEMENT_CURRENCY];
```

## ORDER.IS_OCO_FIRST_LEG_STOP_LOSS

Enable this to have FX order tickets for OCO strategy initialise with "Stop Loss" as the Order Type of the first leg and "Take Profit" as the Order Type of the second leg.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Default value** | true |
| **Since** | 3.29.0 |

**Example**

```js
ExtendedAppConfig['ORDER.IS_OCO_FIRST_LEG_STOP_LOSS'] = false;
```

## ORDER.SHOW_ACCOUNT

Determines whether to display the account field on the order ticket input, summary and print screen.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |
| **Since** | 3.15.1 |

**Example**

```js
ExtendedAppConfig['ORDER.SHOW_ACCOUNT'] = false;
```

## ORDER.SHOW_COMMENT_WARNING

When set to `true`, a warning message is displayed above the Comments field in the React Order Ticket. You can use this to include any guidance for completing the field, such as reminders to abide by regulations and not to enter any client information in the field.

The text for the warning is supplied by the i18n token: `fx-orders.comment-box.comment-warning`

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Default value** | false |
| **Since** | 3.18.0 |

**Example value**

```js
ExtendedAppConfig['ORDER.SHOW_COMMENT_WARNING'] = false;
```

## ORDER.TICKET.FACTORY

The configuration object for order tickets. Developers can create their own config object to override order ticket configuration.

|     |     |
| --- | --- |
| **Type** | JavaScript object reference |
| **Valid values** | See file `default-aspect/src/caplinx/motf/orderticket/config/MotfOrderTicketConfig.js` |
| **Default value** | `new MotfOrderTicketConfig()` (see file `default-aspect/src/caplinx/motf/orderticket/config/MotfOrderTicketConfig.js`) |

**Example**

```js
ExtendedAppConfig['ORDER.TICKET.FACTORY'] = new MyOrderTicketFactory();
```

## ORDER.GTC.DISABLED

Set to `true` to disable 'Good till Cancelled' option on the React Order Ticket, and instead only allow custom expiration dates.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Default value** | false |

**Example value**

```js
true
```

## ORDER.DEFAULT_EXPIRATION_DATE

Drives the default expiration date on the React Order Ticket. Configure using ISO 8601 duration format.

|     |     |
| --- | --- |
| **Type** | String |
| **Default value** | P7D |

**Example value**

```js
P3Y6M4DT12H30M5S
```

## ORDER.MAX_EXPIRATION_DATE

Drives the expiration date validation on the React Order Ticket by specifying how far in the future an expiration date can be, at most. Configure using ISO 8601 duration format.

|     |     |
| --- | --- |
| **Type** | String |
| **Default value** | N/A |
| **Since** | 5.17.0 |

**Example value**

```js
"P3Y6M4DT12H30M5S"
```

## ORDER.DEFAULT_ACTIVATION_TIME

Drives the default activation time on the React Order Ticket. Configure using 24 Hour format.

|     |     |
| --- | --- |
| **Type** | String |
| **Default value** | 17:00 |
| **Since** | 3.22.2, 3.23.0 |

**Example value**

```js
17:00
```

## ORDER.DEFAULT_EXPIRATION_TIME

Drives the default expiration time on the React Order Ticket. Configure using 24 Hour format.

|     |     |
| --- | --- |
| **Type** | String |
| **Default value** | 17:00 |
| **Since** | 3.22.2, 3.23.0 |

**Example value**

```js
17:00
```

## ORDER.DISPLAYED_ACTIONS

Determines the menu options that are displayed in the More Options menu on the order ticket and the order blotters.

|     |     |
| --- | --- |
| **Type** | JavaScript array of constants that are a subset of the imported object `ORDER_MENU_OPTIONS`. |
| **Valid values (3.29)** | `ORDER_MENU_OPTIONS.VIEW`, `ORDER_MENU_OPTIONS.DUPLICATE`, `ORDER_MENU_OPTIONS.PRINT`, `ORDER_MENU_OPTIONS.AUDIT_TRAIL`, `ORDER_MENU_OPTIONS.CONFIRM`, `ORDER_MENU_OPTIONS.AMEND`, `ORDER_MENU_OPTIONS.CANCEL`, `ORDER_MENU_OPTIONS.ACTIVATE`, `ORDER_MENU_OPTIONS.DEACTIVATE` |
| **Valid values (3.26)** | `ORDER_MENU_OPTIONS.VIEW`, `ORDER_MENU_OPTIONS.DUPLICATE`, `ORDER_MENU_OPTIONS.PRINT`, `ORDER_MENU_OPTIONS.AUDIT_TRAIL`, `ORDER_MENU_OPTIONS.CONFIRM` |
| **Since** | 3.26 |

**Example value**

```js
ExtendedAppConfig["ORDER.DISPLAYED_ACTIONS"] =  [
    ORDER_MENU_OPTIONS.VIEW,
    ORDER_MENU_OPTIONS.DUPLICATE
]
```

## SHOWHOUSEPROFIT

Set to true to display profit fields in the house currency.

Set to false to display profit fields in the term currency of the traded currency pair.

To allow users to choose from a selection of profit currencies, see [CAPLIN.USERPREFERENCES.PROFITCURRENCY.ENABLED](#caplinuserpreferencesenabled).

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | true |

**Example**

```js
ExtendedAppConfig['SHOWHOUSEPROFIT'] = false;
```

## SIDEMENU.DEFAULT

The configuration object for the side-bar menu.

|     |     |
| --- | --- |
| **Type** | JavaScript object reference |
| **Valid values** | See file `default-aspect/src/caplinx/SideMenuConfig.js` |
| **Default value** | A reference to the object exported by module `caplinx/SideMenuConfig`. |

**Example**

```js
ExtendedAppConfig['SIDEMENU.DEFAULT'] = mySideMenuConfig;
```

## SUPPORTED_TRADE_MODES

**From:** 2.18

Product types displayed to the user in an RFS ticket. Permissioning determines whether a specific product type may be selected.

|     |     |
| --- | --- |
| **Type** | JavaScript array of constants from the imported object `TRADE_MODE`. |
| **Valid values** | `TRADE_MODE.OUTRIGHT`, `TRADE_MODE.TIME_OPTION`, `TRADE_MODE.SWAP`, `TRADE_MODE.NDF`, `TRADE_MODE.NDS` |
| **Default value** | Specific to your variant of FX Sales |

**Example**

```js
ExtendedAppConfig['SUPPORTED_TRADE_MODES'] = [
  TRADE_MODE.OUTRIGHT,
  TRADE_MODE.TIME_OPTION,
  TRADE_MODE.SWAP,
  TRADE_MODE.NDF,
];
```

## USER_CONFIG_ENABLED

Set to `true` to enable User Config.

|     |     |
| --- | --- |
| **Type** | Boolean |
| **Valid values** | true, false |
| **Default value** | false |
**Example**

```js

ExtendedAppConfig['USER_CONFIG_ENABLED'] = true;
```
