Case study · Plate 01

Banking ERP, modernized

A legacy expense-management system built on JSP was rebuilt from the inside out — without asking the teams already depending on it every day to stop and wait.

The situation

The system handled real money movement for a banking organization: expense submissions, approvals, and reporting, all running on an aging JSP application where business logic, database queries, and page rendering were tangled together in the same files. Every change carried risk, and the people who understood the oldest parts of the codebase were the only ones who could safely touch it.

Replacing it outright wasn't an option — the teams using it had no tolerance for downtime, and a rewrite-and-cut-over approach would have meant weeks of parallel systems, data reconciliation, and retraining.

The approach

The rebuild went in from the inside out. Business logic buried in the JSP layer was extracted into proper service classes and exposed through versioned REST APIs built on Spring Boot — giving the application a clean boundary between what it does and how it's displayed for the first time.

With that boundary in place, the front end could be rebuilt separately in React, screen by screen, and shipped incrementally behind the same URLs and permissions the teams already knew. No big-bang cutover, no retraining event — just a system that got clearer one module at a time.

The outcome

The business logic that used to live inside view templates now lives in tested, versioned services that can be reused, audited, and changed with confidence. The interface is faster and easier to extend, and the teams who use it daily never had to stop using it while the rebuild happened underneath them.

Have a similar system to untangle?

If there's a legacy system your team is afraid to touch, that's exactly the kind of problem CodeLucid takes on.

Book a call