diff --git a/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtra.class.php b/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtra.class.php
index f39e00144da6ee58e07ca931dd8bf30ae2bff11f..89acde84b4cf1372683e687ef8841f7e366b0f2b 100755
--- a/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtra.class.php
+++ b/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtra.class.php
@@ -1026,7 +1026,7 @@ class TgExtra {
         $entry = $arrUserEntry[0];
 
         $result[] = new userDetail (
-				     $entry['uid'][0], // ePPN
+				     $entry['sn'][0], // ePPN, use sn which holds it too as uid is hidden in the dn
 				     $entry['cn'][0],  // name
 				     isset ($entry['mail'][0]) ? $entry['mail'][0] : null,  
 				     isset ($entry['o'][0]) ? $entry['o'][0]: null,  // organisation
diff --git a/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-productive/tgextra.wsdl b/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-productive/tgextra.wsdl
index 452945582ac73e92b21e800a9e1726a0242a81cc..c3a0e62e4a8983cfc5bdbd501c910d3728b07beb 100644
--- a/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-productive/tgextra.wsdl
+++ b/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-productive/tgextra.wsdl
@@ -332,6 +332,16 @@
 	</xsd:complexType>
       </xsd:element>
 
+      <!-- #### getFriends #### //-->
+      <xsd:element name="getFriendsRequest">
+	<xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="auth" type="xsd:string" minOccurs="1" maxOccurs="1" />
+            <xsd:element name="log" type="xsd:string" minOccurs="0" maxOccurs="1" />
+	  </xsd:sequence>
+	</xsd:complexType>
+      </xsd:element>
+
 
       <!-- #### getRights #### //-->
       <xsd:element name="getRightsRequest">
@@ -394,6 +404,59 @@
         </xsd:complexType>
       </xsd:element>
 
+      <!-- #### setName #### //-->
+      <xsd:element name="setNameRequest">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="auth" type="xsd:string" minOccurs="1" maxOccurs="1" />
+            <xsd:element name="log" type="xsd:string" minOccurs="0" maxOccurs="1" />
+            <xsd:element name="webAuthSecret" type="xsd:string" minOccurs="0" maxOccurs="1" />
+            <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" />
+            <xsd:element name="mail" type="xsd:string" minOccurs="1" maxOccurs="1" />
+            <xsd:element name="organisation" type="xsd:string" minOccurs="1" maxOccurs="1" />
+            <xsd:element name="agreeSearch" type="xsd:boolean" minOccurs="1" maxOccurs="1" />
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+
+      <!-- #### getNames #### //-->
+      <xsd:element name="getNamesRequest">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="auth" type="xsd:string" minOccurs="1" maxOccurs="1" />
+            <xsd:element name="log" type="xsd:string" minOccurs="0" maxOccurs="1" />
+            <xsd:element name="ePPN" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+
+      <xsd:element name="getNamesResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="userdetails" type="tns:userDetail" minOccurs="0" maxOccurs="unbounded" />
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+
+      <!-- #### getIDs #### //-->
+      <xsd:element name="getIDsRequest">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="auth" type="xsd:string" minOccurs="1" maxOccurs="1" />
+            <xsd:element name="log" type="xsd:string" minOccurs="0" maxOccurs="1" />
+            <xsd:element name="name" type="xsd:string" minOccurs="0" maxOccurs="1" />
+            <xsd:element name="mail" type="xsd:string" minOccurs="0" maxOccurs="1" />
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+
+      <xsd:element name="getIDsResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="userdetails" type="tns:userDetail" minOccurs="0" maxOccurs="unbounded" />
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
 
       <!-- #### getProjectDescription #### //-->
       <xsd:element name="getProjectDescriptionRequest">
@@ -522,6 +585,31 @@
 	</xsd:sequence>
       </xsd:complexType>
 
+      <xsd:element name="getFriendsResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="friends" type="tns:friend" minOccurs="0" maxOccurs="unbounded" />
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+
+      <xsd:complexType name="friend">
+	<xsd:sequence>
+	  <xsd:element name="username" type="xsd:string" minOccurs="1" maxOccurs="1" />
+	  <xsd:element name="score" type="xsd:integer"  minOccurs="1" maxOccurs="1" />
+	</xsd:sequence>
+      </xsd:complexType>
+
+      <xsd:complexType name="userDetail">
+	<xsd:sequence>
+	  <xsd:element name="ePPN" type="xsd:string" minOccurs="1" maxOccurs="1" />
+	  <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" />
+	  <xsd:element name="mail" type="xsd:string" minOccurs="0" maxOccurs="1" />
+	  <xsd:element name="organisation" type="xsd:string" minOccurs="0" maxOccurs="1" />
+	  <xsd:element name="agreesearch" type="xsd:boolean" minOccurs="0" maxOccurs="1" />
+	  <xsd:element name="usersupplieddata" type="xsd:boolean" minOccurs="0" maxOccurs="1" />
+	</xsd:sequence>
+      </xsd:complexType>
 
       <xsd:complexType name="projectInfo">
         <xsd:sequence>
@@ -764,6 +852,14 @@
     <wsdl:part element="tns:getUserRoleResponse" name="getUserRoleOutput" />
   </wsdl:message>
 
+  <!-- #### getFriends #### //-->
+  <wsdl:message name="getFriendsRequest">
+    <wsdl:part element="tns:getFriendsRequest" name="getFriendsInput" />
+  </wsdl:message>
+  <wsdl:message name="getFriendsResponse">
+    <wsdl:part element="tns:getFriendsResponse" name="getFriendsOutput" />
+  </wsdl:message>
+
 
   <!-- #### getRights #### //-->
   <wsdl:message name="getRightsRequest">
@@ -805,6 +901,30 @@
     <wsdl:part element="tns:booleanResponse" name="setProjectFileOutput" />
   </wsdl:message>
 
+  <!-- #### setName #### //-->
+  <wsdl:message name="setNameRequest">
+    <wsdl:part element="tns:setNameRequest" name="setNameInput" />
+  </wsdl:message>
+  <wsdl:message name="setNameResponse">
+    <wsdl:part element="tns:booleanResponse" name="setNameOutput" />
+  </wsdl:message>
+
+  <!-- #### getNames #### //-->
+  <wsdl:message name="getNamesRequest">
+    <wsdl:part element="tns:getNamesRequest" name="getNamesInput" />
+  </wsdl:message>
+  <wsdl:message name="getNamesResponse">
+    <wsdl:part element="tns:getNamesResponse" name="getNamesOutput" />
+  </wsdl:message>
+
+  <!-- #### getIDs #### //-->
+  <wsdl:message name="getIDsRequest">
+    <wsdl:part element="tns:getIDsRequest" name="getIDsInput" />
+  </wsdl:message>
+  <wsdl:message name="getIDsResponse">
+    <wsdl:part element="tns:getIDsResponse" name="getIDsOutput" />
+  </wsdl:message>
+
   <!-- #### getProjectDescription #### //-->
   <wsdl:message name="getProjectDescriptionRequest">
     <wsdl:part element="tns:getProjectDescriptionRequest" name="getProjectDescriptionInput" />
@@ -1017,6 +1137,108 @@
       <wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
     </wsdl:operation>
 
+
+    <!-- #### setName #### //-->
+    <wsdl:operation name="setName">
+
+      <wsdl:documentation>
+	Supply user-specific information for display instead of the ePPN.
+	<ul>
+	  <li><b>Input Parameters</b> setNameRequest, with elements
+	    <ul>
+	      <li>auth - String, SessionID of User who wants to set their name</li>
+	      <li>log - String for log information, optional</li>
+	      <li>webAuthSecret - String that is known by the Web Authentication which will assure that the data are correct. If the secret is not given, the user entry will be marked as a volunteered one, where the users gave their details themselves.</li>
+	      <li>name - String with User Name, preferredly in the form of "givenname surname"</li>
+	      <li>mail - String with User's E-Mail address</li>
+	      <li>organisation - String with Affiliation of the User</li>
+	      <li>agreeSerach - Boolean telling whether the user agrees to be searchable by the getIDs function.</li>
+	    </ul>
+	  </li>
+	  <li><b>Output Parameters</b> booleanResponse, with element
+	    <ul>
+	      <li>result - boolean, true if operation was successful,
+	      false otherwise</li>
+	    </ul>
+	  </li>
+	  <li><b>Faults</b>
+	    <ul>
+	    </ul>
+	  </li>
+	</ul>
+      </wsdl:documentation>
+
+      <wsdl:input message="tns:setNameRequest" />
+      <wsdl:output message="tns:setNameResponse" />
+    </wsdl:operation>
+
+
+    <!-- #### getNames #### //-->
+    <wsdl:operation name="getNames">
+
+      <wsdl:documentation>
+Returns user records for a list of ePPNs
+	<ul>
+	  <li><b>Input Parameters</b> getNamesRequest, with elements
+	    <ul>
+	      <li>auth - String, SessionID of user that wants to query for names</li>
+	      <li>log - String,</li>
+	     <li>ePPN - List of Strings</li>
+	    </ul>
+	  </li>
+	  <li><b>Output Parameters</b> getNamesResponse. It contains 0...n userDetails, which themselves have elements
+	    <ul>
+	      <li>ePPN - String holding ePPN of user </li>
+	      <li>name - String holding Name (cn) of user </li>
+	      <li>mail - String holding E-Mail address of user </li>
+	      <li>organisation - String holding user' affiliation </li>
+	      <li>agreesearch - Boolean, whether user wants his ID to be found be a search for name or mail address </li>
+	      <li>usersupplieddata - Boolean, whether user himself or his organisation supplied these data </li>
+	    </ul>
+	  </li>
+	  <li><b>Faults</b> none
+	  </li>
+	</ul>
+      </wsdl:documentation>
+
+      <wsdl:input message="tns:getNamesRequest" />
+      <wsdl:output message="tns:getNamesResponse" />
+    </wsdl:operation>
+
+    <!-- #### getIDs #### //-->
+    <wsdl:operation name="getIDs">
+
+      <wsdl:documentation>
+Returns user records for a name or mail address.
+	<ul>
+	  <li><b>Input Parameters</b> getIDsRequest, with elements
+	    <ul>
+	      <li>auth - String, SessionID of user that wants to query for names</li>
+	      <li>log - String,</li>
+	     <li>name - Strings with Name</li>
+	     <li>mail - Strings with E-Mail Address</li>
+	    </ul>
+	  </li>
+	  <li><b>Output Parameters</b> getIDsResponse. It contains 0...n userDetails, which themselves have elements
+	    <ul>
+	      <li>ePPN - String holding ePPN of user </li>
+	      <li>name - String holding Name (cn) of user </li>
+	      <li>mail - String holding E-Mail address of user </li>
+	      <li>organisation - String holding user' affiliation </li>
+	      <li>agreesearch - Boolean, whether user wants his ID to be found be a search for name or mail address </li>
+	      <li>usersupplieddata - Boolean, whether user himself or his organisation supplied these data </li>
+	    </ul>
+	  </li>
+	  <li><b>Faults</b> none
+	  </li>
+	</ul>
+      </wsdl:documentation>
+
+      <wsdl:input message="tns:getIDsRequest" />
+      <wsdl:output message="tns:getIDsResponse" />
+    </wsdl:operation>
+
+
     <!-- #### getObjects #### //-->
     <wsdl:operation name="getObjects">
 
@@ -1681,7 +1903,7 @@
 	  <li><b>Input Parameters</b> getUserRoleRequest, with elements
 	    <ul>
 	      <li>auth - String, SessionID of user that wants to query
-	      for members</li>
+	      for roles</li>
 	      <li>log - String for log information, optional</li>
 	      <li>project - String, ProjectID, such as "TGPR123"</li>
 	    </ul>
@@ -1708,6 +1930,38 @@
     </wsdl:operation>
 
 
+
+    <!-- #### getFriends #### //-->
+    <wsdl:operation name="getFriends">
+
+      <wsdl:documentation>
+	Returns ePPNs of the users the authenticated user has
+relations with, i.e. they are signed into the same project role. Each
+user name has a score which shows how many roles the requester shares
+with that user.
+	<ul>
+	  <li><b>Input Parameters</b> getFriendsRequest, with element
+	    <ul>
+	      <li>auth - String, SessionID of user that wants to query
+	      for friends</li>
+	    </ul>
+	  </li>
+	  <li><b>Output Parameters</b> getFriendsResponse. It contains 0...n friends, which themselves have elements
+	    <ul>
+	      <li>username - String holding ePPN of user </li>
+	      <li>score - Integer with the users' number of common roles with the requester</li>
+	    </ul>
+	  </li>
+	  <li><b>Faults</b> none
+	  </li>
+	</ul>
+      </wsdl:documentation>
+
+      <wsdl:input message="tns:getFriendsRequest" />
+      <wsdl:output message="tns:getFriendsResponse" />
+    </wsdl:operation>
+
+
     <!-- #### getRights #### //-->
     <wsdl:operation name="getRights">
 
@@ -2041,6 +2295,27 @@
       <wsdl:fault name="authenticationFault"><soap:fault name="authenticationFault" use="literal"/></wsdl:fault>
     </wsdl:operation>
 
+    <!-- #### setName #### //-->
+    <wsdl:operation name="setName">
+      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/setName" />
+      <wsdl:input><soap:body use="literal" /></wsdl:input>
+      <wsdl:output><soap:body use="literal" /></wsdl:output>
+    </wsdl:operation>
+
+    <!-- #### getNames #### //-->
+    <wsdl:operation name="getNames">
+      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getNames" />
+      <wsdl:input><soap:body use="literal" /></wsdl:input>
+      <wsdl:output><soap:body use="literal" /></wsdl:output>
+    </wsdl:operation>
+
+    <!-- #### getIDs #### //-->
+    <wsdl:operation name="getIDs">
+      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getIDs" />
+      <wsdl:input><soap:body use="literal" /></wsdl:input>
+      <wsdl:output><soap:body use="literal" /></wsdl:output>
+    </wsdl:operation>
+
     <!-- #### getObjects #### //-->
     <wsdl:operation name="getObjects">
       <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getObjects" />
@@ -2179,6 +2454,13 @@
       <wsdl:fault name="unknownProjectFault"><soap:fault name="unknownProjectFault" use="literal"/></wsdl:fault>
     </wsdl:operation>
 
+    <!-- #### getFriends #### //-->
+    <wsdl:operation name="getFriends">
+      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getFriends" />
+      <wsdl:input><soap:body use="literal" /></wsdl:input>
+      <wsdl:output><soap:body use="literal" /></wsdl:output>
+    </wsdl:operation>
+
     <!-- #### getRights #### //-->
     <wsdl:operation name="getRights">
       <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getRights" />