Release notes and changelog

info

For user-facing changes, refer to the What’s New page.
For information on upgrading from previous versions, see the Atoti Market Risk Migration Notes.

5.3.0

2023-11-08

Download the distribution files here

The distribution files comprise the following zipped artifacts:

  • UI source code.
  • UI build that does not require an installation and can be directly deployed.
  • Source files that can be used to build the module.
  • Maven repository required to build the project and run the tests.

    note

    The Atoti Server 6.0.9 Maven repository files have been removed from this zip, so you’ll need to download them separately. Click here to locate them.

  • Offline documentation that can be served by the module.

Summary

  • Java 17 upgrade: The Atoti Market Risk is now compatible with, and requires, Java 17.
  • Spring Security upgrade: We have upgraded Spring Security to version 5.8.7 to resolve vulnerabilities and prepare for the upgrade to Spring Security 6.0 (via Spring Boot 3).
  • Solutions Tools BOM: The Solutions Tools BOM has been upgraded to 2.0-AS6.0
  • Removed Sign-Off hierarchies - Fixed a bug that caused the Sign-off Adjustment dimension to be included in summary cubes and Sign-Off fields expected in summary input files and stores, even when Sign-Off was not enabled.
  • Merged unfiltered pre-aggregated sensitivity measures: Unfiltered, pre-aggregated technical sensitivity measures (e.g. Delta.Native.Vector.SUM.Technical, Gamma.Ladder.Native.Vector.SUM.Technical) are no longer split by sensitivity type. Generic replacement measures are provided: Sensitivities.Native.SUM.Technical/Sensitivities.Native.Vector.SUM.Technical, Sensitivities.Ladder.Native.Vector.SUM.Technical.
  • Defined stores against the GLOBAL schema: All stores in the application are now defined against the GLOBAL schema.
  • Store and reference configuration classes are appropriately named: Store @Configuration classes are now named *StoreConfig and reference @Configuration classes are now named *ReferenceConfig.
  • Removed ActiveMonitor module and dependency: The mr-activemonitor module is no longer part of the MR modules, and the associated dependencies have been removed. For limit monitoring functionality, see How to integrate Atoti Limits.
  • Migration to ConfigurationProperties: The majority of MR properties have been migrated to Spring @ConfigurationProperties classes and the properties files have been consolidated.
  • Virtual hierarchies: You can now use the virtual hierarchy feature on Atoti Market Risk directly from the configuration.
  • Simplified market data API: A preview version of a market data API has been introduced. It covers several features of the current market data API, while reducing complexity. The implementation and configuration classes of the current market data API have been marked as deprecated. For details, see Market Data APIs.
  • New SimpleQuantile implementation: Added a new implementation of IVaRQuantile: SimpleQuantile.

Known issues

Issue Key Details
Updated 2023-11-16: MR-1626 Trying to log in with a user that does not have admin rights throws a 403 HTTP error.
In some of the SecurityFilterChain objects defined in the security configuration, the securityMatcher is missing. As a consequence, only users with admin role are authorized in the application.
See workaround
MR-1616 The CVE https://nvd.nist.gov/vuln/detail/CVE-2016-1000027 can only be fully fixed with an upgrade to Spring 6.
MR-1520 Querying the PnLExplain measure on the Sensitivity Cube is slower than on previous versions, by approximately 15%. This only applies when the Sensitivity Cube is in scalar mode, that is, when the mr.enable.data-model.scalar-sensitivities property is set to true. This is being investigated to find a resolution.

Workaround for security configuration issue (MR-1626 )

To fix this issue, place the following code snippet in the file MRSecurityFilterChainsConfig for the beans managementFilterChain, dqRestServiceFilterChain and dqMigrationHelperFilterChain:

    @Bean
    @Order(6)
    public SecurityFilterChain managementFilterChain(HttpSecurity http, JwtAuthenticationConfigurer jwtAuthenticationConfigurer) throws Exception {
        return http
                // Only these URLs must be handled by this HttpSecurity
                .securityMatcher(url("/actuator", WILDCARD))
                .authorizeHttpRequests(
                        auth -> auth.requestMatchers(HttpMethod.OPTIONS, url("/actuator", WILDCARD))
                                .permitAll()
                                .anyRequest()
                                .hasAuthority(ROLE_ADMIN))
                .apply(jwtAuthenticationConfigurer)
                .and()
                .build();
    }

    @Bean
    @Order(7)
    public SecurityFilterChain dqRestServiceFilterChain(HttpSecurity http, JwtAuthenticationConfigurer jwtAuthenticationConfigurer) throws Exception {
        return http
                // Only these URLs must be handled by this HttpSecurity
                .securityMatcher(url("/directquery", WILDCARD))
                .authorizeHttpRequests(
                        auth -> auth.requestMatchers(HttpMethod.OPTIONS, url("/directquery", WILDCARD))
                                .permitAll()
                                .anyRequest()
                                .hasAuthority(ROLE_ADMIN))
                .apply(jwtAuthenticationConfigurer)
                .and()
                .build();
    }

    @Bean
    @Order(8)
    public SecurityFilterChain dqMigrationHelperFilterChain(HttpSecurity http, JwtAuthenticationConfigurer jwtAuthenticationConfigurer) throws Exception {
        return http
                // Only these URLs must be handled by this HttpSecurity
                .securityMatcher(url("/migrationHelper", WILDCARD))
                .authorizeHttpRequests(
                        auth -> auth.requestMatchers(HttpMethod.OPTIONS, url("/migrationHelper", WILDCARD))
                                .permitAll()
                                .anyRequest()
                                .hasAuthority(ROLE_ADMIN))
                .apply(jwtAuthenticationConfigurer)
                .and()
                .build();
    }

Dependency versions

Component Version
Adjustments Services API 2.2.0
Atoti Server 6.0.9
Atoti UI 5.1.x
Data Connectors 4.0.3-AP6.0
Datastore Helper 3.2.0-AS6.0
Java JDK17
Sign-Off API 2.1.0
UI Components 5.0.27
What-If 2.1.1-AS6.0

Added

Issue Key Details
MR-1554 Preview market data API. For details about the new market data API, see Market Data APIs.
MR-1606 Added a new implementation of IVaRQuantile: SimpleQuantile.

Changed

Issue Key Details
BAS-1346 A test framework is now available, allowing targeted measure testing. Feedback from the first version has been addressed.
BAS-1371 All store and reference @Configuration classes are now named *StoreConfig and *ReferenceConfig.
BAS-1372 All store @Configuration classes are now named *StoreConfig.
MR-1284 The majority of MR properties have been migrated to Spring @ConfigurationProperties classes and the properties files have been consolidated.
MR-1487 The mr-activemonitor module is no longer part of the MR modules, and the associated dependencies have been removed.
MR-1533 Type-specific pre-aggregated, unfiltered sensitivity and ladder measures are now removed. A single measure per datastore field is now created, with all measures that filter by type using the appropriate underlying measure.
MR-1535 All stores in the application are now defined against the GLOBAL schema. This simplifies the customization of stores and reduces the number of calls required to add a store or a reference to all run modes of the application.
MR-1605 Quantile type and rounding method display names can now be set with properties.
MR-1624 Upgraded to Java 17.

Fixed

Issue Key Details
GENACL-952 Support for “O/N” and “T/N” strings in LegacyTenorConverter and SimpleTenorConverter.
MR-1527 Fixed a bug where the Sign-off Adjustment dimension was included in Summary Cubes, and Sign-Off fields were expected in summary input files and stores, even when Sign-Off was not enabled. Now they are only present when Sign-Off is enabled.
MR-1539 Matching the available stores and fields to the selection for testing purposes is now done using AliasedField#getAlias instead of FieldPath#getField.
MR-1585 Added beans for day count convention and tenor converter instead of enforcing them in the maturity converter configuration.
MR-1611 Removed deprecated calls to AnalysisHierarchy.