1. A method of implementing a data migration project for migrating a plurality of applications from a source data storage system to a destination data storage system, the method comprising: receiving, at a controller, a set of data migration rules, the data migration rules comprising: a bundling rule indicating that a first subset of applications of the plurality of applications are to be grouped in a single bundle unit; a move together rule indicating that at least two applications are to be migrated in a single migration wave; and a sequencing rule indicating that a first application is to be migrated prior to beginning migration of a second application; receiving, at the controller, a set of scheduling considerations; receiving, at the controller, a precedence flag for at least one individual data migration rule or scheduling consideration, the precedence flag indicating that the at least one individual data migration rule or scheduling consideration must be implemented in a migration schedule over another data migration rule or scheduling consideration; comparing, by the controller, the set of data migration rules against the set of scheduling considerations; determining, by the controller, that a conflict exists between the data migration rules and the scheduling considerations; selecting, by the controller, at least a first data migration rule corresponding to the precedence flag to implement over a scheduling consideration based on the determination that the conflict exists; grouping, by the controller, applications on the source data storage system in to a bundle unit according to the bundling rule and at least the first data migration rule while ignoring the scheduling consideration; and generating, by the controller, a migration schedule for migrating the bundle unit according to the move together rule, the sequencing rule, and at least the first data migration rule while ignoring the scheduling consideration.