diff --git a/include/class_template.inc b/include/class_template.inc
index 46037cdb05eb001e141686e80cc6c6b288bae2bb..12e49848aa25b3d049eb6df64490c589f9814f2b 100644
--- a/include/class_template.inc
+++ b/include/class_template.inc
@@ -35,6 +35,8 @@ class template
 
   protected $applied = FALSE;
 
+  static protected $uiSpecialAttributes = array('dn','cn','uid','sn','givenName');
+
   static function plInfo()
   {
     return array(
@@ -268,7 +270,12 @@ class template
     }
     unset($array);
 
-    $this->attrs = templateHandling::parseArray($this->attrs);
+    $ui           = get_userinfo();
+    $specialAttrs = array();
+    foreach (static::$uiSpecialAttributes as $attr) {
+      $specialAttrs['caller'.strtoupper($attr)] = $ui->$attr;
+    }
+    $this->attrs = templateHandling::parseArray($this->attrs, $specialAttrs);
     $this->tabObject->adapt_from_template($this->attrs, call_user_func_array('array_merge', $this->attributes));
 
     $this->applied = TRUE;
diff --git a/include/class_templateHandling.inc b/include/class_templateHandling.inc
index 7ee22cd7fa00d2886d158db07ccee3560c2e3e63..731aca9e0bbca9be41284a57b5f8e53c0a404abc 100644
--- a/include/class_templateHandling.inc
+++ b/include/class_templateHandling.inc
@@ -187,7 +187,7 @@ class templateHandling
    *
    * \return array An array with the final values of attributes
    */
-  public static function parseArray(array $attrs)
+  public static function parseArray(array $attrs, array $specialAttrs)
   {
     foreach ($attrs as &$attr) {
       if (is_array($attr)) {
@@ -195,7 +195,7 @@ class templateHandling
           if (!is_numeric($key)) {
             continue;
           }
-          $string = static::parseString($string, $attrs);
+          $string = static::parseString($string, array_merge($attrs, $specialAttrs));
         }
         unset($string);
       }