ALM Migrator consists of three main pillars that provide
- a binding of the AbstractALM framework,
- an extensible migration process,
- most parts of the GUI.
As described before, ALM Migrator uses the AbstractALM framework to connect to each individual repository. ALM Migrator follows the ETL (Songini, 2004) approach: the data is extracted from the source repository, transformed, and then loaded to the destination repository.
ALM Migration Process
The GUI displays both, the selection of the source and target repositories, and the migration process.
During the migration, the migration tool first iterates through the audit log provided by the legacy repository:
Implemented Migration Process
Each entry in the log file is then extracted and stored in a package. Most SCM solutions used during the diploma thesis require the storage of the package on the local hard disk drive. Therefore the package is extracted to the local disk after all artifacts have been collected. The last step in the migration process is to check the files into the target SCM system.
Alternatively, the ALM Migrator and its underlying AbstractALM layer support to skip the extraction to the local hard disk as the next figure shows:
Optimized Migration Process
In this case, the package is not extracted to the local hard disk but directly checked into the target SCM repository. To support this alternative, the vendor SDK of both the source and the target repository need to support handling of file streams instead of file or directory names for the check out and check in operations.
While the previously described operations are executed for each revision on the source repository, the migration tool sequentially migrates each revision by extracting its changes into packages and checking these packages into the target SCM repository, as the next figure shows:
Overall Migration Process
ALM Migrator supports Resume Points by allowing the user to set the start revision of the migration. This is done during connecting to the source repository, using the AbstractALM connection string. For example, the following string would connect to the Subversion repository of ALM Migrator located on SourceForge:
By adding the revision number behind this string, this revision number becomes the start of the migration: