Forum4e is a members only forum run by Epilepsy Action, which allows people with epilepsy to discuss their condition and daily lives with those in a similar situation.
We were commissioned to migrate the current forum from Drupal 5 to Drupal 7, this included moving all the existing content and users to a new Drupal 7 install and upgrading the theme.
Due to the large amount of users and wide content base there were some key considerations before the start of the project:
- Speed of migration
- Dependencies between the content (Users to Forum Posts to Forum replies)
- Ensuring data structure was kept as accurate as possible.
The site was made up of the following:
- 21,000+ Nodes
- 115,000+ Comments
- 11,000+ Users
Each user has their own profile which contains information about their condition, this proved to be the most interesting piece of the migration as we had to ensure that the mapping of all the fields between version 5 and 7 were correct, this was made harder by the change in the way Drupal now stores it's data in 7. Because of the size of the users profiles this directly effected the speed at which the migration ran, we profiled this and came up with solutions to increase import speed my milliseconds which adds up when running against thousands of records.
The next step in the migration was to import all the forum containers and forum posts. Forum containers are taxonomy terms which can be migrated easily however because the forum has had it's structure changed over the years we ran into dependency issues where nested taxonomy terms weren't created correctly, this was quickly fixed and all forum containers were imported. From there we then began the migration of forum posts and any attachments. Post processing of all forum posts had to be done to change any hardcoded paths for images to their relative version.
Once the main body of the forum was completed we then set about the migration of the users comments, this was a simple task however the sheer number of comments meant that it was one of the longest migration jobs.
There are many technical challenges when migrating content from either an existing Drupal source or another CMS, using tools provided by the community (Migrate, Migrate Extras, Migrate D2D) and we can identify any issues and come up with the required solutions to migrate any content.
We chose to use the Migrate suite of modules over a generic 5->6->7 upgrade because of it's repeatability. Migrate allows us to import a small amount of content for testing, this gives us the chance to check the content before committing to a full import. Ultimately this saves us time by not having to run full upgrades.
To ensure that downtime was kept to a minimum during the move we kept incrementally running the migration in the background. By pointing the migration source database to the live site we were able to continuously feed in new data as and when it was created by existing users. Because of Migrates dependency chain all new users have to be imported before any new content can be migrated, this stops content being orphaned. Overall downtime was kept to a minimum and existing users could carry on using the site straight away.