diff --git a/contrib/openldap/core-fd.schema b/contrib/openldap/core-fd.schema
index 692d4ee7a511bf66c75d54c4bfdc7da8303cdb5a..16e366a2a666938af7aa34329cbb45cef7e80d1a 100644
--- a/contrib/openldap/core-fd.schema
+++ b/contrib/openldap/core-fd.schema
@@ -123,10 +123,6 @@ objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.6 NAME 'gosaAccount' SUP top AUXILIARY
         gosaDefaultLanguage $ academicTitle $ personalTitle $ dateOfBirth $
         sambaBadPasswordCount $ sambaBadPasswordTime $ gender $ gosaLoginRestriction ))
 
-objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.11 NAME 'gosaUserTemplate' SUP top AUXILIARY
-  DESC 'Class for GOsa User Templates (v2.6.1)'
-  MUST ( cn ))
-
 objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.12 NAME 'gosaGroupOfNames'
   DESC 'GOsa object grouping (v2.6.1)'
   SUP top STRUCTURAL
diff --git a/contrib/openldap/template-fd.schema b/contrib/openldap/template-fd.schema
new file mode 100644
index 0000000000000000000000000000000000000000..828ae9a9ffc69f253b70aad374866cea91d1a028
--- /dev/null
+++ b/contrib/openldap/template-fd.schema
@@ -0,0 +1,15 @@
+##
+## template-fd.schema - Needed by Fusion Directory for managing templates
+##
+
+# Attributes
+attributetype ( 1.3.6.1.4.1.38414.38.1.1 NAME 'fdTemplateField'
+  DESC 'FusionDirectory - template field'
+  EQUALITY caseExactIA5Match
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)
+
+# Objectclasses
+objectclass (1.3.6.1.4.1.38414.38.2.1 NAME 'fdTemplate'
+  DESC 'FusionDirectory - template object'
+  MUST ( cn )
+  MAY ( fdTemplateField ) )
diff --git a/include/class_tabs.inc b/include/class_tabs.inc
index 4aeea2010ae35a9a8f7ba59ef5018ec54af572fd..dd0a36af3c7e75bc71d56190e5ed61b881b6b790 100644
--- a/include/class_tabs.inc
+++ b/include/class_tabs.inc
@@ -317,7 +317,7 @@ class tabs
 
     /* Check all plugins */
     foreach ($this->by_object as $key => &$obj) {
-      if ($obj->is_account || $obj->ignore_account) {
+      if (($obj->is_account || $obj->ignore_account) && (!$obj->is_template)) {
         @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, "Checking");
 
         $msg = $obj->check();
@@ -427,5 +427,15 @@ class tabs
     }
     unset($obj);
   }
+
+  function setTemplateMode($cn)
+  {
+    $this->getBaseObject()->template_cn = $cn;
+
+    foreach ($this->by_object as &$obj) {
+      $obj->is_template = TRUE;
+    }
+    unset($obj);
+  }
 }
 ?>
diff --git a/plugins/admin/ogroups/class_ogroup.inc b/plugins/admin/ogroups/class_ogroup.inc
index 768b42e64949b2a1fe8a368e5bbea9bccc69bcb3..d72cea6b0bc3f92afde4d8d89236b153f982eb05 100644
--- a/plugins/admin/ogroups/class_ogroup.inc
+++ b/plugins/admin/ogroups/class_ogroup.inc
@@ -677,7 +677,7 @@ class ogroup extends plugin
     $type= "I";
 
     foreach(array(
-          "Y" => "gosaUserTemplate",
+          "Y" => "fdTemplate",
           "U" => "gosaAccount",
           "G" => "posixGroup",
           "A" => "gosaApplication",
diff --git a/plugins/admin/ogroups/objectSelect/selectObject-filter.xml b/plugins/admin/ogroups/objectSelect/selectObject-filter.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5a12e616efae9a4cca8f3944751a7ff00bbd5907
--- /dev/null
+++ b/plugins/admin/ogroups/objectSelect/selectObject-filter.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<filterdef>
+  <definition>
+    <category>users</category>
+    <template>../plugins/admin/ogroups/objectSelect/selectObject-filter.tpl</template>
+    <initial>true</initial>
+  </definition>
+
+  <search>
+    <query>
+      <backend>LDAPBlacklist</backend>
+      <filter>(&amp;(| $USER $GROUP $APPLICATION $SERVER $WORKSTATION $WINSTATION $TERMINAL $PRINTER $PHONE) $NAME)</filter>
+      <attribute>dn</attribute>
+      <attribute>objectClass</attribute>
+      <attribute>cn</attribute>
+      <attribute>sn</attribute>
+      <attribute>ou</attribute>
+      <attribute>uid</attribute>
+      <attribute>givenName</attribute>
+      <attribute>description</attribute>
+    </query>
+    <query>
+      <backend>LDAPDepartmentBlacklist</backend>
+      <filter>(&amp;(| $DEPARTMENT)  $NAME)</filter>
+      <attribute>dn</attribute>
+      <attribute>objectClass</attribute>
+      <attribute>cn</attribute>
+      <attribute>sn</attribute>
+      <attribute>ou</attribute>
+      <attribute>uid</attribute>
+      <attribute>givenName</attribute>
+      <attribute>description</attribute>
+    </query>
+    <scope>auto</scope>
+  </search>
+
+  <element>
+    <type>textfield</type>
+    <tag>NAME</tag>
+    <size>20</size>
+    <maxlength>60</maxlength>
+    <default></default>
+    <unset></unset>
+    <set>(|(cn=*$*)(sn=*$*)(givenName=*$*)(ou=*$*)(dc=*$*)(c=*$*)(l=*$*))</set>
+    <alphabet>true</alphabet>
+    <autocomplete>
+      <backend>LDAPBlacklist</backend>
+      <filter>(&amp;(|(objectClass=gosaDepartment)(objectClass=gosaAccount)(objectClass=posixGroup)(objectClass=goServer)(objectClass=gotoWorkstation)(objectClass=sambaSamAccount)(objectClass=gotoTerminal)(objectClass=gotoPrinter)(objectClass=goFonHardware))(|(cn=*$NAME*)(sn=*$NAME*)(givenName=*$NAME*)(ou=*$NAME*)(dc=*$NAME*)(c=*$NAME*)(l=*$NAME*)))</filter>
+      <attribute>cn</attribute>
+      <attribute>l</attribute>
+      <attribute>o</attribute>
+      <attribute>dc</attribute>
+      <attribute>c</attribute>
+      <frequency>0.5</frequency>
+      <characters>3</characters>
+    </autocomplete>
+  </element>
+
+  <element>
+    <type>checkbox</type>
+    <tag>USER</tag>
+    <default></default>
+    <set>(objectClass=gosaAccount)</set>
+    <unset></unset>
+  </element>
+
+  <element>
+    <type>checkbox</type>
+    <tag>GROUP</tag>
+    <default></default>
+    <unset></unset>
+    <set>(objectClass=posixGroup)</set>
+  </element>
+
+  <element>
+    <type>checkbox</type>
+    <tag>DEPARTMENT</tag>
+    <default></default>
+    <unset></unset>
+    <set>(objectClass=gosaDepartment)</set>
+  </element>
+
+  <element>
+    <type>checkbox</type>
+    <tag>APPLICATION</tag>
+    <default></default>
+    <unset></unset>
+    <set>(objectClass=gosaApplication)</set>
+  </element>
+
+  <element>
+    <type>checkbox</type>
+    <tag>SERVER</tag>
+    <default></default>
+    <unset></unset>
+    <set>(objectClass=goServer)</set>
+  </element>
+
+  <element>
+    <type>checkbox</type>
+    <tag>WORKSTATION</tag>
+    <default></default>
+    <unset></unset>
+    <set>(objectClass=gotoWorkstation)</set>
+  </element>
+
+  <element>
+    <type>checkbox</type>
+    <tag>WINSTATION</tag>
+    <default></default>
+    <unset></unset>
+    <set>(&amp;(objectClass=sambaSamAccount)(objectClass=Account))</set>
+  </element>
+
+  <element>
+    <type>checkbox</type>
+    <tag>TERMINAL</tag>
+    <default></default>
+    <unset></unset>
+    <set>(objectClass=gotoTerminal)</set>
+  </element>
+
+  <element>
+    <type>checkbox</type>
+    <tag>PRINTER</tag>
+    <default></default>
+    <unset></unset>
+    <set>(objectClass=gotoPrinter)</set>
+  </element>
+
+  <element>
+    <type>checkbox</type>
+    <tag>PHONE</tag>
+    <default></default>
+    <unset></unset>
+    <set>(objectClass=goFonHardware)</set>
+  </element>
+
+</filterdef>
diff --git a/plugins/admin/users/class_userManagement.inc b/plugins/admin/users/class_userManagement.inc
index 620234399f235d04f74485781e5ce5fcd8f7a4db..b648f3b5bd5d01f9ba37d3fb973dda42a5981a7b 100644
--- a/plugins/admin/users/class_userManagement.inc
+++ b/plugins/admin/users/class_userManagement.inc
@@ -173,7 +173,7 @@ class userManagement extends management
   function newTemplate($action, $entry)
   {
     $this->newEntry();
-    $this->tabObject->set_template_mode ();
+    $this->tabObject->setTemplateMode('template_tmp'); // FIXME : this needs to be chosen by the user
   }
 
 
@@ -767,7 +767,7 @@ class userManagement extends management
       if (preg_match("/c/", $acl)) {
         // Search all templates from the current dn.
         $ldap->cd(get_people_ou().$value);
-        $ldap->search("(objectClass=gosaUserTemplate)", array('cn'));
+        $ldap->search("(&(fdTemplateField=objectClass:person)(objectClass=fdTemplate))", array('cn'));
         if ($ldap->count() != 0) {
           while ($attrs = $ldap->fetch()) {
             $templates[$ldap->getDN()] = $attrs['cn'][0]." - ".LDAP::fix($key);
diff --git a/plugins/admin/users/user-filter.xml b/plugins/admin/users/user-filter.xml
index 99c5a41ed06a11f53125a3fb7bf2dd4e2d495636..fab5baa238674785148941dd75f12f8131d2bd07 100644
--- a/plugins/admin/users/user-filter.xml
+++ b/plugins/admin/users/user-filter.xml
@@ -10,7 +10,7 @@
   <search>
     <query>
       <backend>LDAP</backend>
-      <filter>(&amp;(objectClass=gosaAccount)$TEMPLATES$NAME(|$FUNCTIONAL$SAMBA$POSIX$MAIL))</filter>
+      <filter>(&amp;$NAME(|(&amp;(objectClass=gosaAccount)(|$FUNCTIONAL$SAMBA$POSIX$MAIL))$TEMPLATES))</filter>
       <attribute>dn</attribute>
       <attribute>objectClass</attribute>
       <attribute>givenName</attribute>
@@ -44,8 +44,8 @@
     <type>checkbox</type>
     <tag>TEMPLATES</tag>
     <default></default>
-    <unset>(!(objectClass=gosaUserTemplate))</unset>
-    <set></set>
+    <unset></unset>
+    <set>(objectClass=fdTemplate)</set>
   </element>
 
   <element>
diff --git a/plugins/admin/users/user-list.xml b/plugins/admin/users/user-list.xml
index f6678beef1ab3d34a7d408e6465eda2e37f3e637..dc0042572729581b5e1cd1926c5f7fbe88493dbe 100644
--- a/plugins/admin/users/user-list.xml
+++ b/plugins/admin/users/user-list.xml
@@ -11,22 +11,6 @@
     <label>List of users</label>
     <defaultSortColumn>1</defaultSortColumn>
 
-    <objectType>
-      <label>Template</label>
-      <objectClass>gosaUserTemplate</objectClass>
-      <category>user</category>
-      <class>user</class>
-      <image>plugins/users/images/select_template.png</image>
-    </objectType>
-
-    <objectType>
-      <label>User</label>
-      <objectClass>gosaAccount</objectClass>
-      <category>user</category>
-      <class>user</class>
-      <image>geticon.php?context=types&amp;icon=user&amp;size=16</image>
-    </objectType>
-
   </definition>
 
   <table>
@@ -49,7 +33,7 @@
       <label>Surname</label>
       <sortAttribute>sn</sortAttribute>
       <sortType>string</sortType>
-      <value>%{filter:link(row,dn,"%s",sn)}</value>
+      <value>%{filter:filterRowLink(pid,row,dn,sn,cn)}</value>
       <export>true</export>
     </column>
 
@@ -89,16 +73,16 @@
      <label>Create</label>
 
      <action>
-      <name>new</name>
+      <name>new_user</name>
       <type>entry</type>
       <image>geticon.php?context=types&amp;icon=user&amp;size=16</image>
       <label>User</label>
      </action>
 
      <action>
-      <name>new_template</name>
+      <name>new_template_user</name>
       <type>entry</type>
-      <image>plugins/users/images/select_template.png</image>
+      <image>geticon.php?context=actions&amp;icon=document-new&amp;size=16</image>
       <label>Template</label>
      </action>
     </action>
@@ -121,14 +105,6 @@
       <label>Remove</label>
     </action>
 
-    <action>
-      <name>password</name>
-      <type>entry</type>
-      <image>geticon.php?context=status&amp;icon=dialog-password&amp;size=16</image>
-      <label>Change password</label>
-      <acl>user/password[w]</acl>
-    </action>
-
     <action>
       <type>separator</type>
     </action>
@@ -154,7 +130,7 @@
     </action>
 
     <action>
-      <name>templatize</name>
+      <name>template_apply_user</name>
       <type>entry</type>
       <image>geticon.php?context=actions&amp;icon=tools-wizard&amp;size=16</image>
       <label>Apply template</label>
@@ -185,23 +161,22 @@
   <actiontriggers snapshot="true" copypaste="true">
 
     <action>
-      <name>newfromtpl</name>
+      <name>template_apply_user</name>
       <type>entry</type>
       <image>geticon.php?context=actions&amp;icon=document-new&amp;size=16</image>
-      <objectclass>gosaUserTemplate</objectclass>
+      <objectclass>fdTemplate</objectclass>
       <label>New user from template</label>
     </action>
 
     <action>
       <name>cp</name>
-      <objectclass>!gosaUserTemplate</objectclass>
+      <objectclass>!fdTemplate</objectclass>
       <type>copypaste</type>
     </action>
 
     <action>
       <name>edit</name>
       <type>entry</type>
-      <objectclass>gosaAccount</objectclass>
       <image>geticon.php?context=actions&amp;icon=document-edit&amp;size=16</image>
       <label>Edit user</label>
     </action>
@@ -209,32 +184,22 @@
     <action>
       <name>lock</name>
       <type>entry</type>
-      <objectclass>!gosaUserTemplate</objectclass>
+      <objectclass>!fdTemplate</objectclass>
       <image>%{filter:lockImage(userPassword)}</image>
       <acl>user/password[w]</acl>
       <label>%{filter:lockLabel(userPassword)}</label>
     </action>
 
-    <action>
-      <name>password</name>
-      <type>entry</type>
-      <objectclass>!gosaUserTemplate</objectclass>
-      <acl>user/password[w]</acl>
-      <image>geticon.php?context=status&amp;icon=dialog-password&amp;size=16</image>
-      <label>Change password</label>
-    </action>
-
     <action>
       <name>snapshot</name>
       <type>snapshot</type>
-      <objectclass>!gosaUserTemplate</objectclass>
+      <objectclass>!fdTemplate</objectclass>
     </action>
 
     <action>
       <name>remove</name>
       <type>entry</type>
       <image>geticon.php?context=actions&amp;icon=edit-delete&amp;size=16</image>
-      <objectclass>gosaAccount</objectclass>
       <acl>user/user[d]</acl>
       <label>Remove user</label>
     </action>
diff --git a/plugins/personal/posix/trustSelect/trust-filter.xml b/plugins/personal/posix/trustSelect/trust-filter.xml
deleted file mode 100644
index 8dd8d9685fa69ee565351d1581a9e22283073bd2..0000000000000000000000000000000000000000
--- a/plugins/personal/posix/trustSelect/trust-filter.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<filterdef>
-  <definition>
-    <category>groups</category>
-    <template>../plugins/personal/posix/trustSelect/trust-filter.tpl</template>
-    <initial>true</initial>
-  </definition>
-
- <search>
-    <query>
-      <backend>LDAPBlacklist</backend>
-      <filter>(&amp;(|$SERVER $WORKSTATION $WINSTATION $TERMINAL)$NAME)</filter>
-      <attribute>dn</attribute>
-      <attribute>objectClass</attribute>
-      <attribute>cn</attribute>
-      <attribute>description</attribute>
-    </query>
-    <scope>auto</scope>
-  </search>
-
-  <element>
-    <type>textfield</type>
-    <tag>NAME</tag>
-    <size>20</size>
-    <maxlength>60</maxlength>
-    <default></default>
-    <unset></unset>
-    <set>(cn=*$*)</set>
-    <alphabet>false</alphabet>
-    <autocomplete>
-      <backend>LDAPBlacklist</backend>
-      <filter>(cn=*$NAME*)</filter>
-      <attribute>cn</attribute>
-      <frequency>0.5</frequency>
-      <characters>3</characters>
-    </autocomplete>
-  </element>
-
-  <element>
-    <type>checkbox</type>
-    <tag>SERVER</tag>
-    <default>true</default>
-    <unset></unset>
-    <set>(objectClass=goServer)</set>
-  </element>
-
-  <element>
-    <type>checkbox</type>
-    <tag>WORKSTATION</tag>
-    <default>true</default>
-    <unset></unset>
-    <set>(objectClass=gotoWorkstation)</set>
-  </element>
-
-  <element>
-    <type>checkbox</type>
-    <tag>WINSTATION</tag>
-    <default>true</default>
-    <unset></unset>
-    <set>(&amp;(objectClass=sambaSamAccount)(objectClass=Account))</set>
-  </element>
-
-  <element>
-    <type>checkbox</type>
-    <tag>TERMINAL</tag>
-    <default>true</default>
-    <unset></unset>
-    <set>(objectClass=gotoTerminal)</set>
-  </element>
-
-</filterdef>