Skip to main content

Technical release notes Q3 / 2023

Technical release notes aim to communicate the restructuring we do for the FA Platform behind the scenes every quarter. The technical release notes focus on the improvements not directly visible on the user interface. Topics covered include performance, security, reliability, quality, and new integrations.

Performance

Performance improvements continue to be a major focus area for us. Although our Q3 release was shorter than usual due to a one-time shift in our release schedule, we achieved significant performance improvements to various core features of the platform.

Improved rebalancing performance and reliability

Why?

Rebalancing a large number of portfolios at once was too slow, and in extreme cases would cause the FA Platform to crash.

Who is this for?

This improvement is for the users of the rebalancing functionality, particularly based on scheduled rebalancing and the “Rebalance templates” extension.

Details

We initiated a systematic evaluation of certain data-intensive product features, with the goal of ascertaining their limits in terms of scalability, and ensuring that they are scalable enough to meet the requirements of our customers. We found our rebalancing functionality lacking in this respect. For example, it should be possible to rebalance 10 000 portfolios with 50 positions each, to produce 500 000 trades, in a reasonable amount of time.

Our starting point was that this operation overwhelmed our test server - it ran out of resources and crashed. After optimising resource usage, we were able to rebalance the portfolios - but it took 8 hours. After further optimization, we were able to successfully complete the operation in around 1 hour.

Rebalancing can be triggered in various ways in the FA Platform. Some of our optimizations affect rebalancing regardless of how it’s run, but others are only applicable to rebalancing via “Rebalance templates”, which runs rebalancing as a background operation.

Please note that the times referenced above are real results that we achieved, but may not translate exactly to your operations. Performance may depend on various factors such as the amount of data in the environment and the environment’s available resources.

Significant performance improvements in the Contacts, Portfolios, Securities, and Bookkeeping views in FA Back

Why?

Searching for and listing contacts, portfolios, securities and postings are common operations, but depending on the amount of data in the system and the specific search criteria that are used, it may take a long time.

Who is this for?

This improvement is for everyone who has encountered slow search results when using the aforementioned views in FA Back, or when using FA Back dashboards that display those types of data.

Details

Several significant performance improvements and optimizations have been done to Contacts, Portfolios, Securities, and Bookkeeping views. As a result, all kinds of searches on these views are now noticeably faster, especially the searches that return a large number of postings.

Improved performance for managing postings

Why?

Certain operations related to postings were too slow, for example, mass-changing posting status to “Reported” and deleting postings.

Who is this for?

Anyone managing postings in the FA Platform.

Details

We optimized the performance of the following operations:

  • Mass-updating posting status (via FA Back UI or via API).

  • Mass-deleting postings.

  • Manual editing of individual postings via FA Back UI.

Further improvements related to postings are planned for upcoming releases.

Improved trading integration performance

Why?

Sending trades to marketplaces via standard trading integrations could take an excessively long time (up to several minutes per order) due to a database indexing problem.

Who is this for?

This improvement is for customers who use our standard trading integrations – or customised ones that make use of our “trading microservice”.

Details

FA trading integration confirms if a given order has already been sent, as an important validation step. Due to insufficient indexing, this check could take an excessive amount of time – depending on the amount of certain trading-related records in the system. In an extreme case, this validation step went from taking several minutes per trade down to a fraction of a second.

Improved performance for listing tradeable securities in client portal

Why?

Listing tradeable securities in FA Client Portal was not fast enough, in case the number of tradeable securities is large (100+).

Who is this for?

This improvement is the FA Client Portal users.

Details

We released some performance improvements for the Trading view in FA Client portal in the 2023 Q2 release, but we found further room for improvement in the 2023 Q3 release. Specifically, we resolved a performance bottleneck in our GraphQL APIs related to FX rate calculation in the context of a security. Eliminating this bottleneck roughly doubled the performance of listing tradeable securities in FA Client Portal.

Migration of NAV calculation records from MariaDB to Cosmos DB

Why?

To rationalize and future-proof our record-keeping of NAV calculation data, we decided to migrate it from our SQL database (MariaDB) to our NoSQL database (Azure Cosmos DB).

Who is this for?

This affects all customers using FA Fund Management, although it will not noticeably affect the usage of the application.

Details

NAV calculation records are stored as JSON text in FA database. Previously, it has been stored in the pm2_archivedata table. A NoSQL database is a better fit for this type of data, therefore we decided to start migrating it to our NoSQL database of choice: Cosmos DB.

To mitigate backward compatibility issues, we decided to proceed with the migration in two steps. The first step, which we took in this release, is to start storing these records in both databases. NoSQL is the primary database for this information, but the data is also saved to SQL. The second step, which we will take in an upcoming major version release, is to stop duplicating this data and only store it in NoSQL. This second step will cause custom extensions that query pm2_archivedata directly to stop working; we will provide instructions for how such extensions may be updated for compatibility.

Other performance improvements

  • Slightly improved the speed of various data-intensive operations by optimising our cache management.

  • Slightly improved the speed of mass-saving transactions via all kinds of features.

  • Slightly improved the speed of purchase lot and position calculation through indexing and other improvements.

  • Improved the responsiveness of position calculation by extending how long we idle our report calculation service before shutting it down.

  • Improved speed of mass-deleting certain data, most notably transactions and trade orders. Mass-deleting transactions and trade orders data happens most commonly when, for example, rebalancing portfolios, which deletes prior open orders, or re-running corporate actions, which deletes transactions from the prior corporate action run.

  • We introduced the possibility to temporarily disable purchase lot and position calculation from the platform. This is useful when migrating vast datasets to the platform, and allows us to reliably import millions of transactions into the system at a pace of several thousand per minute. For more information, refer to FA documentation regarding the feature: Update report.

Reliability

Version 3.13.0 update for jsreport

Why?

The jsreport embedded reporting engine is an important part of FA platform, and it’s important to keep it up to date to ensure that it remains secure and reliable.

Who is this for?

This improvement is for all users who customize or run reports via jsreport. Particularly, for users who have encountered reliability issues related to XLSX report generation.

Details

This release includes a jsreport version upgrade from 3.9.0 to 3.13.0, which resolves certain issues related to XLSX report generation. Please refer to jsreport release notes for more information.

Security

We implemented a variety of security-related improvements in the FA Platform for the Q3/2023 release. Maintaining the security of the FA Platform is crucially important and requires continuous effort. Doing so has been an important part of FA Platform development process for a long time.

The Q3/2023 security improvements most notably include enhancements to FA Admin Console, advanced IP restrictions, and access controls for GraphQL introspection queries. For more information regarding GraphQL introspection queries, refer to FA Developer 1.8 - Release notes.

Quality

During Q3 2023, our QA team has focused on extending our automated test coverage of our newer applications, and particularly of our GraphQL APIs. Our suite of automated tests plays an important role in safeguarding us from introducing bugs as we develop the platform, and covers both regression and performance testing.