diff --git a/core/modules/field/tests/src/Kernel/Migrate/d7/RollbackFieldInstanceTest.php b/core/modules/field/tests/src/Kernel/Migrate/d7/RollbackFieldInstanceTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e71ac3ce95c7efd9326f0530d50f056b34feedff
--- /dev/null
+++ b/core/modules/field/tests/src/Kernel/Migrate/d7/RollbackFieldInstanceTest.php
@@ -0,0 +1,80 @@
+<?php
+
+namespace Drupal\Tests\field\Kernel\Migrate\d7;
+
+use Drupal\field\Entity\FieldConfig;
+use Drupal\migrate\MigrateExecutable;
+
+/**
+ * Migrates and rolls back Drupal 7 fields.
+ *
+ * @group field
+ */
+class RollbackFieldInstanceTest extends MigrateFieldInstanceTest {
+
+  /**
+   * Tests migrating D7 fields to field_storage_config entities, then rolling back.
+   */
+  public function testFieldInstances() {
+    // Test that the field instances have migrated (prior to rollback).
+    parent::testFieldInstances();
+
+    $this->executeRollback('d7_field_instance');
+    $this->executeRollback('d7_field');
+
+    // Check that field instances have been rolled back.
+    $field_instance_ids = [
+      'comment.comment_node_page.comment_body',
+      'node.page.body',
+      'comment.comment_node_article.comment_body',
+      'node.article.body',
+      'node.article.field_tags',
+      'node.article.field_image',
+      'comment.comment_node_blog.comment_body',
+      'node.blog.body',
+      'comment.comment_node_book.comment_body',
+      'node.book.body',
+      'node.forum.taxonomy_forums',
+      'comment.comment_node_forum.comment_body',
+      'node.forum.body',
+      'comment.comment_node_test_content_type.comment_body',
+      'node.test_content_type.field_boolean',
+      'node.test_content_type.field_email',
+      'node.test_content_type.field_phone',
+      'node.test_content_type.field_date',
+      'node.test_content_type.field_date_with_end_time',
+      'node.test_content_type.field_file',
+      'node.test_content_type.field_float',
+      'node.test_content_type.field_images',
+      'node.test_content_type.field_integer',
+      'node.test_content_type.field_link',
+      'node.test_content_type.field_text_list',
+      'node.test_content_type.field_integer_list',
+      'node.test_content_type.field_long_text',
+      'node.test_content_type.field_term_reference',
+      'node.test_content_type.field_text',
+      'comment.comment_node_test_content_type.field_integer',
+      'user.user.field_file',
+    ];
+    foreach ($field_instance_ids as $field_instance_id) {
+      $this->assertNull(FieldConfig::load($field_instance_id));
+    }
+  }
+
+  /**
+   * Executes a single rollback.
+   *
+   * @param string|\Drupal\migrate\Plugin\MigrationInterface $migration
+   *   The migration to rollback, or its ID.
+   */
+  protected function executeRollback($migration) {
+    if (is_string($migration)) {
+      $this->migration = $this->getMigration($migration);
+    }
+    else {
+      $this->migration = $migration;
+    }
+    (new MigrateExecutable($this->migration, $this))->rollback();
+  }
+
+}
diff --git a/core/modules/migrate/src/Plugin/migrate/destination/EntityFieldInstance.php b/core/modules/migrate/src/Plugin/migrate/destination/EntityFieldInstance.php
index 54bc35843f6ecc6eae56668570cf8e043792b2dd..966cb3708b23fcff13321dd8b843b2bdd9af439e 100644
--- a/core/modules/migrate/src/Plugin/migrate/destination/EntityFieldInstance.php
+++ b/core/modules/migrate/src/Plugin/migrate/destination/EntityFieldInstance.php
@@ -21,4 +21,12 @@ public function getIds() {
     return $ids;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function rollback(array $destination_identifier) {
+    $destination_identifier = implode('.', $destination_identifier);
+    parent::rollback(array($destination_identifier));
+  }
+
 }