diff --git a/src/EventSubscriber/UwDeleteFormEventSubscriber.php b/src/EventSubscriber/UwDeleteFormEventSubscriber.php
new file mode 100644
index 0000000000000000000000000000000000000000..6d6616459b2d634320a71cb78b35a125f6a39be3
--- /dev/null
+++ b/src/EventSubscriber/UwDeleteFormEventSubscriber.php
@@ -0,0 +1,130 @@
+<?php
+
+namespace Drupal\uw_cfg_common\EventSubscriber;
+
+use Drupal\Core\Session\AccountProxyInterface;
+use Drupal\core_event_dispatcher\Event\Form\FormAlterEvent;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+use Drupal\core_event_dispatcher\FormHookEvents;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+/**
+ * UW content type delete form event subscriber.
+ */
+class UwDeleteFormEventSubscriber implements EventSubscriberInterface {
+
+  use StringTranslationTrait;
+
+  /**
+   * Current user.
+   *
+   * @var \Drupal\Core\Session\AccountProxyInterface
+   */
+  protected $currentUser;
+
+  /**
+   * Default constructor.
+   *
+   * @param \Drupal\Core\Session\AccountProxyInterface $currentUser
+   *   Current user.
+   */
+  public function __construct(AccountProxyInterface $currentUser) {
+    $this->currentUser = $currentUser;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getSubscribedEvents() {
+    return [
+      FormHookEvents::FORM_ALTER => 'alterForm',
+    ];
+  }
+
+  /**
+   * Alter form.
+   *
+   * @param \Drupal\core_event_dispatcher\Event\Form\FormAlterEvent $event
+   *   The event.
+   */
+  public function alterForm(FormAlterEvent $event): void {
+    $form = &$event->getForm();
+
+    // Define all names in an array.
+    $names = [
+      'ct_names' => [
+        'uw_ct_blog',
+        'uw_ct_contact',
+        'uw_ct_catalog_item',
+        'uw_ct_event',
+        'uw_ct_expand_collapse_group',
+        'uw_ct_news_item',
+        'uw_ct_opportunity',
+        'uw_ct_profile',
+        'uw_ct_project',
+        'uw_ct_service',
+        'uw_ct_sidebar',
+        'uw_ct_site_footer',
+        'uw_ct_web_page',
+      ],
+      'vocab_names' => [
+        'uw_vocab_blog_tags',
+        'uw_vocab_contact_group',
+        'uw_vocab_audience',
+        'uw_vocab_catalog_categories',
+        'uw_vocab_catalogs',
+        'uw_tax_event_tags',
+        'uw_tax_event_type',
+        'uw_vocab_news_tags',
+        'uw_vocab_profile_type',
+        'uw_vocab_project_roles',
+        'uw_vocab_project_topics',
+        'uw_vocab_service_categories',
+      ],
+      'media_names' => [
+        'uw_mt_file',
+        'uw_mt_icon',
+        'uw_mt_image',
+        'uw_mt_local_video',
+        'uw_mt_remote_video',
+        'uw_mt_vimeo_banner_video',
+      ],
+    ];
+
+    // Loop all names in array.
+    foreach ($names as $key => $type_names) {
+      foreach ($type_names as $name) {
+        $custom_waring_message = $this->t('CAUTION. This will permanently delete this piece of content; this action cannot be undone. If anything references this content, it may cause visual or structural issues on that page. Make sure you have removed or updated all references before deleting.');
+
+        // Use custom warning message for deleting nodes, terms and medias.
+        // The user has 'delete any' and 'delete own' permissions.
+        if ($key == 'ct_names') {
+          if (($form['#form_id'] == 'node_' . $name . '_delete_form') &&
+            ($this->currentUser->hasPermission('delete any ' . $name . ' content') ||
+              $this->currentUser->hasPermission('delete own ' . $name . ' content'))) {
+            $form['description']['#markup'] = $custom_waring_message;
+            break;
+          }
+        }
+        // The user has 'delete terms' permission.
+        if ($key == 'vocab_names') {
+          if (($form['#form_id'] == 'taxonomy_term_' . $name . '_delete_form') &&
+            $this->currentUser->hasPermission('delete terms in ' . $name)) {
+            $form['description']['#markup'] = $custom_waring_message;
+            break;
+          }
+        }
+        // The user has 'delete any' permission.
+        if ($key == 'media_names') {
+          if (($form['#form_id'] == 'media_' . $name . '_delete_form') &&
+            ($this->currentUser->hasPermission('delete any ' . $name . ' media') ||
+              $this->currentUser->hasPermission('delete own ' . $name . ' media'))) {
+            $form['description']['#markup'] = $custom_waring_message;
+            break;
+          }
+        }
+      }
+    }
+  }
+
+}
diff --git a/uw_cfg_common.module b/uw_cfg_common.module
index 0b6fb6c8961ccc0f409c3c0a6e9ccdd01fafff06..987b038418f55ad283ea3779efebce145b2e9386 100644
--- a/uw_cfg_common.module
+++ b/uw_cfg_common.module
@@ -847,85 +847,6 @@ function uw_cfg_common_preprocess_responsive_image(&$variables) {
  */
 function uw_cfg_common_form_alter(array &$form, FormStateInterface $form_state, string $form_id): void {
 
-  // Define all names in an array.
-  $names = [
-    'ct_names' => [
-      'uw_ct_blog',
-      'uw_ct_contact',
-      'uw_ct_catalog_item',
-      'uw_ct_event',
-      'uw_ct_expand_collapse_group',
-      'uw_ct_news_item',
-      'uw_ct_opportunity',
-      'uw_ct_profile',
-      'uw_ct_project',
-      'uw_ct_service',
-      'uw_ct_sidebar',
-      'uw_ct_site_footer',
-      'uw_ct_web_page',
-    ],
-    'vocab_names' => [
-      'uw_vocab_blog_tags',
-      'uw_vocab_contact_group',
-      'uw_vocab_audience',
-      'uw_vocab_catalog_categories',
-      'uw_vocab_catalogs',
-      'uw_tax_event_tags',
-      'uw_tax_event_type',
-      'uw_vocab_news_tags',
-      'uw_vocab_profile_type',
-      'uw_vocab_project_roles',
-      'uw_vocab_project_topics',
-      'uw_vocab_service_categories',
-    ],
-    'media_names' => [
-      'uw_mt_file',
-      'uw_mt_icon',
-      'uw_mt_image',
-      'uw_mt_local_video',
-      'uw_mt_remote_video',
-      'uw_mt_vimeo_banner_video',
-    ],
-  ];
-
-  // Get current user.
-  $user = \Drupal::currentUser();
-
-  // Loop all names in array.
-  foreach ($names as $key => $type_names) {
-    foreach ($type_names as $name) {
-      $custom_waring_message = t('CAUTION. This will permanently delete this piece of content; this action cannot be undone. If anything references this content, it may cause visual or structural issues on that page. Make sure you have removed or updated all references before deleting.');
-
-      // Use custom warning message for deleting nodes, terms and medias.
-      // The user has 'delete any' and 'delete own' permissions.
-      if ($key == 'ct_names') {
-        if (($form_id == 'node_' . $name . '_delete_form') &&
-          ($user->hasPermission('delete any ' . $name . ' content') ||
-            $user->hasPermission('delete own ' . $name . ' content'))) {
-          $form['description']['#markup'] = $custom_waring_message;
-          break;
-        }
-      }
-      // The user has 'delete terms' permission.
-      if ($key == 'vocab_names') {
-        if (($form_id == 'taxonomy_term_' . $name . '_delete_form') &&
-          $user->hasPermission('delete terms in ' . $name)) {
-          $form['description']['#markup'] = $custom_waring_message;
-          break;
-        }
-      }
-      // The user has 'delete any' permission.
-      if ($key == 'media_names') {
-        if (($form_id == 'media_' . $name . '_delete_form') &&
-          ($user->hasPermission('delete any ' . $name . ' media') ||
-           $user->hasPermission('delete own ' . $name . ' media'))) {
-          $form['description']['#markup'] = $custom_waring_message;
-          break;
-        }
-      }
-    }
-  }
-
   // ISTWCMS-4648: removing revisions from layout builder page.
   if (\Drupal::routeMatch()->getRouteName() == 'layout_builder.overrides.node.view') {
     $form['revision']['#access'] = FALSE;
diff --git a/uw_cfg_common.services.yml b/uw_cfg_common.services.yml
index c6e53b8a8763123e3c906d16da48a8c9e22e2943..28b61b8481a2f13712ad66e001f919d78e633167 100644
--- a/uw_cfg_common.services.yml
+++ b/uw_cfg_common.services.yml
@@ -34,6 +34,11 @@ services:
     class: '\Drupal\uw_cfg_common\EventSubscriber\UwLayoutBuilderEventSubscriber'
     tags:
       - { name: 'event_subscriber' }
+  uw_delete_form.event_subscriber:
+    class: '\Drupal\uw_cfg_common\EventSubscriber\UwDeleteFormEventSubscriber'
+    arguments: ['@current_user']
+    tags:
+      - { name: 'event_subscriber' }
   uw_cfg_common.features:
     class: Drupal\uw_cfg_common\Helpers\UwFeatureRevert
     arguments: ['@features.manager', '@config_update.config_update']