diff --git a/core/modules/field/lib/Drupal/field/Plugin/Core/Entity/Field.php b/core/modules/field/lib/Drupal/field/Plugin/Core/Entity/Field.php
index e7e9bd5..8173610 100644
--- a/core/modules/field/lib/Drupal/field/Plugin/Core/Entity/Field.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Core/Entity/Field.php
@@ -337,6 +337,32 @@ public function save() {
     // Otherwise, the field is being updated.
     else {
       $original = $storage_controller->loadUnchanged($this->id());
+      // Ensure this field ID does not exist with a different UUID.
+      if ($original->uuid != $this->uuid) {
+        throw new FieldException(format_string(
+          'Attempt to create a field @input_id with UUID @input_uuid when this field already exists with UUID @field_uuid',
+          array(
+            '@input_id' => $this->id,
+            '@input_uuid' => $this->uuid,
+            '@field_uuid' => $original->uuid,
+          )
+        ));
+      }
+      // Ensure this field UUID does not exist with a different ID.
+      $matching_fields = \Drupal::entityQuery('field_entity')
+        ->condition('uuid', $this->uuid)
+        ->execute();
+      $matched_field = current($matching_fields);
+      if (!empty($matched_field) && $matched_field['id'] != $this->id) {
+        throw new FieldException(format_string(
+          'Attempt to create a field @input_id with UUID @input_uuid when this UUID is already used for @field_id',
+          array(
+            '@input_id' => $this->id,
+            '@input_uuid' => $this->uuid,
+            '@field_id' => $matched_field['id'],
+          )
+        ));
+      }
 
       // Some updates are always disallowed.
       if ($this->type != $original->type) {
diff --git a/core/modules/field/lib/Drupal/field/Plugin/Core/Entity/FieldInstance.php b/core/modules/field/lib/Drupal/field/Plugin/Core/Entity/FieldInstance.php
index 53132ec..c6db2b4 100644
--- a/core/modules/field/lib/Drupal/field/Plugin/Core/Entity/FieldInstance.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Core/Entity/FieldInstance.php
@@ -347,7 +347,34 @@ public function save() {
         ->getStorageController($this->entityType)
         ->loadUnchanged($this->getOriginalID());
 
-      // Some updates are always disallowed.
+      // Ensure this field instance does not exist with a different UUID.
+      if ($original->uuid != $this->uuid) {
+        throw new FieldException(format_string(
+          'Attempt to create a field instance @input_id with UUID @input_uuid when this field instance already exists with UUID @instance_uuid',
+          array(
+            '@input_id' => $this->id,
+            '@input_uuid' => $this->uuid,
+            '@instance_uuid' => $original->uuid,
+          )
+        ));
+      }
+      // Ensure this UUID does not exist for a different field instance.
+      $matching_instances = \Drupal::entityQuery('field_instance')
+        ->condition('uuid', $this->uuid)
+        ->execute();
+      $matched_instance = current($matching_instances);
+      if (!empty($matched_instance) && $matched_instance['id'] != $this->id) {
+        throw new FieldException(format_string(
+          'Attempt to create a field instance @input_id with UUID @input_uuid when this UUID is already used for @instance_id',
+          array(
+            '@input_id' => $this->id,
+            '@input_uuid' => $this->uuid,
+            '@instance_id' => $matched_instance['id'],
+          )
+        ));
+      }
+
+     // Some updates are always disallowed.
       if ($this->entity_type != $original->entity_type) {
         throw new FieldException("Cannot change an existing instance's entity_type.");
       }
diff --git a/core/modules/field/lib/Drupal/field/Tests/FieldUUIDConflictTest.php b/core/modules/field/lib/Drupal/field/Tests/FieldUUIDConflictTest.php
new file mode 100644
index 0000000..a161130
--- /dev/null
+++ b/core/modules/field/lib/Drupal/field/Tests/FieldUUIDConflictTest.php
@@ -0,0 +1,108 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\field\Tests\FieldImportChangeTest.
+ */
+
+namespace Drupal\field\Tests;
+
+use Drupal\simpletest\WebTestBase;
+use Drupal\Component\Uuid\Uuid;
+use Drupal\field\FieldException;
+
+/**
+ * Tests updating fields and instances as part of config import.
+ */
+class FieldUUIDConflictTest extends FieldUnitTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('field_test_config', 'field_test');
+
+  public static function getInfo() {
+    return array(
+      'name' => 'UUID conflict',
+      'description' => 'Tests staging and importing a field with the same ID but a different UUID.',
+      'group' => 'Field API',
+    );
+  }
+
+  public function setUp() {
+    parent::setUp();
+
+    // Import the default config.
+    $this->installConfig(array('field_test_config'));
+
+    // These are the types used in field_test_config's default config.
+    $this->entity_type = 'test_entity';
+    $this->bundle = 'test_bundle';
+    $this->field_id = 'field_test_import';
+    $this->instance_id = "{$this->entity_type}.{$this->bundle}.{$this->field_id}";
+    // Load the original field and instance entities.
+    $this->original_field = entity_load('field_entity', $this->field_id);
+    $this->original_instance = entity_load('field_instance', $this->instance_id);
+
+  }
+
+  /**
+   * Tests importing an updated field instance.
+   */
+  function testChangedUUID() {
+    // Stage and attempt to import a changed field UUID.
+    $this->stageUUIDChange($this->field_id, 'field.field');
+    $this->assertNoImport();
+
+    // Stage and attempt to import a changed instance UUID.
+    $this->stageUUIDChange($this->instance_id, 'field.instance');
+    $this->assertNoImport();
+
+    // Stage and attempt to import both changed field and instance UUIDs.
+    $this->stageUUIDChange($this->field_id, 'field.field');
+    $this->stageUUIDChange($this->instance_id, 'field.instance');
+    $this->assertNoImport();
+
+  }
+
+  /**
+   * Creates and stages a copy of a configuration object with a different UUID.
+   */
+  public function stageUUIDChange($id, $prefix) {
+    // Create a copy of the object with the same ID but a different UUID.
+    $active = $this->container->get('config.storage');
+    $config = $active->read("$prefix.$id");
+    $uuid = new Uuid();
+    $new_uuid = $uuid->generate();
+    $config['uuid'] = $new_uuid;
+
+    // Clear any previously staged config and save a file in the staging
+    // directory.
+    $staging = $this->container->get('config.storage.staging');
+    $staging->deleteAll();
+    $staging->write("$prefix.$id", $config);
+  }
+
+  /**
+   * Asserts that an exception is thrown and the field data is not corrupted.
+   */
+  public function assertNoImport() {
+    // Import the content of the staging directory.
+    try {
+      config_import();
+      $this->fail('Exception thrown when attempting to import a field definition with a UUID that does not match the existing UUID.');
+    }
+    catch (FieldException $e) {
+      $this->pass(format_string('Exception %e thrown when attempting to import a field definition with a UUID that does not match the existing UUID.', array('%e' => $e)));
+    }
+
+    // Ensure that the field and instance were not corrupted.
+    $field = entity_load('field_entity', $this->field_id);
+    $instance = entity_load('field_instance', $this->instance_id);
+    $this->assertEqual($field, $this->original_field);
+    $this->assertEqual($instance, $this->original_instance);
+  }
+
+}
