diff --git a/core/lib/Drupal/Core/Entity/EntityAccessController.php b/core/lib/Drupal/Core/Entity/EntityAccessController.php
index b43c112..b092914 100644
--- a/core/lib/Drupal/Core/Entity/EntityAccessController.php
+++ b/core/lib/Drupal/Core/Entity/EntityAccessController.php
@@ -129,6 +129,9 @@ protected function processAccessHookResults(array $access) {
    *   could not be determined.
    */
   protected function checkAccess(EntityInterface $entity, $operation, $langcode, AccountInterface $account) {
+    if ($operation == 'delete' && $entity->isNew()) {
+      return FALSE;
+    }
     if ($admin_permission = $this->entityType->getAdminPermission()) {
       return $account->hasPermission($admin_permission);
     }
diff --git a/core/lib/Drupal/Core/Entity/EntityFormController.php b/core/lib/Drupal/Core/Entity/EntityFormController.php
index 4e7f961..744db4a 100644
--- a/core/lib/Drupal/Core/Entity/EntityFormController.php
+++ b/core/lib/Drupal/Core/Entity/EntityFormController.php
@@ -168,11 +168,7 @@ public function processForm($element, $form_state, $form) {
   protected function actionsElement(array $form, array &$form_state) {
     $element = $this->actions($form, $form_state);
 
-    // We cannot delete an entity that has not been created yet.
-    if ($this->entity->isNew()) {
-      unset($element['delete']);
-    }
-    elseif (isset($element['delete'])) {
+    if (isset($element['delete'])) {
       // Move the delete action as last one, unless weights are explicitly
       // provided.
       $delete = $element['delete'];
@@ -219,6 +215,7 @@ protected function actions(array $form, array &$form_state) {
       ),
       'delete' => array(
         '#value' => $this->t('Delete'),
+        '#access' => $this->entity->access('delete'),
         // No need to validate the form when deleting the entity.
         '#submit' => array(
           array($this, 'delete'),
diff --git a/core/modules/contact/lib/Drupal/contact/Entity/Message.php b/core/modules/contact/lib/Drupal/contact/Entity/Message.php
index ff35420..7aa1faf 100644
--- a/core/modules/contact/lib/Drupal/contact/Entity/Message.php
+++ b/core/modules/contact/lib/Drupal/contact/Entity/Message.php
@@ -47,6 +47,13 @@ public function id() {
   /**
    * {@inheritdoc}
    */
+  public function uuid() {
+    return NULL;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function isPersonal() {
     return $this->bundle() == 'personal';
   }
diff --git a/core/modules/contact/lib/Drupal/contact/MessageFormController.php b/core/modules/contact/lib/Drupal/contact/MessageFormController.php
index 2058887..e82f3aa 100644
--- a/core/modules/contact/lib/Drupal/contact/MessageFormController.php
+++ b/core/modules/contact/lib/Drupal/contact/MessageFormController.php
@@ -158,7 +158,6 @@ public function form(array $form, array &$form_state) {
   public function actions(array $form, array &$form_state) {
     $elements = parent::actions($form, $form_state);
     $elements['submit']['#value'] = t('Send message');
-    $elements['delete']['#access'] = FALSE;
     $elements['preview'] = array(
       '#value' => t('Preview'),
       '#validate' => array(
diff --git a/core/modules/filter/lib/Drupal/filter/FilterFormatFormControllerBase.php b/core/modules/filter/lib/Drupal/filter/FilterFormatFormControllerBase.php
index 2c778a5..5fbb170 100644
--- a/core/modules/filter/lib/Drupal/filter/FilterFormatFormControllerBase.php
+++ b/core/modules/filter/lib/Drupal/filter/FilterFormatFormControllerBase.php
@@ -279,7 +279,6 @@ public function submit(array $form, array &$form_state) {
   protected function actions(array $form, array &$form_state) {
     $actions = parent::actions($form, $form_state);
     $actions['submit']['#value'] = t('Save configuration');
-    unset($actions['delete']);
     return $actions;
   }
 
diff --git a/core/modules/menu/lib/Drupal/menu/MenuFormController.php b/core/modules/menu/lib/Drupal/menu/MenuFormController.php
index de585cc..9e0b844 100644
--- a/core/modules/menu/lib/Drupal/menu/MenuFormController.php
+++ b/core/modules/menu/lib/Drupal/menu/MenuFormController.php
@@ -178,8 +178,6 @@ public function menuNameExists($value) {
   protected function actions(array $form, array &$form_state) {
     $actions = parent::actions($form, $form_state);
 
-    $actions['delete']['#access'] = !$this->entity->isNew() && $this->entity->access('delete');
-
     // Add the language configuration submit handler. This is needed because the
     // submit button has custom submit handlers.
     if ($this->moduleHandler->moduleExists('language')) {
diff --git a/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkFormController.php b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkFormController.php
index 3f4617e..5ce2a08 100644
--- a/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkFormController.php
+++ b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkFormController.php
@@ -195,8 +195,6 @@ public function form(array $form, array &$form_state) {
   protected function actions(array $form, array &$form_state) {
     $element = parent::actions($form, $form_state);
     $element['submit']['#button_type'] = 'primary';
-    $element['delete']['#access'] = $this->entity->access('delete');
-
     return $element;
   }
 
diff --git a/core/modules/node/lib/Drupal/node/NodeTypeFormController.php b/core/modules/node/lib/Drupal/node/NodeTypeFormController.php
index dd794c8..d78f1ff 100644
--- a/core/modules/node/lib/Drupal/node/NodeTypeFormController.php
+++ b/core/modules/node/lib/Drupal/node/NodeTypeFormController.php
@@ -163,7 +163,6 @@ protected function actions(array $form, array &$form_state) {
     $actions = parent::actions($form, $form_state);
     $actions['submit']['#value'] = t('Save content type');
     $actions['delete']['#value'] = t('Delete content type');
-    $actions['delete']['#access'] = $this->entity->access('delete');
     return $actions;
   }
 
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTypeTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTypeTest.php
index 6cfc32f..6c9e1a9 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTypeTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTypeTest.php
@@ -193,9 +193,13 @@ function testNodeTypeDeletion() {
     $this->assertText(t('This action cannot be undone.'), 'The node type deletion confirmation form is available.');
     // Test that forum node type could not be deleted while forum active.
     $this->container->get('module_handler')->install(array('forum'));
+    $this->drupalGet('admin/structure/types/manage/forum');
+    $this->assertNoRaw(t('Delete content type'));
     $this->drupalGet('admin/structure/types/manage/forum/delete');
     $this->assertResponse(403);
     $this->container->get('module_handler')->uninstall(array('forum'));
+    $this->drupalGet('admin/structure/types/manage/forum');
+    $this->assertRaw(t('Delete content type'));
     $this->drupalGet('admin/structure/types/manage/forum/delete');
     $this->assertResponse(200);
   }
diff --git a/core/modules/search/lib/Drupal/search/Form/SearchPageFormBase.php b/core/modules/search/lib/Drupal/search/Form/SearchPageFormBase.php
index 0001554..a894503 100644
--- a/core/modules/search/lib/Drupal/search/Form/SearchPageFormBase.php
+++ b/core/modules/search/lib/Drupal/search/Form/SearchPageFormBase.php
@@ -181,15 +181,4 @@ public function save(array $form, array &$form_state) {
     $form_state['redirect_route']['route_name'] = 'search.settings';
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  protected function actions(array $form, array &$form_state) {
-    $actions = parent::actions($form, $form_state);
-    if ($this->entity->isDefaultSearch()) {
-      unset($actions['delete']);
-    }
-    return $actions;
-  }
-
 }
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/ShortcutSetFormController.php b/core/modules/shortcut/lib/Drupal/shortcut/ShortcutSetFormController.php
index 5360b5f..b080b82 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/ShortcutSetFormController.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/ShortcutSetFormController.php
@@ -48,16 +48,6 @@ public function form(array $form, array &$form_state) {
   }
 
   /**
-   * Overrides \Drupal\Core\Entity\EntityFormController::actions().
-   */
-  protected function actions(array $form, array &$form_state) {
-    // Disable delete of default shortcut set.
-    $actions = parent::actions($form, $form_state);
-    $actions['delete']['#access'] = $this->entity->access('delete');
-    return $actions;
-  }
-
-  /**
    * Overrides \Drupal\Core\Entity\EntityFormController::validate().
    */
   public function validate(array $form, array &$form_state) {
diff --git a/core/modules/user/lib/Drupal/user/ProfileFormController.php b/core/modules/user/lib/Drupal/user/ProfileFormController.php
index 325f02b..8e2d7d1 100644
--- a/core/modules/user/lib/Drupal/user/ProfileFormController.php
+++ b/core/modules/user/lib/Drupal/user/ProfileFormController.php
@@ -29,16 +29,9 @@ public function __construct(EntityManagerInterface $entity_manager, LanguageMana
    */
   protected function actions(array $form, array &$form_state) {
     $element = parent::actions($form, $form_state);
-
-    // The user account being edited.
-    $account = $this->entity;
-
-    // The user doing the editing.
-    $user = $this->currentUser();
     $element['delete']['#type'] = 'submit';
     $element['delete']['#value'] = $this->t('Cancel account');
     $element['delete']['#submit'] = array(array($this, 'editCancelSubmit'));
-    $element['delete']['#access'] = $account->id() > 1 && (($account->id() == $user->id() && $user->hasPermission('cancel account')) || $user->hasPermission('administer users'));
 
     return $element;
   }
diff --git a/core/modules/user/lib/Drupal/user/RoleFormController.php b/core/modules/user/lib/Drupal/user/RoleFormController.php
index 873214f..40b489f 100644
--- a/core/modules/user/lib/Drupal/user/RoleFormController.php
+++ b/core/modules/user/lib/Drupal/user/RoleFormController.php
@@ -51,16 +51,6 @@ public function form(array $form, array &$form_state) {
   /**
    * {@inheritdoc}
    */
-  protected function actions(array $form, array &$form_state) {
-    $actions = parent::actions($form, $form_state);
-    // Disable delete of new and built-in roles.
-    $actions['delete']['#access'] = !$this->entity->isNew() && !in_array($this->entity->id(), array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID));
-    return $actions;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function save(array $form, array &$form_state) {
     $entity = $this->entity;
 
