Sept 2025 – Dec 2025
Software Engineer Intern
IFS Copperleaf
Wrote the tooling to decommission a client's 10-year-old enterprise ERP and migrate 500,000+ infrastructure records to cloud storage for handoff.
The project
Copperleaf builds enterprise software for capital investment planning. My first months on the team were spent on a client migration project: a company was retiring an internal application that had been running for a decade, and all of its data needed to be extracted, cleaned, and transferred before the system was shut down.
What made it tricky
The application was poorly documented and had gone through ten years of schema changes without any consistent migration strategy. Records from different eras used different field conventions, some fields had been repurposed over time, and there was no single schema that described the whole dataset cleanly. Before anything could move, the data had to be normalized into a consistent shape.
I wrote SQL scripts to audit the differences across eras and merge the old and new formats into a single clean output. Around 326,000 records needed this kind of reconciliation. The goal was 100% data integrity in the output – no records dropped, no fields silently mangled.
The extraction tool
For the actual migration I built a Python CLI. It connected to the Oracle source database, pulled records in configurable batches, ran them through the normalization pipeline, validated the output against expected schema, and uploaded the cleaned data to AWS S3 for client handoff.
By the end of the project, 500,000+ infrastructure records had been migrated out of the old system. The source application could then be decommissioned.