6.0.9 to 6.0.10
Who needs to act
Find the rows below that describe the deployment, and read the sections they name. A deployment matching none of them needs no action. Every deployment
Customized projects only
Number and output changes
Crypto 2b measures removed
Crypto 2b Risk Weight and Crypto 2b are removed, and Portfolio Risk Charge no longer includes the Crypto 2b term. The exposure measures and the data loading pipeline stay, under the StandardisedApproach\Crypto 2b folder, with unchanged names. Remove the sa.crypto.group-2b.risk-weight row from any local copy of FRTBParameters.csv. Crypto 2b Exposure Max returns an empty value instead of 0 when both exposures are empty. The Crypto2bRw post-processor and the FRTBParameters.CRYPTO_2B_RW constant are removed.
Pro-Rata below a reference level on the pro-rata hierarchy
WithReferenceLevel on the pro-rata hierarchy, the allocation proceeds one level at a time. Pro-Rata figures change for that configuration. No action is required. See the release notes.
Optionality flags on exported Curvature and Vega data
The ETL setsOptionality and OriginalOptionality to Y on Curvature and Vega sensitivities, where they took the store default N. Calculations are unchanged. An export of sensitivity data that includes those columns shows Y for those rows, and the Optionality hierarchy is now visible in the SA cube.
Trade attributes RRAO synthesis now opt-in
The ETL no longer reads the deprecatedResidualRisk, ExoticUnderlying, OtherResidualRiskType and RRAOCategory columns of Trade_Attributes.csv. Move that data to RRAO_Trade.csv. To keep the old behavior while migrating, set rrao.use-trade-attributes=true; the property is removed in 6.1.0. A project constructing TradesTuplePublisher(datastore, summary) must use the 3-argument constructor to pass the flag; the 2-argument one passes false.
Fixes that change reported numbers
No action is required for these; see the changelog for each fix.- FX Vega is computed with the FX vertex configuration instead of the Equity one; figures change where the two differ.
- The FX Delta and Curvature risk weight measures report a blank value for the N/A bucket.
- The
SQUAREoperation of theSIMPLE_MATHpost-processor returns the square instead of its input. - Under DirectQuery, a parameter set two or more hops from the root regains the overrides inherited from an intermediate ancestor, as it always did in memory. Bucket, quality or sector can change.
- The CSR Euler capital allocation no longer shares one bucket-correlation cache across risk classes and parameter sets, so Euler figures can change for a query that spans two parameter sets.
Post-processor partitioning levels
The shipped post-processors forbid the levels below from their partitioning, on a single node as well as across nodes; rows marked unchanged behaved the same at 6.0.9. Distributed deployments validate measure values on query and data nodes after upgrading. For custom post-processors, see Post-processor interface migration.Configuration and dashboard changes
Snowflake key-pair authentication
The shipped DirectQuery configuration uses key-pair authentication, as Snowflake is deprecating passwords.directquery.database.snowflake.password still binds but should no longer be used.
- Generate a PKCS#8 RSA key pair:
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt, thenopenssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub. - Register the public key on the Snowflake user:
ALTER USER <user> SET RSA_PUBLIC_KEY='<key without header, footer and line breaks>'. - Set
SNOWFLAKE_PRIVATE_KEY_BASE64tobase64 < rsa_key.p8 | tr -d '\n', and dropSNOWFLAKE_PASSWORD.
Parent-child hierarchy depth validated at startup
parent-child.book-depth and parent-child.legal-entity-depth below 1 are rejected at startup. The defaults, 15 and 5, are unchanged.
Tracing scope renamed
The accelerator traces under its own OpenTelemetry scope,atoti.frtb, instead of atoti.server. Update any monitoring filter or dashboard keyed on the old scope. See Tracing.
ReferenceCurrency context value no longer exposed
TheReferenceCurrency context value no longer appears in the Context Values drawer and can no longer be set. A saved dashboard or an MDX query that sets ReferenceCurrency must set the current member of displayCurrency instead. Capital numbers are unchanged.
REST API changes
Diagnostics redirect endpoints removed
DiagnosticsRedirectController is removed. GET /tree/cubes and GET /tree/measures?pivotId=... return 404. Call the platform measure-lineage diagnostics endpoint directly, as the shipped Atoti Admin UI does.
parentBranch on the What-If submit endpoint
POST /services/rest/whatif/{operationId}/submit now honors parentBranch: when toBranch does not exist, it is created from that branch instead of from the current head; when toBranch exists, parentBranch is ignored. An unknown or unreadable parentBranch is rejected with 400. A request that already sends parentBranch is now acted upon; confirm it names the intended branch.
Trade duplication requires a suffix
ThescaleTrade endpoint rejects duplicate=true without a suffix as 400 Bad Request. Send a non-empty suffix with every duplication request.
Distributed discovery no longer fails when a data cube never joins
The discovery REST endpoint succeeds where it threwIllegalStateException for a query-cube measure whose data-cube measure never joined the cluster; the measure falls back to the Object type. Only code relying on that exception is affected.
Migration helper REST controller
MigrationHelperRestController is replaced by FRTBMigrationHelperRestController, and the local com.activeviam.frtb.migration.export package by the Common Library’s com.activeviam.accelerator.common.directquery.migration.export:
DatabaseExtractionDTO is immutable and built with DatabaseExtractionDTO.builder()...build() instead of setters. Two properties are new: frtb.migration.export.enabled (default true) and frtb.migration.export.base-dir (default ${java.io.tmpdir}). A request whose outputDirectory is outside base-dir is rejected; set base-dir to the export directory. The generated DDL now creates the BOOK_HIERARCHY and LEGAL_ENTITY_HIERARCHY tables, which the deployment populates itself; see Populating hierarchy tables from parent-child stores.
Level path endpoint served by the Atoti Limits connector
Atoti FRTB no longer servesGET /services/rest/v1/levelPath/{cubeId}. The Atoti Limits server calls it through the Limits connector to resolve parent-child hierarchies for limits.
With connector 4.2.0 or earlier, the Limits server’s calls to the endpoint fail. Import
LevelPathRestService from a configuration class the application context loads, by import or component scan:
Ambiguous mapping.
Opt-in features
Eachenabled property defaults to false, and nothing changes until it is set.
EU delegated act support
The newEU-DA parameter set changes no number under any other parameter set while the RRAO Zero Risk Weight flag is off. Its two opt-in treatments, frtb.eu-da.rrao-zero-risk-weight.enabled and frtb.eu-da.drc-contractual-maturity.enabled, have manual steps for pinned parser columns, DirectQuery databases, the SACubeRRAOExport extract and customized projects. See How to enable the opt-in treatments on the EU-DA page.
Optionality Service curvature-shift alignment
optionality-service.align-with-curvature-shift=true aligns OptionalityService with the CurvatureToDeltaShift post-processor: GIRR is matched by Bucket on Yield curves, Equity by Underlying on Spot risk factors, and an existing Y is never overwritten with N. This can change capital numbers, so validate before enabling in production. OptionalityService is deprecated since 6.0.10. In 6.1.0 the property and the legacy matching are removed, the aligned behavior becomes the only one, and a new interface replaces subclassing; the extension points curvatureKeys, underlyings and condition go with the legacy path.
Pro-Rata totals across several hierarchies
Withfrtb.pro-rata.multi-hierarchy-totals=true and a combination such as BookHierarchy;Risk Classes appended to pro-rata.hierarchies.list, which ships no combination, the Total column is the sum of the risk classes. See ProRataHierarchy. An overridden parentLocation on a ProRata subclass is not consulted for the summed totals.
Build and dependencies
Atoti Server upgrade to 6.1.24
Atoti FRTB moves from Atoti Server 6.1.19 to 6.1.24, withcommon-parent-pom and common-dependencies-bom 2.6.0. No Atoti Server Java API used by Atoti FRTB changed. The Atoti Server BOM is now imported ahead of common-dependencies-bom, so its dependency versions win; for the versions and CVEs, see the Atoti Server 6.1 changelog. Hibernate moves from 6.6.36.Final to 6.6.53.Final, the Spring Boot selection, and H2 stays at 2.3.232. Two dependencies resolve lower than before and are left so: commons-io 2.21.0 to 2.20.0 and velocity-engine-core 2.4.1 to 2.4.
No action is required unless the deployment overrides h2.version or hibernate-orm.version. Such an override works only for a deployment that inherits this POM through <parent>; a deployment importing it with <scope>import</scope> must declare its own dependencyManagement entry instead.
Common Library upgrade to 2.1.17
Two lookup contracts and the DirectQueryMigrator change without a compile error:
DatabaseDiscovery.discoverAndFix also validates the aggregate tables; a missing table or column throws DatabaseDiscoveryException.
ActivePivot Maven artifact rename
activepivot-impl and activepivot-intf are replaced by core. A POM declaring either artifact explicitly must declare com.activeviam.activepivot:core instead. Transitive users need no change. See the Atoti Server 6.1 migration notes.
Sign-Off and Adjustments Services dependency alignment
signoff-api-lib moves to group ID com.activeviam.modules.signoff-api and adjustments-services to com.activeviam.modules. Artifact IDs, packages and Spring configuration are unchanged.
${activepivot.version}. Neither library publishes a build for every Atoti Server patch, so a project that overrides activepivot.version must confirm both have a matching version, or pin signoff-api.version and adjustments-services.version to the last published one.
The BranchAwareAdjustmentRequestDTO constructor (key, user, filters, input, toBranch) is replaced by (key, user, parentBranch, filters, input, toBranch). A call to the old form no longer compiles, and a precompiled caller fails with NoSuchMethodError. The no-argument constructor and setters are unchanged.
Java customizations
The sections below apply only to projects with custom code. A standard deployment needs none of them.API signature changes
Each change below fails to compile where the row says so, and the compiler names the member.Post-processor interface migration
Post-processors acrossfrtb-core implement IDistributedPostProcessor instead of IPostProcessorPartitioningManagerAware. A subclass that referenced the partitioningManager or partitioningManagerFactory field, or overrode setPartitioningManagerFactory, no longer compiles: drop that wiring. A client post-processor implementing IPostProcessorPartitioningManagerAware directly still works; migrating it is recommended.
A subclass of ABasicPostProcessor or ABaseDynamicAggregationPostProcessor needs nothing more: canBeDistributed returning true is correct and reduce needs no aggregation. A post-processor that fans out across a breakdown, or aggregates across a level, follows two rules, both driven by one predicate so they cannot drift apart:
setPartitioningLevelsremoves exactly the levels a prefetch changes on the requested location, such as achildLocationdrill-down; asetFilterpin to a constant or anancestorLocationcall does not count. It always callssuperfirst. A class extendingAAdvancedPostProcessordirectly must declare the override.canBeDistributedreturnstrueunconditionally for a post-processor that reads the database, throughgetDatastore(), anIDatabaseVersion, a store cursor or anIUnfilteredParameterRetriever; one that resolves everything throughIParameterRetrieverdefers to the predicate.ScaledVectorValueis the reference implementation.
Partitioning manager beans no longer used
postProcessorPartitioningManagerFactory, postProcessorPartitioningManagerAllAddedLevelDescriptions and postProcessorPartitioningManagerAllRemovedLevelDescriptions on FRTBPostProcessorConfig are deprecated for removal. No shipped post-processor implements IPostProcessorPartitioningManagerAware any more, so an override of either bean no longer affects them; a client post-processor implementing that interface still receives the factory built from both. Re-express the customization by overriding setPartitioningLevels on the post-processors concerned.
GrossJTD and VegaExpand output type validated
The output type of aGROSS_JTD or VEGA_EXPAND measure is read from its outputType property and must be a nullable double; another type fails at startup with PostProcessorInitializationException. A measure configuring no outputType keeps the nullable double as before.
Parameter lookups return empty collections
Fifteen parameter-lookup members return an empty collection or array instead ofnull when no tuple matches, and are annotated @NonNull: the ConfigurationParametersUtils members getVertices (both), getGIRRVegaResidualMaturities, getAllVertices (both), getAllUnderlyingVertices, getGIRRVerticesWeightingsQuery, getLHtoIndexMap, getIndexToLHMap, getCSRBuckets, getGIRRMajorCurrencies and getCsrNonSecHighRatings; DRCJTDCalculations.getDRCRiskWeights and getERBARiskWeights; and LiquidityHorizonCoefficient.retrieveLiquidityHorizonsToIndexesMap. Code compiles unchanged, but a == null branch applying a local default no longer runs. Replace null checks with emptiness checks:
Unmodifiable collections
AWeightedSensitivitiesAggregatesMap.toHierarchyInfos, ConfigurationParametersUtils.getCSRBuckets and getGIRRMajorCurrencies, ZeroRiskWeightFilter.getMembers, ARiskMeasureDoubleSums.leafCoordinates, CategoriesConfig.categoriesTuples, InitialDataLoadDates.initialLoadAsOfDates and InitialDataLoadDatesCloudConfig.initialLoadAsOfDatesCloud return unmodifiable lists, as do the DimensionsConstants.SAME_DIFFERENT_ORDER and TYPE_AND_MATURITY_LEVELS_ORDER constants. Code that sorts, adds to or replaces an element of the result throws UnsupportedOperationException at runtime. Wrap the result in new ArrayList<>(...) first.
Parser column constants immutable
ALL_FIELDS in RraoFileConstants, RraoSummaryFileConstants, BookDescriptionFileConstants, TradeAttributesFileConstants, DRCFileConstants and DRCSummaryFileConstants is built with List.of, and the matching FileColumnsConfig beans return unmodifiable lists. ALL_FIELDS.add(...) throws UnsupportedOperationException at startup; build a new list instead. A column appended by a property, such as the regulatory book classification or the EU-DA columns, is added to the bean only, so getColumnIndex returns -1 for it: read column positions from the injected bean.
AggregatesMap changes
AggregatesMap.Key.set(int, Object), Key.set(Object...) and Key.map(int, Object) keep their signatures but no longer insert an unmapped coordinate; they look it up and leave the dimension unmapped. Key.accumulate(Object...) is the inserting replacement, createKey still inserts as before, AggregatesMap.lookupKey(Object...) builds a key by lookup only, and Key.getMapped(int) can now return a negative value. Key.get(int) and AggregatesMap.add(Key, double) throw IllegalStateException on an unmapped coordinate. AggregatesMap.get(Key) no longer mutates the map, and returns 0.0 instead of throwing on an empty zero-dimension map.
Code using the old accumulation pattern, key.set(...) then add(key, value), compiles unchanged and throws at query time: switch it to key.accumulate(...). AggregatesMap.publish() is new and must be called once after the last add and before the map is shared across threads; a subclass of AWeightedSensitivitiesAggregatesMap overriding compute must call it.
CSR bucket-indices helper
CSRNSDeltaCalculations.bucketIndices and CSRSecCTPDeltaCalculations.bucketIndices return BucketIndices instead of IDictionary<Object>, and evaluateRiskChargeDoubleSums, gammaCorrelations and gammaSectorCorrelations take it. BucketIndices exposes size(), getPosition(Object) and read(int), which returns String and throws ArrayIndexOutOfBoundsException out of range. No numeric output changes.
A subclass of CSRNSDeltaRiskChargeDoubleSums, CSRNSVegaRiskChargeDoubleSums, CSRSecCtpDeltaRiskChargeDoubleSums or CSRSecCtpVegaRiskChargeDoubleSums that touches the bucket-indices parameter in getUnderlyingParameters, evaluateRiskMeasureDoubleSums or getVectorSize still compiles, because those members take Object, and fails at query time with ClassCastException. Update it to BucketIndices.
Datastore customization order
Every shippedDatastoreConfiguratorConsumer bean declares an @Order from DatastoreCustomisationSpringBeanOrder, and the customization list is no longer filtered on @Qualifier(SP_QUALIFIER__CUSTOMISATIONS); the constant is deprecated for removal and a bean still carrying it is applied as before. A project declaring its own consumers must annotate each one; PROJECT places a field before the sign-off key fields. Two silent changes to check: an unqualified consumer bean is now applied at startup, and a project injecting the qualified list no longer receives the shipped beans, so inject by type.
Crypto 2a exchange bean moved
addCrypto2aExchangeToUnderlyingStore now lives in FeatureDatastoreCustomisationsConfig. A project that overrides, excludes or references the bean through DatastoreCustomisationsConfig must retarget it. Other projects need no action.
Trade-scaling What-If definitions split
TradeRescaleRestServiceController uses two definitions, TradeDuplicateSimulationDefinition and TradeScalingSimulationDefinition, configured through TradeRescaleStoreFields. The former TradeDuplicateAndRescaleSimulationDefinition still works and is deprecated for removal; persisted simulations and REST payloads naming its plugin key continue to run. Migrate customizations to the two new ones. TradeScaleDTO is removed.
6.0.8 to 6.0.9
Summary
- SACubeRRAOExport column header rename:
OtherResidualRiskTyperenamed toRRAOCategory. - Distributed messaging API: Messaging classes replaced with
CommunicationRegistrationAPI.
SACubeRRAOExport column header rename
TheSACubeRRAOExport DEE template now exports the RRAO Category column under the header RRAOCategory instead of OtherResidualRiskType. Downstream consumers that parse the export by header name must be updated from OtherResidualRiskType to RRAOCategory.
Distributed messaging API (if customized)
This section applies only if your project customizes distributed messaging classes. TheIMessageHandlerRegistrar pattern introduced in 6.0.8 has been replaced. The following classes have been removed:
BusinessDayCalendarMessageHandlerFrtbCoreMessageHandlerRegistrarDatastoreMetadataMessenger
BusinessDayCalendarMessage is now a Java record implementing Request (from com.activeviam.activepivot.dist.impl.avinternal.communication). Its answer is a nested record implementing Answer and ProcessedOutput.
Handler registration is done inline using the CommunicationRegistration fluent API instead of the @AtotiExtendedPluginValue annotation.
Before (6.0.8):
DistributedParametersRetriever constructor now requires an additional IActivePivotManager parameter. Update any custom instantiations accordingly.
6.0.7 to 6.0.8
Summary
- New DLC Unload Topic Aliases: Purely additive — no migration required.
- OpenTelemetry configuration changes:
tracing.enabledproperty removed; exporters now disabled by default. - JGroups protocol files:
AtotiAuthTokenreplaced withSharedSecretAuthToken. - Distributed messaging API: New
IMessageHandlerRegistrarpattern for custom message handlers. - Import changes: Constants moved from
AxisHierarchyBasetoIAxisHierarchyDescription.
New DLC Unload Topic Aliases
Eight new unload topic aliases have been added to allow selective, per-cube data unloading via DLC:UnloadSA, UnloadIMA, UnloadIMADRC, UnloadPL, UnloadStressCalibration, UnloadCommon, UnloadParameters, and UnloadAllData. No migration is required; these are purely additive. See Unload Topic Aliases for details.
OpenTelemetry configuration changes
OpenTelemetry has been upgraded and simplified:- SDK: 1.49.0 → 1.56.0
- Instrumentation: 1.33.0-alpha → 2.22.0 (stable)
-
tracing.enabledproperty removed — TheOpenTelemetryTracingConfigclass has been removed. Tracing is now configured entirely through OpenTelemetry Spring Boot auto-configuration. -
Exporters disabled by default — OpenTelemetry exporters (
traces,metrics,logs) are now set tononeby default. Previously, tracing was enabled by default whentracing.enabled=true.
- The
tracing.enabledproperty can be removed from your configuration as it is no longer used. - If you were using
tracing.enabled=falseto disable tracing: No action needed (tracing is now off by default). - If you were using
tracing.enabled=truewith-Dotel.java.global-autoconfigure.enabled=true, replace with the new VM flags:
JGroups protocol files
TheAtotiAuthToken class has been replaced with SharedSecretAuthToken. Update all JGroups protocol XML files to use the new class name.
Before:
Distributed messaging API (if customized)
This section applies only if your project customizes distributed messaging classes. The following API changes have been made:IAuthenticatedBroadcastMessagenow takes 1 type parameter instead of 3. Update any class that implements or references this interface.BusinessDayCalendarMessagehas been simplified toAUniqueBroadcastMessage<BusinessDayCalendarMessageAnswer>. Handler logic previously embedded in the message class now lives inBusinessDayCalendarMessageHandler.DatastoreMetadataMessengeris deprecated for removal. Its third type parameter has changed fromIDistributedHierarchyManagertoVoid.- Custom message handlers should now implement
IMessageHandlerRegistrarand register using@AtotiExtendedPluginValue(intf = IMessageHandlerRegistrar.class), rather than embedding logic in the message class itself.
Import changes
The constantsAUTO_CONTRIBUTE_UNKNOWN_MEMBER_ALWAYS and AUTO_CONTRIBUTE_UNKNOWN_MEMBER_PROPERTY have moved from AxisHierarchyBase to IAxisHierarchyDescription. Update any imports or references in your project.
Before:
6.0.6 to 6.0.7
No migration needed.6.0.5 to 6.0.6
Summary
- Changes to the frtb-starter: Updates to the frtb-starter to allow file uploads to be run without executing simulations.
Changes to the frtb-starter
-
The
IFileUploadDataNodeClientinterface has been updated in thefrtb-startermodule, the methodcreateBranchForUIWithoutSimulationhas been added to it. -
The class
FileUploadQueryNodeServicehas been changed extensively. It needs to be copied as is to your upgraded project. -
In the class
FileUploadQueryNodeRestController, the methodresetDataNodeFilesdoes not throw an exception in its signature any more:
- The method
createBranchForUIhas been updated:
- In the class
FileUploadPayload, the Lombok@EqualsAndHashCodeannotation has been added, thetopicsattribute is now a set instead of a list, and the visibility of thetopicsandfilePathSeparatorattributes has been changed:
- The class
FileUploadRestServiceControllerhas been changed extensively. It needs to be copied as is to your upgraded project. - In the class
FileUploadTopic, the Lombok@EqualsAndHashCodeannotation has been added, thefilesattribute is now a set instead of a list, and the visibility of thefilesandnameattributes has been changed:
- In the
CommonDimensionsConfigclass, hard-coded strings have been replaced by constants:
6.0.4 to 6.0.5
Summary
- Crypto 2a Support: Added configuration, cube dimensions, measures, and starter module components to support Group 2a cryptoassets.
- SBM Correlation Scenarios: Introduced a new cube dimension allowing user-defined correlation scenarios for enhanced control over SBM risk calculations.
Configuration files
Parameters
The following parameters have been added to the file FRTBParameters.csv:Vertices
The following vertices have been added to the file Vertices.csv:Configuration properties
Properties added
Datastores
Added stores
Modified stores
Cube schema
Added
Measures
Added
Integration of Crypto 2a into the frtb-starter module
The following classes have been added to thefrtb-starter module:
Crypto2aServiceCrypto2aConfig
FRTBConfig class:
Crypto2aConfigurationProperties is now included in the list of configuration properties classes in the class FRTBConfig:
-
CommonDimensionsConfig-
In the
getSARiskDimensionmethod, the argumentCrypto2aConfigurationProperties crypto2aProphas been added. Before:Now: -
The implementation of that method has been changed to add the Crypto 2a Exchange hierarchy:
Before:
Now:
-
In the
-
The following method has been added:
-
CubesDimensionsConfigTheCrypto2aConfigurationProperties crypto2aPropconfiguration properties are now used in thestandardisedApproachCubeDimensionsbean, and the new Correlation Scenario dimension has been added to that bean. Before:Now: -
DatastoreCustomisationsConfigThe following bean has been added:
Miscellaneous
The following dependency has been added to thefrtb-starter POM file:
6.0.3 to 6.0.4
Summary
- Atoti What-If upgrade: Atoti What-If has been upgraded to 4.1.1-AS6.1. To migrate any custom What-If configuration, see the migration guides for this release.
6.0.2 to 6.0.3
Summary
- Virtual hierarchies can be set with the property
frtb.configuration.virtual-hierarchies. - The new
Curvature CVRmeasure will be disabled by default in 6.0.x versions of Atoti FRTB. To enable it, set the propertyfrtb.curvature-cvr.enabled=truein theapplication.yamlfile. - Cube distribution can now handle data overlap. This means it is possible to have several data cubes with duplicated data. you need to set
frtb.distribution.enable-data-duplication=true. HistoricalDatesProviderno longer queries the base stores for the list of historical dates. This is achieved by using the database statistics to gather the set of unique dates. TheHistoricalDatesProvidercan be reverted to the previous behavior of executing distinct datastore queries by setting the propertyfrtb.historical-dates-provider.is-using-approximate-members=false.- The zero risk-weight can now be specified per obligor and jurisdiction, defaulting to 0%.
Breaking changes
None.Deprecations
- Cube distribution by field: Distribution of data cubes across nodes by defining clustering fields is deprecated, it should be done with distribution levels.
Input file formats
Added
Configuration properties
Properties added
Properties deprecated
Properties files
Files Modified
frtb-data-load.properties
New properties:Datastores
Added stores
Databases
Added tables
Measures
Added
6.0.1 to 6.0.2
No migration needed.6.0.0 to 6.0.1
No migration needed.Breaking changes
NoneSummary
- Upgraded to Data Connectors 5.0.4
5.3.0 to 6.0.0
Upgrading from version 5.3.0, see Atoti FRTB 6.0 Release Notes. Atoti FRTB uses Atoti Server 6.1.7 and Atoti UI 5.2.x. For new features and fixes included in these releases, please see the Atoti UI documentation and Atoti UI Migration Notes, and the release notes for Atoti Server.Breaking changes
- Measure Configuration: The text replacement template for measure configuration now uses the pattern
#{_name_}instead of${_name_}. See Startup Properties. - frtb-application module: Some of the content of the
frtb-startermodule has been moved to the newfrtb-applicationmodule. - DLC 5.0 Upgrade: With the new version of the DLC, the configuration of the ETL has been simplified.
- What-if endpoints: The (undocumented) what-if REST endpoints used by the Switch Desk Model and Switch Book Desk what-if simulations have changed.
- DoctorPivot endpoint: DoctorPivot is now embedded within the AdminUI. See Relocation of DoctorPivot for more.
Headline announcement
- Upgraded to Atoti Server 6.1.7 : Upgraded to the latest Atoti Server.
- Upgraded to JDK 21 : Upgraded from JDK 17 to JDK 21 to utilize the latest features.
- Removed ActiveMonitor : The Active-Monitor module and related features have been removed.
- frtb-application module: The
frtb-applicationmodule replaces thefrtb-startermodule. All customizations should now be done in thefrtb-applicationmodule, or in a new module based on thefrtb-applicationmodule. - Sign-Off Service Availability: The Sign-Off REST service now throws
ServiceUnavailableExceptions until the initial data loading phase has been completed. The Sign-Off REST service now provides a GET/enabledendpoint to check if the service is currently enabled. - Simplified OpenTelemetry Configuration: Atoti FRTB now relies on OpenTelemetry’s GlobalOpenTelemetry to configure the export of logs and metrics.
- OpenRewrite recipes As an experimental feature, OpenRewrite recipes have been added to automate some of the migration steps.
OpenRewrite recipes
These OpenRewrite recipes are included as an experimental feature, and feedback is welcome on their usefulness during migration.
This feedback can then be evaluated for potential inclusion of the feature in future releases.
Please report any issues encountered through the normal Jira channels.
See Using OpenRewrite in Atoti FRTB for instructions on how to run the recipes.
frtb-application module
The new frtb-application Maven module has been split out of the frtb-starter Maven module.
Components moved
The following components have been moved into the new module:FRTBApplicationclass including themain()method.- Spring security configuration
- OpenTelemetry configuration
- Logging configuration
- Content Service configuration
- Configuration files
Configuration classes moved
For the full list of configuration classes that have been moved into thefrtb-application module, see the Moved Classes section.
Data & Test folders moved
The sample data located at/frtb-starter/src/test/resources/ has been moved out of the frtb-starter module to the /sample-data/ folder located at the root of the project.
The tests included in the frtb-starter module have been moved into the new frtb-application-tests module.
OpenTelemetry Configuration
The previous OpenTelemetry configuration has been replaced with a simpleOpenTelemetry bean.
To enable the autoconfiguration of this bean, set -Dotel.java.global-autoconfigure.enabled=true on the command line.
FX Translation Risk
The field “Translation Risk Currency” has been added to support loading translation risk for different reporting currencies. It is now possible to load different translation risks for different reporting currencies. This field is only used ifFXComplexTrade=Y (otherwise the translation risk is calculated automatically).
- If this field is empty, the sensitivity is not treated as translation risk but instead treated normally.
- If this field is set, then the sensitivity will be interpreted as translation risk for that currency. It will be filtered and only used if the translation risk currency is the same as the reporting currency.
Alternative root parameter sets
The propertyparameter-set.root has been added to specify the root parameter set in the configuration and input files.
It is expected that input files are generated for the parameter set specified in this property.
Additionally, the configuration files containing parameters will need to be adapted to the new root parameter set.
- Previously, when no parameter set was specified in the configuration it was assumed to be “BCBS”. Now, these parameters will default to the specified root parameter set.
- Parameter configuration will need to be modified for the new root parameter set.
If you want to set CRR2 as the root parameter set, the above two lines can change to become:
So that the value in the CRR2 parameter set is still “10”, and the value for the BCBS parameter set is still “8”.
Summing Sensitivities
When multiple sensitivities with the same key fields are loaded, they are now summed. Previously this was only done when processing a chunk within a file, now it is done across the whole transaction. The following configuration has been added toapplication.yaml and will sum sensitivities and PVs for the SASensitivities store,
making sure that the currency and a few other fields are the same.
FRTB Modules
Removed
Added
DLC 5.0 upgrade
The upgrade to DLC 5.0 has brought some significant changes to the ETL configuration. For non-FRTB specific DLC migration, please see the DLC 5.0 Migration Guide. DLC configurations for Atoti FRTB have now been organized intoFrtbDlcConfig.
Loading Topic Configurations
Before the DLC redesign,ChannelParameters were being used to encapsulate DLC configurations into beans.
Now, configurations that were previously found as ChannelParameters beans can be found as Topic Descriptions in the following classes:
Column calculators are now configured as DLC
CustomFieldDescription beans and have been organized into CustomFieldDescriptionConfig.
The DLC implicitly adds CSVColumnParser column calculators based on the store being targeted.
Those calculators have therefore been removed from the topic configurations.
The new DLC also lets you configure parser overrides.
In Atoti FRTB they can be found in ColumnParserOverridesDescriptionConfig.
Tuple publishers are now configured as DLC TargetDescription beans and have been organized into TargetDescriptionsConfig.
Unloading Topic Configurations
Unloading topics are now completely separate from loading topics. They are configured inUnloadTopicDescriptionsConfig.
Topic Aliases
Topic Ordering Logic
ETL Extension Updates
See the following sections on how the ETL extensions have changed with the new DLC:- Adding and Populating a New Store
- Adding Columns to an Existing File and Store
- Enriching File Fields by Adding Column Calculators
Removed classes
See the list of classes removed as part of the DLC 5.0 upgrade.Video overview
See the following video on migrating to Data Connectors 5.0 in Atoti FRTB 6.0:Input file formats
Modified
Startup properties
The file frtb-config.properties is now loaded into the Spring Boot environment. As a result, the properties in this file can be overridden on the command line. The filemeasures-config.json is now also loaded into the Spring Boot environment. The json file is converted to properties with the prefix “measures”.
The text replacement template in these files now uses the pattern #{_name_} instead of ${_name_}.
The ${_name_} pattern can still be used for Spring Boot’s property placeholders.
Updated properties: changed values or renamed
Changed values:
Renamed
Deleted properties:
Configuration files
Files Modified
FRTBParameters.csv
frtb-config.properties
Datastores
Modified stores
Databases
Modified tables
Cube schema
Added
Modified Classes
The following classes have been added, removed or had their function replaced with new classes.Added Classes
Removed Classes
DataLoadController
The following classes related to the DLC and data loading have been removed as part of the DLC 5.0 upgrade.Click to see the full list of removed classes.
Click to see the full list of removed classes.
WhatIf
The following classes have been replaced withDatastoreChangeSimulations because the configuration of WhatIfs has changed.
Services
Moved Classes
Migrating to using Atoti Starters
Atoti Server now provides Spring Boot Starters to aid in application development. These starters will auto-configure some basic and required beans for the application to run. Atoti FRTB has been updated to use these starters. The following changes have been made:Historical Date Provider Service
The historical dates used for theLookback hierarchy measures are now configurable via a IHistoricalDatesProvider bean. By default, a
HistoricalDatesProvider (configured in HistoricalDatesProviderConfig) will be created that provides all AsOfDates available in all base stores.
Sign-Off REST services
The implementation of the Sign-Off REST service now has a Boolean to enable state flag. Out of the box, the Sign-Off REST services are disabled until the initial load is completed. This prevents the Sign-Off server from sending requests on those services before the end of the initial load. The status of the Sign-Off service can be retrieved through a GET request at/enabled.
Atoti Server exceptions are now used instead of the previously used Javax exceptions.
Error messages and constants have been fixed. Their prefix and/or content was previously incorrect.In particular, the constant ERROR_MESSAGE has been
replaced by the constant ERROR_MESSAGE_NO_VALID_DTO_PROVIDED. The exception message prefix has been changed from "[EXPORT]" to "[SIGN-OFF]" in the
error message constants.
Relocation of DoctorPivot
DoctorPivot has been moved from the endpoint/frtb-starter/doctorpivot to now being embedded within the AdminUI’s Measures dependencies tab which is located
at: /frtb-starter/admin/ui/index.html#/measures-dependencies.