Global bank saved 30 developer-years of Java upgrade work across 50,000 repositories.
A leading global bank estimates it saved 30 developer-years on both Java and Spring upgrades, and 10 more on OWASP Top 10 remediation by running Moderne across 50,000 repositories. The bank now also uses coding agents to plan and coordinate changes, with recipes making the edits.
- Finance
- Industry
- 10,000+
- Developers
- 50,000
- Repos
Upgrades at the bank now take a fraction of the time.
One team cut a 64-hour upgrade effort to eight hours, and teams across the bank saw results within weeks.
A monorepo of more than 40 microservices, maintained by more than 70 developers, completed a full Java 21 and Spring Boot 3 upgrade in a run that scanned more than 13,000 files and updated more than 300 of them automatically. Custom recipes also handled infrastructure work, including a move from Docker to Podman across several teams.
You want to take the capacity you’re wasting, and move it back to do things for your business, your product, or your customer.
The bank’s developers write the recipes and run them on their code.
The bank built an internal recipe marketplace on Moderne. It started with a handful of seeded recipes, reached more than 40 reusable upgrade patterns, and has since grown into the hundreds as workshops and internal champions widened who could write a recipe.
The bank mapped thousands of repositories into Moderne with prebuilt Lossless Semantic Trees, so engineers could see the state of their code straight away. Each tree is a full-fidelity model of the code that carries type information and formatting.
Teams raise and merge their own pull requests. They refine a change locally from the command line and use the platform for runs across many repositories. Dependency-freshness scores gate automatic approvals in CI/CD, and impact dashboards track how much capacity each change recovers.
Recipes took over technical debt work the bank’s existing tools could not keep up with.
The bank has more than 10,000 developers, and tens of thousands of its repositories ran older JDKs, outdated Spring versions and custom internal frameworks. The risk surface grew with every release as security fixes arrived faster than teams could close them. Strategic upgrades stalled behind years of drift and migration work crowded out new development.
Version bumpers and one-off fixes didn’t work at the scale of the estate or produce pull requests developers were willing to merge.
The bank is now planning a governance model that requires an automation plan for every technical debt initiative before it starts.
It’s very easy to produce software, it’s very hard to shut it off. At large organizations, the surface area just keeps growing, and the people who pay the bills aren’t always aware of the trade-offs. We’re busy dealing with tech debt and can’t do anything new for anyone.
At the bank, coding agents plan changes across the estate and recipes make the edits.
The bank’s developers found coding agents useful inside the IDE. Across many repositories, the same tools proved too costly and too inconsistent to run a full migration on, so estate-wide changes stayed with the recipes. The bank has the agents handle planning and coordination while recipes take care of the edits. In one rollout, an agent coordinated a Java build cache change across hundreds of repositories over only a weekend, using the recipe to make the same edit in every one of them.
Review became the new bottleneck. A coding agent can turn one prompt into a thousand-file pull request, far more than any reviewer can read line by line. The bank now routes changes by risk. Low-risk changes move through systematic approval, and higher-risk changes get the deeper review that used to apply to everything.
You need something scalable, deterministic, and explainable. That’s the only way to make progress across an estate this large.
Related resources
See deterministic, estate-wide code change on your own repositories.