Application migration is the process of moving an application program from one environment to another. Examples include migration from an on-premises enterprise server to a cloud provider’s environment or from one cloud environment to another. Migrating an application can be complicated because there are bound to be differences between the original and target environments. Furthermore, applications even cloud applications are not typically designed to be portable. Applications created on various cloud development platforms, such as Windows Azure, Google App Engine and Force.com, are usually designed to run on the platforms they were developed on. Other elements such as operating systems, management tools, the networking architecture, the storage system and the virtual machine (VM) configuration can all differ from those in the environment where the application was developed or deployed.