We planned a six-month migration. We finished in three years.

The pitch was perfect. Modern lakehouse. Unified analytics. Self-service BI. The vendor demo looked magical.

Month one: infrastructure setup. Month three: first pipelines running. Month six: the estimate expired. We weren’t halfway done.

What nobody counted: the 47 source systems-CRM, ERP, and a dozen custom line-of-business tools-all with undocumented schemas. The tribal knowledge living in spreadsheets. The “temporary” transformations running in production for five years. The stakeholders who discovered their requirements only after seeing the first dashboard.

Year two: parallel systems. Old and new running together. Double the maintenance. Double the confusion. The team that was supposed to innovate spent their days firefighting.

Year three: finally live. Budget 4x the original. Team turnover at 60%. And a backlog of data quality issues that would take another year to resolve.

The lesson wasn’t about technology. It was about discovery. Migrations don’t fail because the new system is hard. They fail because the old system was never understood.

If I did it again: start with a 3-month discovery phase and freeze new “temporary” pipelines. Budget 40% of migration time for understanding what already exists.

Every migration estimate is fiction. The question is whether you plan for that reality or pretend otherwise.

How many undocumented dependencies are hiding in your current system?