diff --git a/core/modules/field/src/Entity/FieldStorageConfig.php b/core/modules/field/src/Entity/FieldStorageConfig.php
index 00883d6..b4aed4f 100644
--- a/core/modules/field/src/Entity/FieldStorageConfig.php
+++ b/core/modules/field/src/Entity/FieldStorageConfig.php
@@ -7,6 +7,7 @@
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\Core\Field\FieldException;
+use Drupal\Core\Field\FieldItemInterface;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\Core\TypedData\OptionsProviderInterface;
 use Drupal\field\FieldStorageConfigInterface;
@@ -254,6 +255,11 @@ public function __construct(array $values, $entity_type = 'field_storage_config'
     }
 
     parent::__construct($values, $entity_type);
+
+    // @see \Drupal\Tests\options\Kernel\OptionsFieldTest::testReImportAllowedValues()
+    $field_item_class = $this->getFieldItemClass();
+    $this->settings = $field_item_class::storageSettingsToConfigData($this->settings);
+    $this->settings = $field_item_class::storageSettingsFromConfigData($this->settings);
   }
 
   /**
@@ -776,6 +782,9 @@ public function getUniqueStorageIdentifier() {
 
   /**
    * Helper to retrieve the field item class.
+   *
+   * @return FieldItemInterface
+   *   An instance of field item.
    */
   protected function getFieldItemClass() {
     $type_definition = \Drupal::typedDataManager()
diff --git a/core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php b/core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php
index aaea32f..ab7e04f 100644
--- a/core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php
+++ b/core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php
@@ -277,7 +277,7 @@ public static function storageSettingsFromConfigData(array $settings) {
    *   Allowed values were the array key is the 'value' value, the value is
    *   the 'label' value.
    *
-   * @see Drupal\options\Plugin\Field\FieldType\ListItemBase::structureAllowedValues()
+   * @see \Drupal\options\Plugin\Field\FieldType\ListItemBase::structureAllowedValues()
    */
   protected static function simplifyAllowedValues(array $structured_values) {
     $values = array();
@@ -302,13 +302,14 @@ protected static function simplifyAllowedValues(array $structured_values) {
    *   Array of items with a 'value' and 'label' key each for the allowed
    *   values.
    *
-   * @see Drupal\options\Plugin\Field\FieldType\ListItemBase::simplifyAllowedValues()
+   * @see \Drupal\options\Plugin\Field\FieldType\ListItemBase::simplifyAllowedValues()
    */
   protected static function structureAllowedValues(array $values) {
     $structured_values = array();
     foreach ($values as $value => $label) {
       if (is_array($label)) {
-        $label = static::structureAllowedValues($label);
+        $value = $label['value'];
+        $label = $label['label'];
       }
       $structured_values[] = array(
         'value' => static::castAllowedValue($value),
diff --git a/core/modules/options/tests/src/Kernel/OptionsFieldTest.php b/core/modules/options/tests/src/Kernel/OptionsFieldTest.php
index 89ac127..d624064 100644
--- a/core/modules/options/tests/src/Kernel/OptionsFieldTest.php
+++ b/core/modules/options/tests/src/Kernel/OptionsFieldTest.php
@@ -15,16 +15,9 @@
 class OptionsFieldTest extends OptionsFieldUnitTestBase {
 
   /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = array('options');
-
-  /**
    * Test that allowed values can be updated.
    */
-  function testUpdateAllowedValues() {
+  public function testUpdateAllowedValues() {
     // All three options appear.
     $entity = EntityTest::create();
     $form = \Drupal::service('entity.form_builder')->getForm($entity);
@@ -97,4 +90,59 @@ function testUpdateAllowedValues() {
     $this->entityValidateAndSave($entity);
   }
 
+  /**
+   * Tests re-importing allowed values.
+   */
+  public function testReImportAllowedValues() {
+    // Forming the name of config to read.
+    $field_storage_config_name = sprintf(
+      'field.storage.%s.%s',
+      $this->fieldStorageDefinition['entity_type'],
+      $this->fieldStorageDefinition['field_name']
+    );
+
+    // Read the configuration of field storage.
+    $field_storage_config = $this->container->get('config.storage')
+      ->read($field_storage_config_name);
+
+    // Create an entity with the field to use it.
+    $entity = EntityTest::create();
+    $entity->{$this->fieldName}->value = 3;
+    $entity->save();
+
+    // The values in "$field_storage_config['settings']['allowed_values']"
+    // will have the next format:
+    //
+    // @code
+    // [
+    //   [
+    //     'value' => '1',
+    //     'label' => 'One',
+    //   ],
+    // ];
+    // @endcode
+    //
+    // This format of storing used by configuration files and, before
+    // comparison, we need to process the data. Otherwise we will have
+    // different structures of the same sets of data and will get the
+    // wrong error that existing keys cannot be changed. To clarify the
+    // understanding, we will pass a set of data, structured as described
+    // above, as first argument into array_diff_keys() and the next
+    // structure - as a second one:
+    //
+    // @code
+    // [
+    //   1 => 'One',
+    // ];
+    // @endcode
+    //
+    // @see options_field_storage_config_update_forbid()
+
+    // Override the configuration.
+    FieldStorageConfig::create($field_storage_config)
+      ->set('uuid', $this->fieldStorage->uuid())
+      ->enforceIsNew(FALSE)
+      ->save();
+  }
+
 }
