Skip to main content
GrN.dk

Main navigation

  • Articles
  • Contact
  • Your Digital Project Manager
  • About Greg Nowak
  • Services
  • Portfolio
  • Container
    • Excel Freelancer
    • Kubuntu - tips and tricks
    • Linux Apache MySQL and PHP
    • News
    • Image Gallery
User account menu
  • Log in

Breadcrumb

  1. Home

Drupal 9: Practical Upgrade Guidance for Legacy Sites

As of June 11, 2026, Drupal 9 has been out of support since November 1, 2023. That does not automatically mean you rebuild tomorrow. It does mean you should stop treating the site as ordinary maintenance. For business owners, operations leads, and agency teams, the practical question is simpler: what is the lowest-risk path to a supportable stack without breaking editor workflows, integrations, or delivery dates?

Most inherited Drupal 9 sites do not fail because the core upgrade steps are hard to find. They fail because nobody audited the real dependencies first: custom modules, patched contrib code, scaffold changes, CI assumptions, or hosting limits that were never revisited. Start there. Then decide whether you are stabilising for a controlled upgrade to Drupal 10 or whether the economics now point to replacement.

Start with an audit, not a hopeful estimate

Before you promise dates or budgets, confirm the exact Drupal core version, PHP version, Composer usage, installed modules, custom code, and deployment path. Drupal's official upgrade guidance still expects Drupal 9.4.x or 9.5.x as the starting point for a Drupal 10 upgrade, so if the site sits below that, you already know there is a cleanup step before the main move.

On a safe lower environment, these checks still earn their keep:

composer show drupal/core | grep versions
composer outdated 'drupal/*'
vendor/bin/drush status
vendor/bin/drush pm:list --status=enabled

If those commands already surface version drift, missing local tooling, or unexplained enabled modules, that is useful information. It means the project needs discovery and risk control before anyone books a release window.

What old Drupal 9 setup advice still holds up

Two older habits are still correct. First, keep the site Composer-managed. Drupal's official project template still recommends drupal/recommended-project, with the public web root in /web and vendor outside the document root. Second, keep Drush in the project, not as a shared global convenience install, and run it via vendor/bin/drush.

What has changed is the version context. In 2026, you should not start anything new on Drupal 9. And if you are working on an old Drupal 9 estate, do not blindly trust old notes that say composer require drush/drush and move on. Current Drush documentation still recommends Composer-managed, project-local Drush, but its current supported branches are aimed at newer Drupal versions. That implies a Drupal 9 codebase may need an older temporary Drush version during the transition. This is one reason old setup notes are not enough on their own.

Upgrade in the order Drupal expects

The safest route is usually sequential. Clean up the Drupal 9 site first, remove blockers, and land on a supportable Drupal 10 baseline. Do not plan a direct jump from Drupal 9 to Drupal 11 or later; Drupal's own upgrade tooling states that skipping multiple major versions is not supported.

There are also a few blockers that regularly surprise teams late in the project. Drupal's upgrade guide calls out altered scaffold files such as .htaccess, which must be reviewed and re-applied deliberately after the core update. It also calls out deprecated core extensions removed in Drupal 10, including the Seven admin theme and the CKEditor 4 module. If editors still depend on those, the work is not just technical. It affects content operations, training, screenshots, acceptance criteria, and stakeholder sign-off.

Use compatibility tooling early, not after the quote is approved

The Upgrade Status module is still one of the most useful ways to turn a vague assumption into a concrete blocker list. Its current stable 4.3 release still supports Drupal 9, 10, and 11, which makes it practical for inherited estates being assessed in 2026.

composer require 'drupal/upgrade_status:^4.3'

If Composer conflicts appear, follow the module's current install notes. You may need Drupal's developer dependencies, and some projects temporarily remove and re-add Drush during installation. The point is not to add ceremony. The point is to learn early whether your risk sits in contributed modules, custom code, or the surrounding toolchain.

Where budget and timelines usually go wrong

Most overruns come from the things nobody scoped: local patches in composer.json, abandoned modules, fragile integrations, and custom code tied to APIs removed in Drupal 10. Agency handovers add another layer: undocumented deployment steps, forgotten cron jobs, or production edits that never made it back to version control.

If the site matters to revenue, lead flow, publishing, case handling, or partner operations, treat the upgrade like a delivery project. That means a restorable lower environment, a tested rollback path, explicit acceptance criteria, and real regression testing. A homepage that loads is not evidence that the site is ready.

A practical operating checklist

  • Confirm whether the site is on Drupal 9.4.x or 9.5.x before planning the Drupal 10 step.
  • Inventory custom modules, applied patches, scaffold changes, third-party integrations, cron jobs, and deployment scripts before estimating effort.
  • Use Composer and project-local Drush so local, CI, and production workflows behave the same way.
  • Resolve deprecated themes and editor dependencies before the main upgrade, especially Seven and CKEditor 4 usage.
  • Run post-change checks with Drush and your test suite, not just a visual smoke test.

The runbook commands worth keeping close are still simple:

vendor/bin/drush updatedb -y
vendor/bin/drush cron
vendor/bin/drush watchdog:tail

That combination will often surface problems faster than a superficial browser check, especially on inherited sites where the real risk sits in background tasks, configuration drift, or module update hooks.

If you need a practical second opinion on a Drupal 9 estate, the useful deliverable is usually not a long technical memo. It is a scoped plan: what to stabilise now, what to upgrade next, what can wait, and what should probably be replaced. Greg can help turn that into an execution plan your team can actually run.

Need help with this kind of work?

Need a scoped audit and delivery plan for an inherited Drupal site? Talk to Greg. Get in touch with Greg.

Sources

  • Drupal 9 is end of life | Drupal.org
  • Starting a Site Using Drupal Composer Project Templates | Drupal.org
  • Install - Drush
  • How to upgrade from Drupal 9 to Drupal 10 | Drupal.org
  • Upgrade Status | Drupal.org
Last modified
2026-06-11

Tags

  • Drupal
  • Drupal 9
  • Composer
  • Drush
  • Upgrades

Review Greg on Google

Greg Nowak Google Reviews

 

Illustrated infographic summarizing: If the Facts Need JavaScript, AI Search May Miss the Full Page
If the Facts Need JavaScript, AI Search May Miss the Full Page
2026-07-14

A practical guide to finding and fixing JavaScript rendering gaps that can hide services, prices, contact details and metadata from AI search crawlers.

Illustrated infographic summarizing: Search Console Can See Social Posts—Your Reports Need a New Map
Search Console Can See Social Posts—Your Reports Need a New Map
2026-07-13

Search Console now reports how social posts perform across Google. Here’s a practical way to manage properties, permissions, baselines and exports.

Illustrated infographic summarizing: WordPress 7.0 Has an AI Client. Plugins Need Their Own Guardrails
WordPress 7.0 Has an AI Client. Plugins Need Their Own Guardrails
2026-07-12

WordPress 7.0 standardizes how plugins call AI providers, while leaving developers responsible for access control, cost limits, capability checks and graceful failures.

Illustrated infographic summarizing: Google’s AI Search toggle needs a test plan, not a gut decision
Google’s AI Search toggle needs a test plan, not a gut decision
2026-07-11

Google’s AI Search control creates a measurable publishing choice. Test visibility, traffic and leads before changing the setting across your site.

Illustrated infographic summarizing: OpenAI Is Retiring Agent Builder: Save the Workflow, Not Just Prompts
OpenAI Is Retiring Agent Builder: Save the Workflow, Not Just Prompts
2026-07-10

OpenAI retires Agent Builder on November 30, 2026. Here is what teams need to preserve, how to choose a migration path, and how to cut over safely.

Illustrated infographic summarizing: AI agents need a browser policy before they start clicking around
AI agents need a browser policy before they start clicking around
2026-07-09

Browser-using AI agents can save time, but they need clear rules before they enter CRMs, CMSs, portals, or admin tools and start taking action.

Illustrated infographic summarizing: When AI writes JSON, one bad field can break the workflow
When AI writes JSON, one bad field can break the workflow
2026-07-08

Structured AI output is useful in real workflows, but teams need schemas, validation, retries, and logs before JSON reaches production systems.

Illustrated infographic summarizing: AI search is eating the click: measure the queries before rewriting pages
AI search is eating the click: measure the queries before rewriting pages
2026-07-07

AI summaries are cutting into search clicks. Start with a practical dashboard that shows query risk, bot purpose, page value, and crawler policy.

Illustrated infographic summarizing: AI shopping visibility now depends on boring product-data plumbing
AI shopping visibility now depends on boring product-data plumbing
2026-07-07

AI-assisted shopping puts more pressure on ecommerce catalog data, feeds, schema, prices, availability, and return-policy governance.

Illustrated infographic summarizing: Drupal AI Demos Need a Permissions Rehearsal Before Launch
Drupal AI Demos Need a Permissions Rehearsal Before Launch
2026-07-07

Drupal’s July 2026 AI advisories show why agencies should test permissions, uploads, approval loops, logs, and rollback before client demos go live.

More articles
RSS feed

GrN.dk web platforms, web optimization, data analysis, data handling and logistics.