Prepare the Drupal site for an upgrade to Backdrop CMS

  1. Update Drupal core:
    Make sure Drupal 7 core is updated to the most recent version. Visit Admin > Reports > Available Updates (admin/reports/updates) to see if there are newer versions available.
  2. Update all modules and themes:
    Make sure all modules and themes are updated to their most recent version.
  3. Make a backup of everything:
    Backup the database, backup the files directory, and backup the codebase.
  4. Disable and uninstall removed core modules:
    Some core modules have been removed from Backdrop CMS.
    • See the documentation on what to do if you are using a feature that has been removed from core.
      • Note: uninstalling modules (Blog, Forum, Poll) may result in loss of content (or, more accurately, content that doesn't know what type it is). Please either delete content of these types before you uninstall the modules (if you no longer need it), or convert the content to a custom type before upgrading.
      • PHP filter: Please clean up your PHP content before uninstalling this module. Once the PHP filter is removed, any content using it will fall-back to the plain text filter, printing your PHP code as though it were plain text. This could potentially expose private information to the general public, and may present a security risk.
  5. Disable (some) contrib modules:
    Any modules identified as to To Uninstall, To Port, or To Replace during the Planning phase should be disabled.
  6. Uninstall (some) contrib modules:
    All modules identified as To Uninstall during the Planning phase should be uninstalled. 
    • It may also be safe to uninstall some modules identified as "To Replace", as long as that data is not needed for the replacements.
    • Disabling (but not uninstalling) modules will leave the data from those modules in the database.
      • Some modules will have an update that uses data provided by the disabled module. Do not uninstall those modules even though they are identified as To Replace. (For example, "Reference" uses data from Entity Reference and References modules.)
      • This data can also be useful as you are developing the ported module.
  7. Install any Drupal 7 modules needed for special handling. See Modules that have Backdrop replacements for some examples where this may be needed.
  8. Save the Views (and other exported configuration) back into the database.
    • If you had custom views that were stored in code (either as Features, or simply exported views) you can manually edit and save each view to put its data back into the database. The Backdrop upgrade will convert these views to config -- but only if they are in the database.
    • If you are using drush, this command will save all Views into the db:
      drush ev 'foreach (views_get_all_views() as $view) {$view->save();}'
    • Note: If you were using the Features module in Drupal 7, you can try using the Unfeaturize module, to get your content types and fields back into the database.
  9. Switch back to core themes:
    If you do not have a Backdrop version of your themes (and matching layout templates) ready, we recommend) 
    • Enable the core Bartik theme, and set it to default.
    • Change your administration theme to Seven.
    • Note: Switching themes before the upgrade will not preserve block placements from Drupal 7. To preserve block placements, we recommend building  a Backdrop theme with layout templates (with matching region names) after the first upgrade, then repeating the entire upgrade process.
  10. Switch back to the standard install profile:
    If you are running an install profile other than the core 'standard' profile, make sure you have a Backdrop version of that profile, or switch to the standard profile in Drupal 7. (Two examples of other profiles are the 'pantheon' profile or the 'acquia_drupal` profile. These are common if your site was hosted on either of those platforms.) Use the profile switcher module if necessary.
  11. Put your site into maintenance mode.
  12. Make a second backup of everything
    Backup the database, backup the files directory, and backup the codebase again.
    This is the backup you will use for the Backdrop update, we recommend calling it backdrop-ready.sql