It seems that not every migration is welcomed by applause these days, reasons for which can usually be attributed to a definite lack of success. So, here's a checklist that will help you achieve success. Of course the list is condensed and a lot of detail is left out, as it's just a lot of work to do a proper, prepared and tested, migration - but this is a pretty good approach
- The intake: what do we have? Hardware, software, versions, interfaces, IP-addresses, hostnames, etc, etc, etc. When the intake's finished, it needs to be validated: check what you just checked! Ask yourself, your vendors, their suppliers, and so on
- The intake lists the AS-IS; now make an inventory of the TO-BE in terms of software, hardware, etc that fits your current / future IT landscape. What do we need? Extrapolate a bit for the future, compensate for faster hardware and software, etcetera
- When the new environment's layout is clear, it can be built / assigned in terms of infrastructure: the very basics needed in hardware, operating systems, firewall changes and storage, databases. Make some savepoint as you will need to go back to this point in time many, many times
- Now, make a plan - the most important part of the migration. You now have all the variables, the data, the volume, the timeframe: what do you need to do to make this all fit? What is the fixed part (that which you can do now), and what is the variable part (that which you need to do at cut-over)? How are you going to migrate, and who is going to do what?
- What are you going to do now? Easy: execute the intake in the Acceptance environment. Install the software needed according to the installation manual, and execute the tests needed to verify that it has been installed correctly. Do this for every piece of software you need.
Most importantly: if you encounter any errors or flaws, adjust the operational procedure. If need be, throw away everything and start from scratch - but you won't really like to do that with large systems
- Now, the most important part: add the full set of data that you now have; at this moment you have a fully operational new environment in perfect isolation. Once again, tech-test it: does everything work? Can you reach everything, log in everywhere, etc? Has the added data not lead to decreased performance? If you have verified all this, the infantry can move in: the functional acceptance testers
- Of course the acceptance testers will find a few flaws, and you need to adjust for this as well. In the end, you have a successful acceptance test which is the trigger for the final start.
- The tools for the go-live are now in your hands: the hardware / infrastructure set identified after the intake, maybe changed a bit, and the software needed, of which probably the installation manuals changed, plus the data, which you hopefully didn't have to touch, the timetables for this all, and finally the firewall settings, interfaces, connections, IP-addresses, host-names, and everything else needed to connect to the outside world.
If your journey so far was fairly rocky and filled with setbacks, you might want to throw away everything and install the Acceptance environment from scratch just to up your confidence
- Go-live: of course you have a detailed plan for this as well, identified the bottlenecks, the timeschedules, made an extensive list of contacts with primary, secondary and tertiary, standby lists, etcetera, and have double-checked this with everyone. Oh and of course a fallback scenario, right?
- Have a successful go-live! If you really are a perfectionist, after the successful go-live you'll throw away the acceptance / test environment and install it from scratch with the data that is now in production, maybe anonimised if need be
If you need to big-bang your way into production (and who doesn't these days?) then you might want to reiterate that until you are absolutely sure that you can manage it without any problems unless something really, really unexpected happens.
No one's watching you when you flunk around in Acceptance, but the eyes of the world are on you once you've announced a go-live date