Our client is a company that provides insurance broking, risk management, and claims consulting services globally. Their international broking and underwriting business provides a range of specialist insurance solutions to clients and is supported by a strong backbone of technology and expertise. With over $10 billion of premiums placed worldwide each year, our client is trusted worldwide and is growing each day.
The main purpose of the project was to turn insights into numerous data by developing Platform - a set of about 20 applications that would collect, process, and present data in a specific way to support the business decisions of our users.
In our databases, we have information about all our clients, products, market shares, industries, and insurers divided into over 400 business units. The Platform aims to collect, transform, analyse and display data from all those sources in the form of indicators so our users could more easily make business decisions based on concrete data.
Initially, the project was intended only for internal users. Over time, some applications started to be used externally. Our goal was to provide tools we made for internal users externally and, in that way, make the development and maintenance of this project self-sustaining and profitable.
Server-side: SSAS (Microsoft SQL Server Analysis Services), DAX, SQL, C#, .NET Core, Redis
Client-side: Angular with TypeScript
Infrastructure: Microsoft Azure
During the first months of work, our team focused on acquiring domain knowledge and understanding Lloyd’s principles (a business model that represents a set of 13 principles). These principles set out the fundamental responsibilities expected of all managing agents in order to support the markets’ overall performance, capital strength, financial and reputational credibility.
One of the problems we faced was figuring out how to get all the data into a common data source that multiple applications would use. To accomplish this, we decided to use the ETL (Extract, Transform, Load) process:
We used SQL for data extraction and transformation and stored the final processed data on the SSAS (Microsoft Analysis Service) database. The SSAS database allowed us to constantly update the data through various scripts and thus have up-to-date data.
One of the crucial challenges in the project was to find a way to pull data from the Analysis Service. To achieve this, we decided to use the DAX (Data Analysis Expressions) query language, which allowed us to manage and filter the processed data and send it to the UI. We used various tables, graphics, charts, and maps to display the data as simply as possible. To achieve the aforementioned, we used various libraries that Angular offers, such as ag-grid, Highcharts, etc.
Having a deep knowledge of the domain and the business model itself allowed us to come up with more efficient and innovative solutions, significantly improving the applications' quality.
By reducing the various data sources to one, we made their entry and display much easier. Different aspects of viewing data from only one source provided us with numerous ways of displaying them. The unique source enabled us to divide data consumption through various abstractions into units (separate applications).
Given that processing (sorting, formatting, elimination, etc.) requires a significant amount of resources, the use of different caching methods (client and server) raised the performance of the applications to a significantly higher level.
To make the applications self-sustained, the initial goal was to acquire external users in addition to internal ones. Therefore, tracking technologies such as Application Insights and Google Analytics allowed us to follow users' needs in detail. Thanks to that, we were able to present the data in a more straightforward way, which caught the users' attention, which further helped develop different roles depending on the users' needs.
Through AAD (Azure Active Directory), we have control over user authentication on all our applications. Also, we can control user access (authorisation) to different parts (modules) of our applications and their pages. This principle also makes authentication easier for our users.
As we worked on the system where we aggregated data sources consumed from more than 10 applications (projects) and development teams, we have raised our teamwork, cooperation, coordination, and whole development process to a higher level.
For more information about this or any other project, feel free to contact us.
Bojan is a Software engineer who is curious and dedicated. He is always trying to improve himself and find new ways of doing so.