Migrating from Drupal 6 to Drupal 7

I have gone through 4.7.10 to 5, and 5 to 6, but 6 to 7 is the most challenging so far, largely because of formerly contributed modules now being in core (notably CCK/Fields and ImageCache/Image).

NOTE: when I say "write down," I mean it. Plan on using a lot of notes.

Preparation

  1. Plan ahead; some changes (fixes) are easier in the Drupal 6 site.
  2. Create a new D7 region for each migration. Remove (don't uninstall) all contributed modules from sites/all/modules before starting.
  3. Name your D7 theme the same as your D6 theme. Plan to re-theme pretty much from scratch, but your CSS may copy over (unless you're also going to HTML5).
  4. Back up your D6 site NOW. You may need this to regress any changes you make as beginning your migration.
  5. Get rid of any unused D6 modules and themes. This means uninstalling and deleting the module directories.
  6. Make a list of all modules that are enabled.
  7. Run Upgrade Status (not Update) and make sure all the modules exist in D7. If not, plan the migration to what ever you will use in D7.
  8. Make a list of all your ImageCache presets - they don't convert. (http://drupal.org/node/1316472<)
  9. If you will be using Webform, you need to be using something higher than 7.x-3.13 (even a -dev is higher). Otherwise it won't update properly.
  10. If you have fields created by CCK, check them for correctness. One in particular is an unlimited length textfield - it should be a textarea; this will bite you.
  11. As you do the previous, write down all ImageCache presets used ("manage display"); these probably won't convert.
  12. Disable all contributed modules - ALL.
  13. Back up the database. This is your upgrade base database.

Migrating

  1. Using a clean, fresh install of D7 without any contributed modules, update the database. You may have to increase your PHP maximum execution time because some of the updates run a long time.
  2. Enable the Image core module if it is not already. Check them all while you're at it. You may still want to install ImageCache Actions (now).
  3. Install CCK and enable "Content," "Content Migrate" and any optional pieces you will be using. Note that Node/User reference fields are handled by the References module; field groups are handled by the Field Group module, but you may want to switch them to Field Collection.
  4. Run update.php.
  5. Check admin/structure/migrate_fields. Some errors are far easier to correct in D6 and re-migrate.
  6. You may have to deal with image styles now - do so.
  7. Migrate the fields that are clean.
  8. Write down what needs to be done with the others.
  9. Migrate those fields and make them do what you want ("Manage Fields," "Manage Display").
  10. Now install your "every site" modules (Pathauto, ExtLinks, Token, etc).
  11. Run update.php.
  12. Install anything that needs to be done before Views. Run update.php.
  13. Install Views and any dependent modules (e.g. Views Slideshow).
  14. Run update.php.
  15. Review each and every View, checking field names, etc. (Run "analyze.") Check the preview for correctness. The Views Slideshow provider must be changed.
  16. Install anything remaining. Run update.php.