Skip to main content

Stappenplan voor upgrade

Update drush:

ddev composer require drush/drush -W

Module upgrade_status installeren:

ddev composer require drupal/upgrade_status -W
ddev drush en upgrade_status

De upgrade status pagina openen:

/admin/reports/upgrade-status

!!!Al het nodige uitvoeren dat op deze pagina wordt aangegeven.!!!

Sommige aanpassingen kunnen automatisch gebeuren met Drupal rector te gebruiken:

https://mglaman.dev/blog/phpstan-drupal-drupal-check-drupal-rector-upgradestatus-oh-my

ddev composer require --dev phpstan/phpstan \
  phpstan/extension-installer \
  mglaman/phpstan-drupal \
  phpstan/phpstan-deprecation-rules
ddev composer require --dev palantirnet/drupal-rector

in root:

cp vendor/palantirnet/drupal-rector/rector.php rector.php

test:

ddev php vendor/bin/rector process web/modules/custom --dry-run

gebruik / toepassen:

ddev php vendor/bin/rector process web/modules/custom

Daarna verdergaan op /admin/reports/upgrade-status

Als de upgrade status zegt dat alles ok is, kijk dan eerst even om eventuele meldingen in de statusrapportage pagina op te lossen: admin/reports/status

Om Webform libraries te updaten:

ddev drush webform:libraries:download

Als daar alles opgelost is begint het echte updaten naar D9. Volgende instructies zijn gebaseerd op deze link: https://www.drupal.org/docs/upgrading-drupal/upgrading-from-drupal-8-to-drupal-9-or-later

ddev composer require 'drupal/core-recommended:^9' 'drupal/core-composer-scaffold:^9' 'drupal/core-project-message:^9' 'drupal/core:^9' --update-with-dependencies --no-update
ddev composer update --with-all-dependencies

Indien je een melding krijgt van een module waarvan een D9 compatibele versie is, die niet D8 compatibel is:

Problem 1
    - Root composer.json requires drupal/imageapi_optimize ^2.0@beta -> satisfiable by drupal/imageapi_optimize[2.0.0-beta1].
    - drupal/imageapi_optimize 2.0.0-beta1 requires drupal/core ^8.2 -> found drupal/core[8.2.0-beta1, ..., 8.9.x-dev] but it conflicts with your root composer.json require (^9).

Dan kan je gewoon de moldulemodule naar de laatste versie updaten:

ddev composer require drupal/permissions_by_term --no-update

Doe dit voor alle modules die een melding geven en waarvan de laatste nieuwe versie wel D9 compatibel is. Of kijk gewoon op /admin/reports/updates en doe dit voor elke module die niet groen is.

Nakijken aan welke modules het ligt dat je niet kan updaten naar nieuwste D9 versie:

ddev composer prohibits drupal/core 9.4.6

Dan kan je eventuele custom modules de requirements aanpassen en dan de contrib modules die opgelijst zijn terug updaten via:

ddev composer require drupal/better_exposed_filters --no-update
ddev composer require drupal/devel --no-update
ddev composer require drupal/honeypot --no-update
ddev composer require drupal/imageapi_optimize --no-update
...

Indien je zo een melding krijgt van enkel 1 module, en er is wel een patch om de module D9 compatibel te maken, maar geen D9 compatibele versie:

Problem 1
    - drupal/domain_menu_access dev-1.x requires drupal/core ~8.0 -> found drupal/core[8.0.0-beta6, ..., 8.9.x-dev] but it conflicts with your root composer.json require (^9).
    - drupal/domain_menu_access 1.x-dev is an alias of drupal/domain_menu_access dev-1.x and thus requires it to be installed too.
    - Root composer.json requires drupal/domain_menu_access 1.x-dev@dev -> satisfiable by drupal/domain_menu_access[1.x-dev (alias of dev-1.x)].

Dan moet je drupal lenient gebruiken.gebruiken:

ddev composer require mglaman/composer-drupal-lenient

Patch toevoegen in composer.json bij patches sectie

ddev composer config --merge --json extra.drupal-lenient.allowed-list '["drupal/cookiepro"]'
ddev composer require drupal/cookiepro:2.0.1

Als er problemen zijn met applyen van patches, zoek dan de issues op en kijk of de patches niet meer nodig zijn in de nieuwere drupal versie of dat er anders een nieuwere versie van de patch is die werkt met de huidige drupal versie.

Als de composer update gelukt is, voer dan de database updates uit.

ddev drush updb -y

Als je deze error krijgt:

[preflight] Unable to decode /app/composer.json

Dan is er waarschijnlijk ergens een foutje in je composer.json. Haal alle comments eruit, kijk na of er niet ergens een komma teveel of te weinig staat enz.

Als je deze melding krijgt:

Unable to parse modules/contrib/rabbit_hole/modules/rh_eck/rh_eck.info.yml Duplicate key "type" detected at line 7 (near "type: module").

web/modules/contrib/rabbit_hole/modules/rh_eck/rh_eck.info.yml aanpassen en handmatig dubbele lijn weghalen:

type: module

zodat dit er maar 1 keer in staat ipv 2 keer.

Als je de module better_exposed_filters gebruikt, moet je deze modules toevoegen via composer:

ddev composer require drupal/jquery_ui
ddev composer require drupal/jquery_ui_slider
ddev composer require drupal/jquery_ui_touch_punch
ddev composer require drupal/jquery_ui_datepicker

En dan enablen:

ddev drush en jquery_ui
ddev drush en jquery_ui_slider
ddev drush en jquery_ui_touch_punch
ddev drush en jquery_ui_datepicker

maar ook voordat je een drush cim zou willen doen toevoegen in config/sync/core.extension.yml:

jquery_ui: 0
jquery_ui_slider: 0
jquery_ui_touch_punch: 0
jquery_ui_datepicker: 0

En dan moet je ook nog jquery-ui-touch-punch in je libraies folder steken: Download https://github.com/furf/jquery-ui-touch-punch in libraries folder steken zodat je dit hebt: web/libraries/jquery-ui-touch-punch/jquery.ui.touch-punch.min.js

Na aanpassen composer.json:

ddev composer update --with-all-dependencies --prefer-dist

Als alles gelukt is:

ddev drush en devel_entity_updates
ddev drush entup
ddev drush updb -y

Ook het project in GitLab bewerken, Settings -> General en daar de Topic instellen op 'Drupal 9'

Indien volgende melding:

The "image_multicrop" plugin does not exist. Valid plugin IDs

dan:

ddev drush cex -y

in folder config zoeken naar 'image_multicrop' en vervangen door 'image'

ddev drush cim -y

en commando ddev drush multi_crop:migrateToMediaContextualCrop opnieuw uitvoeren

Indien klaar, image style nakijken:

/admin/structure/media/manage/image/display

Aangepaste weergave toevoegen: cropped (indien nog niet actief)

De Cropped weergave bewerken (/admin/structure/media/manage/image/display/cropped)

Opmaak: Cropped Image (Image style: max_1300x1300)

Indien klaar dan config committen en pushen en daarna mag de module uitgeschakeld worden

comitten, pushen, en dan

ddev composer remove drupal/multi_crop