Insurer cut a three-week Spring Boot upgrade to under a day.
A mid-sized US insurance provider cut a Spring Boot upgrade from three weeks to part of a day using Moderne. Work that once took nearly its entire engineering team now takes one developer. The next quarter, its maintenance output rose 1,100 percent without slowing feature work.
- Insurance
- Industry
- Java, Spring Boot, Maven
- Primary stack
- 20M
- Lines of code
- 1,200
- Repos
The insurer delivered 30 percent more feature work in the same quarter.
In Q4 the team closed 384 maintenance tickets and delivered 40 more feature tickets than its previous average.
Maintenance and business delivery went up together, which is not what the team expected. When maintenance work surged, the concern was that it would come at the cost of business priorities. With migrations automated, developers stopped context-switching between the two, and both moved faster.
A single recipe run later applied changes across roughly 1,400 repositories in one day, migrating Maven credential blocks that would otherwise have been edited by hand in each one.
I just wanted to sing some praises about my experience with Moderne. During my team’s review of our quarterly metrics for the year, we noticed a productivity increase since we started using the Moderne Platform.
Recipes now carry the upgrade knowledge that senior engineers used to supply by hand.
Moderne finds where a change is needed, applies it across every affected repository and opens the pull requests from one place. Developers review the diffs, and the code follows the normal path to test and deploy, so maintenance stopped being a separate project and became part of ordinary delivery.
That knowledge is available to a coding agent too, so it can run the recipe through Moderne and follow a known-safe path instead of working one out on its own.
Moderne’s Lossless Semantic Tree, a type-attributed model of the code, resolves source code and transitive dependencies, so the team can see which repositories a change applies to before running it.
The insurer now handles an upgrade as one change across every repository it touches.
The estate runs to 1,200 repositories and 20 million lines of code. The insurer had treated maintenance as a series of isolated manual efforts, with each change entered as a separate ticket for each repository, so every upgrade grew with the number of repositories it touched, however simple the change.
When Spring4Shell required a Spring Boot upgrade, the insurer opened 32 tickets to cover it, one per affected repository. Each needed a senior engineer who knew that repository’s current Spring Boot version and the steps to reach a secure one. The work was triaged by risk and still took three weeks, consuming nearly all engineering capacity.
Routine upgrades are now filed as maintenance, and the technical debt label goes back to describing code that genuinely needs refactoring.
Related resources
See deterministic, estate-wide code change on your own repositories.