diff --git a/include/management/class_management.inc b/include/management/class_management.inc
index cf027386148d12ce77bce6424235e0d50d8cb85a..505d217a6615470c1567a6b63d3315c24f198fd3 100644
--- a/include/management/class_management.inc
+++ b/include/management/class_management.inc
@@ -506,7 +506,12 @@ class management implements FusionDirectoryDialog
     } elseif (is_object($this->dialogObject)) {
       try {
         $this->dialogObject->readPost();
-        $this->dialogObject->update();
+        if (is_object($this->dialogObject)) {
+          /* Check again as readPost might close it */
+          if (!$this->dialogObject->update()) {
+            $this->closeDialogs();
+          }
+        }
       } catch (FusionDirectoryException $e) {
         $error = new FusionDirectoryError(htmlescape($e->getMessage()), 0, $e);
         $error->display();
diff --git a/include/management/class_templateDialog.inc b/include/management/class_templateDialog.inc
index b3b6221a4c38b1fb0cd48bb7d29119d56ddf98c5..44ec9bb85e80fbfff4a459ac899878233551f9dd 100644
--- a/include/management/class_templateDialog.inc
+++ b/include/management/class_templateDialog.inc
@@ -96,7 +96,7 @@ class templateDialog implements FusionDirectoryDialog
 
   public function update(): bool
   {
-    return TRUE;
+    return !$this->closed;
   }
 
   function setNextTarget ($target)
@@ -131,6 +131,6 @@ class templateDialog implements FusionDirectoryDialog
   protected function handleCancel ()
   {
     $this->management->remove_lock();
-    $this->management->closeDialogs();
+    $this->closed = TRUE;
   }
 }