Skip to content

Drupal 11 Upgrade Analysis and Plan #622

@yepzdk

Description

@yepzdk

Summary

This issue documents the analysis and planning for upgrading Høringsportal from Drupal 10 to Drupal 11.

Current Status

Component Version D11 Ready
Drupal Core ^10.0 Needs update to ^11.0
PHP ^8.4.0 ✅ Exceeds D11 minimum (8.3)
Custom Modules 27 modules ✅ All declare ^11 compatibility
Contrib Modules 57 modules ✅ Major versions compatible
Themes 2 themes ✅ Already declare ^11 compatibility

Compatibility Analysis

✅ PHP Version - READY

  • Current requirement: PHP ^8.4.0
  • Drupal 11 requires: PHP 8.3+
  • Status: Already exceeds requirements

✅ Custom Modules - READY

All 27 custom modules already declare Drupal 11 compatibility in their core_version_requirement:

  • Core modules: hoeringsportal_hearing, hoeringsportal_citizen_proposal, hoeringsportal_public_meeting, etc.
  • All use modern patterns (Hook attributes, AutowireTrait, DrushCommands)
  • No deprecated API usage detected

✅ Themes - READY

  • hoeringsportal: core_version_requirement: ^8 || ^9 || ^10 || ^11
  • hoeringsportal_admin: core_version_requirement: ^10 || ^11

✅ Deprecated APIs - NONE FOUND

  • No @deprecated comments in custom code
  • All validation methods use current API (addViolation)
  • All messenger methods use current API (addError)
  • Modern Hook attributes already in use

⚠️ Patches - REQUIRES REVIEW

4 patches need verification for D11 compatibility:

  1. drupal/better_exposed_filters - Visually hidden label (local patch)
  2. drupal/core - 3 patches:
    • Text format wrapper description_display (2421445)
    • Validation bug fix (3210319)
    • AutowireTrait for plugins (3294266)
  3. drupal/site_status_message - Cache support patch
  4. vincentlanglet/twig-cs-fixer - Trans tag plural handling

Action Required: Check if these issues are resolved in D11 core or contrib releases.

⚠️ Contrib Modules in Pre-release

Some modules are in alpha/beta/RC status:

  • webform (^6.3@beta)
  • openid_connect (^3.0@alpha)
  • email_registration (^2.0@RC)
  • entityqueue (^1.0@alpha)
  • viewsreference (^2.0@beta)

Action Required: Monitor for stable releases before/during upgrade.

⚠️ jQuery Dependencies - MINIMAL

Only 2 custom modules have jQuery dependencies:

  • hoeringsportal_quicklinks
  • itk_admin_links

Status: Not blocking, but worth noting for future modernization.

Upgrade Plan

Phase 1: Pre-Upgrade Preparation

  • Run upgrade_status module report (already installed)
  • Update all contrib modules to latest D10-compatible versions
  • Review each patch for D11 compatibility
  • Check for stable releases of alpha/beta modules
  • Create full database and file backup

Phase 2: Perform Upgrade

  • Update composer.json: Change drupal/core from ^10.0 to ^11.0
  • Update all drupal/core-* packages to ^11.0
  • Run composer update drupal/core* --with-all-dependencies
  • Run drush updatedb for database schema updates
  • Run drush cache:rebuild
  • Export configuration: drush config:export

Phase 3: Post-Upgrade Validation

  • Verify all custom modules load correctly
  • Test Deskpro integration
  • Test OpenID Connect authentication
  • Test Pretix integration for public meetings
  • Test search functionality (search_api)
  • Run full Playwright test suite
  • Visual regression testing of key pages

Risk Assessment

Risk Level Mitigation
Custom module compatibility Low All already declare D11 support
Contrib module compatibility Low Major versions compatible
Core patches breaking Medium Manual review required
Integration failures Low Test in staging first
Theme issues Low Already D11 compatible

Estimated Effort

  • Pre-upgrade preparation: 1-2 days
  • Upgrade execution: 1 day
  • Testing and validation: 3-5 days
  • Total: ~1-2 weeks

Conclusion

The codebase is well-prepared for Drupal 11 upgrade with:

  • ✅ No major blockers identified
  • ✅ All custom code already D11-compatible
  • ✅ Modern development patterns in use
  • ⚠️ Only patches require manual review

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions