diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
index 77ffa8c..83ba467 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
@@ -51,7 +51,8 @@ public function getOriginalID() {
    * since each configuration entity is unique.
    */
   final public function isNew() {
-    return !$this->id();
+    $id = $this->id();
+    return isset($id);
   }
 
   /**
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php
index 532979c..ced86b9 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php
@@ -78,13 +78,15 @@ function testCRUD() {
     // Rename the configuration entity's ID/machine name.
     $this->assertLinkByHref('admin/structure/config_test/manage/' . $id);
     $edit = array(
-      'id' => strtolower($this->randomName()),
+      'id' => '0',
       'label' => $label3,
     );
     $this->drupalPost('admin/structure/config_test/manage/' . $id, $edit, 'Save');
     $this->assertResponse(200);
     $this->assertNoText($label1);
     $this->assertText($label3);
+    $this->drupalGet('admin/structure/config_test/manage/' . $edit['id']);
+    $this->assertResponse(200);
   }
 
 }
diff --git a/core/modules/config/tests/config_test/config_test.module b/core/modules/config/tests/config_test/config_test.module
index 44df4da..455324e 100644
--- a/core/modules/config/tests/config_test/config_test.module
+++ b/core/modules/config/tests/config_test/config_test.module
@@ -217,6 +217,7 @@ function config_test_form($form, &$form_state, ConfigTest $config_test = NULL) {
       // @todo Update form_process_machine_name() to use 'label' by default.
       'source' => array('label'),
     ),
+    '#disabled' => !$config_test->isNew(),
   );
   $form['style'] = array(
     '#type' => 'select',
