Automating SQL Migrations with Excel-Driven Engines in Spring Boot
The Problem
When a billing platform deprecates objects across hundreds of queries, manual migration is a nightmare. On the Zuora Order Upgrade project, I needed to migrate deprecated object references to new API equivalents — automatically.
The Solution: Excel as a Migration Config
Instead of hardcoding mappings, I used an Excel file as the config layer. Non-technical stakeholders could update the mapping sheet, and the engine would re-generate all SQL.
How It Works
Excel Sheet (mapping config)
↓
Apache POI (parse mappings)
↓
Migration Engine (Java 21, Spring Boot WebFlux)
↓
Auto-generated SQL with JOINs + aliases
↓
Validated against Zuora tenant
Key Engineering Decisions
Multi-target Table Mapping
A single deprecated object could map to multiple new tables. The engine resolves this by generating the appropriate JOIN chains automatically.
Automatic JOIN Generation
// Pseudocode: auto JOIN resolution
if (mappingHasMultipleTargets(field)) {
query.addJoin(resolveJoinPath(sourceTable, targetTables));
}
Alias Handling & Foreign Key Protection
The engine detects aliases in existing queries and preserves them. Foreign key constraints are checked before any transformation is applied.
Results
- Migrated hundreds of deprecated Zuora queries automatically
- Reduced manual migration effort by 70%+
- Caught and fixed critical bugs: pagination failures, notification duplication
Tech Stack
Java 21 · Spring Boot WebFlux · Apache POI · Next.js · PostgreSQL · Docker
Takeaway
Excel-driven config engines are underrated for enterprise automation. They give non-developers control without exposing code — and they scale surprisingly well when backed by a robust Java engine.