diff --git a/include/class_exceptions.inc b/include/class_exceptions.inc
index 10fa9fc6270e630cdcdf66195d912a4b62034caf..3ea0cea1161e28e91561237fd0e5d96ebf86be09 100644
--- a/include/class_exceptions.inc
+++ b/include/class_exceptions.inc
@@ -69,18 +69,79 @@ class InvalidValueException extends FusionDirectoryException
 
 class NonExistingObjectTypeException extends FusionDirectoryException
 {
+  protected $type;
+
+  public function __construct (string $type, int $code = 0, Throwable $previous = NULL)
+  {
+    $this->type = $type;
+
+    parent::__construct(sprintf(_('Non-existing type "%s"!'), $this->type), $code, $previous);
+  }
+
+  public function toArray (): array
+  {
+    $array = parent::toArray();
+
+    $array['type'] = $this->type;
+
+    return $array;
+  }
 }
 
 class NonExistingBranchException extends FusionDirectoryException
 {
+  protected $branch;
+
+  public function __construct (string $branch, int $code = 0, Throwable $previous = NULL)
+  {
+    $this->branch = $branch;
+
+    parent::__construct(sprintf(_('Non-existing branch "%s"!'), $this->branch), $code, $previous);
+  }
+
+  public function toArray (): array
+  {
+    $array = parent::toArray();
+
+    $array['branch'] = $this->branch;
+
+    return $array;
+  }
 }
 
 class NonExistingLdapNodeException extends FusionDirectoryException
 {
+  protected $dn;
+
+  public function __construct (string $dn, string $message = NULL, int $code = 0, Throwable $previous = NULL)
+  {
+    $this->dn = $dn;
+    if ($message === NULL) {
+      $message = sprintf(_('Non-existing dn "%s"!'), $this->dn);
+    }
+
+    parent::__construct($message, $code, $previous);
+  }
+
+  public function toArray (): array
+  {
+    $array = parent::toArray();
+
+    $array['dn'] = $this->dn;
+
+    return $array;
+  }
 }
 
 class EmptyFilterException extends FusionDirectoryException
 {
+  public function __construct (string $message = "", int $code = 0, Throwable $previous = NULL)
+  {
+    if ($message === '') {
+      $message = _('Filter is empty');
+    }
+    parent::__construct($message, $code, $previous);
+  }
 }
 
 class NoManagementClassException extends FusionDirectoryException
@@ -89,6 +150,23 @@ class NoManagementClassException extends FusionDirectoryException
 
 class UnknownClassException extends FusionDirectoryException
 {
+  protected $class;
+
+  public function __construct (string $class, int $code = 0, Throwable $previous = NULL)
+  {
+    $this->class = $class;
+
+    parent::__construct(sprintf(_('Unknown class "%s"!'), $this->class), $code, $previous);
+  }
+
+  public function toArray (): array
+  {
+    $array = parent::toArray();
+
+    $array['unknownclass'] = $this->class;
+
+    return $array;
+  }
 }
 
 class LDAPFailureException extends FusionDirectoryException
diff --git a/include/class_objects.inc b/include/class_objects.inc
index fc82e262706252ad594f2c458ae088210e20ae48..44f6798bc880333178eea286c751165b53f79e8c 100644
--- a/include/class_objects.inc
+++ b/include/class_objects.inc
@@ -273,7 +273,7 @@ class objects
 
     $ldap = $config->get_ldap_link($sizeLimit);
     if (!$ldap->dn_exists($ou)) {
-      throw new NonExistingBranchException();
+      throw new NonExistingBranchException($ou);
     }
     if (empty($filter)) {
       $filter = '(|'.implode($typeFilters).')';
@@ -379,7 +379,7 @@ class objects
           $text = $dn;
         }
       } else {
-        throw new NonExistingLdapNodeException('Dn '.$dn.' not found in LDAP');
+        throw new NonExistingLdapNodeException($dn);
       }
     } elseif (is_array($text)) {
       $text = $text[$infos['nameAttr']][0];
@@ -430,7 +430,7 @@ class objects
     global $config;
 
     if (!isset($config->data['OBJECTS'][strtoupper($type)])) {
-      throw new NonExistingObjectTypeException('Non-existing type "'.$type.'"');
+      throw new NonExistingObjectTypeException($type);
     }
 
     $infos =& $config->data['OBJECTS'][strtoupper($type)];
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index 7dff3485ed1caa6b07ec37a41ca85af10f4ad44e..3efe722f6d9d8a2a68c4d75f444a7a27009cad42 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -234,7 +234,7 @@ class simplePlugin implements SimpleTab
         $ldap->cat($this->dn);
         $this->attrs = $ldap->fetch(TRUE);
         if (empty($this->attrs)) {
-          throw new NonExistingLdapNodeException('Could not open dn '.$this->dn);
+          throw new NonExistingLdapNodeException($this->dn);
         }
         if ($this->mainTab) {
           $this->entryCSN = getEntryCSN($this->dn);
diff --git a/plugins/personal/generic/class_user.inc b/plugins/personal/generic/class_user.inc
index 4bd5ef1f782db483438dfc722654f1fe667e1ba9..0cd564ba072eb042444a1d71e9cb392a7f9cc12c 100644
--- a/plugins/personal/generic/class_user.inc
+++ b/plugins/personal/generic/class_user.inc
@@ -427,7 +427,7 @@ class user extends simplePlugin
       $ldap->cat($ppolicydn, ['pwdAllowUserChange', 'pwdMinLength', 'pwdMinAge', 'pwdSafeModify', 'pwdExpireWarning', 'pwdMaxAge']);
       $policy = $ldap->fetch(TRUE);
       if (!$policy) {
-        throw new NonExistingLdapNodeException(sprintf(_('Ppolicy "%s" could not be found in the LDAP!'), $ppolicydn));
+        throw new NonExistingLdapNodeException($ppolicydn, sprintf(_('Ppolicy "%s" could not be found in the LDAP!'), $ppolicydn));
       }
     }