diff --git a/entity_print.install b/entity_print.install
index 0c42477..79ffafc 100644
--- a/entity_print.install
+++ b/entity_print.install
@@ -5,6 +5,8 @@
  * Entity Print installation file.
  */
 
+use Drupal\Component\Utility\DeprecationHelper;
+use Drupal\Core\Extension\Requirement\RequirementSeverity;
 use Drupal\Core\Config\Entity\ConfigEntityType;
 use Drupal\Core\StringTranslation\TranslatableMarkup;
 
@@ -52,7 +54,7 @@ function entity_print_requirements($phase) {
       'description' => t('At least one valid PDF engine must be available to use Entity Print. See the <a href=":docs">documentation</a>', [
         ':docs' => 'https://www.drupal.org/node/2706755',
       ]),
-      'severity' => REQUIREMENT_ERROR,
+      'severity' => DeprecationHelper::backwardsCompatibleCall(\Drupal::VERSION, '11.2.0', fn() => RequirementSeverity::Error, fn() => REQUIREMENT_ERROR),
     ];
   }
   return $requirements;
@@ -71,8 +73,7 @@ function entity_print_update_8104() {
 function entity_print_update_8103() {
   if ($config = \Drupal::configFactory()->getEditable('system.action.entity_print_pdf_download_action')) {
     $config
-      ->set('plugin', 'entity_print_download_action')
-      ->save(TRUE);
+      ->set('plugin', 'entity_print_download_action')->save();
   }
 }
 
@@ -97,15 +98,13 @@ function entity_print_update_8102() {
   $engine = $config->get('pdf_engine');
   $config
     ->set('print_engines.pdf_engine', $engine)
-    ->clear('pdf_engine')
-    ->save(TRUE);
+    ->clear('pdf_engine')->save();
 
   // Copy settings across for the selected PDF engine and delete the old object.
   if ($old_config = \Drupal::configFactory()->getEditable('entity_print.pdf_engine.' . $engine)) {
     $new_config = \Drupal::configFactory()->getEditable('entity_print.print_engine.' . $engine);
     $new_config
-      ->setData($old_config->getRawData())
-      ->save(TRUE);
+      ->setData($old_config->getRawData())->save();
     $old_config->delete();
   }
 
@@ -115,8 +114,7 @@ function entity_print_update_8102() {
   $new_config
     ->setData($old_config->getRawData())
     ->set('id', 'entity_print_pdf_download_action')
-    ->set('plugin', 'entity_print_pdf_download_action')
-    ->save(TRUE);
+    ->set('plugin', 'entity_print_pdf_download_action')->save();
   $old_config->delete();
 }
 
@@ -137,7 +135,7 @@ function entity_print_update_8201() {
       $print_engine_config->set('settings.default_paper_size', $page_format);
       $print_engine_config->clear('settings.page_format');
     }
-    $print_engine_config->save(TRUE);
+    $print_engine_config->save();
   }
 }
 
diff --git a/entity_print.module b/entity_print.module
index 39c2b42..99ddd83 100644
--- a/entity_print.module
+++ b/entity_print.module
@@ -5,112 +5,50 @@
  * Print any entity.
  */
 
-use Drupal\Core\Entity\ContentEntityInterface;
+use Drupal\Core\Hook\Attribute\LegacyHook;
+use Drupal\entity_print\Hook\EntityPrintHooks;
 use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\Core\Url;
-use Drupal\entity_print\Renderer\ContentEntityRenderer;
 
 /**
  * Implements hook_theme().
  */
+#[LegacyHook]
 function entity_print_theme($existing, $type, $theme, $path) {
-  return [
-    'entity_print' => [
-      'path' => $path . '/templates',
-      'template' => 'entity-print',
-      'variables' => [
-        'title' => '',
-        'content' => NULL,
-        'entity_print_css' => NULL,
-      ],
-    ],
-  ];
+  return \Drupal::service(EntityPrintHooks::class)->theme($existing, $type, $theme, $path);
 }
 
 /**
  * Implements hook_entity_type_alter().
  */
+#[LegacyHook]
 function entity_print_entity_type_alter(array &$entity_types) {
-  /** @var \Drupal\Core\Entity\EntityTypeInterface $entity_type */
-  foreach ($entity_types as $entity_type) {
-    if ($entity_type->entityClassImplements(ContentEntityInterface::class) && !$entity_type->hasHandlerClass('entity_print')) {
-      $entity_type->setHandlerClass('entity_print', ContentEntityRenderer::class);
-    }
-  }
+  \Drupal::service(EntityPrintHooks::class)->entityTypeAlter($entity_types);
 }
 
 /**
  * Implements hook_entity_extra_field_info().
  */
+#[LegacyHook]
 function entity_print_entity_extra_field_info() {
-  $export_types = \Drupal::service('plugin.manager.entity_print.export_type')->getDefinitions();
-  $bundle_info = \Drupal::service('entity_type.bundle.info')->getAllBundleInfo();
-
-  $extra_fields = [];
-
-  foreach ($bundle_info as $entity_type_id => $bundles) {
-    foreach ($bundles as $bundle_id => $bundle) {
-      foreach ($export_types as $export_type => $definition) {
-        $extra_fields[$entity_type_id][$bundle_id]['display']['entity_print_view_' . $export_type] = [
-          'label' => t('View @label', ['@label' => $definition['label']]),
-          'description' => t('Provides a link to view the Print version of the entity'),
-          'weight' => 0,
-          'visible' => FALSE,
-        ];
-      }
-    }
-  }
-
-  return $extra_fields;
+  return \Drupal::service(EntityPrintHooks::class)->entityExtraFieldInfo();
 }
 
 /**
  * Implements hook_entity_view_alter().
  */
+#[LegacyHook]
 function entity_print_entity_view_alter(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display) {
-  $export_types = \Drupal::service('plugin.manager.entity_print.export_type')->getDefinitions();
-  $access_manager = \Drupal::accessManager();
-  foreach ($export_types as $export_type => $definition) {
-    $key = 'entity_print_view_' . $export_type;
-    if ($component = $display->getComponent($key)) {
-      $route_params = [
-        'entity_type' => $entity->getEntityTypeId(),
-        'entity_id' => $entity->id(),
-        'export_type' => trim($export_type, '_engine'),
-      ];
-
-      $build[$key] = [
-        '#type' => 'print_link',
-        '#title' => $display->getThirdPartySetting('entity_print', $export_type . '_label', t('View @label', ['@label' => $definition['label']])),
-        '#export_type' => $export_type,
-        '#url' => Url::fromRoute('entity_print.view', $route_params),
-        '#weight' => $component['weight'] ?? 0,
-        '#access' => $access_manager->checkNamedRoute('entity_print.view', $route_params, NULL, TRUE),
-      ];
-    }
-  }
+  \Drupal::service(EntityPrintHooks::class)->entityViewAlter($build, $entity, $display);
 }
 
 /**
  * Implements hook_form_FORM_ID_alter().
  */
+#[LegacyHook]
 function entity_print_form_entity_view_display_edit_form_alter(&$form, FormStateInterface $form_state) {
-  /** @var \Drupal\Core\Entity\Entity\EntityViewDisplay $display */
-  $display = $form_state->getFormObject()->getEntity();
-  $export_types = \Drupal::service('plugin.manager.entity_print.export_type')->getDefinitions();
-
-  foreach ($export_types as $export_type => $definition) {
-    $form['fields']['entity_print_view_' . $export_type]['empty_cell'] = [
-      '#type' => 'textfield',
-      '#title' => '',
-      '#default_value' => $display->getThirdPartySetting('entity_print', $export_type . '_label', t('View @label', ['@label' => $definition['label']])),
-    ];
-  }
-
-  $form['#validate'][] = 'entity_print_form_entity_view_display_edit_form_validate';
-  $form['actions']['submit']['#submit'][] = 'entity_print_form_entity_view_display_edit_form_submit';
+  \Drupal::service(EntityPrintHooks::class)->formEntityViewDisplayEditFormAlter($form, $form_state);
 }
 
 /**
diff --git a/entity_print.services.yml b/entity_print.services.yml
index 2772535..48bf592 100644
--- a/entity_print.services.yml
+++ b/entity_print.services.yml
@@ -38,3 +38,7 @@ services:
     arguments: ['@current_route_match', '@entity_type.manager', '@messenger']
     tags:
       - { name: event_subscriber }
+
+  Drupal\entity_print\Hook\EntityPrintHooks:
+    class: Drupal\entity_print\Hook\EntityPrintHooks
+    autowire: true
diff --git a/modules/entity_print_views/entity_print_views.module b/modules/entity_print_views/entity_print_views.module
index 582aef3..c234ef3 100644
--- a/modules/entity_print_views/entity_print_views.module
+++ b/modules/entity_print_views/entity_print_views.module
@@ -5,28 +5,21 @@
  * Entity Print Views module file.
  */
 
-use Drupal\entity_print_views\Renderer\ViewRenderer;
+use Drupal\Core\Hook\Attribute\LegacyHook;
+use Drupal\entity_print_views\Hook\EntityPrintViewsHooks;
 
 /**
  * Implements hook_views_data_alter().
  */
+#[LegacyHook]
 function entity_print_views_data_alter(array &$data) {
-  foreach (\Drupal::entityTypeManager()->getDefinitions() as $entity_type_id => $entity_type) {
-    if (isset($data[$entity_type_id])) {
-      $data[$entity_type_id]['entity_print_' . $entity_type_id] = [
-        'field' => [
-          'title' => t('Print link'),
-          'help' => t('Provide a link to print the entity'),
-          'id' => 'entity_print_link',
-        ],
-      ];
-    }
-  }
+  \Drupal::service(EntityPrintViewsHooks::class)->dataAlter($data);
 }
 
 /**
  * Implements hook_entity_type_alter().
  */
+#[LegacyHook]
 function entity_print_views_entity_type_alter(array &$entity_types) {
-  $entity_types['view']->setHandlerClass('entity_print', ViewRenderer::class);
+  \Drupal::service(EntityPrintViewsHooks::class)->entityTypeAlter($entity_types);
 }
diff --git a/modules/entity_print_views/entity_print_views.services.yml b/modules/entity_print_views/entity_print_views.services.yml
new file mode 100644
index 0000000..bbf6599
--- /dev/null
+++ b/modules/entity_print_views/entity_print_views.services.yml
@@ -0,0 +1,9 @@
+
+services:
+  Drupal\entity_print_views\Hook\EntityPrintViewsHooks:
+    class: Drupal\entity_print_views\Hook\EntityPrintViewsHooks
+    autowire: true
+
+  Drupal\entity_print_views\Hook\EntityPrintViewsViewsHooks:
+    class: Drupal\entity_print_views\Hook\EntityPrintViewsViewsHooks
+    autowire: true
diff --git a/modules/entity_print_views/entity_print_views.views.inc b/modules/entity_print_views/entity_print_views.views.inc
index d7e1495..9508d25 100644
--- a/modules/entity_print_views/entity_print_views.views.inc
+++ b/modules/entity_print_views/entity_print_views.views.inc
@@ -1,5 +1,12 @@
 <?php
 
+/**
+ * @file
+ */
+
+use Drupal\Core\Hook\Attribute\LegacyHook;
+use Drupal\entity_print_views\Hook\EntityPrintViewsViewsHooks;
+
 /**
  * @file
  * Views specific hooks.
@@ -8,13 +15,7 @@
 /**
  * Implements hook_views_data().
  */
+#[LegacyHook]
 function entity_print_views_views_data() {
-  $data['views']['area_entity_print_views'] = [
-    'title' => t('Print'),
-    'help' => t('Print the View'),
-    'area' => [
-      'id' => 'entity_print_views_link',
-    ],
-  ];
-  return $data;
+  return \Drupal::service(EntityPrintViewsViewsHooks::class)->viewsData();
 }
diff --git a/modules/entity_print_views/src/Hook/EntityPrintViewsHooks.php b/modules/entity_print_views/src/Hook/EntityPrintViewsHooks.php
new file mode 100644
index 0000000..86a59e0
--- /dev/null
+++ b/modules/entity_print_views/src/Hook/EntityPrintViewsHooks.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace Drupal\entity_print_views\Hook;
+
+use Drupal\entity_print_views\Renderer\ViewRenderer;
+use Drupal\Core\Hook\Attribute\Hook;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+
+/**
+ * Hook implementations for entity_print_views.
+ */
+class EntityPrintViewsHooks {
+  use StringTranslationTrait;
+
+  /**
+   * Implements hook_views_data_alter().
+   */
+  #[Hook('views_data_alter', module: 'entity_print')]
+  public function dataAlter(array &$data) {
+    foreach (\Drupal::entityTypeManager()->getDefinitions() as $entity_type_id => $entity_type) {
+      if (isset($data[$entity_type_id])) {
+        $data[$entity_type_id]['entity_print_' . $entity_type_id] = [
+          'field' => [
+            'title' => $this->t('Print link'),
+            'help' => $this->t('Provide a link to print the entity'),
+            'id' => 'entity_print_link',
+          ],
+        ];
+      }
+    }
+  }
+
+  /**
+   * Implements hook_entity_type_alter().
+   */
+  #[Hook('entity_type_alter')]
+  public function entityTypeAlter(array &$entity_types) {
+    $entity_types['view']->setHandlerClass('entity_print', ViewRenderer::class);
+  }
+
+}
diff --git a/modules/entity_print_views/src/Hook/EntityPrintViewsViewsHooks.php b/modules/entity_print_views/src/Hook/EntityPrintViewsViewsHooks.php
new file mode 100644
index 0000000..9fe6935
--- /dev/null
+++ b/modules/entity_print_views/src/Hook/EntityPrintViewsViewsHooks.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace Drupal\entity_print_views\Hook;
+
+use Drupal\Core\Hook\Attribute\Hook;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+
+/**
+ * Hook implementations for entity_print_views.
+ */
+class EntityPrintViewsViewsHooks {
+  use StringTranslationTrait;
+  /**
+   * @file
+   * Views specific hooks.
+   */
+
+  /**
+   * Implements hook_views_data().
+   */
+  #[Hook('views_data')]
+  public function viewsData() {
+    $data['views']['area_entity_print_views'] = [
+      'title' => $this->t('Print'),
+      'help' => $this->t('Print the View'),
+      'area' => [
+        'id' => 'entity_print_views_link',
+      ],
+    ];
+    return $data;
+  }
+
+}
diff --git a/modules/entity_print_views/tests/src/Functional/PrintViewsTest.php b/modules/entity_print_views/tests/src/Functional/PrintViewsTest.php
index f00ef8e..19d0ee2 100644
--- a/modules/entity_print_views/tests/src/Functional/PrintViewsTest.php
+++ b/modules/entity_print_views/tests/src/Functional/PrintViewsTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print_views\Functional;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Tests\BrowserTestBase;
 use Drupal\user\Entity\Role;
 
@@ -10,6 +12,8 @@ use Drupal\user\Entity\Role;
  *
  * @group entity_print_views
  */
+#[Group('entity_print_views')]
+#[RunTestsInSeparateProcesses]
 class PrintViewsTest extends BrowserTestBase {
 
   /**
diff --git a/modules/entity_print_views/tests/src/Kernel/ViewsAccessTest.php b/modules/entity_print_views/tests/src/Kernel/ViewsAccessTest.php
index f0c6f57..83a9c97 100644
--- a/modules/entity_print_views/tests/src/Kernel/ViewsAccessTest.php
+++ b/modules/entity_print_views/tests/src/Kernel/ViewsAccessTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print_views\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\Core\Session\AnonymousUserSession;
 use Drupal\entity_print_views\Controller\ViewPrintController;
@@ -13,6 +15,8 @@ use Drupal\Tests\user\Traits\UserCreationTrait;
  *
  * @group entity_print_views
  */
+#[Group('entity_print_views')]
+#[RunTestsInSeparateProcesses]
 class ViewsAccessTest extends KernelTestBase {
 
   use UserCreationTrait;
@@ -35,7 +39,6 @@ class ViewsAccessTest extends KernelTestBase {
    */
   public function setUp(): void {
     parent::setUp();
-    $this->installSchema('system', ['sequences']);
     $this->installEntitySchema('user');
     $this->installConfig('entity_print_views_test_views');
 
diff --git a/modules/entity_print_views/tests/src/Kernel/ViewsRendererTest.php b/modules/entity_print_views/tests/src/Kernel/ViewsRendererTest.php
index 1771b7a..bde2e34 100644
--- a/modules/entity_print_views/tests/src/Kernel/ViewsRendererTest.php
+++ b/modules/entity_print_views/tests/src/Kernel/ViewsRendererTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print_views\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\entity_print\FilenameGeneratorInterface;
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\views\Views;
@@ -11,6 +13,8 @@ use Drupal\views\Views;
  *
  * @group entity_print_views
  */
+#[Group('entity_print_views')]
+#[RunTestsInSeparateProcesses]
 class ViewsRendererTest extends KernelTestBase {
 
   /**
diff --git a/src/Hook/EntityPrintHooks.php b/src/Hook/EntityPrintHooks.php
new file mode 100644
index 0000000..f7d4d15
--- /dev/null
+++ b/src/Hook/EntityPrintHooks.php
@@ -0,0 +1,126 @@
+<?php
+
+namespace Drupal\entity_print\Hook;
+
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Url;
+use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
+use Drupal\Core\Entity\EntityInterface;
+use Drupal\entity_print\Renderer\ContentEntityRenderer;
+use Drupal\Core\Entity\ContentEntityInterface;
+use Drupal\Core\Hook\Attribute\Hook;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+
+/**
+ * Hook implementations for entity_print.
+ */
+class EntityPrintHooks {
+  use StringTranslationTrait;
+
+  /**
+   * Implements hook_theme().
+   */
+  #[Hook('theme')]
+  public function theme($existing, $type, $theme, $path) {
+    return [
+      'entity_print' => [
+        'path' => $path . '/templates',
+        'template' => 'entity-print',
+        'variables' => [
+          'title' => '',
+          'content' => NULL,
+          'entity_print_css' => NULL,
+        ],
+      ],
+    ];
+  }
+
+  /**
+   * Implements hook_entity_type_alter().
+   */
+  #[Hook('entity_type_alter')]
+  public function entityTypeAlter(array &$entity_types) {
+    /** @var \Drupal\Core\Entity\EntityTypeInterface $entity_type */
+    foreach ($entity_types as $entity_type) {
+      if ($entity_type->entityClassImplements(ContentEntityInterface::class) && !$entity_type->hasHandlerClass('entity_print')) {
+        $entity_type->setHandlerClass('entity_print', ContentEntityRenderer::class);
+      }
+    }
+  }
+
+  /**
+   * Implements hook_entity_extra_field_info().
+   */
+  #[Hook('entity_extra_field_info')]
+  public function entityExtraFieldInfo() {
+    $export_types = \Drupal::service('plugin.manager.entity_print.export_type')->getDefinitions();
+    $bundle_info = \Drupal::service('entity_type.bundle.info')->getAllBundleInfo();
+    $extra_fields = [];
+    foreach ($bundle_info as $entity_type_id => $bundles) {
+      foreach ($bundles as $bundle_id => $bundle) {
+        foreach ($export_types as $export_type => $definition) {
+          $extra_fields[$entity_type_id][$bundle_id]['display']['entity_print_view_' . $export_type] = [
+            'label' => $this->t('View @label', [
+              '@label' => $definition['label'],
+            ]),
+            'description' => $this->t('Provides a link to view the Print version of the entity'),
+            'weight' => 0,
+            'visible' => FALSE,
+          ];
+        }
+      }
+    }
+    return $extra_fields;
+  }
+
+  /**
+   * Implements hook_entity_view_alter().
+   */
+  #[Hook('entity_view_alter')]
+  public function entityViewAlter(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display) {
+    $export_types = \Drupal::service('plugin.manager.entity_print.export_type')->getDefinitions();
+    $access_manager = \Drupal::accessManager();
+    foreach ($export_types as $export_type => $definition) {
+      $key = 'entity_print_view_' . $export_type;
+      if ($component = $display->getComponent($key)) {
+        $route_params = [
+          'entity_type' => $entity->getEntityTypeId(),
+          'entity_id' => $entity->id(),
+          'export_type' => trim($export_type, '_engine'),
+        ];
+        $build[$key] = [
+          '#type' => 'print_link',
+          '#title' => $display->getThirdPartySetting('entity_print', $export_type . '_label', $this->t('View @label', [
+            '@label' => $definition['label'],
+          ])),
+          '#export_type' => $export_type,
+          '#url' => Url::fromRoute('entity_print.view', $route_params),
+          '#weight' => $component['weight'] ?? 0,
+          '#access' => $access_manager->checkNamedRoute('entity_print.view', $route_params, NULL, TRUE),
+        ];
+      }
+    }
+  }
+
+  /**
+   * Implements hook_form_FORM_ID_alter().
+   */
+  #[Hook('form_entity_view_display_edit_form_alter')]
+  public function formEntityViewDisplayEditFormAlter(&$form, FormStateInterface $form_state) {
+    /** @var \Drupal\Core\Entity\Entity\EntityViewDisplay $display */
+    $display = $form_state->getFormObject()->getEntity();
+    $export_types = \Drupal::service('plugin.manager.entity_print.export_type')->getDefinitions();
+    foreach ($export_types as $export_type => $definition) {
+      $form['fields']['entity_print_view_' . $export_type]['empty_cell'] = [
+        '#type' => 'textfield',
+        '#title' => '',
+        '#default_value' => $display->getThirdPartySetting('entity_print', $export_type . '_label', $this->t('View @label', [
+          '@label' => $definition['label'],
+        ])),
+      ];
+    }
+    $form['#validate'][] = 'entity_print_form_entity_view_display_edit_form_validate';
+    $form['actions']['submit']['#submit'][] = 'entity_print_form_entity_view_display_edit_form_submit';
+  }
+
+}
diff --git a/src/Plugin/Field/FieldFormatter/Base64ImageFormatter.php b/src/Plugin/Field/FieldFormatter/Base64ImageFormatter.php
index fc7f4cc..4016313 100644
--- a/src/Plugin/Field/FieldFormatter/Base64ImageFormatter.php
+++ b/src/Plugin/Field/FieldFormatter/Base64ImageFormatter.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\entity_print\Plugin\Field\FieldFormatter;
 
+use Drupal\Component\Utility\DeprecationHelper;
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\file\Entity\File;
@@ -37,7 +38,7 @@ class Base64ImageFormatter extends ImageFormatter {
       '#type' => 'select',
       '#default_value' => $this->getSetting('image_style'),
       '#empty_option' => $this->t('None (original image)'),
-      '#options' => image_style_options(FALSE),
+      '#options' => DeprecationHelper::backwardsCompatibleCall(\Drupal::VERSION, '11.4.0', fn() => \Drupal::service('Drupal\image\ImageDerivativeUtilities')->styleOptions(FALSE), fn() => image_style_options(FALSE)),
     ];
 
     return $element;
diff --git a/src/PrintBuilder.php b/src/PrintBuilder.php
index 02f5de7..1307161 100644
--- a/src/PrintBuilder.php
+++ b/src/PrintBuilder.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\entity_print;
 
+use Drupal\Component\Utility\DeprecationHelper;
+use Drupal\Core\File\FileExists;
 use Drupal\Core\File\FileSystemInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
@@ -111,7 +113,7 @@ class PrintBuilder implements PrintBuilderInterface {
     $uri = "$scheme://$filename";
 
     // Save the file.
-    return $this->fileSystem->saveData($print_engine->getBlob(), $uri, FileSystemInterface::EXISTS_REPLACE);
+    return $this->fileSystem->saveData($print_engine->getBlob(), $uri, DeprecationHelper::backwardsCompatibleCall(\Drupal::VERSION, '10.3.0', fn() => FileExists::Replace, fn() => FileSystemInterface::EXISTS_REPLACE));
   }
 
   /**
diff --git a/tests/modules/entity_print_test/entity_print_test.module b/tests/modules/entity_print_test/entity_print_test.module
index 5fd851e..8dd40b3 100644
--- a/tests/modules/entity_print_test/entity_print_test.module
+++ b/tests/modules/entity_print_test/entity_print_test.module
@@ -5,35 +5,30 @@
  * A module for testing Entity Print.
  */
 
+use Drupal\Core\Hook\Attribute\LegacyHook;
+use Drupal\entity_print_test\Hook\EntityPrintTestHooks;
 use Drupal\Core\Extension\Extension;
 
 /**
  * Implements hook_system_theme_info().
  */
+#[LegacyHook]
 function entity_print_test_system_theme_info() {
-  $themes['entity_print_test_theme'] = \Drupal::service('extension.list.module')->getPath('entity_print_test') . '/themes/entity_print_test_theme/entity_print_test_theme.info';
-  return $themes;
+  return \Drupal::service(EntityPrintTestHooks::class)->systemThemeInfo();
 }
 
 /**
  * Implements hook_entity_print_pdf_engine_alter().
  */
+#[LegacyHook]
 function entity_print_test_entity_print_pdf_engine_alter(&$definitions) {
-  // Replace these with a class that always makes them not available so I don't
-  // have to manually disable to run the tests locally where they're installed.
-  $disabled_engines = ['dompdf', 'phpwkhtmltopdf'];
-  foreach ($disabled_engines as $id) {
-    if (isset($definitions[$id]['class'])) {
-      $definitions[$id]['class'] = 'Drupal\entity_print_test\Plugin\EntityPrint\PrintEngine\NotAvailablePrintEngine';
-    }
-  }
+  \Drupal::service(EntityPrintTestHooks::class)->entityPrintPdfEngineAlter($definitions);
 }
 
 /**
  * Implements hook_system_info_alter().
  */
+#[LegacyHook]
 function entity_print_test_system_info_alter(array &$info, Extension $file, $type) {
-  if ($type === 'theme' && $file->getName() === 'entity_print_test_theme') {
-    $info['entity_print']['node']['page'] = 'entity_print_test_theme/page';
-  }
+  \Drupal::service(EntityPrintTestHooks::class)->systemInfoAlter($info, $file, $type);
 }
diff --git a/tests/modules/entity_print_test/entity_print_test.services.yml b/tests/modules/entity_print_test/entity_print_test.services.yml
index a1d8dcd..7461d10 100644
--- a/tests/modules/entity_print_test/entity_print_test.services.yml
+++ b/tests/modules/entity_print_test/entity_print_test.services.yml
@@ -3,3 +3,7 @@ services:
     class: Drupal\entity_print_test\EventSubscriber\TestEngineConfigurationAlter
     tags:
       - { name: event_subscriber }
+
+  Drupal\entity_print_test\Hook\EntityPrintTestHooks:
+    class: Drupal\entity_print_test\Hook\EntityPrintTestHooks
+    autowire: true
diff --git a/tests/modules/entity_print_test/src/Hook/EntityPrintTestHooks.php b/tests/modules/entity_print_test/src/Hook/EntityPrintTestHooks.php
new file mode 100644
index 0000000..75744dc
--- /dev/null
+++ b/tests/modules/entity_print_test/src/Hook/EntityPrintTestHooks.php
@@ -0,0 +1,50 @@
+<?php
+
+namespace Drupal\entity_print_test\Hook;
+
+use Drupal\Core\Extension\Extension;
+use Drupal\Core\Hook\Attribute\Hook;
+
+/**
+ * Hook implementations for entity_print_test.
+ */
+class EntityPrintTestHooks {
+
+  /**
+   * Implements hook_system_theme_info().
+   */
+  #[Hook('system_theme_info')]
+  public function systemThemeInfo() {
+    $themes['entity_print_test_theme'] = \Drupal::service('extension.list.module')->getPath('entity_print_test') . '/themes/entity_print_test_theme/entity_print_test_theme.info';
+    return $themes;
+  }
+
+  /**
+   * Implements hook_entity_print_pdf_engine_alter().
+   */
+  #[Hook('entity_print_pdf_engine_alter')]
+  public function entityPrintPdfEngineAlter(&$definitions) {
+    // Replace these with a class that always makes them not available so I don't
+    // have to manually disable to run the tests locally where they're installed.
+    $disabled_engines = [
+      'dompdf',
+      'phpwkhtmltopdf',
+    ];
+    foreach ($disabled_engines as $id) {
+      if (isset($definitions[$id]['class'])) {
+        $definitions[$id]['class'] = 'Drupal\entity_print_test\Plugin\EntityPrint\PrintEngine\NotAvailablePrintEngine';
+      }
+    }
+  }
+
+  /**
+   * Implements hook_system_info_alter().
+   */
+  #[Hook('system_info_alter')]
+  public function systemInfoAlter(array &$info, Extension $file, $type) {
+    if ($type === 'theme' && $file->getName() === 'entity_print_test_theme') {
+      $info['entity_print']['node']['page'] = 'entity_print_test_theme/page';
+    }
+  }
+
+}
diff --git a/tests/src/Functional/Base64ImageTest.php b/tests/src/Functional/Base64ImageTest.php
index d583fc3..987dc1e 100644
--- a/tests/src/Functional/Base64ImageTest.php
+++ b/tests/src/Functional/Base64ImageTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print\Functional;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Core\Entity\Entity\EntityViewDisplay;
 use Drupal\Core\Render\RenderContext;
 use Drupal\field\Entity\FieldConfig;
@@ -14,6 +16,8 @@ use Drupal\Tests\BrowserTestBase;
  *
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class Base64ImageTest extends BrowserTestBase {
 
   /**
diff --git a/tests/src/Functional/EntityPrintActionTest.php b/tests/src/Functional/EntityPrintActionTest.php
index 73f4606..2a1f653 100644
--- a/tests/src/Functional/EntityPrintActionTest.php
+++ b/tests/src/Functional/EntityPrintActionTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print\Functional;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Tests\BrowserTestBase;
 
 /**
@@ -9,6 +11,8 @@ use Drupal\Tests\BrowserTestBase;
  *
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class EntityPrintActionTest extends BrowserTestBase {
 
   /**
diff --git a/tests/src/Functional/EntityPrintAdminTest.php b/tests/src/Functional/EntityPrintAdminTest.php
index 167e7fe..942306e 100644
--- a/tests/src/Functional/EntityPrintAdminTest.php
+++ b/tests/src/Functional/EntityPrintAdminTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print\Functional;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Core\Entity\Entity\EntityViewDisplay;
 use Drupal\Tests\BrowserTestBase;
 
@@ -10,6 +12,8 @@ use Drupal\Tests\BrowserTestBase;
  *
  * @group Entity Print
  */
+#[Group('Entity Print')]
+#[RunTestsInSeparateProcesses]
 class EntityPrintAdminTest extends BrowserTestBase {
 
   /**
diff --git a/tests/src/Functional/EntityPrintTest.php b/tests/src/Functional/EntityPrintTest.php
index ee5a0f7..fd2b681 100644
--- a/tests/src/Functional/EntityPrintTest.php
+++ b/tests/src/Functional/EntityPrintTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print\Functional;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Tests\BrowserTestBase;
 use Drupal\user\Entity\Role;
 
@@ -10,6 +12,8 @@ use Drupal\user\Entity\Role;
  *
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class EntityPrintTest extends BrowserTestBase {
 
   /**
diff --git a/tests/src/Functional/InstallationTest.php b/tests/src/Functional/InstallationTest.php
index 1d5ca57..18c6d41 100644
--- a/tests/src/Functional/InstallationTest.php
+++ b/tests/src/Functional/InstallationTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print\Functional;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Tests\BrowserTestBase;
 
 /**
@@ -9,6 +11,8 @@ use Drupal\Tests\BrowserTestBase;
  *
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class InstallationTest extends BrowserTestBase {
 
   /**
diff --git a/tests/src/FunctionalJavascript/EntityPrintAdminTest.php b/tests/src/FunctionalJavascript/EntityPrintAdminTest.php
index 9942b0e..382e68e 100644
--- a/tests/src/FunctionalJavascript/EntityPrintAdminTest.php
+++ b/tests/src/FunctionalJavascript/EntityPrintAdminTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print\FunctionalJavascript;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
 
 /**
@@ -9,6 +11,8 @@ use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
  *
  * @group Entity Print
  */
+#[Group('Entity Print')]
+#[RunTestsInSeparateProcesses]
 class EntityPrintAdminTest extends WebDriverTestBase {
 
   /**
diff --git a/tests/src/Kernel/EntityPrintAccessTest.php b/tests/src/Kernel/EntityPrintAccessTest.php
index 9ecdddd..2d701ae 100644
--- a/tests/src/Kernel/EntityPrintAccessTest.php
+++ b/tests/src/Kernel/EntityPrintAccessTest.php
@@ -2,6 +2,9 @@
 
 namespace Drupal\Tests\entity_print\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\entity_print\Controller\EntityPrintController;
 use Drupal\KernelTests\KernelTestBase;
@@ -13,6 +16,8 @@ use Drupal\Tests\user\Traits\UserCreationTrait;
  * @coversDefaultClass \Drupal\entity_print\Controller\EntityPrintController
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class EntityPrintAccessTest extends KernelTestBase {
 
   use UserCreationTrait;
@@ -44,7 +49,6 @@ class EntityPrintAccessTest extends KernelTestBase {
    */
   public function setUp(): void {
     parent::setUp();
-    $this->installSchema('system', ['sequences']);
     $this->installEntitySchema('user');
     $this->installEntitySchema('node');
     $this->installConfig(['system', 'node', 'filter', 'field']);
@@ -61,6 +65,7 @@ class EntityPrintAccessTest extends KernelTestBase {
    * @covers ::checkAccess
    * @dataProvider accessPermissionsDataProvider
    */
+  #[DataProvider('accessPermissionsDataProvider')]
   public function testAccessPermissions($permissions, $expected_access) {
     $id = $this->createNode()->id();
     $account = $this->createUser($permissions);
@@ -99,6 +104,7 @@ class EntityPrintAccessTest extends KernelTestBase {
    * @covers ::checkAccess
    * @dataProvider invalidRouteParametersDataProvider
    */
+  #[DataProvider('invalidRouteParametersDataProvider')]
   public function testInvalidRouteParameters($entity_type, $entity_id, $export_type) {
     $entity_id = $entity_id ?: $this->createNode()->id();
     $account = $this->createUser([
diff --git a/tests/src/Kernel/EntityPrintPluginManagerTest.php b/tests/src/Kernel/EntityPrintPluginManagerTest.php
index 0ade158..8e32667 100644
--- a/tests/src/Kernel/EntityPrintPluginManagerTest.php
+++ b/tests/src/Kernel/EntityPrintPluginManagerTest.php
@@ -2,6 +2,9 @@
 
 namespace Drupal\Tests\entity_print\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Drupal\entity_print\PrintEngineException;
 use Drupal\KernelTests\KernelTestBase;
 
@@ -9,6 +12,8 @@ use Drupal\KernelTests\KernelTestBase;
  * @coversDefaultClass \Drupal\entity_print\Plugin\EntityPrintPluginManager
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class EntityPrintPluginManagerTest extends KernelTestBase {
 
   /**
@@ -55,6 +60,7 @@ class EntityPrintPluginManagerTest extends KernelTestBase {
    * @covers ::isPrintEngineEnabled
    * @dataProvider isPrintEngineEnabledDataProvider
    */
+  #[DataProvider('isPrintEngineEnabledDataProvider')]
   public function testIsPrintEngineEnabled($plugin_id, $is_enabled) {
     $this->assertSame($this->pluginManager->isPrintEngineEnabled($plugin_id), $is_enabled);
   }
@@ -77,6 +83,7 @@ class EntityPrintPluginManagerTest extends KernelTestBase {
    * @covers ::getDisabledDefinitions
    * @dataProvider getDisabledDefinitionsDataProvider
    */
+  #[DataProvider('getDisabledDefinitionsDataProvider')]
   public function testGetDisabledDefinitions($filter, $expected_definitions) {
     $disabled_definitions = array_keys($this->pluginManager->getDisabledDefinitions($filter));
     sort($disabled_definitions);
diff --git a/tests/src/Kernel/ExtraFieldsTest.php b/tests/src/Kernel/ExtraFieldsTest.php
index 260c7ed..f125bde 100644
--- a/tests/src/Kernel/ExtraFieldsTest.php
+++ b/tests/src/Kernel/ExtraFieldsTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Core\Entity\Entity\EntityViewDisplay;
 use Drupal\Core\Session\AnonymousUserSession;
 use Drupal\KernelTests\KernelTestBase;
@@ -15,6 +17,8 @@ use Drupal\Tests\user\Traits\UserCreationTrait;
  *
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class ExtraFieldsTest extends KernelTestBase {
 
   use NodeCreationTrait;
@@ -49,7 +53,6 @@ class ExtraFieldsTest extends KernelTestBase {
     parent::setUp();
     array_map([$this, 'installEntitySchema'], ['user', 'node']);
     $this->installConfig(['system', 'filter', 'node']);
-    $this->installSchema('system', ['sequences']);
     $this->createContentType(['type' => 'page', 'display_submitted' => FALSE]);
     $this->node = $this->createNode(['body' => [['value' => 'body text']]]);
 
diff --git a/tests/src/Kernel/FilenameGeneratorTest.php b/tests/src/Kernel/FilenameGeneratorTest.php
index fabe675..217adaf 100644
--- a/tests/src/Kernel/FilenameGeneratorTest.php
+++ b/tests/src/Kernel/FilenameGeneratorTest.php
@@ -2,6 +2,9 @@
 
 namespace Drupal\Tests\entity_print\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Drupal\entity_print\FilenameGeneratorInterface;
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\Tests\node\Traits\NodeCreationTrait;
@@ -10,6 +13,8 @@ use Drupal\Tests\node\Traits\NodeCreationTrait;
  * @coversDefaultClass \Drupal\entity_print\FilenameGenerator
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class FilenameGeneratorTest extends KernelTestBase {
 
   use NodeCreationTrait;
@@ -51,6 +56,7 @@ class FilenameGeneratorTest extends KernelTestBase {
    * @covers ::generateFilename
    * @dataProvider generateFilenameDataProvider
    */
+  #[DataProvider('generateFilenameDataProvider')]
   public function testGenerateFilename($title, $expected_filename) {
     $node = $this->createNode(['title' => $title]);
     $this->assertEquals($expected_filename, $this->filenameGenerator->generateFilename([$node]));
diff --git a/tests/src/Kernel/MigrateEntityPrintTest.php b/tests/src/Kernel/MigrateEntityPrintTest.php
index 6e4c639..1ac2b22 100644
--- a/tests/src/Kernel/MigrateEntityPrintTest.php
+++ b/tests/src/Kernel/MigrateEntityPrintTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
 
 /**
@@ -9,6 +11,8 @@ use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
  *
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class MigrateEntityPrintTest extends MigrateDrupal7TestBase {
 
   /**
diff --git a/tests/src/Kernel/NodePreviewTest.php b/tests/src/Kernel/NodePreviewTest.php
index 6570bed..eb1e6f0 100644
--- a/tests/src/Kernel/NodePreviewTest.php
+++ b/tests/src/Kernel/NodePreviewTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\node\Controller\NodePreviewController;
 use Drupal\node\Entity\Node;
@@ -12,6 +14,8 @@ use Drupal\node\Entity\NodeType;
  *
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class NodePreviewTest extends KernelTestBase {
 
   /**
diff --git a/tests/src/Kernel/PostRenderSubscriberTest.php b/tests/src/Kernel/PostRenderSubscriberTest.php
index 8429022..7c131c0 100644
--- a/tests/src/Kernel/PostRenderSubscriberTest.php
+++ b/tests/src/Kernel/PostRenderSubscriberTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\entity_print\EventSubscriber\PostRenderSubscriber;
 use Drupal\entity_print\PrintEngineException;
 use Drupal\KernelTests\KernelTestBase;
@@ -10,6 +12,8 @@ use Drupal\KernelTests\KernelTestBase;
  * @coversDefaultClass \Drupal\entity_print\EventSubscriber\PostRenderSubscriber
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class PostRenderSubscriberTest extends KernelTestBase {
 
   /**
diff --git a/tests/src/Kernel/PrintBuilderTest.php b/tests/src/Kernel/PrintBuilderTest.php
index af025e4..94e83a3 100644
--- a/tests/src/Kernel/PrintBuilderTest.php
+++ b/tests/src/Kernel/PrintBuilderTest.php
@@ -2,6 +2,9 @@
 
 namespace Drupal\Tests\entity_print\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\node\Entity\NodeType;
 use Drupal\Tests\node\Traits\NodeCreationTrait;
@@ -10,6 +13,8 @@ use Drupal\Tests\node\Traits\NodeCreationTrait;
  * @coversDefaultClass \Drupal\entity_print\PrintBuilder
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class PrintBuilderTest extends KernelTestBase {
 
   use NodeCreationTrait;
@@ -46,6 +51,7 @@ class PrintBuilderTest extends KernelTestBase {
    * @covers ::deliverPrintable
    * @dataProvider outputtedFileDataProvider
    */
+  #[DataProvider('outputtedFileDataProvider')]
   public function testOutputtedFilename($print_engine_id, $file_name) {
     $print_engine = $this->container->get('plugin.manager.entity_print.print_engine')->createInstance($print_engine_id);
     $node = $this->createNode(['title' => 'myfile']);
diff --git a/tests/src/Kernel/PrintLinkTest.php b/tests/src/Kernel/PrintLinkTest.php
index c55950c..05f1fdd 100644
--- a/tests/src/Kernel/PrintLinkTest.php
+++ b/tests/src/Kernel/PrintLinkTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Core\Plugin\Context\Context;
 use Drupal\Core\Plugin\Context\ContextDefinition;
 use Drupal\KernelTests\KernelTestBase;
@@ -13,6 +15,8 @@ use Drupal\Tests\block\Traits\BlockCreationTrait;
  * @coversDefaultClass \Drupal\entity_print\Plugin\Block\PrintLinks
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class PrintLinkTest extends KernelTestBase {
 
   use BlockCreationTrait;
diff --git a/tests/src/Kernel/TranslationTest.php b/tests/src/Kernel/TranslationTest.php
index 34f446e..d15e004 100644
--- a/tests/src/Kernel/TranslationTest.php
+++ b/tests/src/Kernel/TranslationTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\entity_print\Controller\EntityPrintController;
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\language\Entity\ConfigurableLanguage;
@@ -12,6 +14,8 @@ use Drupal\Tests\node\Traits\NodeCreationTrait;
  * @coversDefaultClass \Drupal\entity_print\PrintBuilder
  * @group entity_print
  */
+#[Group('entity_print')]
+#[RunTestsInSeparateProcesses]
 class TranslationTest extends KernelTestBase {
 
   use NodeCreationTrait;
diff --git a/tests/src/Unit/AssetCollectorTest.php b/tests/src/Unit/AssetCollectorTest.php
index 8efa7d9..2064777 100644
--- a/tests/src/Unit/AssetCollectorTest.php
+++ b/tests/src/Unit/AssetCollectorTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\entity_print\Unit;
 
+use PHPUnit\Framework\Attributes\Group;
 use Drupal\Core\Extension\Extension;
 use Drupal\Core\Extension\ThemeExtensionList;
 use Drupal\Core\Extension\ThemeHandlerInterface;
@@ -15,6 +16,7 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  *
  * @group entity_print
  */
+#[Group('entity_print')]
 class AssetCollectorTest extends UnitTestCase {
 
   /**
diff --git a/tests/src/Unit/PrintEngineExceptionTest.php b/tests/src/Unit/PrintEngineExceptionTest.php
index f3792fa..e5cfddb 100644
--- a/tests/src/Unit/PrintEngineExceptionTest.php
+++ b/tests/src/Unit/PrintEngineExceptionTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\entity_print\Unit;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Drupal\entity_print\PrintEngineException;
 use Drupal\Tests\UnitTestCase;
@@ -11,6 +13,7 @@ use Drupal\Tests\UnitTestCase;
  *
  * @group entity_print
  */
+#[Group('entity_print')]
 class PrintEngineExceptionTest extends UnitTestCase {
 
   /**
@@ -28,6 +31,7 @@ class PrintEngineExceptionTest extends UnitTestCase {
    *
    * @dataProvider authorisationExceptions
    */
+  #[DataProvider('authorisationExceptions')]
   public function testAuthorisationException($message) {
     $exception = new PrintEngineException($message);
     $this->assertEquals('Authorisation failed, are your resources behind HTTP authentication? Check the admin page to set credentials.', $exception->getPrettyMessage());
