diff --git a/core/modules/migrate/src/Plugin/migrate/source/EmbeddedDataSource.php b/core/modules/migrate/src/Plugin/migrate/source/EmbeddedDataSource.php
index 158b3a8914..1541143171 100644
--- a/core/modules/migrate/src/Plugin/migrate/source/EmbeddedDataSource.php
+++ b/core/modules/migrate/src/Plugin/migrate/source/EmbeddedDataSource.php
@@ -42,8 +42,7 @@
  * @see \Drupal\migrate\Plugin\migrate\source\SourcePluginBase
  *
  * @MigrateSource(
- *   id = "embedded_data",
- *   source_module = "migrate"
+ *   id = "embedded_data"
  * )
  */
 class EmbeddedDataSource extends SourcePluginBase {
diff --git a/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php b/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php
index 123eb9c4cb..6fa8c44161 100644
--- a/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php
+++ b/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php
@@ -23,8 +23,7 @@
  * @see \Drupal\migrate\Plugin\migrate\source\SourcePluginBase
  *
  * @MigrateSource(
- *   id = "empty",
- *   source_module = "migrate"
+ *   id = "empty"
  * )
  */
 class EmptySource extends SourcePluginBase {
diff --git a/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php b/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php
index a3925d50d8..cd6b5437c7 100644
--- a/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php
+++ b/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php
@@ -631,9 +631,6 @@ public function getSourceModule() {
     if (!empty($this->configuration['source_module'])) {
       return $this->configuration['source_module'];
     }
-    elseif (!empty($this->pluginDefinition['source_module'])) {
-      return $this->pluginDefinition['source_module'];
-    }
     return NULL;
   }
 
diff --git a/core/modules/migrate/tests/modules/migrate_cache_counts_test/src/Plugin/migrate/source/CacheableEmbeddedDataSource.php b/core/modules/migrate/tests/modules/migrate_cache_counts_test/src/Plugin/migrate/source/CacheableEmbeddedDataSource.php
index 47dd1b7330..648377954c 100644
--- a/core/modules/migrate/tests/modules/migrate_cache_counts_test/src/Plugin/migrate/source/CacheableEmbeddedDataSource.php
+++ b/core/modules/migrate/tests/modules/migrate_cache_counts_test/src/Plugin/migrate/source/CacheableEmbeddedDataSource.php
@@ -9,8 +9,7 @@
  * A copy of embedded_data which allows caching the count.
  *
  * @MigrateSource(
- *   id = "cacheable_embedded_data",
- *   source_module = "migrate"
+ *   id = "cacheable_embedded_data"
  * )
  */
 class CacheableEmbeddedDataSource extends EmbeddedDataSource {
diff --git a/core/modules/migrate/tests/modules/migrate_external_translated_test/src/Plugin/migrate/source/MigrateExternalTranslatedTestSource.php b/core/modules/migrate/tests/modules/migrate_external_translated_test/src/Plugin/migrate/source/MigrateExternalTranslatedTestSource.php
index 8edaeccdea..ceda6d82e4 100644
--- a/core/modules/migrate/tests/modules/migrate_external_translated_test/src/Plugin/migrate/source/MigrateExternalTranslatedTestSource.php
+++ b/core/modules/migrate/tests/modules/migrate_external_translated_test/src/Plugin/migrate/source/MigrateExternalTranslatedTestSource.php
@@ -8,8 +8,7 @@
  * A simple migrate source for our tests.
  *
  * @MigrateSource(
- *   id = "migrate_external_translated_test",
- *   source_module = "migrate_external_translated_test"
+ *   id = "migrate_external_translated_test"
  * )
  */
 class MigrateExternalTranslatedTestSource extends SourcePluginBase {
diff --git a/core/modules/migrate_drupal/src/MigrationPluginManager.php b/core/modules/migrate_drupal/src/MigrationPluginManager.php
index 0233de21a1..82f729d37c 100644
--- a/core/modules/migrate_drupal/src/MigrationPluginManager.php
+++ b/core/modules/migrate_drupal/src/MigrationPluginManager.php
@@ -96,11 +96,11 @@ public function processDefinition(&$definition, $plugin_id) {
     // enforcement.
     $applied_tags = array_intersect($this->getEnforcedSourceModuleTags(), $definition['migration_tags']);
     if ($applied_tags) {
-      // Throw an exception if the source plugin definition does not define a
-      // source_module.
+      // Throw an exception if the source plugin has migrate_drupal as a
+      // provider but does not define a source_module.
       $source_id = $definition['source']['plugin'];
       $source_definition = $this->sourceManager->getDefinition($source_id);
-      if (empty($source_definition['source_module'])) {
+      if (in_array('migrate_drupal', $source_definition['provider'], TRUE) && empty($source_definition['source_module'])) {
         throw new BadPluginDefinitionException($source_id, 'source_module');
       }
     }
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php
index 0df37ea256..e31c89141c 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php
@@ -189,4 +189,20 @@ public function calculateDependencies() {
     return $this->dependencies;
   }
 
+  /**
+   * Gets the source module providing the source data.
+   *
+   * @return string|null
+   *   The source module or NULL if not found.
+   */
+  public function getSourceModule() {
+    $source_module = parent::getSourceModule();
+    if ($source_module === NULL) {
+      if (!empty($this->pluginDefinition['source_module'])) {
+        $source_module = $this->pluginDefinition['source_module'];
+      }
+    }
+    return $source_module;
+  }
+
 }
diff --git a/core/modules/migrate/tests/src/Kernel/Plugin/MigrationProvidersExistTest.php b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/MigrationProvidersExistTest.php
similarity index 96%
rename from core/modules/migrate/tests/src/Kernel/Plugin/MigrationProvidersExistTest.php
rename to core/modules/migrate_drupal/tests/src/Kernel/Plugin/MigrationProvidersExistTest.php
index cdf6fd894d..4a95d908dc 100644
--- a/core/modules/migrate/tests/src/Kernel/Plugin/MigrationProvidersExistTest.php
+++ b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/MigrationProvidersExistTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\Tests\migrate\Kernel\Plugin;
+namespace Drupal\Tests\migrate_drupal\Kernel\Plugin;
 
 use Drupal\KernelTests\FileSystemModuleDiscoveryDataProviderTrait;
 use Drupal\migrate\Plugin\Exception\BadPluginDefinitionException;
@@ -38,8 +38,10 @@ public function testProvidersExist() {
     $plugin_manager = $this->container->get('plugin.manager.migrate.source');
 
     foreach ($plugin_manager->getDefinitions() as $definition) {
-      $id = $definition['id'];
-      $this->assertArrayHasKey('source_module', $definition, "No source_module property in '$id'");
+      if (in_array('migrate_drupal', $definition['provider'], TRUE)) {
+        $id = $definition['id'];
+        $this->assertArrayHasKey('source_module', $definition, "No source_module property in '$id'");
+      }
     }
   }
 
