diff --git a/automatic_updates.services.yml b/automatic_updates.services.yml
index c61b581d9735fdd26e630956e5d5183650bebb1c..4ad9a1001c01edd8701e3e86c92c0d5057009bb4 100644
--- a/automatic_updates.services.yml
+++ b/automatic_updates.services.yml
@@ -18,12 +18,6 @@ services:
       - '@package_manager.cleaner'
       - '@event_dispatcher'
       - '@tempstore.shared'
-  automatic_updates.update_refresh_subscriber:
-    class: Drupal\automatic_updates\Event\UpdateRefreshSubscriber
-    arguments:
-      - '@update.manager'
-    tags:
-      - { name: event_subscriber }
   automatic_updates.excluded_paths_subscriber:
     class: Drupal\automatic_updates\Event\ExcludedPathsSubscriber
     arguments:
diff --git a/src/Event/UpdateRefreshSubscriber.php b/package_manager/src/EventSubscriber/UpdateDataSubscriber.php
similarity index 70%
rename from src/Event/UpdateRefreshSubscriber.php
rename to package_manager/src/EventSubscriber/UpdateDataSubscriber.php
index a336783a2dd6610ad925e8fae8fcea266308d2f4..5b422b4be7621b56306dfc1d7678cf7aa3633b26 100644
--- a/src/Event/UpdateRefreshSubscriber.php
+++ b/package_manager/src/EventSubscriber/UpdateDataSubscriber.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\automatic_updates\Event;
+namespace Drupal\package_manager\EventSubscriber;
 
 use Drupal\package_manager\Event\PostApplyEvent;
 use Drupal\update\UpdateManagerInterface;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
- * Clears stale update data once a staged update has been committed.
+ * Clears stale update data once staged changes have been applied.
  */
-class UpdateRefreshSubscriber implements EventSubscriberInterface {
+class UpdateDataSubscriber implements EventSubscriberInterface {
 
   /**
    * The update manager service.
@@ -30,6 +30,10 @@ class UpdateRefreshSubscriber implements EventSubscriberInterface {
 
   /**
    * Clears stale update data.
+   *
+   * This will always run after any staging area is applied to the active
+   * directory, since it's likely that core and/or multiple extensions have been
+   * added, removed, or updated.
    */
   public function clearData(): void {
     $this->updateManager->refreshUpdateData();
diff --git a/package_manager/src/PackageManagerServiceProvider.php b/package_manager/src/PackageManagerServiceProvider.php
new file mode 100644
index 0000000000000000000000000000000000000000..3d74d54d355c2bd60c9115d47a3af4a8805167dc
--- /dev/null
+++ b/package_manager/src/PackageManagerServiceProvider.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Drupal\package_manager;
+
+use Drupal\Core\DependencyInjection\ContainerBuilder;
+use Drupal\Core\DependencyInjection\ServiceProviderBase;
+use Drupal\package_manager\EventSubscriber\UpdateDataSubscriber;
+use Symfony\Component\DependencyInjection\Reference;
+
+/**
+ * Defines dynamic container services for Package Manager.
+ */
+class PackageManagerServiceProvider extends ServiceProviderBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function register(ContainerBuilder $container) {
+    parent::register($container);
+
+    if (array_key_exists('update', $container->getParameter('container.modules'))) {
+      $container->register('package_manager.update_data_subscriber')
+        ->setClass(UpdateDataSubscriber::class)
+        ->setArguments([
+          new Reference('update.manager'),
+        ])
+        ->addTag('event_subscriber');
+    }
+  }
+
+}
diff --git a/src/Validator/StagedProjectsValidator.php b/src/Validator/StagedProjectsValidator.php
index 71d003e19db15d98526e36a6bac8977e8bce5639..c3ad1e878bb680a1cc53d5f84207a3ac05a6662c 100644
--- a/src/Validator/StagedProjectsValidator.php
+++ b/src/Validator/StagedProjectsValidator.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\automatic_updates\Validator;
 
+use Drupal\automatic_updates\Updater;
 use Drupal\package_manager\Event\PreApplyEvent;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\Core\StringTranslation\TranslationInterface;
@@ -32,6 +33,11 @@ final class StagedProjectsValidator implements EventSubscriberInterface {
    */
   public function validateStagedProjects(PreApplyEvent $event): void {
     $stage = $event->getStage();
+    // We only want to do this check if the stage belongs to Automatic Updates.
+    if (!$stage instanceof Updater) {
+      return;
+    }
+
     try {
       $active_packages = $stage->getActiveComposer()->getDrupalExtensionPackages();
       $staged_packages = $stage->getStageComposer()->getDrupalExtensionPackages();