The client's internal enterprise system called CoBen has multiple microservices that calculate various types of benefit payments for workers, or debts in case of overpayments. The issue was that they didn't have an automated way of managing these payment flows.
The goal was to digitalize the way they processed incoming payments and automatically match them to benefits or debts. The main idea was to find a way to standardize the process so that it can be applied to each type of benefit.
We soon realized that the main idea was also the main challenge because each benefit was unique in its own way. So, finding a way to standardize them was a challenge in itself. Another challenge was communication since these benefits needed to sometimes communicate with other benefits in the ecosystem.
The final product was a custom web app called Finance Service that now acts as a mediator between benefits and the end recipients of these benefits, and vice versa. Using event sourcing and domain-driven design practices we were able to standardize the main process but also modify it when necessary to cater to each benefit. So, benefits now act as a separate service with independent lifecycles. Given the project's success, the client also wanted us to handle processing outgoing payment requests.
For incoming payments, the incoming payment .cod files are processed and show up in the incoming payment screen. They can be further forwarded outside the system or linked to existing debts.
Outgoing payments are made when benefits send payment requests to the Finance Service app, after which admins can see a payment request in-app that they can approve (not approve) depending on predefined metrics. The app then sends the outgoing payment request to external providers – accounting applications and then banks.
Using the event sourcing methodology we are able to track the payment flow each step of the way. Not only that, but the users can see it too from the moment the request arrives in the Finance Service app to the status change and when it’s finally completed.
Concerning the communication challenge, we decided on the NServiceBus messaging solution making it a microservice architecture. The service had to be part of the main CoBen application, so our technology stack for the backend (.NET) and frontend (Angular) was already defined.
We also used the event sourcing development pattern which is highly efficient with financial applications.
Benefits for the client
The application proved so successful and easily extensible that instead of just processing incoming payments, our business users wanted it to cover outgoing payment requests too.
We managed to enable:
- maintainability – potential issues are easy to find, fix and prevent
- reliability – no data loss and a self-healing system that is resilient to errors
- audit trailing – all relevant events can be used later for building records that users can consult
- expansion – by introducing new types of events, and quickly adding logic without impacting the older code.