diff --git a/include/management/class_templateDialog.inc b/include/management/class_templateDialog.inc
index 9bfc503c5ef23ea95c9d1b778808314ab4c1796e..b3b6221a4c38b1fb0cd48bb7d29119d56ddf98c5 100644
--- a/include/management/class_templateDialog.inc
+++ b/include/management/class_templateDialog.inc
@@ -94,6 +94,11 @@ class templateDialog implements FusionDirectoryDialog
     }
   }
 
+  public function update(): bool
+  {
+    return TRUE;
+  }
+
   function setNextTarget ($target)
   {
     $this->target = $target;
diff --git a/include/simpleplugin/class_multiPlugin.inc b/include/simpleplugin/class_multiPlugin.inc
index a6cfbcb9c19b6e122f93777043382edffaf67e79..42587b1f29dbbb60bf7faa7a772f667e81690fc1 100644
--- a/include/simpleplugin/class_multiPlugin.inc
+++ b/include/simpleplugin/class_multiPlugin.inc
@@ -97,7 +97,7 @@ class multiPlugin extends simplePlugin
     }
   }
 
-  public function update (): boolean
+  public function update (): bool
   {
     foreach ($this->plugin as $plug) {
       $plug->update();
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index e72552b7ed736fde2d5171757f8dc292294d718a..99395cbca44ea33d58c5e9f47cd8f829985be27d 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -27,7 +27,7 @@
 /*! \brief This class is made for easy plugin creation for editing LDAP attributes
  *
  */
-class simplePlugin implements SimpleTab, FusionDirectoryDialog
+class simplePlugin implements SimpleTab
 {
   /*! \brief This attribute store all information about attributes */
   public $attributesInfo;
@@ -1171,6 +1171,9 @@ class simplePlugin implements SimpleTab, FusionDirectoryDialog
         $this->is_account = TRUE;
       }
     }
+    if (is_object($this->dialog)) {
+      $this->dialog->readPost();
+    }
     if (isset($_POST[get_class($this).'_posted'])) {
       // If our form has been posted
       // A first pass that loads the post values
diff --git a/include/simpleplugin/class_simpleTabs.inc b/include/simpleplugin/class_simpleTabs.inc
index d6330eb0d3452363aec3a05c4069d8398b510d3e..d005359bf12ceec8bdbe71b7c76b62078425a9ba 100644
--- a/include/simpleplugin/class_simpleTabs.inc
+++ b/include/simpleplugin/class_simpleTabs.inc
@@ -237,7 +237,7 @@ class simpleTabs implements FusionDirectoryDialog
 
   public function update (): bool
   {
-    if ($this->last != $this->current) {
+    if (($this->last != $this->current) && ($this->last != '')) {
       $this->by_object[$this->last]->update();
     }
 
diff --git a/setup/class_setupStepConfig.inc b/setup/class_setupStepConfig.inc
index db44f2020b68b254250e3eb166b93b7369431c6b..9a0afa6234a6394f3d4659d375726d8e1efd406a 100644
--- a/setup/class_setupStepConfig.inc
+++ b/setup/class_setupStepConfig.inc
@@ -94,7 +94,7 @@ class setupStepConfig extends configInLdap
     return $tmp;
   }
 
-  function update ()
+  function update (): bool
   {
     global $config, $plist;
     parent::update();
@@ -108,13 +108,13 @@ class setupStepConfig extends configInLdap
         $ldap->create_missing_trees($config->current['BASE'], FALSE);
       } catch (FusionDirectoryError $error) {
         $error->display();
-        return;
+        return TRUE;
       }
       /* Save in LDAP */
       $errors = $this->save();
       if (!empty($errors)) {
         msg_dialog::displayChecks($errors);
-        return;
+        return TRUE;
       }
       /* Insert default config values, even for installed plugin */
       session::un_set('plist');
@@ -127,6 +127,7 @@ class setupStepConfig extends configInLdap
       $this->is_completed = TRUE;
       $this->parent->reBuildConfigStep(TRUE);
     }
+    return TRUE;
   }
 
   function is_active ()