diff --git a/core/modules/block/src/Plugin/migrate/process/BlockPluginId.php b/core/modules/block/src/Plugin/migrate/process/BlockPluginId.php
index 8f7f9f6e36a..5a152c38846 100644
--- a/core/modules/block/src/Plugin/migrate/process/BlockPluginId.php
+++ b/core/modules/block/src/Plugin/migrate/process/BlockPluginId.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateLookupInterface;
 use Drupal\migrate\Plugin\MigrationInterface;
 use Drupal\migrate\MigrateExecutableInterface;
@@ -11,11 +12,9 @@
 use Drupal\migrate\Row;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
-/**
- * @MigrateProcessPlugin(
- *   id = "block_plugin_id"
- * )
- */
+#[MigrateProcessPlugin(
+  id: "block_plugin_id"
+)]
 class BlockPluginId extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/block/src/Plugin/migrate/process/BlockRegion.php b/core/modules/block/src/Plugin/migrate/process/BlockRegion.php
index cd79f051bcb..07e4a017901 100644
--- a/core/modules/block/src/Plugin/migrate/process/BlockRegion.php
+++ b/core/modules/block/src/Plugin/migrate/process/BlockRegion.php
@@ -3,16 +3,15 @@
 namespace Drupal\block\Plugin\migrate\process;
 
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Plugin\migrate\process\StaticMap;
 use Drupal\migrate\Row;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
-/**
- * @MigrateProcessPlugin(
- *   id = "block_region"
- * )
- */
+#[MigrateProcessPlugin(
+  id: "block_region"
+)]
 class BlockRegion extends StaticMap implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/block/src/Plugin/migrate/process/BlockSettings.php b/core/modules/block/src/Plugin/migrate/process/BlockSettings.php
index 09c30b1f2cb..5c035fa0c09 100644
--- a/core/modules/block/src/Plugin/migrate/process/BlockSettings.php
+++ b/core/modules/block/src/Plugin/migrate/process/BlockSettings.php
@@ -3,6 +3,7 @@
 namespace Drupal\block\Plugin\migrate\process;
 
 use Drupal\Core\Block\BlockPluginInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -10,10 +11,11 @@
 // cspell:ignore whois
 
 /**
- * @MigrateProcessPlugin(
- *   id = "block_settings"
- * )
+ * Determines the block settings.
  */
+#[MigrateProcessPlugin(
+  id: "block_settings"
+)]
 class BlockSettings extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/block/src/Plugin/migrate/process/BlockTheme.php b/core/modules/block/src/Plugin/migrate/process/BlockTheme.php
index 11a35bec7f3..f45d25bea42 100644
--- a/core/modules/block/src/Plugin/migrate/process/BlockTheme.php
+++ b/core/modules/block/src/Plugin/migrate/process/BlockTheme.php
@@ -3,6 +3,7 @@
 namespace Drupal\block\Plugin\migrate\process;
 
 use Drupal\Core\Config\Config;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Plugin\MigrationInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -10,11 +11,9 @@
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
-/**
- * @MigrateProcessPlugin(
- *   id = "block_theme"
- * )
- */
+#[MigrateProcessPlugin(
+  id: "block_theme"
+)]
 class BlockTheme extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/block/src/Plugin/migrate/process/BlockVisibility.php b/core/modules/block/src/Plugin/migrate/process/BlockVisibility.php
index cb365b9550c..72b7aacb38e 100644
--- a/core/modules/block/src/Plugin/migrate/process/BlockVisibility.php
+++ b/core/modules/block/src/Plugin/migrate/process/BlockVisibility.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateLookupInterface;
 use Drupal\migrate\Plugin\MigrationInterface;
 use Drupal\migrate\MigrateExecutableInterface;
@@ -12,11 +13,9 @@
 use Drupal\migrate\Row;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
-/**
- * @MigrateProcessPlugin(
- *   id = "block_visibility"
- * )
- */
+#[MigrateProcessPlugin(
+  id: "block_visibility"
+)]
 class BlockVisibility extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/FieldType.php b/core/modules/field/src/Plugin/migrate/process/FieldType.php
index a4a0fb9d42d..9c97a9451ee 100644
--- a/core/modules/field/src/Plugin/migrate/process/FieldType.php
+++ b/core/modules/field/src/Plugin/migrate/process/FieldType.php
@@ -4,6 +4,7 @@
 
 use Drupal\Component\Plugin\Exception\PluginNotFoundException;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Plugin\MigrationInterface;
 use Drupal\migrate\Plugin\migrate\process\StaticMap;
@@ -11,11 +12,9 @@
 use Drupal\migrate_drupal\Plugin\MigrateFieldPluginManagerInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
-/**
- * @MigrateProcessPlugin(
- *   id = "field_type"
- * )
- */
+#[MigrateProcessPlugin(
+  id: "field_type"
+)]
 class FieldType extends StaticMap implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/ProcessField.php b/core/modules/field/src/Plugin/migrate/process/ProcessField.php
index a8272432287..b5a5658a052 100644
--- a/core/modules/field/src/Plugin/migrate/process/ProcessField.php
+++ b/core/modules/field/src/Plugin/migrate/process/ProcessField.php
@@ -4,6 +4,7 @@
 
 use Drupal\Component\Plugin\Exception\PluginNotFoundException;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Plugin\MigrationInterface;
@@ -36,11 +37,10 @@
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
  * @see \Drupal\migrate_drupal\Plugin\MigrateFieldInterface;
- *
- * @MigrateProcessPlugin(
- *   id = "process_field"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "process_field"
+)]
 class ProcessField extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldFormatterSettingsDefaults.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldFormatterSettingsDefaults.php
index 1e9c82cd3a9..8497f746b7a 100644
--- a/core/modules/field/src/Plugin/migrate/process/d6/FieldFormatterSettingsDefaults.php
+++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldFormatterSettingsDefaults.php
@@ -2,17 +2,17 @@
 
 namespace Drupal\field\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Row;
 
 /**
  * Set the default field settings.
- *
- * @MigrateProcessPlugin(
- *   id = "field_formatter_settings_defaults"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "field_formatter_settings_defaults"
+)]
 class FieldFormatterSettingsDefaults extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php
index 99526b58009..b32f1cd837d 100644
--- a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php
+++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\field\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -9,10 +10,11 @@
 // cspell:ignore imagefield
 
 /**
- * @MigrateProcessPlugin(
- *   id = "d6_field_instance_defaults"
- * )
+ * Determines the default field settings.
  */
+#[MigrateProcessPlugin(
+  id: "d6_field_instance_defaults"
+)]
 class FieldInstanceDefaults extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php
index 5e8d2322f8d..fef8cfe348f 100644
--- a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php
+++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php
@@ -2,18 +2,18 @@
 
 namespace Drupal\field\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
 /**
  * Determines the settings property and translation for boolean fields.
- *
- * @MigrateProcessPlugin(
- *   id = "d6_field_instance_option_translation",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "d6_field_instance_option_translation",
+  handle_multiples: TRUE
+)]
 class FieldInstanceOptionTranslation extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceSettings.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceSettings.php
index ca5741b1770..e030ecfacb8 100644
--- a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceSettings.php
+++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceSettings.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\field\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -9,10 +10,11 @@
 // cspell:ignore filefield imagefield
 
 /**
- * @MigrateProcessPlugin(
- *   id = "d6_field_field_settings"
- * )
+ * Determines the field instance settings.
  */
+#[MigrateProcessPlugin(
+  id: "d6_field_field_settings"
+)]
 class FieldInstanceSettings extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php
index 4f79d7d2eac..c24f63a5acc 100644
--- a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php
+++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\field\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -10,11 +11,10 @@
 
 /**
  * Get the field instance widget settings.
- *
- * @MigrateProcessPlugin(
- *   id = "field_instance_widget_settings"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "field_instance_widget_settings"
+)]
 class FieldInstanceWidgetSettings extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldOptionTranslation.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldOptionTranslation.php
index 1976becf830..00486c96bbe 100644
--- a/core/modules/field/src/Plugin/migrate/process/d6/FieldOptionTranslation.php
+++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldOptionTranslation.php
@@ -2,18 +2,18 @@
 
 namespace Drupal\field\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
 /**
  * Determines the allowed values translation for select lists.
- *
- * @MigrateProcessPlugin(
- *   id = "d6_field_option_translation",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "d6_field_option_translation",
+  handle_multiples: TRUE
+)]
 class FieldOptionTranslation extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php
index 6e35cedabf3..4a7831063b3 100644
--- a/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php
+++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\field\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -10,11 +11,10 @@
 
 /**
  * Get the field settings.
- *
- * @MigrateProcessPlugin(
- *   id = "field_settings"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "field_settings"
+)]
 class FieldSettings extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldTypeDefaults.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldTypeDefaults.php
index 50d4e924a82..dde5fbe9aca 100644
--- a/core/modules/field/src/Plugin/migrate/process/d6/FieldTypeDefaults.php
+++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldTypeDefaults.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\field\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateExecutableInterface;
@@ -9,11 +10,10 @@
 
 /**
  * Gives us a chance to set per field defaults.
- *
- * @MigrateProcessPlugin(
- *   id = "d6_field_type_defaults"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "d6_field_type_defaults"
+)]
 class FieldTypeDefaults extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d7/FieldBundle.php b/core/modules/field/src/Plugin/migrate/process/d7/FieldBundle.php
index c9101792855..27951e3268b 100644
--- a/core/modules/field/src/Plugin/migrate/process/d7/FieldBundle.php
+++ b/core/modules/field/src/Plugin/migrate/process/d7/FieldBundle.php
@@ -3,6 +3,7 @@
 namespace Drupal\field\Plugin\migrate\process\d7;
 
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\MigrateLookupInterface;
 use Drupal\migrate\Plugin\MigrationInterface;
@@ -50,11 +51,10 @@
  *
  * @see core/modules/comment/migrations/d7_comment_type.yml
  * @see core/modules/field/migrations/d7_field_instance.yml
- *
- * * @MigrateProcessPlugin(
- *   id = "field_bundle"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "field_bundle"
+)]
 class FieldBundle extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceDefaults.php b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceDefaults.php
index fab63a67b50..1a154d4ba5f 100644
--- a/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceDefaults.php
+++ b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceDefaults.php
@@ -2,15 +2,14 @@
 
 namespace Drupal\field\Plugin\migrate\process\d7;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
-/**
- * @MigrateProcessPlugin(
- *   id = "d7_field_instance_defaults"
- * )
- */
+#[MigrateProcessPlugin(
+  id: "d7_field_instance_defaults"
+)]
 class FieldInstanceDefaults extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceOptionTranslation.php b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceOptionTranslation.php
index a3e2063183e..f4850d7d185 100644
--- a/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceOptionTranslation.php
+++ b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceOptionTranslation.php
@@ -2,18 +2,18 @@
 
 namespace Drupal\field\Plugin\migrate\process\d7;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
 /**
  * Determines the settings property and translation for boolean fields.
- *
- * @MigrateProcessPlugin(
- *   id = "d7_field_instance_option_translation",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "d7_field_instance_option_translation",
+  handle_multiples: TRUE
+)]
 class FieldInstanceOptionTranslation extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceSettings.php b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceSettings.php
index 5236e5507a3..ac1125debfc 100644
--- a/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceSettings.php
+++ b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceSettings.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\field\Plugin\migrate\process\d7;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -9,10 +10,11 @@
 // cspell:ignore entityreference
 
 /**
- * @MigrateProcessPlugin(
- *   id = "d7_field_instance_settings"
- * )
+ * Determines the field instance settings.
  */
+#[MigrateProcessPlugin(
+ id: "d7_field_instance_settings"
+)]
 class FieldInstanceSettings extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d7/FieldOptionTranslation.php b/core/modules/field/src/Plugin/migrate/process/d7/FieldOptionTranslation.php
index 4b60335f7fb..7fa31b96982 100644
--- a/core/modules/field/src/Plugin/migrate/process/d7/FieldOptionTranslation.php
+++ b/core/modules/field/src/Plugin/migrate/process/d7/FieldOptionTranslation.php
@@ -2,18 +2,18 @@
 
 namespace Drupal\field\Plugin\migrate\process\d7;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
 /**
  * Determines the allowed values translation for select lists.
- *
- * @MigrateProcessPlugin(
- *   id = "d7_field_option_translation",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "d7_field_option_translation",
+  handle_multiples: TRUE
+)]
 class FieldOptionTranslation extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d7/FieldSettings.php b/core/modules/field/src/Plugin/migrate/process/d7/FieldSettings.php
index a18e4fac998..72fb2cd145c 100644
--- a/core/modules/field/src/Plugin/migrate/process/d7/FieldSettings.php
+++ b/core/modules/field/src/Plugin/migrate/process/d7/FieldSettings.php
@@ -2,15 +2,14 @@
 
 namespace Drupal\field\Plugin\migrate\process\d7;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
-/**
- * @MigrateProcessPlugin(
- *   id = "d7_field_settings"
- * )
- */
+#[MigrateProcessPlugin(
+  id: "d7_field_settings"
+)]
 class FieldSettings extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/field/src/Plugin/migrate/process/d7/FieldTypeDefaults.php b/core/modules/field/src/Plugin/migrate/process/d7/FieldTypeDefaults.php
index 8a7267d2352..9c131054138 100644
--- a/core/modules/field/src/Plugin/migrate/process/d7/FieldTypeDefaults.php
+++ b/core/modules/field/src/Plugin/migrate/process/d7/FieldTypeDefaults.php
@@ -2,17 +2,17 @@
 
 namespace Drupal\field\Plugin\migrate\process\d7;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Row;
 
 /**
  * Gives us a chance to set per field defaults.
- *
- * @MigrateProcessPlugin(
- *   id = "d7_field_type_defaults"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "d7_field_type_defaults"
+)]
 class FieldTypeDefaults extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/file/src/Plugin/migrate/process/d6/FieldFile.php b/core/modules/file/src/Plugin/migrate/process/d6/FieldFile.php
index eb378a09699..3233904db9b 100644
--- a/core/modules/file/src/Plugin/migrate/process/d6/FieldFile.php
+++ b/core/modules/file/src/Plugin/migrate/process/d6/FieldFile.php
@@ -5,16 +5,15 @@
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\migrate\MigrateLookupInterface;
 use Drupal\migrate\Plugin\MigrationInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
-/**
- * @MigrateProcessPlugin(
- *   id = "d6_field_file"
- * )
- */
+#[MigrateProcessPlugin(
+  id: "d6_field_file"
+)]
 class FieldFile extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/file/src/Plugin/migrate/process/d6/FileUri.php b/core/modules/file/src/Plugin/migrate/process/d6/FileUri.php
index 08eb189a390..73eec2cb444 100644
--- a/core/modules/file/src/Plugin/migrate/process/d6/FileUri.php
+++ b/core/modules/file/src/Plugin/migrate/process/d6/FileUri.php
@@ -2,17 +2,17 @@
 
 namespace Drupal\file\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
 /**
  * Process the file URL into a D8 compatible URL.
- *
- * @MigrateProcessPlugin(
- *   id = "file_uri"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "file_uri"
+)]
 class FileUri extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/filter/src/Plugin/migrate/process/FilterID.php b/core/modules/filter/src/Plugin/migrate/process/FilterID.php
index 14f88408a1c..99e06c1e1ac 100644
--- a/core/modules/filter/src/Plugin/migrate/process/FilterID.php
+++ b/core/modules/filter/src/Plugin/migrate/process/FilterID.php
@@ -6,6 +6,7 @@
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\Core\StringTranslation\TranslationInterface;
 use Drupal\filter\Plugin\FilterInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\MigrateSkipProcessException;
 use Drupal\migrate\Plugin\migrate\process\StaticMap;
@@ -20,10 +21,11 @@
 // cspell:ignore shortcode spamspan typogrify wordfilter xbbcode
 
 /**
- * @MigrateProcessPlugin(
- *   id = "filter_id"
- * )
+ * Determines the filter ID.
  */
+#[MigrateProcessPlugin(
+  id: "filter_id"
+)]
 class FilterID extends StaticMap implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/filter/src/Plugin/migrate/process/FilterSettings.php b/core/modules/filter/src/Plugin/migrate/process/FilterSettings.php
index 156f29e12d5..26d8bb649be 100644
--- a/core/modules/filter/src/Plugin/migrate/process/FilterSettings.php
+++ b/core/modules/filter/src/Plugin/migrate/process/FilterSettings.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\filter\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Row;
@@ -10,12 +11,11 @@
  * Adds the default allowed attributes to filter_html's allowed_html setting.
  *
  * E.g. map '<a>' to '<a href hreflang dir>'.
- *
- * @MigrateProcessPlugin(
- *   id = "filter_settings",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "filter_settings",
+  handle_multiples: TRUE
+)]
 class FilterSettings extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/filter/src/Plugin/migrate/process/d6/FilterFormatPermission.php b/core/modules/filter/src/Plugin/migrate/process/d6/FilterFormatPermission.php
index 357d3562034..10ab0af48e7 100644
--- a/core/modules/filter/src/Plugin/migrate/process/d6/FilterFormatPermission.php
+++ b/core/modules/filter/src/Plugin/migrate/process/d6/FilterFormatPermission.php
@@ -3,6 +3,7 @@
 namespace Drupal\filter\Plugin\migrate\process\d6;
 
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\MigrateLookupInterface;
 use Drupal\migrate\Plugin\MigrationInterface;
@@ -12,12 +13,11 @@
 
 /**
  * Migrate filter format serial to string id in permission name.
- *
- * @MigrateProcessPlugin(
- *   id = "filter_format_permission",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "filter_format_permission",
+  handle_multiples: TRUE
+)]
 class FilterFormatPermission extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/forum/src/Plugin/migrate/process/ForumVocabulary.php b/core/modules/forum/src/Plugin/migrate/process/ForumVocabulary.php
index 44fad9a9a58..d30c32f79f1 100644
--- a/core/modules/forum/src/Plugin/migrate/process/ForumVocabulary.php
+++ b/core/modules/forum/src/Plugin/migrate/process/ForumVocabulary.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\forum\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -26,11 +27,10 @@
  *     plugin: forum_vocabulary
  *     machine_name: taxonomy_forums
  * @endcode
- *
- * @MigrateProcessPlugin(
- *   id = "forum_vocabulary"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "forum_vocabulary"
+)]
 class ForumVocabulary extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/image/src/Plugin/migrate/process/d6/ImageCacheActions.php b/core/modules/image/src/Plugin/migrate/process/d6/ImageCacheActions.php
index c677ca37814..39d954961dc 100644
--- a/core/modules/image/src/Plugin/migrate/process/d6/ImageCacheActions.php
+++ b/core/modules/image/src/Plugin/migrate/process/d6/ImageCacheActions.php
@@ -2,15 +2,14 @@
 
 namespace Drupal\image\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
-/**
- * @MigrateProcessPlugin(
- *   id = "d6_imagecache_actions"
- * )
- */
+#[MigrateProcessPlugin(
+  id: "d6_imagecache_actions"
+)]
 class ImageCacheActions extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/language/src/Plugin/migrate/process/ContentTranslationEnabledSetting.php b/core/modules/language/src/Plugin/migrate/process/ContentTranslationEnabledSetting.php
index 513b93343f9..308c8dee529 100644
--- a/core/modules/language/src/Plugin/migrate/process/ContentTranslationEnabledSetting.php
+++ b/core/modules/language/src/Plugin/migrate/process/ContentTranslationEnabledSetting.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\language\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -14,11 +15,10 @@
  * - The language content type, e.g. '1'
  * - The entity_translation_entity_types, an array of entity types.
  * - An entity type used with entity translation, e.g. comment.
- *
- * @MigrateProcessPlugin(
- *   id = "content_translation_enabled_setting"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "content_translation_enabled_setting"
+)]
 class ContentTranslationEnabledSetting extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/language/src/Plugin/migrate/process/LanguageDomains.php b/core/modules/language/src/Plugin/migrate/process/LanguageDomains.php
index 6a3b89e8886..bcf61b19a1c 100644
--- a/core/modules/language/src/Plugin/migrate/process/LanguageDomains.php
+++ b/core/modules/language/src/Plugin/migrate/process/LanguageDomains.php
@@ -2,18 +2,18 @@
 
 namespace Drupal\language\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Plugin\migrate\process\ArrayBuild;
 use Drupal\migrate\Row;
 
 /**
  * This plugin makes sure that no domain is empty if domain negotiation is used.
- *
- * @MigrateProcessPlugin(
- *   id = "language_domains",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "language_domains",
+  handle_multiples: TRUE
+)]
 class LanguageDomains extends ArrayBuild {
 
   /**
diff --git a/core/modules/language/src/Plugin/migrate/process/LanguageNegotiation.php b/core/modules/language/src/Plugin/migrate/process/LanguageNegotiation.php
index ad8af296ca4..d82ab02c9e2 100644
--- a/core/modules/language/src/Plugin/migrate/process/LanguageNegotiation.php
+++ b/core/modules/language/src/Plugin/migrate/process/LanguageNegotiation.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\language\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -9,12 +10,11 @@
 
 /**
  * Processes the arrays for the language types' negotiation methods and weights.
- *
- * @MigrateProcessPlugin(
- *   id = "language_negotiation",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "language_negotiation",
+  handle_multiples: TRUE
+)]
 class LanguageNegotiation extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/language/src/Plugin/migrate/process/LanguageTypes.php b/core/modules/language/src/Plugin/migrate/process/LanguageTypes.php
index bc09dd77d00..801d3389d93 100644
--- a/core/modules/language/src/Plugin/migrate/process/LanguageTypes.php
+++ b/core/modules/language/src/Plugin/migrate/process/LanguageTypes.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\language\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -9,12 +10,11 @@
 
 /**
  * Processes the array for the language types.
- *
- * @MigrateProcessPlugin(
- *   id = "language_types",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "language_types",
+  handle_multiples: TRUE
+)]
 class LanguageTypes extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/link/src/Plugin/migrate/process/FieldLink.php b/core/modules/link/src/Plugin/migrate/process/FieldLink.php
index 0bea5203a9a..4678e0b7d2c 100644
--- a/core/modules/link/src/Plugin/migrate/process/FieldLink.php
+++ b/core/modules/link/src/Plugin/migrate/process/FieldLink.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\link\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\Plugin\MigrationInterface;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -32,11 +33,10 @@
  *     uri_scheme: 'https://'
  *     source: field_link
  * @endcode
- *
- * @MigrateProcessPlugin(
- *   id = "field_link"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "field_link"
+)]
 class FieldLink extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/menu_link_content/src/Plugin/migrate/process/LinkOptions.php b/core/modules/menu_link_content/src/Plugin/migrate/process/LinkOptions.php
index af3e0998a99..f9a557fdd66 100644
--- a/core/modules/menu_link_content/src/Plugin/migrate/process/LinkOptions.php
+++ b/core/modules/menu_link_content/src/Plugin/migrate/process/LinkOptions.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\menu_link_content\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -19,12 +20,11 @@
  * @endcode
  *
  * This will convert the query options of the link.
- *
- * @MigrateProcessPlugin(
- *   id = "link_options",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "link_options",
+  handle_multiples: TRUE
+)]
 class LinkOptions extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/menu_link_content/src/Plugin/migrate/process/LinkUri.php b/core/modules/menu_link_content/src/Plugin/migrate/process/LinkUri.php
index fad8897511d..234ea1016fb 100644
--- a/core/modules/menu_link_content/src/Plugin/migrate/process/LinkUri.php
+++ b/core/modules/menu_link_content/src/Plugin/migrate/process/LinkUri.php
@@ -5,6 +5,7 @@
 use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\Core\Url;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -38,11 +39,10 @@
  * without validating if the resulting URI is valid. For example, if the
  * 'link_path' property is 'node/12', the uri property value of link will be
  * 'entity:node/12'.
- *
- * @MigrateProcessPlugin(
- *   id = "link_uri"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "link_uri"
+)]
 class LinkUri extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/ArrayBuild.php b/core/modules/migrate/src/Plugin/migrate/process/ArrayBuild.php
index acb83662fba..608350a6807 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/ArrayBuild.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/ArrayBuild.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -68,12 +69,11 @@
  * @endcode
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "array_build",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "array_build",
+  handle_multiples: TRUE
+)]
 class ArrayBuild extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/Callback.php b/core/modules/migrate/src/Plugin/migrate/process/Callback.php
index ad65bc3bedc..fca0b95f9ba 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/Callback.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/Callback.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -72,11 +73,10 @@
  * This will remove the trailing '/', if any, from a URL.
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "callback"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "callback"
+)]
 class Callback extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/Concat.php b/core/modules/migrate/src/Plugin/migrate/process/Concat.php
index 801d65d6c46..e1e79247d11 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/Concat.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/Concat.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -50,12 +51,11 @@
  * property is "Rosa", new_text_field will be "Rosa/Parks".
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "concat",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "concat",
+  handle_multiples: TRUE
+)]
 class Concat extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/DefaultValue.php b/core/modules/migrate/src/Plugin/migrate/process/DefaultValue.php
index 05229f03d1b..a7cbaaf1603 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/DefaultValue.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/DefaultValue.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Row;
@@ -40,12 +41,11 @@
  * not found, set the destination property uid to 44.
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "default_value",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "default_value",
+  handle_multiples: TRUE
+)]
 class DefaultValue extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/Download.php b/core/modules/migrate/src/Plugin/migrate/process/Download.php
index 77a2b9bae5f..795b56c5d0b 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/Download.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/Download.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\Core\File\FileSystemInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\migrate\MigrateException;
@@ -57,11 +58,10 @@
  * destination URI is unique. If a file with the same name exists at the
  * destination, a numbered suffix like '_0' will be appended to make it unique.
  * The destination URI is saved in a file entity.
- *
- * @MigrateProcessPlugin(
- *   id = "download"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "download"
+)]
 class Download extends FileProcessBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/EntityExists.php b/core/modules/migrate/src/Plugin/migrate/process/EntityExists.php
index 72f2ec39afe..017b9eba1ad 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/EntityExists.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/EntityExists.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
@@ -21,11 +22,10 @@
  *     source: tid
  *     entity_type: taxonomy_term
  * @endcode
- *
- * @MigrateProcessPlugin(
- *  id = "entity_exists"
- * )
- */
+*/
+#[MigrateProcessPlugin(
+  id: "entity_exists"
+)]
 class EntityExists extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/Explode.php b/core/modules/migrate/src/Plugin/migrate/process/Explode.php
index 38a58ed4a40..d8a0b47ef6c 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/Explode.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/Explode.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
@@ -86,11 +87,10 @@
  * configuration, if foo is '', NULL or FALSE, then bar will be [].
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "explode"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "explode",
+)]
 class Explode extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/Extract.php b/core/modules/migrate/src/Plugin/migrate/process/Extract.php
index 4af44f40fd2..3115ebad57e 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/Extract.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/Extract.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Component\Utility\Variable;
 use Drupal\migrate\ProcessPluginBase;
@@ -56,12 +57,11 @@
  * return "Default title".
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "extract",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "extract",
+  handle_multiples: TRUE
+)]
 class Extract extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/FileCopy.php b/core/modules/migrate/src/Plugin/migrate/process/FileCopy.php
index f7701ea27c5..482029014b5 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/FileCopy.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/FileCopy.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\Core\File\Exception\FileException;
 use Drupal\Core\File\FileSystemInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
@@ -46,11 +47,10 @@
  * @endcode
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "file_copy"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "file_copy"
+)]
 class FileCopy extends FileProcessBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/Flatten.php b/core/modules/migrate/src/Plugin/migrate/process/Flatten.php
index 2461b397859..053ed1378c5 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/Flatten.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/Flatten.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -36,12 +37,11 @@
  * a three items array [bar, alpha, beta], suitable for import.
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "flatten",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "flatten",
+  handle_multiples: TRUE
+)]
 class Flatten extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/FormatDate.php b/core/modules/migrate/src/Plugin/migrate/process/FormatDate.php
index 4cb76c801e4..155db1ed35b 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/FormatDate.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/FormatDate.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\Component\Datetime\DateTimePlus;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
@@ -85,11 +86,10 @@
  * @see \Drupal\Component\Datetime\DateTimePlus::__construct()
  * @see \Drupal\datetime\Plugin\Field\FieldType\DateTimeItemInterface
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "format_date"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "format_date"
+)]
 class FormatDate extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/Get.php b/core/modules/migrate/src/Plugin/migrate/process/Get.php
index b2775b3e2d9..6d8b4e83a5d 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/Get.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/Get.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Row;
@@ -86,12 +87,11 @@
  * This should occur extremely rarely.
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "get",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "get",
+  handle_multiples: TRUE
+)]
 class Get extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/Log.php b/core/modules/migrate/src/Plugin/migrate/process/Log.php
index 9ee65693bcb..67eeefc79ad 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/Log.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/Log.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -20,11 +21,10 @@
  * @endcode
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "log"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "log"
+)]
 class Log extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/MachineName.php b/core/modules/migrate/src/Plugin/migrate/process/MachineName.php
index bd3fb33b727..e7a1a64dd99 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/MachineName.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/MachineName.php
@@ -5,6 +5,7 @@
 use Drupal\Component\Transliteration\TransliterationInterface;
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\MigrateException;
@@ -57,11 +58,10 @@
  * is 'áéí!.jpg' then the destination value of bar will be 'aei_.jpg'.
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "machine_name"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "machine_name"
+)]
 class MachineName extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/MakeUniqueEntityField.php b/core/modules/migrate/src/Plugin/migrate/process/MakeUniqueEntityField.php
index 4b86fd32a45..88770cc2945 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/MakeUniqueEntityField.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/MakeUniqueEntityField.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\Plugin\MigrationInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -76,11 +77,10 @@
  *
  * @see \Drupal\migrate\Plugin\migrate\process\MakeUniqueBase
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "make_unique_entity_field"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "make_unique_entity_field"
+)]
 class MakeUniqueEntityField extends MakeUniqueBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/MenuLinkParent.php b/core/modules/migrate/src/Plugin/migrate/process/MenuLinkParent.php
index 40269578d7f..6c9bb22733e 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/MenuLinkParent.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/MenuLinkParent.php
@@ -7,6 +7,7 @@
 use Drupal\Core\Menu\MenuLinkManagerInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\Core\Url;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\MigrateLookupInterface;
 use Drupal\migrate\MigrateSkipRowException;
@@ -51,11 +52,10 @@
  *
  * @see https://www.drupal.org/docs/8/api/menu-api
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "menu_link_parent"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "menu_link_parent"
+)]
 class MenuLinkParent extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php b/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php
index 8e7ca733a9c..36c30a6be3d 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php
@@ -4,6 +4,7 @@
 
 use Drupal\Component\Plugin\Exception\PluginNotFoundException;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateLookupInterface;
 use Drupal\migrate\MigrateSkipProcessException;
@@ -119,11 +120,10 @@
  * skipped.
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "migration_lookup"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "migration_lookup"
+)]
 class MigrationLookup extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/NullCoalesce.php b/core/modules/migrate/src/Plugin/migrate/process/NullCoalesce.php
index ad08ec7f759..6772a19c901 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/NullCoalesce.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/NullCoalesce.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -29,11 +30,10 @@
  *     - baz
  * @endcode
  * This plugin will return the equivalent of `foo ?? bar ?? baz`
- *
- * @MigrateProcessPlugin(
- *   id = "null_coalesce"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "null_coalesce"
+)]
 class NullCoalesce extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/Route.php b/core/modules/migrate/src/Plugin/migrate/process/Route.php
index 90f5d96ef5e..ed260f9076f 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/Route.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/Route.php
@@ -5,6 +5,7 @@
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Drupal\Core\Path\PathValidatorInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Plugin\MigrationInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -50,11 +51,10 @@
  * (user/login) with a query string of "destination=node/1".
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "route"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "route"
+)]
 class Route extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
@@ -88,6 +88,7 @@ public static function create(ContainerInterface $container, array $configuratio
       $plugin_definition,
       $migration,
       $container->get('path.validator')
+
     );
   }
 
diff --git a/core/modules/migrate/src/Plugin/migrate/process/SkipOnEmpty.php b/core/modules/migrate/src/Plugin/migrate/process/SkipOnEmpty.php
index 4d0a7625c8a..b6f5493354b 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/SkipOnEmpty.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/SkipOnEmpty.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Row;
@@ -73,11 +74,10 @@
  * source.
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "skip_on_empty"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "skip_on_empty"
+)]
 class SkipOnEmpty extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/SkipRowIfNotSet.php b/core/modules/migrate/src/Plugin/migrate/process/SkipRowIfNotSet.php
index fa9b3f61807..84c96a7bdd1 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/SkipRowIfNotSet.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/SkipRowIfNotSet.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Row;
@@ -36,12 +37,11 @@
  * message table.
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "skip_row_if_not_set",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "skip_row_if_not_set",
+  handle_multiples: TRUE
+)]
 class SkipRowIfNotSet extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/StaticMap.php b/core/modules/migrate/src/Plugin/migrate/process/StaticMap.php
index 0d0c523425f..c746d7ceb91 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/StaticMap.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/StaticMap.php
@@ -4,6 +4,7 @@
 
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Component\Utility\Variable;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
@@ -140,11 +141,10 @@
  *
  * @see https://www.drupal.org/project/drupal/issues/2827897
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "static_map"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "static_map"
+)]
 class StaticMap extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/SubProcess.php b/core/modules/migrate/src/Plugin/migrate/process/SubProcess.php
index 2017017f2d6..501243697dd 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/SubProcess.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/SubProcess.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateExecutableInterface;
@@ -165,12 +166,11 @@
  * @see \Drupal\migrate\Plugin\migrate\process\MigrationLookup
  * @see \Drupal\migrate\Plugin\migrate\process\StaticMap
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "sub_process",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "sub_process",
+  handle_multiples: TRUE
+)]
 class SubProcess extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/Substr.php b/core/modules/migrate/src/Plugin/migrate/process/Substr.php
index 45835f153cd..b2b286b1753 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/Substr.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/Substr.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Row;
@@ -60,11 +61,10 @@
  * @endcode
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "substr"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "substr"
+)]
 class Substr extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/src/Plugin/migrate/process/UrlEncode.php b/core/modules/migrate/src/Plugin/migrate/process/UrlEncode.php
index be7b2e150eb..9cc00b71526 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/UrlEncode.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/UrlEncode.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\ProcessPluginBase;
@@ -24,11 +25,10 @@
  * into 'http://example.com/a%20url%20with%20spaces.html'.
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "urlencode"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "urlencode"
+)]
 class UrlEncode extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate/tests/modules/migrate_prepare_row_test/src/Plugin/migrate/process/TestSkipRowProcess.php b/core/modules/migrate/tests/modules/migrate_prepare_row_test/src/Plugin/migrate/process/TestSkipRowProcess.php
index b1540888ac1..4a618afbf29 100644
--- a/core/modules/migrate/tests/modules/migrate_prepare_row_test/src/Plugin/migrate/process/TestSkipRowProcess.php
+++ b/core/modules/migrate/tests/modules/migrate_prepare_row_test/src/Plugin/migrate/process/TestSkipRowProcess.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate_prepare_row_test\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\MigrateSkipRowException;
 use Drupal\migrate\ProcessPluginBase;
@@ -9,11 +10,10 @@
 
 /**
  * Provides a testing process plugin that skips rows.
- *
- * @MigrateProcessPlugin(
- *   id = "test_skip_row_process"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "test_skip_row_process"
+)]
 class TestSkipRowProcess extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeLookup.php b/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeLookup.php
index 2c2defce033..9db7d676bd8 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeLookup.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeLookup.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate_drupal\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -17,11 +18,10 @@
  * returned. This keeps the behavior the same as the classic node migration.
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "node_complete_node_lookup"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "node_complete_node_lookup"
+)]
 class NodeCompleteNodeLookup extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeRevisionLookup.php b/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeRevisionLookup.php
index f1bc5a9d3cc..80e408509b6 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeRevisionLookup.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeRevisionLookup.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate_drupal\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -17,11 +18,10 @@
  * returned. This keeps the behavior the same as the classic node migration.
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "node_complete_node_revision_lookup"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "node_complete_node_revision_lookup"
+)]
 class NodeCompleteNodeRevisionLookup extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeTranslationLookup.php b/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeTranslationLookup.php
index 36b193eb28e..f8e268af7f1 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeTranslationLookup.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeTranslationLookup.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\migrate_drupal\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -18,11 +19,10 @@
  * migration.
  *
  * @see \Drupal\migrate\Plugin\MigrateProcessInterface
- *
- * @MigrateProcessPlugin(
- *   id = "node_complete_node_translation_lookup"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "node_complete_node_translation_lookup"
+)]
 class NodeCompleteNodeTranslationLookup extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/node/src/Plugin/migrate/process/d6/NodeUpdate7008.php b/core/modules/node/src/Plugin/migrate/process/d6/NodeUpdate7008.php
index f6da2eb5dcc..f8a8af0d38d 100644
--- a/core/modules/node/src/Plugin/migrate/process/d6/NodeUpdate7008.php
+++ b/core/modules/node/src/Plugin/migrate/process/d6/NodeUpdate7008.php
@@ -2,17 +2,17 @@
 
 namespace Drupal\node\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
 /**
  * Split the 'administer nodes' permission from 'access content overview'.
- *
- * @MigrateProcessPlugin(
- *   id = "node_update_7008"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "node_update_7008"
+)]
 class NodeUpdate7008 extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/path/src/Plugin/migrate/process/PathSetTranslated.php b/core/modules/path/src/Plugin/migrate/process/PathSetTranslated.php
index b982d2b3482..b2d6a28ee13 100644
--- a/core/modules/path/src/Plugin/migrate/process/PathSetTranslated.php
+++ b/core/modules/path/src/Plugin/migrate/process/PathSetTranslated.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\path\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -49,11 +50,10 @@
  * In the example above, if the node_translation lookup succeeds and the
  * original path is of the format '/node/<original node nid>', then the new path
  * will be set to '/node/<translated node nid>'
- *
- * @MigrateProcessPlugin(
- *   id = "path_set_translated"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "path_set_translated"
+)]
 class PathSetTranslated extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/responsive_image/src/Plugin/migrate/process/ImageStyleMappings.php b/core/modules/responsive_image/src/Plugin/migrate/process/ImageStyleMappings.php
index 30f40bae988..eb9c01c6f08 100644
--- a/core/modules/responsive_image/src/Plugin/migrate/process/ImageStyleMappings.php
+++ b/core/modules/responsive_image/src/Plugin/migrate/process/ImageStyleMappings.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\responsive_image\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -9,11 +10,10 @@
 
 /**
  * Transforms image style mappings.
- *
- * @MigrateProcessPlugin(
- *   id = "image_style_mappings"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "image_style_mappings"
+)]
 class ImageStyleMappings extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/search/src/Plugin/migrate/process/SearchConfigurationRankings.php b/core/modules/search/src/Plugin/migrate/process/SearchConfigurationRankings.php
index f35bdfe7bcd..791288405fb 100644
--- a/core/modules/search/src/Plugin/migrate/process/SearchConfigurationRankings.php
+++ b/core/modules/search/src/Plugin/migrate/process/SearchConfigurationRankings.php
@@ -2,17 +2,17 @@
 
 namespace Drupal\search\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\Row;
 
 /**
  * Generate configuration rankings.
- *
- * @MigrateProcessPlugin(
- *   id = "search_configuration_rankings"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "search_configuration_rankings"
+)]
 class SearchConfigurationRankings extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/system/src/Plugin/migrate/process/d6/SystemUpdate7000.php b/core/modules/system/src/Plugin/migrate/process/d6/SystemUpdate7000.php
index 7bb64c023bc..49876afd03f 100644
--- a/core/modules/system/src/Plugin/migrate/process/d6/SystemUpdate7000.php
+++ b/core/modules/system/src/Plugin/migrate/process/d6/SystemUpdate7000.php
@@ -2,17 +2,17 @@
 
 namespace Drupal\system\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
 /**
  * Rename blog and forum permissions to be consistent with other content types.
- *
- * @MigrateProcessPlugin(
- *   id = "system_update_7000"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "system_update_7000"
+)]
 class SystemUpdate7000 extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/system/src/Plugin/migrate/process/d6/TimeZone.php b/core/modules/system/src/Plugin/migrate/process/d6/TimeZone.php
index 7d11beea194..fc89a38132f 100644
--- a/core/modules/system/src/Plugin/migrate/process/d6/TimeZone.php
+++ b/core/modules/system/src/Plugin/migrate/process/d6/TimeZone.php
@@ -2,17 +2,17 @@
 
 namespace Drupal\system\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
 /**
  * Process the D6 Timezone offset into a D8 compatible timezone name.
- *
- * @MigrateProcessPlugin(
- *   id = "timezone"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "timezone"
+)]
 class TimeZone extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/taxonomy/src/Plugin/migrate/process/TargetBundle.php b/core/modules/taxonomy/src/Plugin/migrate/process/TargetBundle.php
index 5741908c876..0e9f5e5cf89 100644
--- a/core/modules/taxonomy/src/Plugin/migrate/process/TargetBundle.php
+++ b/core/modules/taxonomy/src/Plugin/migrate/process/TargetBundle.php
@@ -2,17 +2,17 @@
 
 namespace Drupal\taxonomy\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
 /**
  * Converts a Drupal 6 vocabulary ID to a target bundle array.
- *
- * @MigrateProcessPlugin(
- *   id = "target_bundle"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "target_bundle"
+)]
 class TargetBundle extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/user/src/Plugin/migrate/process/ConvertTokens.php b/core/modules/user/src/Plugin/migrate/process/ConvertTokens.php
index ed95db27157..4844358df99 100644
--- a/core/modules/user/src/Plugin/migrate/process/ConvertTokens.php
+++ b/core/modules/user/src/Plugin/migrate/process/ConvertTokens.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\user\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
@@ -9,12 +10,11 @@
 
 /**
  * Plugin to replace !tokens with [tokens].
- *
- * @MigrateProcessPlugin(
- *   id = "convert_tokens",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "convert_tokens",
+  handle_multiples: TRUE
+)]
 class ConvertTokens extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/user/src/Plugin/migrate/process/ProfileFieldSettings.php b/core/modules/user/src/Plugin/migrate/process/ProfileFieldSettings.php
index 6e16c59d5b2..313110e0153 100644
--- a/core/modules/user/src/Plugin/migrate/process/ProfileFieldSettings.php
+++ b/core/modules/user/src/Plugin/migrate/process/ProfileFieldSettings.php
@@ -2,15 +2,14 @@
 
 namespace Drupal\user\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
-/**
- * @MigrateProcessPlugin(
- *   id = "profile_field_settings"
- * )
- */
+#[MigrateProcessPlugin(
+  id: "profile_field_settings"
+)]
 class ProfileFieldSettings extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/user/src/Plugin/migrate/process/UserLangcode.php b/core/modules/user/src/Plugin/migrate/process/UserLangcode.php
index 174c8a557c1..fce81ffcad6 100644
--- a/core/modules/user/src/Plugin/migrate/process/UserLangcode.php
+++ b/core/modules/user/src/Plugin/migrate/process/UserLangcode.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Language\LanguageManager;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -11,11 +12,10 @@
 
 /**
  * Provides a process plugin for the user langcode.
- *
- * @MigrateProcessPlugin(
- *   id = "user_langcode"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "user_langcode"
+)]
 class UserLangcode extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
diff --git a/core/modules/user/src/Plugin/migrate/process/UserUpdate8002.php b/core/modules/user/src/Plugin/migrate/process/UserUpdate8002.php
index 9ba582d46b4..ee55c1f00f0 100644
--- a/core/modules/user/src/Plugin/migrate/process/UserUpdate8002.php
+++ b/core/modules/user/src/Plugin/migrate/process/UserUpdate8002.php
@@ -2,17 +2,17 @@
 
 namespace Drupal\user\Plugin\migrate\process;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
 /**
  * Keep the predefined roles for rid 1 and 2.
- *
- * @MigrateProcessPlugin(
- *   id = "user_update_8002"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "user_update_8002"
+)]
 class UserUpdate8002 extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/user/src/Plugin/migrate/process/d6/ProfileFieldOptionTranslation.php b/core/modules/user/src/Plugin/migrate/process/d6/ProfileFieldOptionTranslation.php
index 4f78e193f02..ad047f0476a 100644
--- a/core/modules/user/src/Plugin/migrate/process/d6/ProfileFieldOptionTranslation.php
+++ b/core/modules/user/src/Plugin/migrate/process/d6/ProfileFieldOptionTranslation.php
@@ -2,18 +2,18 @@
 
 namespace Drupal\user\Plugin\migrate\process\d6;
 
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
 
 /**
  * Determines the settings property and translation.
- *
- * @MigrateProcessPlugin(
- *   id = "d6_profile_field_option_translation",
- *   handle_multiples = TRUE
- * )
  */
+#[MigrateProcessPlugin(
+  id: "d6_profile_field_option_translation",
+  handle_multiples: TRUE
+)]
 class ProfileFieldOptionTranslation extends ProcessPluginBase {
 
   /**
diff --git a/core/modules/user/src/Plugin/migrate/process/d6/UserUpdate7002.php b/core/modules/user/src/Plugin/migrate/process/d6/UserUpdate7002.php
index 84f6dfecc22..72dc4501df9 100644
--- a/core/modules/user/src/Plugin/migrate/process/d6/UserUpdate7002.php
+++ b/core/modules/user/src/Plugin/migrate/process/d6/UserUpdate7002.php
@@ -3,6 +3,7 @@
 namespace Drupal\user\Plugin\migrate\process\d6;
 
 use Drupal\Core\Datetime\TimeZoneFormHelper;
+use Drupal\migrate\Attribute\MigrateProcessPlugin;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -12,11 +13,10 @@
 
 /**
  * Converts user time zones from time zone offsets to time zone names.
- *
- * @MigrateProcessPlugin(
- *   id = "user_update_7002"
- * )
  */
+#[MigrateProcessPlugin(
+  id: "user_update_7002"
+)]
 class UserUpdate7002 extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
