How to migrate large web projects

Maybe you were wondering how to migrate web projects with a minimum of disruption? Just to clarify, we are not talking about moving a project from one hoster to another one but about changing the underlying software. For moving a small static website with around 6 individual pages to a CMS system such as WordPress or Joomla this should be straigth forward but how about large projects such as shops or forums?
It occurs quite often that a webmaster wants to change from one CMS to a different CMS. An example is switching from Joomla to WordPress for instance. The same underlying problem occurs for different shop software, forums or other web applications. A common reason for a change is improved functionality of the new software compared to the software in use. The problem is that the website content is changing regularly such as new comments are written by a user, new topics are created in a forum or new sales are tracked in a web shop. Therefore a manual transfer which is copying data by hand is often not practicable, in most cases it is simply impossible due to the huge amount of web pages and data that needs to be transferred. Therefore a different approach is needed. Ideally a script is deployed that automatically copies the data from the currently used project to the software to be used in the future. This script acts as an interface between the two different software packages which is illustrated in the following figure: The script is realised as a RESTful API. The old project is containing all the data that needs to be transferred to the new project. Initially the new project is empty, a blank installation. A function which I just call "transfer()" will initiate the data transfer and copy data from the old project to the new project. Via get-calls the new project obtains data from the old project, can manipulate the data to store it according to the new data format. To illustrate this I assume that we want to transfer a Joomla website to a WordPress project. Therefore I need to transfer all the Joomla articles. On the side of the new project, a get request is triggered within the transfer()-function. The old project returns a list with all articles via API from its database. The transfer-script will then manipulate the data to store it in the WordPress database. The same procedure holds for transfer of users in CMS or sales, products, etc. in web shops. For this procedure it doesn't really matter whether both projects are on the same server or deployed on different servers. Authentication is an important aspect of such a construct to make sure that data is kept secure. Whilst the procedure mentioned above is ideal to transfer data which is stored in collection-type structures additional elements need to be considered: The template of a project typically needs to be transfered by hand since structure and tags heavily depend on the software. We have developed APIs in the past to transfer web projects following the procedure above. We are happy to assist with such tasks, please get in contact for further information.