diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
index 330f39c..bad7ca5 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
@@ -26,6 +26,13 @@
   protected $originalID;
 
   /**
+   * Returns whether the configuration entity's status is disabled or not.
+   *
+   * @var bool
+   */
+  public $disabled;
+
+  /**
    * Overrides Entity::__construct().
    */
   public function __construct(array $values, $entity_type) {
@@ -37,6 +44,8 @@ public function __construct(array $values, $entity_type) {
     if ($original_id !== NULL && $original_id !== '') {
       $this->setOriginalID($original_id);
     }
+
+    $this->disabled = !$this->isEnabled();
   }
 
   /**
@@ -53,6 +62,28 @@ public function setOriginalID($id) {
     $this->originalID = $id;
   }
 
+  /*
+   * 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() {
+    $disabled = entity_get_controller($this->entityType)->getStatus($this);
+    return ($disabled !== NULL) ? !$disabled : !$this->disabled;
+  }
+
   /**
    * Overrides Entity::isNew().
    *
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..0c7afa9 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,34 @@ 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 (!$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..2c53c13 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
@@ -336,6 +336,60 @@ public function save(EntityInterface $entity) {
   }
 
   /**
+   * Enables a configuration entity.
+   *
+   * @param Drupal\Core\Entity\EntityInterface $entity
+   */
+  public function enable(EntityInterface $entity) {
+    return $this->setStatus($entity, FALSE);
+  }
+
+  /**
+   * Disables a configuration entity.
+   *
+   * @param Drupal\Core\Entity\EntityInterface $entity
+   */
+  public function disable(EntityInterface $entity) {
+    return $this->setStatus($entity, TRUE);
+  }
+
+  /**
+   * Gets the entity status from the configuration manifest file.
+   *
+   * @param Drupal\Core\Entity\EntityInterface $entity
+   */
+  public function getStatus(EntityInterface $entity) {
+    return $this->getManifest()->get($entity->id() . '.disabled');
+  }
+
+  /**
+   * Saves the entity status to the conifguration manifest file.
+   *
+   * @param \Drupal\Core\Entity\EntityInterface $entity
+   *   The entity to set the status for.
+   * @param bool $status
+   *   The disabled status to set to configuration entity to.
+   *
+   * @return \Drupal\Core\Entity\EntityInterface $entity
+   *   The saved configuration object.
+   */
+  protected function setStatus(EntityInterface $entity, $status) {
+    $manifest = $this->getManifest();
+    $manifest->set($entity->id() . '.disabled', $status);
+    return $manifest->save();
+  }
+
+  /**
+   * Returns a manifest configuration object for this entity type.
+   *
+   * @return Drupal\Core\Config\Config
+   *   A configuration object.
+   */
+  protected function getManifest() {
+    return config('manifest.' . $this->entityInfo['config_prefix']);
+  }
+
+  /**
    * Retrieves the exportable properties of an entity.
    *
    * @param \Drupal\Core\Entity\EntityInterface $entity
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/tests/config_test/config_test.module b/core/modules/config/tests/config_test/config_test.module
index ea4c0a8..88969ec 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;
 }
 
@@ -188,3 +201,25 @@ function config_test_delete_form_submit($form, &$form_state) {
   drupal_set_message(format_string('%label configuration has been deleted.', array('%label' => $form_state['config_test']->label())));
   $form_state['redirect'] = 'admin/structure/config_test';
 }
+
+/**
+ * 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/views/lib/Drupal/views/Plugin/Core/Entity/View.php b/core/modules/views/lib/Drupal/views/Plugin/Core/Entity/View.php
index 409128e..26c122e 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
@@ -104,16 +104,6 @@ class View extends ConfigEntityBase implements ViewStorageInterface {
   public $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
-   */
-  public $disabled = FALSE;
-
-  /**
    * The UUID for this entity.
    *
    * @var string
@@ -203,29 +193,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/ViewStorageInterface.php b/core/modules/views/lib/Drupal/views/ViewStorageInterface.php
index b29fa03..94d79cd 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 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();
-
 }
