If you are responsible for the success of data migration, you will want to build a detailed plan that will walk you through all of the three phases of data migration: pre-data migration preparation, the data migration itself, and post-data migration cleanup. I like my data migration plan to contain detailed steps that ensure that I don’t forget anything. Each step lists a specific named responsible person along with their area of responsibility and contact information. Unless I am responsible for executing the task myself, I prefer the named person to be a client employee (i.e. the business owner of the process) rather than a project consultant. This is where the responsibility should be, and it requires that the business process owners actually participate in the activity rather than sit on the sidelines and watch.
Before you embark on your project’s first data migration test cycle, your data migration plan will probably start out as a simple list of preparation steps, data load dependencies, and cleanup steps. As you progress through your several data migration test cycles, your plan should evolve into a rather complex list containing load methods, responsible persons, historical data volumes, historical execution times, steps that need to be modified and additional steps that need to be added.
I always find it rather interesting to compare the very first plan to the plan that is actually used in the cutover process. Many project factors will cause you to amend your data migration plan. Newly-discovered gaps, changes in the business requirements, the decision to load all of the legacy customers instead of only those customers which have been active for the past two years, and toggling back and forth between “should this one be a manual or an automated load” are only a few. Always keep in mind that the goal in amending the plan is to keep it compatible with the changing requirements of the project.
The Data Migration Preparation Phase
Before you actually start the data migration main course, you will probably want to execute a series of preparation steps. Some of these preparation steps may have a significant lead time; while others may require a system reboot to take effect. Make sure that you carefully plan accordingly. Here are some data migration preparation steps that I have found useful:
- Obtain a Data Migration Login
Obtain a special data migration login, with all of the authorizations needed to execute all of the required tasks. This login is only to be used during the data migration process, and is to be deleted upon the completion of the data migration process. Using the data migration login makes identification of migrated data very easy both now and several years down the road. It also facilitates implementing a general user lockout while the data migration user is performing data migration activities.
- Technical client preparation
The BASIS team may want to configure the data migration target client to have less dialog processes and more background and update processes. This configuration can significantly improve data migration performance, especially if you have the opportunity to parallel process IDOCs. In a Virtual Machine environment, the infrastructure team can even provision additional processors and memory. You may also need additional disk space to handle large upload files, and any intermediate files that a load program might need to create.
- Configuration for IDOC processing
If a data migration process involves creating and processing IDOCs, you may need to configure the ports, partner profiles, message types, and processing modules. My preference for IDOC triggering is by using the ABAP program RBDAPP01 rather than immediate triggering. This allows me to exercise the most scheduling control over the background processing options.
- Change Pointers
During a data migration turn off change pointers. Creating what could potentially be hundreds of thousands of change pointer records that are never going to be processed is an overhead burden on system performance and disk space that you do not need. If the migrated data needs to be sent to external systems, manually send the data after the data migration is complete.
- Set the Correct Open Posting Period
Some of the transactional data will want to post into an open financial or manufacturing posting period. You will want someone from the business to make sure that the correct posting periods are open for business.
- Configuration Settings
Sometimes, special temporary functional configuration settings are made to facilitate the data migration process. Several functional analysts may be responsible identifying and setting these prior to the start of data migration. As these are temporary configuration settings, it is expected that they will be set to their production values after the data migration is complete.
- Basic Setup Data
Some data migration objects are dependent on reference data – a template from which new data migration objects can obtain some of their default values. You will want to make sure that those who are responsible for setting up this reference data have completed their task before you start the actual data migration. Sometimes this data is moved from the Golden Client into the target client via ALE, so you may need to set up RFC destinations, ports, distribution models, etc.
- General user lockout
All users except for the data migration user should be locked out of the data migration client during the actual data migration activity. It is impossible to verify that we moved exactly $15,386,254.23 in inventory from the source system to the target system if users are performing material movements in either system during the conversion.
- Connections to External Systems
Depending on what connections to external systems are doing, you may want to make sure that they are disconnected prior to the start of data migration. This will ensure that inbound interfaces, which may either modify existing migrated data or add new data, are disabled.
The Data Migration Phase
When all of the preparation steps are complete, it is time to start the actual data migration. Data must be loaded into the target system in a certain sequence that is dictated by their data dependencies. Customers must exist before sales orders can be migrated, vendors must exist before purchase orders, materials must exist before either sales orders or purchase orders, etc. This dependency exercise varies a bit from project to project, and should have already been determined well before you start loading the data.
Automated data migration tasks for a single object (e.g. customer master data) usually include some or all of the following:
- Creation of an upload file from the source system
- Technical validation of the upload file
- Functional validation of the upload file
- Execution of a technical object to load the data into the target system
- Technical validation of the migrated data
- Functional validation of the migrated data
- Collection and reporting of load statistics
- Analyzing the fallout
- Correcting the fallout
- Reprocessing the fallout
At a higher level, the data migration plan will string together an end to end list of all of data migration objects. I strongly suggest that you study the list and judiciously intersperse several checkpoints at appropriate places in the plan. A checkpoint is an activity where all interested parties meet to review status and metrics, and to determine whether or not to proceed forward. Keep in mind that what fails to load early in the plan will geometrically cascade into larger fallout later in the plan. That single vendor which failed to load may cause several hundred open purchase orders to also fail. And while the business owner of the vendor master data may think the fallout of a single vendor to be quite insignificant, the business owner of open purchase orders may have an entirely different perspective. It is important here to make sure that all of the right stakeholders are participating, and that all are in agreement about whether or not to proceed.
Backup or Restore Points
Another activity that you should judiciously sprinkle into the plan is several backup or restore points. It is very painful to have successfully navigated seventy-five percent of the data migration plan, only to have the next load create a huge and unrecoverable mess in the target system. Without a backup or restore point available, you may have to wipe the slate clean and restart the entire data migration process again.
Depending on the target system and the facilities available, the backup or restore point could be a full system backup, a client copy, or a virtual machine snapshot. Whatever the means, make sure it is a part of your plan. It’s really great if you don’t need it. It’s also really great to have if you do need it!
The Data Migration Cleanup Phase
When the data migration loads are finally complete, it’s time to exercise a series of cleanup steps. This is where we:
- Undo the special temporary settings and configurations that were done prior to the start of the data migration activity.
- Adjust the technical configuration of the system to a more user-oriented system with the right amount of dialog, background, and update processes.
- Turn change pointers back on.
- Allow the general user population to access the system.
- Connect the system to its inbound and outbound communication partners.
- Disable the data migration user.
- Archive those massive upload files.
- Delete any intermediate processing data files.
- Clean up the IDOC tables if needed. But first make sure that you do not need to keep the IDOCs for legal reasons.
An Example Data Migration Plan
Click on the link below to access an example data migration plan. This plan is not a complete data migration plan, but is intended to demonstrate format and content.
Sample Data Migration Plan
In part 3 of this series on Data Migration, I will be discussing how to deal with fallout from automated data loads.