Updating Varbase ~9.0 to Drupal 10

Paved the way for a smoother upgrade process to Drupal 10

1. Read First Before Updating

Updating Drush to the Latest Stable Version

2. Uninstall Removed Modules and Themes

  • Issue #3392945: Removed the Better Normalizers module from Varbase Core

Obsolete Use of this project is deprecated.

Note that there will not be a version that works on D9 and D10, that's not possible because of the return type hint change for normalizers between Symfony 4 and 6.

Switch From Swift Mailer to Symfony Mailer

3. Check for Drupal 10 Compatibility

4. Update old Varbase ~9.0.0 to ~9.1.0 in composer.json File

  1. Update the project to latest version of Varbase ~9.0.0

  2. Change "vardot/varbase": "~9.0.0", to "vardot/varbase": "~9.1.0", in the root composer.json file.

  3. Add "drupal/core": "~10", in the root composer.json file.

  4. Change drupal/core-composer-scaffold to ~10 in the root composer.json file.

  5. Change drupal/core-project-message to ~10 in the root composer.json file.

  6. Change "drupal/core-dev": "~10", in the root composer.json file.

  7. Run composer update number of times ( do that 3 times min )

  8. Run ./bin/drush updb number of times ( do that 3 times min)

Fix Non-existent Permissions Issues

Have the system faced an issue with missing static or dynamic permissions while updating/upgrading? or after disabling/uninstalling a module?

RuntimeException: Adding non-existent permissions to a role is not allowed. The incorrect permissions are "~~~~~~~". in Drupal\user\Entity\Role->calculateDependencies() (line 207 of core/modules/user/src/Entity/Role.php).

Drush Command to Fix Non-existent Permissions in Varbase

  1. Update the Varbase Core module to 9.1.7 or later.

  2. Run the following drush command

./bin/drush varbase:remove-non-existent-permissions

Before or After Uninstalling a Module

Better to remove all permissions first for all user roles for the module before the uninstall. That can be from the Drupal UI page for permissions. Or:

Use Drush to remove specified permission(s) from a role

Have the system faced errors when uninstalling a module?

Adding non-existent permissions to a role is not allowed.

Permissions could be removed one by one and from user roles with Drush.

Use the remove specified permission(s) from a role method

Example:

If for some reason the Admin Audit Trail module wanted to be uninstalled under Drupal ~10.1.0 in a project.

In case of uninstalling without removing permissions first, the system may face issues with non-existent permissions to a role is not allowed.

Run the following drush commands to remove 'access admin audit trail' for the default user roles, or other custom user roles in the project:

./bin/drush role:perm:remove anonymous 'access admin audit trail'

./bin/drush role:perm:remove authenticated 'access admin audit trail'

./bin/drush role:perm:remove editor 'access admin audit trail'

./bin/drush role:perm:remove content_admin 'access admin audit trail'

./bin/drush role:perm:remove seo_admin 'access admin audit trail'

./bin/drush role:perm:remove site_admin 'access admin audit trail'

This method can be used before or after uninstalling a module.

Some modules use the dynamic permissions option for custom plugins, entity types, blocks, terms. To grant extra limited permissions for user roles.

Run the following command to do the bulk remove for non existent permissions, in case not wanting to do that one by one.

./bin/drush varbase:remove-non-existent-permissions

Fix Mismatched Entity or Field Definitions Issues

Have the system faced issues with mismatched entity or field definitions while updating/upgrading?

Drush Command to Fix Mismatched Entities in Varbase

  1. Update the Varbase Core module to 9.1.7 or later.

  2. Run ./bin/drush varbase:entity-update

Important Issues

Permissions must exist

Invalid permissions will trigger runtime exceptions in Drupal 10. Permissions should be defined in a permissions.yml file or a permission callback.

The skip_missing_permission_deprecation flag that was added in Drupal 9 to the Role entity in #2571235: [regression] Roles should depend on objects that are building the granted permissions.

Modules cannot be in a disabled state anymore, only installed and uninstalled #1199946: Disabled modules are broken beyond repair so the "disable" functionality needs to be removed

  # A special flag so we can migrate permissions that do not exist yet.
  # @todo Remove in https://www.drupal.org/project/drupal/issues/2953111.
  skip_missing_permission_deprecation:
    plugin: default_value
    default_value: true

It was removed from the 10.0.x and 10.1.x branch.

#2953111: Only migrate role permissions that exist on the destination

Last updated