During migration, you're maintaining distributed state across two systems. Every write operation must be orchestrated to prevent data divergence. Applications need to handle mixed states gracefully - some data exists in the old system, some in the new, some in both.
But here's the killer: if something goes wrong mid-migration, rolling back becomes exponentially harder because you now have two potentially divergent data sources.