Upgrade Drupal 6 to Drupal 7 Notes


Where's Drupal 8 at in terms of release?

Since the last Drupal Core Updates, we fixed 18 critical issues and 12 major issues, and opened 9 criticals and 18 majors. That puts us overall at 110 release-blocking critical issues and 705 major issues.

drupal 8.0.0-beta3 released on 12-Nov-14

Module: Upgrade Status
Project Page: https://www.drupal.org/project/upgrade_status
Once you install and configure this module, and set permissions, you can see the Upgrade Status Report at

You're gonna need a new site

Whether you upgrade or start with a fresh site, you will need a separate site to work on. If upgrade, clone your production site and work on that. If starting fresh, install a fresh D7 site.


Official Upgrade Instructions (if using the Upgrade utility):
/UPGRADE.txt in your site root

Drush Site Upgrade Script


  • Set up a fresh Drupal 7 site.
  • Install your favorite modules and do all of your usual setup (libraries, account settings, text formats, etc.)
  • Review the content types on your D6 site and decide if they will be the same on the new site. In some cases you will merge, split, or eliminate content types.
  • Set up all of your new content types. Are the fields exactly the same or is there some modification? (such as moving a field from taxonomy to real field, or vice versa).
  • Now you're ready to migrate your existing content.

1. The Migrate Module
Project Page: https://www.drupal.org/project/migrate
Documentation: https://www.drupal.org/node/415260

The Migrate module consists of:

  • An API for defining and managing migration processes.
  • A set of drush commands for running migration processes and obtaining status.
  • The migrate_ui module, which provides visual status and details on defined migrations.
  • The migrate_example* modules, which demonstrate many techniques used in defining migrations.

2. An alternative to the Migrate module is to use Feeds Importers to import content from the old site.

Set up an XML feed for each content type on the old site. You will need:

UUID  https://www.drupal.org/project/uuid
Views Data Export  https://www.drupal.org/project/views_data_export

Set up a Feeds Importer for each content type on the new site. You will need:

Feeds  https://www.drupal.org/project/feeds
Feeds XPath Parser  https://www.drupal.org/project/feeds_xpathparser
Job Scheduler (required by Feeds)  https://www.drupal.org/project/job_scheduler

You might need:

Feeds Tamper  https://www.drupal.org/project/feeds_tamper
Feeds Imagegrabber  https://www.drupal.org/project/feeds_imagegrabber
FileField Sources  https://www.drupal.org/project/filefield_sources

Also very useful for massaging nodes after import:

Views Bulk Operations   https://www.drupal.org/project/views_bulk_operations

Things to consider:

  • switching fields from taxonomy to real fields, and vice versa
  • if you have a multivalue field, you'll need to use Feeds Tamper to explode it at the receiving end
  • date fields can get messed up, if so try String to Unix Timestamp tamper
  • Filefield Sources can speed up migrating images if you are doing this manually
  • for large numbers of files, you can try zipping up the entire Files folder and dumping it into your new site
  • for the feeds importers, be sure to check your xml feed first to make sure it is clean and formatted correctly
  • for the feeds importers, try importing just a few nodes first (change the number of items in your outgoing feed from Unlimited to like 3)
  • EntityReference fields you'll probably have to do these manually. VBO can help.
  • Book Pages: you can import book pages, but then you'll have to manually set up the Top Level Page (or Book) on the receiving site and then manually add the pages to the books.


  • If your content type contains only Title and Body, and images are embedded in the Body, you can set up an rss feed, instead of an xml feed, and then Imagegrabber will get them.
  • However, if your content type has additional fields that you want to keep distinct, you'll have to do an xml feed to parse the fields, and then for images embedded in the body, get them manually.
  • Image fields themselves, should work if mapped correctly and Imagegrabber turned on.