diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
index 330f39c..2a60d12 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
@@ -88,6 +88,27 @@ public function set($property_name, $value, $langcode = NULL) {
   }
 
   /**
+   * Implements Drupal\Core\Config\Entity\ConfigEntityInterface::enable().
+   */
+  public function enable() {
+    return entity_get_controller($this->entityType)->enable($this);
+  }
+
+  /**
+   * Implements Drupal\Core\Config\Entity\ConfigEntityInterface::disable().
+   */
+  public function disable() {
+    return entity_get_controller($this->entityType)->disable($this);
+  }
+
+  /**
+   * Implements Drupal\Core\Config\Entity\ConfigEntityInterface::isEnabled().
+   */
+  public function isEnabled() {
+    return entity_get_controller($this->entityType)->isEnabled($this);
+  }
+
+  /**
    * Overrides Entity::createDuplicate().
    */
   public function createDuplicate() {
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityInterface.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityInterface.php
index 15ef4dd..9321404 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityInterface.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityInterface.php
@@ -32,4 +32,21 @@ public function getOriginalID();
    */
   public function setOriginalID($id);
 
+  /*
+   * Sets the configuration entity status to enabled.
+   */
+  public function enable();
+
+  /**
+   * Sets the configuration entity status to disabled.
+   */
+  public function disable();
+
+  /**
+   * Returns whether the configuration entity is enabled.
+   *
+   * @return bool
+   */
+  public function isEnabled();
+
 }
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityListController.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityListController.php
index 3977310..d068007 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityListController.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityListController.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\Core\Config\Entity;
 
+use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityListController;
 
 /**
@@ -23,4 +24,37 @@ public function load() {
     return $entities;
   }
 
+  /**
+   * Overrides Drupal\Core\Entity\EntityListController::getOperations();
+   */
+  public function getOperations(EntityInterface $entity) {
+    $operations = parent::getOperations($entity);
+    $uri = $entity->uri();
+    $path = $uri['path'];
+
+    if ($this->getStorageController()->statusKey()) {
+      debug('TRUE');
+      if (!$entity->isEnabled()) {
+        $operations['enable'] = array(
+          'title' => t('Enable'),
+          'ajax' => TRUE,
+          'token' => TRUE,
+          'href' => $uri['path'] . '/enable',
+          'weight' => -10,
+        );
+      }
+      else {
+        $operations['disable'] = array(
+          'title' => t('Disable'),
+          'ajax' => TRUE,
+          'token' => TRUE,
+          'href' => $uri['path'] . '/disable',
+          'weight' => 10,
+        );
+      }
+    }
+
+    return $operations;
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
index 6d0a3f4..98857d3 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
@@ -57,6 +57,13 @@ class ConfigStorageController implements EntityStorageControllerInterface {
   protected $uuidKey = 'uuid';
 
   /**
+   * Name of the entity's status key.
+   *
+   * @var string
+   */
+  protected $statusKey = NULL;
+
+  /**
    * Implements Drupal\Core\Entity\EntityStorageControllerInterface::__construct().
    *
    * Sets basic variables.
@@ -66,6 +73,10 @@ public function __construct($entityType) {
     $this->entityInfo = entity_get_info($entityType);
     $this->hookLoadArguments = array();
     $this->idKey = $this->entityInfo['entity_keys']['id'];
+
+    if (isset($this->entityInfo['entity_keys']['status'])) {
+      $this->statusKey = $this->entityInfo['entity_keys']['status'];
+    }
   }
 
   /**
@@ -237,6 +248,45 @@ public function create(array $values) {
   }
 
   /**
+   * Enables a configuration entity.
+   */
+  public function enable(EntityInterface $entity) {
+    if ($this->statusKey) {
+      $entity->set($this->statusKey, TRUE);
+      return $entity->save();
+    }
+  }
+
+  /**
+   * Disables a configuration entity.
+   */
+  public function disable(EntityInterface $entity) {
+    if ($this->statusKey) {
+      $entity->set($this->statusKey, FALSE);
+      return $entity->save();
+    }
+  }
+
+  /**
+   * Determines status, if a configuration entity is enabled or not.
+   */
+  public function isEnabled(EntityInterface $entity) {
+    if ($this->statusKey) {
+      return $entity->get($this->statusKey);
+    }
+
+    // If there is no status key available, assume the status is enabled.
+    return TRUE;
+  }
+
+  /**
+   * Returns the status key for this configuration entity type, if any.
+   */
+  public function statusKey() {
+    return $this->statusKey;
+  }
+
+  /**
    * Implements Drupal\Core\Entity\EntityStorageControllerInterface::delete().
    */
   public function delete(array $entities) {
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php
index 13f5a76..46f623b 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php
@@ -54,19 +54,27 @@ function testList() {
     $expected_operations = array(
       'edit' => array (
         'title' => 'Edit',
-        'href' => 'admin/structure/config_test/manage/default/edit',
+        'href' => $uri['path'] . '/edit',
         'options' => $uri['options'],
         'weight' => 10,
       ),
       'delete' => array (
         'title' => 'Delete',
-        'href' => 'admin/structure/config_test/manage/default/delete',
+        'href' => $uri['path'] . '/delete',
         'options' => $uri['options'],
         'weight' => 100,
       ),
+      'disable' => array(
+        'title' => t('Disable'),
+        'ajax' => TRUE,
+        'token' => TRUE,
+        'href' => $uri['path'] . '/disable',
+        'weight' => 10,
+      ),
     );
+
     $actual_operations = $controller->getOperations($entity);
-    $this->assertIdentical($expected_operations, $actual_operations, 'Return value from getOperations matches expected.');
+    $this->assertIdentical($expected_operations, $actual_operations);
 
     // Test buildHeader() method.
     $expected_items = array(
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php
index bb98ac0..7e9769f 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php
@@ -174,6 +174,16 @@ function testCRUD() {
       // Verify that originalID points to new ID directly after renaming.
       $this->assertIdentical($config_test->id(), $new_id);
       $this->assertIdentical($config_test->getOriginalID(), $new_id);
+
+      // Test the enabling/disabling of entities.
+      $new = entity_create('config_test', array('id' => strtolower($this->randomName())));
+      $new->save();
+
+      $this->assertTrue($new->isEnabled(), 'The entity is enabled.');
+      $new->disable();
+      $this->assertFalse($new->isEnabled(), 'The entity is disabled.');
+      $new->enable();
+      $this->assertTrue($new->isEnabled(), 'The entity is enabled.');
     }
   }
 
@@ -252,6 +262,27 @@ function testCRUDUI() {
     $this->assertNoLinkByHref("admin/structure/config_test/manage/$id/edit");
     $id = $edit['id'];
     $this->assertLinkByHref("admin/structure/config_test/manage/$id/edit");
+
+    $id = strtolower($this->randomName());
+    $edit = array(
+      'id' => $id,
+      'label' => $this->randomName(),
+    );
+    $this->drupalPost('admin/structure/config_test/add', $edit, 'Save');
+
+    // Disable an entity.
+    $disable_path = "admin/structure/config_test/manage/$id/disable";
+    $this->assertLinkByHref($disable_path);
+    $this->drupalGet($disable_path);
+    $this->assertResponse(200);
+    $this->assertNoLinkByHref($disable_path);
+
+    // Enable an entity.
+    $enable_path = "admin/structure/config_test/manage/$id/enable";
+    $this->assertLinkByHref($enable_path);
+    $this->drupalGet($enable_path);
+    $this->assertResponse(200);
+    $this->assertNoLinkByHref($enable_path);
   }
 
 }
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigImportTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigImportTest.php
index 95089f7..2617e44 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigImportTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigImportTest.php
@@ -107,6 +107,7 @@ function testNew() {
       'uuid' => '30df59bd-7b03-4cf7-bb35-d42fc49f0651',
       'label' => 'New',
       'style' => '',
+      'disabled' => '0',
       'langcode' => 'und',
     );
     $staging->write($dynamic_name, $original_dynamic_data);
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php
index dd24224..5ec83fc 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php
@@ -59,6 +59,7 @@ function testImport() {
       'uuid' => '30df59bd-7b03-4cf7-bb35-d42fc49f0651',
       'label' => 'New',
       'style' => '',
+      'disabled' => '0',
       'langcode' => 'und',
     );
     $staging->write($dynamic_name, $original_dynamic_data);
diff --git a/core/modules/config/tests/config_test/config/config_test.dynamic.default.yml b/core/modules/config/tests/config_test/config/config_test.dynamic.default.yml
index 3e50e3b..2ad95bd 100644
--- a/core/modules/config/tests/config_test/config/config_test.dynamic.default.yml
+++ b/core/modules/config/tests/config_test/config/config_test.dynamic.default.yml
@@ -1,2 +1,3 @@
 id: default
 label: Default
+status: 1
diff --git a/core/modules/config/tests/config_test/config_test.module b/core/modules/config/tests/config_test/config_test.module
index 96d4aa0..fc7bd21 100644
--- a/core/modules/config/tests/config_test/config_test.module
+++ b/core/modules/config/tests/config_test/config_test.module
@@ -6,6 +6,7 @@
  */
 
 use Drupal\config_test\Plugin\Core\Entity\ConfigTest;
+use Symfony\Component\HttpFoundation\RedirectResponse;
 
 require_once dirname(__FILE__) . '/config_test.hooks.inc';
 
@@ -116,6 +117,18 @@ function config_test_menu() {
     'access callback' => TRUE,
     'type' => MENU_LOCAL_TASK,
   );
+  $items['admin/structure/config_test/manage/%config_test/enable'] = array(
+    'title' => 'Enable',
+    'page callback' => 'config_test_entity_enable',
+    'page arguments' => array(4),
+    'access callback' => TRUE,
+  );
+  $items['admin/structure/config_test/manage/%config_test/disable'] = array(
+    'title' => 'Disable',
+    'page callback' => 'config_test_entity_disable',
+    'page arguments' => array(4),
+    'access callback' => TRUE,
+  );
   return $items;
 }
 
@@ -197,4 +210,26 @@ function config_test_cache_flush() {
   $GLOBALS['hook_cache_flush'] = __FUNCTION__;
 
   return array();
-}
\ No newline at end of file
+}
+
+/**
+ * Enables a ConfigTest object.
+ *
+ * @param Drupal\config_test\ConfigTest $config_test
+ *   The ConfigTest object to enable.
+ */
+function config_test_entity_enable(ConfigTest $config_test) {
+  $config_test->enable();
+  return new RedirectResponse(url('admin/structure/config_test', array('absolute' => TRUE)));
+}
+
+/**
+ * Disables a ConfigTest object.
+ *
+ * @param Drupal\config_test\ConfigTest $config_test
+ *   The ConfigTest object to disable.
+ */
+function config_test_entity_disable(ConfigTest $config_test) {
+  $config_test->disable();
+  return new RedirectResponse(url('admin/structure/config_test', array('absolute' => TRUE)));
+}
diff --git a/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTest.php b/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTest.php
index 8690b2a..ae9ee9b 100644
--- a/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTest.php
+++ b/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTest.php
@@ -28,7 +28,8 @@
  *   entity_keys = {
  *     "id" = "id",
  *     "label" = "label",
- *     "uuid" = "uuid"
+ *     "uuid" = "uuid",
+ *     "status" = "status"
  *   }
  * )
  */
@@ -62,4 +63,11 @@ class ConfigTest extends ConfigEntityBase {
    */
   public $style;
 
+  /**
+   * The enabled/disabled status of the configuration entity.
+   *
+   * @var string
+   */
+  public $status;
+
 }
diff --git a/core/modules/views/lib/Drupal/views/Plugin/Core/Entity/View.php b/core/modules/views/lib/Drupal/views/Plugin/Core/Entity/View.php
index 3f39af8..b4de058 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/Core/Entity/View.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/Core/Entity/View.php
@@ -33,7 +33,8 @@
  *   entity_keys = {
  *     "id" = "name",
  *     "label" = "human_name",
- *     "uuid" = "uuid"
+ *     "uuid" = "uuid",
+ *     "status" = "status"
  *   }
  * )
  */
@@ -109,16 +110,6 @@ class View extends ConfigEntityBase implements ViewStorageInterface {
   protected $base_field = 'nid';
 
   /**
-   * Returns whether the view's status is disabled or not.
-   *
-   * This value is used for exported view, to provide some default views which
-   * aren't enabled.
-   *
-   * @var bool
-   */
-  protected $disabled = FALSE;
-
-  /**
    * The UUID for this entity.
    *
    * @var string
@@ -140,6 +131,13 @@ class View extends ConfigEntityBase implements ViewStorageInterface {
   protected $module = 'views';
 
   /**
+   * The enabled/disabled status of the view.
+   *
+   * @var string
+   */
+  protected $status;
+
+  /**
    * Overrides Drupal\Core\Entity\EntityInterface::get().
    */
   public function get($property_name, $langcode = NULL) {
@@ -168,29 +166,6 @@ public function id() {
   }
 
   /**
-   * Implements Drupal\views\ViewStorageInterface::enable().
-   */
-  public function enable() {
-    $this->disabled = FALSE;
-    $this->save();
-  }
-
-  /**
-   * Implements Drupal\views\ViewStorageInterface::disable().
-   */
-  public function disable() {
-    $this->disabled = TRUE;
-    $this->save();
-  }
-
-  /**
-   * Implements Drupal\views\ViewStorageInterface::isEnabled().
-   */
-  public function isEnabled() {
-    return !$this->disabled;
-  }
-
-  /**
    * Return the human readable name for a view.
    *
    * When a certain view doesn't have a human readable name return the machine readable name.
diff --git a/core/modules/views/lib/Drupal/views/ViewStorageController.php b/core/modules/views/lib/Drupal/views/ViewStorageController.php
index 05268d2..a79b94a 100644
--- a/core/modules/views/lib/Drupal/views/ViewStorageController.php
+++ b/core/modules/views/lib/Drupal/views/ViewStorageController.php
@@ -109,7 +109,7 @@ protected function getProperties(EntityInterface $entity) {
       'base_table',
       'core',
       'description',
-      'disabled',
+      'status',
       'display',
       'human_name',
       'module',
diff --git a/core/modules/views/lib/Drupal/views/ViewStorageInterface.php b/core/modules/views/lib/Drupal/views/ViewStorageInterface.php
index 01bb87d..9bd3ba5 100644
--- a/core/modules/views/lib/Drupal/views/ViewStorageInterface.php
+++ b/core/modules/views/lib/Drupal/views/ViewStorageInterface.php
@@ -13,22 +13,4 @@
  * Defines an interface for View storage classes.
  */
 interface ViewStorageInterface extends \IteratorAggregate, ConfigEntityInterface {
-
-  /**
-   * Sets the configuration entity status to enabled.
-   */
-  public function enable();
-
-  /**
-   * Sets the configuration entity status to disabled.
-   */
-  public function disable();
-
-  /**
-   * Returns whether the configuration entity is enabled.
-   *
-   * @return bool
-   */
-  public function isEnabled();
-
 }
