Project configuration
Configuration Properties and property files
For details, see Properties
Location: mr-application/src/main/resources
File | Purpose |
---|---|
apm.properties | Configures Atoti Server Application Monitoring (APM). |
application.yaml | Sets port and context for the application. |
azureCredentials.properties | Defines the necessary credential information for connecting to an Azure Blob container. |
dee.export.properties | Configures the DEE service tool that is intended to perform data extractions. |
jwt.properties | Configure the authentication based on JWT. |
logback-spring.xml | Defines the logging configuration for testing the MR application. |
logback-spring-file.xml | Defines the logback configuration for the MR application in production. |
mr-jaxb-mapping.xml | Defines the configuration of the Java Architecture for XML Binding (JAXB) for context values defined in the MR application. |
reporting.properties | |
serializer-jaxb-cfg.xml | Configures all the JAXB mapping resources needed by the application. |
tracing.properties | Includes additional tracing configuration for Atoti Server. |
Spring annotations
Annotation | Meaning | Value |
---|---|---|
@ConditionalNotOnQueryNode | Reverse of @ConditionalOnQueryNode | spring.profiles.active HASN’T dist-query-node |
@ConditionalOnAdjustmentsWithDirectQuery | Adjustments activated as read-only for DirectQuery. | directquery.withAdjustments AND directquery.enabled AND configuration.sign-off.enabled |
@ConditionalOnClickHouse | DirectQuery uses ClickHouse. | directquery.database.type=clickhouse AND directquery.enabled |
@ConditionalOnDirectQueryDatabase | DirectQuery is activated. | directquery.enabled |
@ConditionalOnInMemoryDatabase | InMemory mode is activated, DirectQuery is disabled. | NOT directquery.enabled |
@ConditionalOnMSSQL | DirectQuery uses MSSQL (not implemented). | directquery.database.type=mssql AND directquery.enabled |
@ConditionalOnNoAdjustmentsWithDirectQuery | Sign-Off is activated but DirectQuery has no information about adjustments. | NOT directquery.withAdjustments AND directquery.enabled AND configuration.sign-off.enabled |
@ConditionalOnSignOffDisabled | Sign-Off is not used. | NOT configuration.sign-off.enabled |
@ConditionalOnSignOffEnabled | Sign-Off is fully enabled on an InMemory setup. | configuration.sign-off.enabled AND NOT directquery.enabled |
@ConditionalOnSignOffHierarchy | The Sign-Off hierarchy is displayed for InMemory or DirectQuery Cubes. | configuration.sign-off.enabled |
@ConditionalOnSnowflake | DirectQuery uses SnowFlake. | directquery.database.type=snowflake AND directquery.enabled |
@ConditionalOnAggregatedDataDisabled | The summary data are not aggregated. | NOT mr.enable.data-model.aggregated |
@ConditionalOnAggregatedDataEnabled | The summary data are aggregated. | mr.enable.data-model.aggregated |
@ConditionalOnAnyCubeEnabled | Any non-summary Cubes are activated | mr.enable.cubes.var OR mr.enable.cubes.pln OR mr.enable.cubes.sensi OR mr.enable.cubes.market |
@ConditionalOnAnyPnLCubeEnabled | PnL Cube or PnL Summary Cube is activated. | mr.enable.cubes.pln OR mr.enable.cubes.pnl-summary |
@ConditionalOnAnySensitivityCubeEnabled | Sensitivity Cube or Sensitivity Summary Cube is activated. | mr.enable.cubes.sensi OR mr.enable.cubes.sensi-summary |
@ConditionalOnAnyVaRCubeEnabled | VaR Cube or VaR Summary Cube is activated. | mr.enable.cubes.var OR mr.enable.cubes.var-summary |
@ConditionalOnAzureData | The data is stored on Azure. | mr.data-load.source=azure-data-loading AND NOT directquery.enabled |
@ConditionalOnCommonCubeEnabled | The common query Cube is activated. | mr.enable.cubes.common |
@ConditionalOnDataNode | The server node contains only data Cubes. | spring.profiles.active HAS dist-data-node |
@ConditionalOnHasDataCube | The server contains data Cubes. | spring.profiles.active HAS dist-data-node OR spring.profiles.active HASN’T dist-query-node |
@ConditionalOnHasQueryCube | The server contains The query Cube. | spring.profiles.active HASN’T dist-data-node OR spring.profiles.active HAS dist-query-node |
@ConditionalOnHasSource | The data needs to be fetched from a source (Azure, Local, etc.) | mr.data-load.source=azure-data-loading OR mr.data-load.source=local-file-system |
@ConditionalOnLocalBus | The server uses the internal bus to communicate between data Cubes and query Cube. | spring.profiles.active HASN’T dist-data-node AND spring.profiles.active HASN’T dist-query-node AND spring.profiles.active HASN’T forceNetty |
@ConditionalOnLocalContentService | The content server is hosted locally | spring.profiles.active HAS local-content |
@ConditionalOnLocalData | The data is stored on the local file system. | mr.data-load.source=local-file-system |
@ConditionalOnMarketDataCubeEnabled | The Market Data Cube is activated. | mr.enable.cubes.market |
@ConditionalOnMissingSource | There is no source set or no DirectQuery (it’s an error case). | NOT mr.data-load.source=azure-data-loading AND NOT mr.data-load.source=local-file-system AND NOT directquery.enabled |
@ConditionalOnNettyBus | The server uses the Netty bus to communicate between data Cubes and query Cube. | spring.profiles.active HAS dist-data-node OR spring.profiles.active HAS dist-query-node OR spring.profiles.active HAS forceNetty |
@ConditionalOnPnLCubeEnabled | The PnL Cube is activated. | mr.enable.cubes.pln |
@ConditionalOnPnLSummaryCubeDisabled | The PnL Summary Cube is disabled. | NOT mr.enable.cubes.pnl-summary |
@ConditionalOnPnLSummaryCubeEnabled | The PnL Summary Cube is activated. | mr.enable.cubes.pnl-summary |
@ConditionalOnQueryNode | The server node contains only the query Cube. | spring.profiles.active HAS dist-query-node |
@ConditionalOnRemoteContentService | The content service instance is remote. | spring.profiles.active HAS remote-content |
@ConditionalOnScalarSensitivity | The sensitivities are stored in a scalar way. | scalar-sensitivities.data-model.scalar-sensitivities |
@ConditionalOnSensitivityCubeEnabled | The Sensitivity Cube is activated. | mr.enable.cubes.sensi |
@ConditionalOnSensitivitySummaryCubeDisabled | The Sensitivity Summary Cube is disabled. | NOT mr.enable.cubes.sensi-summary |
@ConditionalOnSensitivitySummaryCubeEnabled | The Sensitivity Summary Cube is activated. | mr.enable.cubes.sensi-summary |
@ConditionalOnVaRCubeEnabled | The VaR/ES Cube is activated. | mr.enable.cubes.var |
@ConditionalOnVaRSummaryCubeDisabled | The VaR/ES Summary Cube is disabled. | NOT mr.enable.cubes.var-summary |
@ConditionalOnVaRSummaryCubeEnabled | The VaR/ES Summary Cube is activated. | mr.enable.cubes.var-summary |
@ConditionalOnVectorizedSensitivity | The sensitivities are stored in a vectorized way . | NOT scalar-sensitivities.data-model.scalar-sensitivities |
Data Files
You will need to specify where your CSV files are placed. In the default implementation, the CSV files are required to provide Atoti Server with the necessary data and configuration to do the calculations in Atoti Market Risk.
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 mr.properties. The below property needs to be updated to specify an accessible directory containing the necessary files.
Sample files can be found in the mr-application/src/main/resources/data folder.
note
Files in this folder are excluded from the mr-application JAR.
mr.data-load.csv.dataset=data
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.yaml
accordingly to point to that data.
Bookmarks
If you want to replace the bookmarks you have persisted in your content server, there are several options for overriding the content of the content server with the core Atoti Market Risk bookmarks at startup.
The behavior of the bookmark reset is driven by the
contentServer.factory-reset group of properties in the application.yaml
file.
The mr.application.content-server.reset
property determines whether the
reset is performed, and from which persistence type. Available options
are:
-
true
: Imports data from a single JSON file -
file
: Same as fortrue
-
folder
: Imports the bookmarks from a folder-based hierarchical representation of the Atoti UI bookmark tree. -
false
: Does not reset the bookmarks. The bookmarks are loaded directly from the content server without any modification.
The location from which Atoti Market Risk will attempt to load the various options is determined by the factory reset filename (mr.application.content-server.factory-reset.filename) and folder name (mr.application.content-server.factory-reset.folder-name) properties. The default values point to sample files on the classpath.
Due to the inability to load classpath files or folders from a JAR file, running the application via the SpringBoot JAR will require overriding the property via the CLI argument:
mr.application.content-server.factory-reset.folder-name="file:full\example\path\mr-content-server"
The bookmark samples for Atoti Market Risk can be found within the UI release files, containing bookmarks for the VaR-ES, Sensitivities, PnL, and MRCombined Cubes.
Atoti UI
You will need to specify in the Atoti UI configuration file where the Atoti Server project is running. Please 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.
The standalone application contains an mr_env.js file which will need to be updated with the correct server URL:
# The URL to use to connect to Atoti Server
activePivotServerUrl: 'http://localhost:10010/mr-application',
DoctorPivot Configuration (optional)
No changes required