Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
  1. Install the Drupal Upgrade Status module on your Drupal 9 site.

  2. Review status /admin/reports/upgrade-status

  3. Update Drupal core to 9.5 (or the latest version of 9 at the time of upgrade)

  4. Permissions errors:

    1. Uninstall the module with broken permission

    2. Install it again

    3. Configure permissions (re-save permissions form)

    4. The error should be gone. More here

    5. If the website is using field_permissions module, access each field on every content type, and save the field again.

  5. Update your version of PHP to at least 8.1.6

  6. Make sure your site is running on it

  7. Run composer why-not php 8.1 to see if any packages need updates (only works if PHP 8.1 is a composer dependency in your composer.json). I recommend including it as a dev dependency and removing it after an upgrade.

  8. Replace deprecated color extensions with the contrib modules if they are in use on your current website specifically: quick edit, RDF, Classy, Stable

  9. If your theme uses Classy as a base theme, determine if you’d like to keep Classy as a contrib dependency or if you’d like to transition off Classy. Read this change record to figure out the steps or download and install the contrib module. Keep in mind that Stable is deprecated as well and it’s a Classy dependency.

    1. Steps to transition off Classy

      1. Copy these templates from classy to custom theme templates directory:
        themes/custom/THEMENAME/templates/block/block--system-menu-block.html.twig
        themes/custom/THEMENAME/templates/block/block.html.twig
        themes/custom/THEMENAME/templates/form/checkboxes.html.twig
        themes/custom/THEMENAME/templates/form/container.html.twig
        themes/custom/THEMENAME/templates/form/fieldset.html.twig
        themes/custom/THEMENAME/templates/form/form-element.html.twig
        themes/custom/THEMENAME/templates/form/form.html.twig
        themes/custom/THEMENAME/templates/form/radios.html.twig
        themes/custom/THEMENAME/templates/form/select.html.twig
        themes/custom/THEMENAME/templates/form/textarea.html.twig
        themes/custom/THEMENAME/templates/layout/region.html.twig
        themes/custom/THEMENAME/templates/navigation/links.html.twig
        themes/custom/THEMENAME/templates/navigation/menu-local-action.html.twig
        themes/custom/THEMENAME/templates/navigation/menu-local-task.html.twig
        themes/custom/THEMENAME/templates/navigation/menu-local-tasks.html.twig
        themes/custom/THEMENAME/templates/navigation/menu.html.twig

      2. Set base_theme value to false (for D9 requirement): base_theme:false or remove base_theme property if on Drupal 10.

      3. Visually QA theme to check if there are other elements or markup form Classy that your styles depended on.

  10. Remove uninstalled incompatible modules and themes

  11. Update contrib modules to their compatible latest versions and test the functionality

  12. Scan custom modules for deprecations and fix with Rector or manually

    1. Documentation to remove deprecated jQuery.once calls: https://www.drupal.org/node/3158256

    2. Documentation to remove deprecated jQuery.cookie calls: https://www.drupal.org/node/3104677

  13. If the site is on Pantheon, update pantheon.upstream.yml or pantheon.yml with the correct version of PHP

  14. Push your changes to the multidev, test the functionality and ask PM and client to test

  15. Merge changes with Dev branch, retest. Move them to test and test with client

  16. Schedule the deployment, make the backup, deploy to live

...