Drupal to WordPress migration FAQ

View the Drupal to WordPress migration Technical FAQ.

How much will a migration cost?

Since Drupal configurations can vary greatly, I’d first need to run a database diagnostic on your Drupal installation before giving a quotation. The database diagnostic is to analyse the scope of the project and to check if there might be any issues with the migration. (Sometimes, previously installed buggy modules cause problems.) I offer the database diagnostic free of charge.

After the diagnostic, I then run an export and if you’re happy with the result, you only pay a fixed fee as my minimum charge.

However, it’s usually the case that site owners require additional refinements on the standard export. The additional fees are based on the amount of extra fine-tuning required. Please see my pricing information for an idea of your expected budget.

What does your minimum charge cover?

The minimum charge is essentially an amount that covers my overhead regardless of what we find during your migration, whilst still providing something of value to you, the site owner.

The deliverable for this would be:

  • A basic installation of WordPress on my test server so you can inspect the migrated content.
  • A MySQL dump file that you can import into your database.

How long will a migration take?

Time-wise, a full migration can take anywhere from a couple of weeks to several months, depending on the scope of the work. There’s no real way to know how long your project will take with any certainty when you first get in touch. Some sites end up being very simple and are done in a couple of hours. Some have taken 50+ hours because of expanding scope and unexpected problems. (Misbehaving Drupal modules can play unseen havoc with the database.)

In a typical Drupal to WordPress migration project, most of the time is in discussing the migration requirements and reviewing the results. The migration itself is automated and normally only takes a few minutes to run.

Which Drupal versions can you migrate?

I can migrate any Drupal version.

What information do you need to get started?

To get started on a Drupal to WordPress migration I would need:

  1. A MySQL dump file or access to your database e.g. through phpMyAdmin.
  2. how you want to divide up the content types into pages and posts.
  3. how you want to divide up the terms into categories and tags.

I will need more detailed information about your Drupal installation after we get started. You may use this Drupal to WordPress migration worksheet will help you with putting together the necessary details.

I will send you a link to my migration worksheet form if you’d like me to quote for your migration project.

Can I migrate only my content?

Yes. There are two options when migrating your site:-

1. Content only

This is for when you already have a web developer to build your WordPress site and you only want to export the Drupal content. To do this, all I’d need is your Drupal database dump file or access to your database.

2. Full migration

Aside from the content, a full migration would also include setting up WordPress, replicating functionality and either replicating the design as a WordPress theme or doing a re-design. This is essentially building a new site from scratch so in order to quote for this, I’d need either a specification document or access to your Drupal site in order to create one.

Can you cite some case studies for previous migrations?

Case study 1: Local news site

A site with over 45,000 Drupal nodes. Despite having a large amount of content, the migration was relatively straightforward because the client had a basic Drupal setup consisting of pages, stories and a few simple custom content types. They did not need any special functionality replicated.

Timescales: Migration completed within two weeks of starting the project.

Main challenges presented:

  1. Errors during import due to incorrect character encoding when the client made the database dump. This was easily fixed by showing the client how to correctly dump the database.
  2. Target WordPress environment kept running out of memory after export. This was solved by adjusting the client’s server configuration.
  3. The client did not know how to operate their hosting control panel so this project also required unexpected sys-admin work.

Case study 2: Special interest site with global readership

A site with around 20,000 nodes, 4,000 terms and 10,000 user profiles.

Timescales: approximately 7 weeks from first enquiry email.

Main challenges presented:

  1. There were many duplicate terms that needed to be handled and cleaned using custom queries. (Duplicate terms cannot be migrated into WordPress.)
  2. An old Drupal module caused hard-to-find corruption that was causing the migration queries to fail. This was tracked down to a few entries that were incorrectly had a creation year of 1970.
  3. I needed to write many custom queries to handle very specific migration requirements. (e.g. removing unwanted posts, removing spam comments and authors, resolving duplicate content.)

Can I preserve my search engine optimisation (SEO)?

Search engine optimisation is a complex topic. The short answer is yes, I will be able to preserve your SEO. In practical terms, how much is preserved depends on your budget. If SEO is a primary concern, please let me know and we can discussion your options in detail. For more information about preserving SEO during a Drupal to WordPress migration, please see this guide.

What are my payment options?

  • UK-based clients may pay by bank transfer to my UK bank account. All prices are exclusive of VAT unless otherwise specified.
  • International clients may pay by Bitcoin, PayPal or credit card. Other payment methods may incur additional transaction charges.

Can you answer some technical questions?

Please see the Drupal to WordPress migration Technical FAQ. If you don’t find your question there, feel free to drop me a note.

Technical questions

  1. How can we send you the database dump file?
  2. Do you need my entire Drupal database?
  3. Can you run a migration while we’re developing the WordPress site?
  4. Which WordPress tables will you write to?

Technical questions

How can we send you the database dump file?

The best way would be either:

  • as a downloadable file on an FTP or SFTP server;
  • via a private link to the file using a file sharing service like DropBox.
  • through a file-sending service like DropSend.

Do not place the file in a publicly accessible location on your web server.

The dump file should be a compressed .sql file in UTF-8 character set.

Do you need my entire Drupal database?

Having access to your entire Drupal installation database is useful for troubleshooting and analysis but not necessary for most content-only migrations. At a minimum, I’ll need the following Drupal tables:

  • comments
  • node
  • node_revisions
  • node_type
  • system
  • term_data
  • term_hierarchy
  • term_node
  • url_alias
  • users_roles
  • users
  • variable
  • vocabulary
  • vocabulary_node_types
  • Any table pre-fixed with ‘content_’
  • Any table pre-fixed with ‘field_’

Can you run a migration while we’re developing the WordPress site?

An empty WordPress installation would make migration easier but theme and plugin development can often be done concurrently with content migration. The migration should be simple if whatever you’re doing can be deactivated via the WordPress Dashboard and then re-activated at the end of the project.

Things get more complicated if your development involves significant configuration, adding content or users. Because of the way WordPress stores configuration information in the database, we’ll almost certainly overwrite settings and possibly corrupt the site. Migrating content into WordPress installation with pre-existing content requires extra steps. It’s possible but involves more work.

Which WordPress tables will you write to?

A typical Drupal to WordPress migration involves writing to the following WordPress tables:

  • wp_comments
  • wp_posts
  • wp_postmeta
  • wp_terms
  • wp_term_relationships
  • wp_term_taxonomy
  • wp_usermeta
  • wp_users