Share Class Management Modules for an Audit Platform
A few years ago, we participated in building an audit platform (here: Audit Platform) for a large multinational professional services firm. Designed to replace legacy auditing procedures done with too many fragmented tools, this integrated system helps auditors and accounting managers from around the globe securely monitor the financial health of their businesses and create audit reports. The solution’s architecture caters to the individual needs of every single finance department, allowing them to include customized modules to cover particular workflows.
|Client||Multinational professional services firm|
|Buyer persona||Client’s employees|
|Technology||.Net Core, Entity Framework Core, SQL Server, Web API, Angular 6, TypeScript, SCSS, RabbitMQ, SignalR|
|Services provided for the client||Application Development, Architecture, Testing, DevOps|
In 2019, we were engaged to extend the Audit Platform for one of its users, a European company. Initially, they needed an enterprise software provider to augment the platform’s functionality with an additional module for the company's stocks management (here: Share Class Management Module).
The module would automatically run regular audits on all the shares issued by a particular company or fund and send alerts if inconsistencies between different share classes were found (for example, if the system couldn’t match all shares in issue with corresponding stakeholders). In addition, to help auditors reconcile the share classes in question faster, the solution would suggest possible causes for the unreconciled alert — such as a share split, reclassification of shares, purchase or cancellation of shares, and beyond. Based on this information, an auditor will quickly find the necessary remedy.
Once the Share Class Management Module was under the hood, the client approached us with another request. They decided to build another module (here: Service Module) to help users manage share class characteristics and their expense ratio fees.
The module would offer an intuitive UI, allowing users to view, add, edit, and delete information on share classes issued within a particular fund, as well as conduct the four eyes review before saving any changes to share class information. Other modules in the Audit Platform (like the Share Class Management Module) were supposed to use the Service Module as a source of data for share class characteristics and expense ratio fees.
The implementation process and its main challenges
We studied the client’s request carefully, and then set the ball rolling by gathering a development team of a team lead, frontend and backend developers, and a QA expert. Since our task was to build modules atop an existing solution, this project was less daunting than building an entire system from scratch. Still, we ran into some serious challenges during the development process, with data synchronization being the biggest one.
The problem was that the client wanted the Share Class Management Module to pull data from the Service Module. Since we started to implement the Service Module when the Share Class Management Module was already underway, our main challenge was to sync data in both modules upon each iteration and update in one of the modules. This involved continuous data migration from one module to the other and a great deal of SQL coding.
The other challenges we needed to address to cater to the client’s needs included:
- Building modules that would be in sync with the data stored in the Audit Platform and seamlessly integrate with the system’s workflow
- The necessity to work with large amounts of data to build a Share Class Management Module that would always do fast and accurate calculations of multiple share classes, present audit results concisely, and would never send false alerts to auditors
- Dealing with sensitive information and taking safeguard actions to secure these data
- The necessity to comply with all standards and regulations that apply to collecting, processing, storing, and sharing financial information in Europe
- Implementing integrations with various kinds of data APIs in the Audit Platform
- Building an API for each module to make them easy to integrate with other solutions
- To assure that both solutions are easy-to-use
We worked in sprints with frequent releases, so the client could see results at the early stages of development and suggest changes where necessary. In the end, we delivered a product that fully satisfied the client’s needs.
After two years of hard work, we rolled out two web-based applications connecting with the infrastructure of the Audit Platform and other modules via API calls as well as a RabbitMQ message bus. Besides, each module has its own API, built with the help of Web API, which allows it to be easily linked to other platforms.
As for the functionalities, our development managed to live up to all the client’s expectations. The Service Module users get quick access to all shared class characteristics. They can also view and modify this information where necessary. Meanwhile, the Share Class Management Module pulls shared class data from the Service Module, scans it for discrepancies, and initiates alerts if unreconciled data sets are found. This saves the time that users otherwise waste doing manual calculations in Excel.
As a result, dozens of audit teams responsible for data setup and reconciliation are now using both applications. We had only a few bugs and issues in production, which confirms the top quality of our work. But what the client appreciated most was the level of project ownership: we handled all the technical aspects of the project on our own, so our client could focus on the business side of things. The positive feedback, in turn, helped us get more projects from this and other companies that use the Audit Platform.