A migration solution must have the following characteristics:
Robust and resilient
Manage all aspects of the data extraction, transformation, cleansing, validation and loading into the target — and manage high volumes of data, errors in source and target connections, and disk space and memory problems.
Rapid
Execute efficiently and take advantage of existing source or target facilities to enable rapid processing.
Reporting
Provide progress indicators during migration and reconcile the completed process.
Recoverable
Recover from the point of failure when necessary.
Reusable
Ability to reuse components of the migration in other projects, including transformation functions, error handling and data cleansing routines.
A great list of the critical development and run-time aspects of data migration.
To this I’d add an item for design-time: “Quickly assess and model the data contents and relationships, within and between systems.”