diff --git a/core/modules/migrate/src/Plugin/migrate/builder/BuilderBase.php b/core/modules/migrate/src/Plugin/migrate/builder/BuilderBase.php
index b03078c..92a65be 100644
--- a/core/modules/migrate/src/Plugin/migrate/builder/BuilderBase.php
+++ b/core/modules/migrate/src/Plugin/migrate/builder/BuilderBase.php
@@ -24,7 +24,7 @@
    * @param array $configuration
    *   (optional) Additional configuration for the plugin.
    *
-   * @return \Drupal\migrate\Plugin\MigrateSourceInterface
+   * @return \Drupal\migrate\Plugin\MigrateSourceInterface|\Drupal\migrate\Plugin\RequirementsInterface
    *   The fully initialized source plugin.
    */
   protected function getSourcePlugin($plugin_id, array $configuration = []) {
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/builder/d6/CckMigration.php b/core/modules/migrate_drupal/src/Plugin/migrate/builder/d6/CckMigration.php
index e870808..30b739e 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/builder/d6/CckMigration.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/builder/d6/CckMigration.php
@@ -8,6 +8,8 @@
 namespace Drupal\migrate_drupal\Plugin\migrate\builder\d6;
 
 use Drupal\migrate\Entity\Migration;
+use Drupal\migrate\Exception\RequirementsException;
+use Drupal\migrate\Plugin\RequirementsInterface;
 use Drupal\migrate_drupal\Plugin\migrate\builder\CckBuilder;
 
 /**
@@ -28,8 +30,20 @@ class CckMigration extends CckBuilder {
   public function buildMigrations(array $template) {
     $migration = Migration::create($template);
 
+    $source_plugin = $migration->getSourcePlugin();
+    // The source plugin will throw RequirementsException if CCK is not enabled,
+    // in which case there is nothing else for us to do.
+    if ($source_plugin instanceof RequirementsInterface) {
+      try {
+        $source_plugin->checkRequirements();
+      }
+      catch (RequirementsException $e) {
+        return [$migration];
+      }
+    }
+
     // Loop through every field that will be migrated.
-    foreach ($migration->getSourcePlugin() as $field) {
+    foreach ($source_plugin as $field) {
       $field_type = $field->getSourceProperty('type');
 
       // Each field type should only be processed once.
diff --git a/core/modules/node/src/Plugin/migrate/builder/d6/Node.php b/core/modules/node/src/Plugin/migrate/builder/d6/Node.php
index 4eaba23..ca97842 100644
--- a/core/modules/node/src/Plugin/migrate/builder/d6/Node.php
+++ b/core/modules/node/src/Plugin/migrate/builder/d6/Node.php
@@ -8,6 +8,7 @@
 namespace Drupal\node\Plugin\migrate\builder\d6;
 
 use Drupal\migrate\Entity\Migration;
+use Drupal\migrate\Exception\RequirementsException;
 use Drupal\migrate_drupal\Plugin\migrate\builder\CckBuilder;
 
 /**
@@ -23,9 +24,17 @@ public function buildMigrations(array $template) {
 
     // Read all CCK field instance definitions in the source database.
     $fields = array();
-    foreach ($this->getSourcePlugin('d6_field_instance', $template['source']) as $field) {
-      $info = $field->getSource();
-      $fields[$info['type_name']][$info['field_name']] = $info;
+    $source_plugin = $this->getSourcePlugin('d6_field_instance', $template['source']);
+    try {
+      $source_plugin->checkRequirements();
+
+      foreach ($source_plugin as $field) {
+        $info = $field->getSource();
+        $fields[$info['type_name']][$info['field_name']] = $info;
+      }
+    }
+    catch (RequirementsException $e) {
+      // Don't do anything; $fields will be empty.
     }
 
     foreach ($this->getSourcePlugin('d6_node_type', $template['source']) as $row) {
