diff --git a/core/lib/Drupal/Core/Entity/EntityFormController.php b/core/lib/Drupal/Core/Entity/EntityFormController.php
index 58d9035..df9651b 100644
--- a/core/lib/Drupal/Core/Entity/EntityFormController.php
+++ b/core/lib/Drupal/Core/Entity/EntityFormController.php
@@ -196,11 +196,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'];
@@ -247,6 +243,9 @@ protected function actions(array $form, array &$form_state) {
       ),
       'delete' => array(
         '#value' => $this->t('Delete'),
+        // Only allow access to delete if the entity is not new and the user
+        // has the necessary permissions.
+        '#access' => !$this->entity->isNew() && $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 62b83d9..cb81385 100644
--- a/core/modules/contact/lib/Drupal/contact/Entity/Message.php
+++ b/core/modules/contact/lib/Drupal/contact/Entity/Message.php
@@ -46,6 +46,13 @@ public function id() {
   /**
    * {@inheritdoc}
    */
+  public function uuid() {
+    return NULL;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function isPersonal() {
     return $this->bundle() == 'personal';
   }
