# Core banking for microfinance institutions

> Building and extending OpenCBS, an Apache Fineract-based core banking platform for microfinance institutions and banks in the UEMOA region.

- **Kind:** case-study
- **Context:** BFT Group · Backend Developer
- **Year:** 2024
- **Tech:** Java, Spring Boot, Apache Fineract, OpenERP, Microservices
- **URL:** https://wilfriedago.me/works/opencbs-core-banking

**Flow:** Teller → Cash operation → Domain model → SYSCOHADA ledger

every movement at the till has to end as a compliant accounting entry

OpenCBS is a core banking platform built on Apache Fineract, run by microfinance
institutions and banks. I contribute to its development and evolution: the
modules that move money, and the accounting the regulator reads afterwards.

## The domain before the code

Cash operations, teller management, cash flows, customer transactions — each of
these arrives as a business requirement written in the language of the branch,
not of the system. The work that matters happens before any code: analysing what
the institution actually does, then translating it into domain models that hold
up under the rules of the business, following DDD principles rather than
flattening everything into tables.

## Tills, denominations and the ledger

I develop the modules for cashier and teller management, and for tracking
currency denominations — how much of which note is in which till, and what
changed hands. Downstream of that sits financial accounting compliant with
**SYSCOHADA**, the standard that applies across the UEMOA region. Compliance is
not a reporting layer bolted on at the end; it constrains what the domain model
is allowed to represent in the first place.

## Interoperability with OpenERP

The platform does not live alone. I customise and integrate **OpenERP** so it
interoperates with the core banking system, particularly for accounting,
internal management and financial reporting — which means agreeing on what a
transaction _is_ in two systems that were designed independently.

## Keeping it maintainable

Beyond features, I take part in code reviews, continuous improvement of the
codebase, and the structuring of services. The platform is deployed per client
as a set of microservices, so modularity is not an aesthetic preference: it
decides how much of the system has to be understood before anything can safely
change.
