> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Project configuration

export const uiProductName = "Atoti UI";

export const productName = "Atoti FRTB";

export const coreProductName = "Atoti Server";

## Properties files

<Note>
  These properties files relate to configuring the {productName} application. For details of properties files for configuring inputs to the calculations, see [Configuration files](../../../configuration/index).
</Note>

Location: The application properties files are provided in the `frtb-application` module in the `frtb-application/src/main/resources/` directory

| File                      | Purpose                                                                                        |
| ------------------------- | ---------------------------------------------------------------------------------------------- |
| application.yaml          | Sets port and context for the application                                                      |
| application.properties    | General properties                                                                             |
| frtb-config.properties    | Cube levels for postprocessors and constant values used in tuple publishers and postprocessors |
| hibernate.properties      | Hibernate (persistence and query service) properties                                           |
| signoff.properties        | General Sign-off module configurations                                                         |
| signoff.export.properties | Sign-off export configurations                                                                 |

## Spring annotations

| Annotation                                 | Meaning                                                                           | Value                                                                                                             |
| ------------------------------------------ | --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| @ConditionalOnAdjustmentsWithDirectQuery   | Adjustments activated as read-only for DirectQuery                                | directquery.withAdjustments *AND* starter.deployment.type=direct-query *AND* configuration.sign-off.enabled       |
| @ConditionalOnClickHouse                   | DirectQuery uses ClickHouse                                                       | directquery.database.type=clickhouse *AND* starter.deployment.type=direct-query                                   |
| @ConditionalOnDirectQueryDatabase          | DirectQuery is activated                                                          | starter.deployment.type=direct-query                                                                              |
| @ConditionalOnInMemoryDatabase             | In-memory mode is activated, DirectQuery is disabled                              | starter.deployment.type=in-memory                                                                                 |
| @ConditionalOnMSSQL                        | DirectQuery uses MSSQL (not implemented)                                          | directquery.database.type=mssql *AND* starter.deployment.type=direct-query                                        |
| @ConditionalOnNoAdjustmentsWithDirectQuery | SignOff is activated but DirectQuery has no information about adjustments         | *NOT* directquery.withAdjustments *AND* starter.deployment.type=direct-query *AND* configuration.sign-off.enabled |
| @ConditionalOnSignOffDisabled              | SignOff is not used                                                               | *NOT* configuration.sign-off.enabled                                                                              |
| @ConditionalOnSignOffEnabled               | SingOff is fully enabled on an in-memory setup                                    | configuration.sign-off.enabled *AND\*\*NOT* starter.deployment.type=direct-query                                  |
| @ConditionalOnSignOffHierarchy             | The SignOff hierarchy is displayed for in-memory or DirectQuery cube              | configuration.sign-off.enabled                                                                                    |
| @ConditionalOnSnowflake                    | DirectQuery uses SnowFlake                                                        | directquery.database.type=snowflake *AND* starter.deployment.type=direct-query                                    |
| @ConditionalOnHasCombinedCube              | The current node contains the “FRTBCombinedCube”                                  | combined.disable == false                                                                                         |
| @ConditionalOnHasDataCube                  | The server contains data cubes                                                    | starter.deployment.type != query-node                                                                             |
| @ConditionalOnHasImaCube                   | The server contains “InternalModelApproachCube” and allows other IMA cubes        | ima.disable == false                                                                                              |
| @ConditionalOnHasImaDrcCube                | The server contains the “IMADRCCube”                                              | ima.drc.disable == false *AND* ima.disable == false                                                               |
| @ConditionalOnHasImaPLCube                 | The server contains the “PLCube”                                                  | ima.plat-backtesting.disable == false *AND* ima.disable == false                                                  |
| @ConditionalOnHasImaStressCalibrationCube  | The server contains the “StressCalibrationCube”                                   | ima.stress-calibration.disable == false *AND* ima.disable == false                                                |
| @ConditionalOnHasQueryCube                 | The server contains the query cube                                                | starter.deployment.type = query-node *OR* combined.disable != false                                               |
| @ConditionalOnLocalBus                     | The server uses the internal bus to communicate between data cubes and query cube | starter.deployment.transport == local                                                                             |
| @ConditionalOnNettyBus                     | The server uses the Netty bus to communicate between data cubes and query cube    | starter.deployment.transport == netty                                                                             |
| @ConditionalOnQueryNode                    | The server node contains only the query cube                                      | starter.deployment.type == query-node                                                                             |
| @ConditionalNotOnDirectQueryDatabase       | If DirectQuery is not enabled                                                     | starter.deployment.type != direct-query                                                                           |

## Data Files

You will need to specify where your CSV files are placed. In the default
implementation, the CSV files are required to provide {coreProductName} with
the necessary data and configuration to do the calculations in {productName}.

All the files need to be kept under one directory of your choice
anywhere on the file system. The path to this directory needs to be
specified in application.properties. The below property needs to be updated to
specify an accessible directory containing the necessary files.

#### Example

**Sample files** can be found in
the sample-data/data folder.

<Note>
  These files can't be found in the WAR generated by the build.
</Note>

```
csv-source.dataset=data
```

<Tip>
  To get started with deployment (e.g. if you are not running the
  application directly from the IDE) you can easily copy/paste the whole
  sample data folder (from source zip) into somewhere accessible by your
  deployed runtime, and change the configuration in `application.properties`
  accordingly to point to that data.
</Tip>

## Bookmarks

If you want to replace the bookmarks you have persisted in your content
server, you can override all the content of the content server with
content from a JSON file when the {coreProductName} instance starts up.

To do this, in application.properties, set the value of the `contentServer.factory-reset` property to `true`:

```
contentServer.factory-reset=true
```

The data loaded into the content server is imported from a
json file. The json file loaded by default is
frtb-content-server.json. It is specified in application.properties as below:

```
contentServer.factory-reset.filename=frtb-content-server.json
```

{productName} provides a directory for the bookmarks which can be loaded using the `contentServer.factory-reset=folder` and `contentServer.factory-reset.folder-name=`*dir-name*.

See the **bookmarks.zip** in the [distribution files](../../dev-release/release-notes#510) for this release.

## {uiProductName}

You will need to specify in the {uiProductName} configuration file where the
{coreProductName} project is running.

<Note>
  The end-user's browser will
  be connecting to the URL you specify here, so you should specify the
  exact host name as opposed to localhost.
</Note>

The standalone application contains an `frtb_env.js` file which will
need to be updated with the correct server URL:

```
const FRTB_port = 8080
const FRTB_host = window.location.hostname
const FRTB_path = "/frtb-starter"

window.env = {
...
  csServers: [
    {
      name: 'Bookmarks',
      url: 'http://' + FRTB_host + ':' + FRTB_port + FRTB_path,
    }
  ],
  apServers: [
    {
      name: 'FRTB',
      url: 'http://' + FRTB_host + ':' + FRTB_port + FRTB_path,
      csServerName: 'Bookmarks',
    }
  ],
...
}
```

## DoctorPivot Configuration(optional)

* No changes required

## Data Load Controller (DLC)

The Data Load Controller (DLC) is a component within {productName} that supports managing the loading and unloading of data. For an overview of how the DLC is used and how to customize it, see [Data Load Controller in {productName}](../../dev-ref-impl/dev-dlc/index)

For configuration details, see [FRTB-specific configuration](../../dev-ref-impl/dev-dlc/dlc-frtb-config).
