Legacy System Modernization

From the mainframe to the domain driver microservice architecture

Our client’s backstory

BAWAG P.S.K. (Bank für Arbeit und Wirtschaft und Österreichische Postsparkasse Aktiengesellschaft) is one of the largest banks in Austria. It was formed in 2005 by the merger of the separate banks P.S.K. and BAWAG.

It is owned by BAWAG Group AG, along with Easybank, EasyLeasing and Bausparkasse. Südwestbank, BFL Leasing, Health Coevo and Bausparkasse located in Germany, with the Zahnärztekasse AG factoring business based in Switzerland.

As of 2016, BAWAG PSK serviced more than 2.5 million customers all over Austria. It serves Austrian retail, small business and corporate customers across the country, offering savings, payment, lending, leasing, investment, building society and insurance products and services.

What market need was identified?

As well as many EU banks, Bawag P.S.K. was a traditional bank with a mindset and technologies inherited from P.S.K. and Bawag.

Systems were running on legacy technology and the infrastructure that was almost impossible to replace easily. There were no APIs that would allow building new digital products, which resulted in very slow time to market. This was not an option while competing with neobanks on a global market.

They decided to unlock new digital capabilities to prevent existing customer to churn and attract new customers by building new and simple financial service platform to make the lives of their customers easier.

The solution

One of the first steps was to implement agile methodology at a scale needed for the bank. Solution was found in a Spotify-like agile model focusing more on behaviors and principles.


The first challenge was to transform a traditional bank culture into an agile driven organization and empower teams to take ownership of assigned business challenges as well as introduce a more autonomous approach.

The second was moving away from the legacy system and building a new platform on an infrastructure running on IBM mainframe-based core banking system and dozens of legacy applications. Building new products and applications on top of it was very hard, slow and expensive.

The team decided to build a new system and use the mainframe just as a tool to access core business system.

Klika solutions

How we did it
We provided the design and design implementation for the core set of functionalities and tools to be used by other teams.

Our teams implemented mobile banking solutions – both API and mobile applications (iOS and Android).

We implemented SaaS Fast Loan product offered to BAWAG’s partners (like Saturn and Mediamarkt), as well as various tools used by the Marketing Department (integration with Loyalty providers, CRMs, etc).
Architecture moved to microservice architecture 
Kubernetes, as a container orchestration platform, was used as a basis for a domain-driven microservices architecture, while Java/Spring was used for creating microservices.
Services and domains were grouped in two groups
Product domains – each product domain is responsible for one product, like onboarding mobile customers, loans for web customers, etc.

Shared Domains – set of domains that are used internally by other domains

Our team was responsible for building e-Banking, Fast Loans and Loyalty products as well as building most of the shared domains.

At the end, the whole system consisted roughly of 200 microservices, whereby Klika teams built about 150 of them.

The following image represents the high-level idea for architecture (does not reflect scale in terms of number of services):
Each microservice is an independent web service, implementing REST protocols with its own database (PostgreSQL). Communication between services was established synchronously, using HTTP requests, and asynchronously, using Kafka (depending on the scenario).

In addition to designing and implementing the platform, we were responsible for setting the QA framework (processes and tools), whereby main challenge was to create tools for preparing data for test scenarios (e.g. having a test account with a specific product and specific amount). We built libraries and web services that were used by QA automation teams for easier data preparation.

This approach allowed bank to build new, modern, and fast products seamlessly on top of the legacy systems, like new mobile banking solutions that made personal financing for their customers much easier and faster, but also allowed onboarding new customers quickly online without visiting the bank branch.

It was quite fascinating and fulfilling to witness and be part of this transformation – traditional bank evolving into dozens of agile product and development squads working together and releasing products on almost weekly basis.
It was an amazing journey.