diff --git a/include/class_config.inc b/include/class_config.inc
index e4535efca33ca69a66f99ddf45289bdc6e718b13..029cecb7adf81606774d370612ad263c0f741425 100644
--- a/include/class_config.inc
+++ b/include/class_config.inc
@@ -797,10 +797,13 @@ class config
     foreach ($plist->info as $class => &$plInfo) {
       if (isset($plInfo['plObjectType'])) {
         $entry = array('CLASS' => $class,'NAME' => $plInfo['plShortName']);
+        if (isset($plInfo['plSubTabs'])) {
+          $entry['SUBTABS'] = strtoupper($plInfo['plSubTabs']).'TABS';
+        }
         foreach ($plInfo['plObjectType'] as $key => $value) {
           if (is_numeric($key)) {
             /* This is not the main tab */
-            $tabclass = strtoupper($value)."TABS";
+            $tabclass = strtoupper($value).'TABS';
             if (($tabclass == 'GROUPTABS') && class_available('mixedGroup')) {
               $tabclass = 'OGROUP-USERTABS';
             }
diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc
index 341c27e3f097f7b9829b8475dd03d170ed12404a..904f0dd1c806491bf7483a61acb8548e74e5e239 100644
--- a/include/class_userinfo.inc
+++ b/include/class_userinfo.inc
@@ -1008,16 +1008,30 @@ class userinfo
   function getAttributeCategory($type, $attribute)
   {
     global $config;
-    $infos    = objects::infos($type);
-    $tabs     = $config->data['TABS'][$infos['tabGroup']];
+
     if (in_array_ics($attribute, array('objectClass', 'dn'))) {
       return TRUE;
     }
+
+    if (is_array($type)) {
+      /* Used for recursion through subtabs */
+      $tabs = $type;
+    } else {
+      /* Usual workflow */
+      $infos  = objects::infos($type);
+      $tabs   = $config->data['TABS'][$infos['tabGroup']];
+    }
     foreach ($tabs as $tab) {
       $acls = pluglist::pluginInfos($tab['CLASS'])['plProvidedAcls'];
       if (isset($acls[$attribute])) {
         return $infos['aclCategory'].'/'.$tab['CLASS'];
       }
+      if (isset($tab['SUBTABS'])) {
+        $acl = $this->getAttributeCategory($config->data['TABS'][$tab['SUBTABS']], $attribute);
+        if ($acl !== FALSE) {
+          return $acl;
+        }
+      }
     }
     return FALSE;
   }
diff --git a/plugins/config/class_pluginsConfigInLdap.inc b/plugins/config/class_pluginsConfigInLdap.inc
index 941fae92f69ec4e5c7610d6500f5e366501e6f8d..c797cf0b745d69c21a3b182806d8a63bef6088af 100644
--- a/plugins/config/class_pluginsConfigInLdap.inc
+++ b/plugins/config/class_pluginsConfigInLdap.inc
@@ -1,7 +1,7 @@
 <?php
 /*
   This code is part of FusionDirectory (http://www.fusiondirectory.org/)
-  Copyright (C) 2012-2016  FusionDirectory
+  Copyright (C) 2012-2018  FusionDirectory
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -22,7 +22,6 @@ class pluginsConfigInLdap extends multiPlugin
 {
   var $tabClass = 'SMALLCONFIGTABS';
 
-  /* Return plugin informations for acl handling */
   static function plInfo()
   {
     return array(
@@ -30,9 +29,9 @@ class pluginsConfigInLdap extends multiPlugin
       'plDescription' => _('Configuration for plugins'),
       'plPriority'    => 20,
       'plObjectType'  => array('configuration'),
+      'plSubTabs'     => 'smallConfig',
 
       'plProvidedAcls'  => array()
     );
   }
 }
-?>