diff --git a/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtra.class.php b/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtra.class.php
index fb9ea74a00bf7b140caa6bb9c9524fff70f8f60e..b8154c1a9c10693df9493273e0cec2303dbbe687 100755
--- a/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtra.class.php
+++ b/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtra.class.php
@@ -55,50 +55,6 @@ class TgExtra {
   }
 
 
-
-
-  // -----------------------------------------------------
-  // Function: userExists
-  // Input: auth / xsd:string
-  //        log / xsd:string
-  //        username / xsd:string
-  // Output: result / xsd:boolean
-  // Description
-  //   Checks if a given user exists in the LDAP directory.
-  // -----------------------------------------------------
-  function userExists( $inRequest ) {
-
-    $result = new booleanResponse();  // The result
-
-
-    $filter  = "(&" . $this->config->getValue( "authentication", "filter" );
-    $filter .= "(" . $this->config->getValue( "authentication", "namingattribute" ) . "=" . $inRequest->username . "))";
-
-
-    // Search for the users entry
-    $arrUserEntry = $this->connection['user']->search( $this->config->getValue( "authentication", "base" ), $filter, "sub",
-                                                       Array( $this->config->getValue( "authentication", "namingattribute" ) ) );
-
-
-    if(    isset( $arrUserEntry[0] )
-        && isset( $arrUserEntry[0]['dn'] ) ) {
-
-      $result->result = true;
-
-    }
-    else {
-
-      $result->result = false;
-
-    }
-
-
-    return $result;
-
-  }
-
-
-
   // -----------------------------------------------------
   // Function: authenticate
   // Input: username / xsd:string
@@ -199,163 +155,43 @@ class TgExtra {
   }
 
 
-
-
   // -----------------------------------------------------
-  // Function: tgCrudCheckAccess
-  // Input: log / xsd:string
-  //        session / xsd:string
-  //        operation / xsd:string
-  //        resource / xsd:string
-  // Output: sid / xsd:string
+  // Function: userExists
+  // Input: auth / xsd:string
+  //        log / xsd:string
+  //        username / xsd:string
+  // Output: result / xsd:boolean
   // Description
-  //   Searches for the given resource. If it's existing the
-  //   method starts the checkAccess query and returns the
-  //   result. Otherwise a Fault is generated that sais that
-  //   the resource does not exist.
+  //   Checks if a given user exists in the LDAP directory.
   // -----------------------------------------------------
-  public function tgCrudCheckAccess( $inRequest ) {
-
-    // Must check in the following order:
-    // 1. Check if the tgcrud secret is correctly set, if not > authenticationFault
-    // 2. Check if the resource is existing, if not > unknownResourceFault
-    // 3. Check the session ID, if not valid > set result to false and return
-    // 4. Set the other results and return true
-
-    $result = new tgCrudCheckAccessResponse();
-    $objProjectInfo = new stdClass();
-    $objFaultDetail = new stdClass();
-    $arrResource = Array();
-    $arrProject = None;
-    $filter = "";
-
-
-    if( $inRequest->secret === $this->config->getValue( "crud", "secret" ) ) {
-
-      $filter  = "(&(objectClass=rbacResource)";
-      $filter .= "(|(" . $this->rbac->getConfiguration()->getValue( "resource", "aliasattribute" ) . "=" . $inRequest->resource . ")";
-      $filter .= "(" . $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" ) . "=" . $inRequest->resource . ")))";
-
-
-      // Search for the resource.
-      $arrResource = $this->connection['resource']->search( $this->rbac->getConfiguration()->getValue( "resource", "base" ), $filter, "sub" );
-
-
-      if( sizeof( $arrResource ) > 0 ) {
-
-        // Add the PDP result
-        $result->result = $this->rbac->checkAccess( $inRequest->auth, $inRequest->operation, $inRequest->resource );
-	if( !isset( $arrResource[0]['tgispublic'] ) ) {
-	  $result->public = false;
-	} else {
-	  preg_match( "/^true$/i", $arrResource[0]['tgispublic'][0] ) ? $result->public = true : $result->public = false;
-	}
-
-        // See if the object is a project role...
-        for( $loObjectclass = 0; $loObjectclass < sizeof( $arrResource[0]['objectclass'] ); $loObjectclass++ ) {
-
-          // If this matches the resource is a project and the
-          // work has already been done.
-          if( preg_match( "/TextGridProject/i", $arrResource[0]['objectclass'][$loObjectclass] ) ) {
-
-            $arrProject = $arrResource;
-            break;
-
-          }
-
-        }
-
-
-        // If the resource isn't a project the project corresponding to the
-        // has to be searched now.
-        if( $arrProject == None && isset( $arrResource['tgprojectid'] ) ) {
-
-          $filter  = "(&(objectClass=rbacResource)";
-          $filter .= "(|(" . $this->rbac->getConfiguration()->getValue( "resource", "aliasattribute" ) . "=" . $arrResource['tgprojectid'][0] . ")";
-          $filter .= "(" . $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" ) . "=" . $arrResource['tgprojectid'][0] . ")))";
-
-
-          // Search for the project.
-          $arrProject = $this->connection['resource']->search( $this->rbac->getConfiguration()->getValue( "resource", "base" ), $filter, "sub" );
-
-        }
-
-
-        if( $arrProject != None && sizeof( $arrProject ) > 0 ) {
-
-          $result->project = new ProjectInfo( $arrProject[0][$this->rbac->getConfiguration()->getValue( "role", "namingattribute" )][0],
-                                              $arrProject[0]['tgprojectname'][0], $arrProject[0]['tgprojectdescription'][0],
-                                              $arrProject[0]['tgprojectfile'][0] );
-
-        }
-
-
-        // Finally add the username and allowed
-        // operations for the current session.
-        $result->username = $this->rbac->sessionUser( $inRequest->auth );
-	
-
-        try {
-
-          $result->operation = $this->rbac->userOperationsOnObject( $result->username, $inRequest->resource );
-
-
-          // Make sure that if the operation was "read" and the user
-          // has access but has this right due to an extension the
-          // permissionset contains the read operation.
-          if( $inRequest->operation == "read" && $result->result && !in_array( "read", $result->operation ) ) {
-
-            $result->operation[] = "read";
-
-          }
-
-
-          return $result;
-
-        }
-        catch( Exception $e ) {
+  function userExists( $inRequest ) {
 
-          $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" );
-          $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" );
-          $objFaultDetail->cause = "Object does not exist";
+    $result = new booleanResponse();  // The result
 
 
-          return new SoapFault( "unknownResourceFault",
-                                $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ),
-                                get_class( $this ),
-                                $objFaultDetail );
+    $filter  = "(&" . $this->config->getValue( "authentication", "filter" );
+    $filter .= "(" . $this->config->getValue( "authentication", "namingattribute" ) . "=" . $inRequest->username . "))";
 
-        }
 
-      }
-      else {
-
-        $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" );
-        $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" );
-        $objFaultDetail->cause = "Object does not exist";
+    // Search for the users entry
+    $arrUserEntry = $this->connection['user']->search( $this->config->getValue( "authentication", "base" ), $filter, "sub",
+                                                       Array( $this->config->getValue( "authentication", "namingattribute" ) ) );
 
 
-        return new SoapFault( "unknownResourceFault",
-                              $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ),
-                              get_class( $this ),
-                              $objFaultDetail );
+    if(    isset( $arrUserEntry[0] )
+        && isset( $arrUserEntry[0]['dn'] ) ) {
 
-      }
+      $result->result = true;
 
     }
     else {
 
-      $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
-      $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
-      $objFaultDetail->cause = "You are not cruddy enough - Go away and come back as CRUD!";
+      $result->result = false;
 
+    }
 
-      return new SoapFault( "authenticationFault",
-                            "You are not cruddy enough - Go away and come back as CRUD!",
-                            get_class( $this ),
-                            $objFaultDetail );
 
-    }
+    return $result;
 
   }
 
@@ -1133,98 +969,9 @@ class TgExtra {
   }
 
 
-  // -----------------------------------------------------
-  // Function: getEPPN
-  // Input: auth / xsd:string
-  //        log / xsd:string
-  //        secret / xsd:string
-  // Output: eppn / xsd:string
-  // Description
-  //   Returns the TextGrid ID (ePPN) of a session user
-  // -----------------------------------------------------
-  public function getEPPN ( $inRequest ) {
-
-    $result = new StdClass();  // The return-result
-
-    if ($inRequest->secret !== $this->config->getValue( "SIDcheck", "secret" ) ) { 
-      return new SoapFault( "authenticationFault",
-                            $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" ),
-                            get_class( $this ),
-		            $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" ) );
-    }
-
-    try {
-      $result->eppn = $this->rbac->sessionUser( $inRequest->auth );
-    } catch (Fault $f) {
-      return new SoapFault( "authenticationFault",
-                            $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" ),
-                            get_class( $this ),
-                            $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" ) );
-    }
-    return $result;
-  }
-
-
-
-
-
-  // -----------------------------------------------------
-  // Function: getUUID
-  // Input: auth / xsd:string
-  //        log / xsd:string
-  //        resource / xsd:string
-  // Output: result / xsd:string
-  // Description
-  //   Returns the UUID of a resource, possibly nothing if unset.
-  // -----------------------------------------------------
-  public function getUUID( $inRequest ) {
-
-    $result = new getUUIDResponse();  // The return-result
-    $filter = "";                      // RBAC-filter
-    $arrResource = Array();            // Resoult of the RBAC-search
-
-
-    // Create a filter that searches for the
-    // given resource.
-    $filter  = "(&" . $this->rbac->getConfiguration()->getValue( "resource", "filter" );
-    $filter .= "(|(" . $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" ) . "=" . $inRequest->resource . ")";
-    $filter .= "  (" . $this->rbac->getConfiguration()->getValue( "resource", "aliasattribute" ) . "=" . $inRequest->resource . ")))";
-
-
-    if( $this->rbac->checkAccess( $inRequest->auth, "read", $inRequest->resource ) ) {
 
-      $arrResource = $this->connection['resource']->search( $this->rbac->getConfiguration()->getValue( "resource", "base" ),
-                                                            $filter, "sub",
-                                                            Array( "tgresourceuuid" ) );
-
-
-      if( sizeof( $arrResource ) == 1 ) {
-
-	if (isset($arrResource[0]['tgresourceuuid'][0])) {
-
-          $result->uuid = $arrResource[0]['tgresourceuuid'][0];
-
-	} else {
 
-          $result->uuid = "No UUID defined"; // will be a fault later
 
-	}
-
-      } else {
-
-        $result->uuid = "Resource not found or no access right";	// will be a fault later
-
-      }
-
-    } else {
-
-      $result->uuid = "Resource not found or no access right";	// will be a fault later
-
-    }
-
-    return $result;
-
-  }
 
 
 
@@ -1445,63 +1192,6 @@ class TgExtra {
 
 
 
-  // -----------------------------------------------------
-  // Function: publish
-  // Input: auth / xsd:string
-  //        log / xsd:string
-  //        project / xsd:string
-  // Output: result / xsd:boolean
-  // Description
-  //   Returns a list of operations allowed by the user
-  //   on a specific resource.
-  // -----------------------------------------------------
-  public function publish( $inRequest ) {
-
-    $arrResource = Array();
-    $arrModify = Array();
-    $filter = "";
-    $result = new booleanResponse();  // The return-result
-    $objFaultDetail = new stdClass();
-
-
-    $filter  = "(&" . $this->rbac->getConfiguration()->getValue( "resource", "filter" );
-    $filter .= "(|(" . $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" ) . "=" . $inRequest->resource . ")";
-    $filter .= "  (" . $this->rbac->getConfiguration()->getValue( "resource", "aliasattribute" ) . "=" . $inRequest->resource . ")))";
-
-
-    // Get the resource
-    $arrResource = $this->connection['resource']->search( $this->rbac->getConfiguration()->getValue( "resource", "base" ), $filter, "sub",
-                                                          Array( "tgispublic", "tgprojectid" ) );
-
-
-    if( $this->rbac->checkAccess( $inRequest->auth, "publish", $inRequest->resource ) ) {
-
-      $arrModify['tgispublic'][] = "TRUE";
-      $arrModify['rbacpermission'] = Array();
-      $result->result = $this->connection['resource']->modify( $arrResource[0]['dn'], $arrModify );
-
-    }
-    else {
-
-      $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
-      $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
-      $objFaultDetail->cause = "You do not have the permission publish the resource " . $inRequest->resource . ".";
-
-
-      return new SoapFault( "authenticationFault",
-                             $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" ),
-                             get_class( $this ),
-                             $objFaultDetail );
-
-    }
-
-
-    return $result;
-
-  }
-
-
-
 
   // -----------------------------------------------------
   // Function: getProjectDescription
@@ -2036,452 +1726,6 @@ class TgExtra {
 
 
 
-
-  // -----------------------------------------------------
-  // Function: unregisterResource
-  // Input: auth / xsd:string
-  //        log / xsd:string
-  //        project / xsd:string
-  //        uri / xsd:string
-  // Output: result / xsd:boolean
-  // Description
-  //   Tries to remove a resource from the directory. There for
-  //   a user has to have the permission "delete" on the
-  //   resource.
-  // -----------------------------------------------------
-  function unregisterResource( $inRequest ) {
-
-    $resourceNamingAttribute = "";    // The naming-attribute of the resource
-    $resourceAliasAttribute = "";     // The alias-attribute of the resource
-    $filter = "";                     // The LDAP-filter to find the resource
-    $result = new booleanResponse();  // The return-result
-    $objFaultDetail = new stdClass();
-
-
-    if( $inRequest->secret === $this->config->getValue( "crud", "secret" ) ) {
-
-      if( $this->rbac->checkAccess( $inRequest->auth, "delete", $inRequest->uri ) ) {
-
-        // The TextGrid-resource naming-attribute
-        $resourceNamingAttribute = $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" );
-        $resourceAliasAttribute = $this->rbac->getConfiguration()->getValue( "resource", "aliasattribute" );
-
-
-        $filter  = "(&" . $this->rbac->getConfiguration()->getValue( "resource", "filter" );
-        $filter .= "(|(" . $resourceNamingAttribute . "=" . $inRequest->uri . ")";
-        $filter .= "  (" . $resourceAliasAttribute . "=" . $inRequest->uri . ")))";
-
-        $arrResource = $this->connection['resource']->search( $this->rbac->getConfiguration()->getValue( "resource", "base" ), $filter, "sub" );
-
-
-        if( sizeof( $arrResource ) == 1 ) {
-
-          $result->result = $this->connection['resource']->delete( $arrResource[0]['dn'] );
-
-        }
-        else {
-
-          $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" );
-          $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" );
-          $objFaultDetail->cause = "The specified resource " . $inRequest->resource . " could not be found.";
-
-
-          return new SoapFault( "unknownResourceFault",
-                                $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" ),
-                                get_class( $this ),
-                                $objFaultDetail );
-
-        }
-
-      }
-      else {
-
-        $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
-        $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
-        $objFaultDetail->cause = "You do not have the permission to remove " . $inRequest->resource . ".";
-
-
-        return new SoapFault( "authenticationFault",
-                               $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" ),
-                               get_class( $this ),
-                               $objFaultDetail );
-
-      }
-
-
-      return $result;
-
-    }
-    else {
-
-      $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
-      $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
-      $objFaultDetail->cause = "You are not cruddy enough - Go away and come back as CRUD!";
-
-
-      return new SoapFault( "authenticationFault",
-                            "You are not cruddy enough - Go away and come back as CRUD!",
-                            get_class( $this ),
-                            $objFaultDetail );
-
-    }
-
-  }
-
-
-  // -----------------------------------------------------
-  // Function: getSLC
-  // Input: auth / xsd:string
-  //        log / xsd:string
-  //        secret / xsd:string
-  // Output: slc / xsd:base64binary
-  // Description
-  // CRUD may use this to retrieve a Short-Lived Certificate Key pair for the user
-  // -----------------------------------------------------
-  function getSLC ( $inRequest ) {
-
-    if ($inRequest->secret !== $this->config->getValue( "crud", "secret" ) ) { 
-      return new SoapFault( "authenticationFault",
-                            $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" ),
-                            get_class( $this ),
-		            $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" ) );
-    }
-
-    // Search for Session entry
-    $filter = "(" . $this->rbac->getConfiguration()->getValue( "session", "namingattribute" ) .
-      "=" . $inRequest->auth . ")";
-    $arrSessionEntry = $this->connection['user']->search(
-           $this->rbac->getConfiguration()->getValue( "session", "base" ),
-	   $filter,	   "sub",           Array( "rbacSessionUser" ) );
-
-    // retrieve rbacSessionUser attribute (ePPN)
-    if(    isset( $arrSessionEntry[0] ) && isset( $arrSessionEntry[0]['dn'] ) ) {
-      $eppn = $arrSessionEntry[0]['rbacsessionuser'][0];
-    } else {
-      // echo ("Could not find Session entry");
-      return new SoapFault( "authenticationFault",
-			    $this->config->getValue( "errorCode", "AUTHENTICATION_ERROR" ),
-			    get_class( $this ),
-			    $this->config->getValue( "errorDescription", "AUTHENTICATION_ERROR" ) );
-
-    }
-
-    // Search for user entry
-    $filter = "(" . $this->config->getValue( "authentication", "namingattribute" ) . "=" . $eppn . ")";
-    $arrUserEntry = $this->connection['user']->search( 
-       $this->config->getValue( "authentication", "base" ),
-       $filter, "sub", Array( "dn" ) );
-
-    
-    // Retrieve userPKCS12 attribute (certificate + key)
-    if(  isset( $arrUserEntry[0] ) && isset( $arrUserEntry[0]['dn'] ) ) {
-      // have to set binary mode to TRUE...
-      $certArr = $this->connection['user']->getEntry( $arrUserEntry[0]['dn'], array("userpkcs12"), TRUE);
-      $pkcs12 = $certArr['userpkcs12'][0];
-    } else {
-      //echo ("Failed finding the user entry");
-      return new SoapFault( "authenticationFault",
-			    $this->config->getValue( "errorCode", "AUTHENTICATION_ERROR" ),
-			    get_class( $this ),
-			    $this->config->getValue( "errorDescription", "AUTHENTICATION_ERROR" ) );
-
-    }
-
-    // find the passphrase for the p12 from the mapSIDtoePassphrase demon 
-    $sock = socket_create( AF_UNIX, SOCK_STREAM, 0 );
-    $response = new stdClass();
-    $socketfilename = $this->config->getValue( "SLCPassphraseMap", "socketfile"  );
-
-    if( socket_connect( $sock, $socketfilename ) ) {
-	socket_write ( $sock, "getPassphrase\n");
-        socket_write ( $sock, $inRequest->auth . "\n" );
-	socket_write ( $sock, "\n" . '>>>EOF<<<' . "\n");
-
-	$result = socket_read( $sock, 4096 , PHP_NORMAL_READ );
-	
-	if ( strpos ($result, "getPassphraseresult") == 0 ){
-   	    $passphrase = chop(socket_read( $sock, 4096 , PHP_NORMAL_READ ));
-	} else {
-            // no passphrase returned
-            return new SoapFault( "unknownResourceFault",
-                            $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" ),
-                            get_class( $this ),
-                            $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ) );
-	}
-
-        socket_shutdown( $sock, 2 );
-        socket_close( $sock );
-
-    } else {
-        // could not connect to socket
-        return new SoapFault( "unknownResourceFault",
-                            $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" ),
-                            get_class( $this ),
-                            $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ) );
-
-    }
-    // Encode certificate into PEM format
-    $both = '';
-    if ( openssl_pkcs12_read($pkcs12, $allpem, $passphrase) ) {
-      $both = $allpem['cert'] .  $allpem['pkey'];
-    } else {
-      //echo ("Failed reading the user's certificate");
-      return new SoapFault( "unknownResourceFault",
-			    $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" ),
-			    get_class( $this ),
-			    $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ) );
-
-    }  
-
-    $result = new getSLCResponse();
-    $result->slc =  base64_encode($both);
-    
-    return $result;
-
-  }
-
-
-
-  // -----------------------------------------------------
-  // Function: getCSR
-  // Input: auth / xsd:string
-  //        log / xsd:string
-  // Output: csr / xsd:base64binary
-  // Description
-  // Returns a dummy certificate signing request, where the contacted deamon will hold the key in memory
-  // -----------------------------------------------------
-  function getCSR ( $inRequest ) {
-
-    # TODO should check whether auth is valid
-    $sock = socket_create( AF_UNIX, SOCK_STREAM, 0 );
-    $response = new stdClass();
-    $socketfilename = $this->config->getValue( "SLCPassphraseMap", "socketfile"  );
-
-    if( socket_connect( $sock, $socketfilename ) ) {
-
-        socket_write ( $sock, "getCSR\n");
-	socket_write ( $sock, $inRequest->auth . "\n" );
-        $result = socket_read( $sock, 80, PHP_NORMAL_READ );
-        if ( strpos ($result , "getCSRresult") == 0 ) {
-            $result = socket_read( $sock, 80, PHP_NORMAL_READ );
-            $csr = "";
-            while ( $result && !(strpos ($result, '>>>EOF<<<') === 0 )) {
-                $csr .= $result;
-                $result = socket_read( $sock, 80, PHP_NORMAL_READ );
-            }
-
-   	    $response->csr =  $csr;
-    
-	return $response;
-	} else {
-            return new SoapFault( "unknownResourceFault",
-                            $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" ),
-                            get_class( $this ),
-                            $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ) );
-
-	}
-	socket_shutdown( $sock, 2 );
-        socket_close( $sock );
-
-    } else {
-    $response->csr = base64_encode(socket_strerror(socket_last_error()));
-    return $response;
-
-        return new SoapFault( "unknownResourceFault",
-                            $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" ),
-                            get_class( $this ),
-                            $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ) );
-
-    }
-}
-
-
-
-  // -----------------------------------------------------
-  // Function: putCRT
-  // Input: auth / xsd:string
-  //        log / xsd:string
-  //        crt / xsd:string 
-  // Output: success / xsd:boolean
-  // Description
-  // Returns a dummy certificate signing request
-  // -----------------------------------------------------
-  function putCRT ( $inRequest ) {
-
-    # TODO should check whether auth is valid
-    $sock = socket_create( AF_UNIX, SOCK_STREAM, 0 );
-    $response = new stdClass();
-    $socketfilename = $this->config->getValue( "SLCPassphraseMap", "socketfile"  );
-
-    if( socket_connect( $sock, $socketfilename ) ) {
-
-        socket_write ( $sock, "putCRT\n");
-	socket_write ( $sock, $inRequest->auth . "\n" );
-	socket_write ( $sock, $inRequest->crt );
-        socket_write ( $sock, "\n" . '>>>EOF<<<' . "\n");
-
-        $result = socket_read( $sock, 4096, PHP_NORMAL_READ );
-	if ( strpos ($result, "putCRTresult") == 0 ) {
-	    $success  = chop(socket_read( $sock, 4096 , PHP_NORMAL_READ));
-	    if ($success == "true") {
-		$response->success = true;
-                return $response;
-	    }
-	}
-	socket_shutdown( $sock, 2 );
-        socket_close( $sock );
-    } 
-    $response->success = false;
-    return $response;
-  }
-
-
-
-  // -----------------------------------------------------
-  // Function: registerResource
-  // Input: auth / xsd:string
-  //        log / xsd:string
-  //        project / xsd:string
-  //        uri / xsd:string
-  //        uuid / xsd:string
-  // Output: result / xsd:boolean
-  // Description
-  //   Tries to add a resource to the directory. There for
-  //   a user has to have the permission "create" on the
-  //   resource "project".
-  // -----------------------------------------------------
-  function registerResource( $inRequest ) {
-
-    $connection = false;              // The connection for resources
-    $registered = false;              // The result of the registration-tries
-    $registerTry = 10;                // The number of tries of registering the resource
-    $resourceNamingAttribute = "";    // The naming-attribute of the resource
-    $arrCounter = false;              // The counter entry
-    $askedDaemon = false;
-    $result = new operationsetResponse();  // The return-result
-    $objFaultDetail = new stdClass();
-
-
-    // Create a new uuid for the new project
-    $strRbacResourceUuid = $this->uuidV4();	
-
-
-    if( $inRequest->secret === $this->config->getValue( "crud", "secret" ) ) {
-
-
-      // The TextGrid-resource naming-attribute
-      $resourceNamingAttribute = $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" );
-
-
-      if( $this->rbac->checkAccess( $inRequest->auth, "create", $inRequest->project ) ) {
-
-        // As long as the resource is not registered and the number
-        // of tries has not been reached, try to register
-        while(    !$registered
-               && ($registerTry > 0) ) {
-
-          // This is the resource-entry that will be
-          // added to the directory
-          $arrEntry = Array();
-          $arrEntry['objectclass'][] = "textgridResource";
-          $arrEntry['objectclass'][] = "rbacResource";
-          $arrEntry['rbacoperation'][] = "read";
-          $arrEntry['rbacoperation'][] = "write";
-          $arrEntry['rbacoperation'][] = "delegate";
-          $arrEntry['rbacoperation'][] = "delete";
-          $arrEntry['rbacoperation'][] = "publish";
-          $arrEntry['tgresourceuri'][] = $inRequest->uri;
-	  if (isset($inRequest->uuid)) {
-	          $arrEntry['tgresourceuuid'][] = $inRequest->uuid;
-	  }
-          $arrEntry['tgprojectid'][] = $inRequest->project;
-          $arrEntry['tgispublic'][] = "FALSE";
-          $arrEntry[$resourceNamingAttribute][] = "TGRS-" . $strRbacResourceUuid; //($freeNumber);
-          $arrEntry['tgresourceowner'][] = $this->rbac->sessionUser( $inRequest->auth );
-
-
-          // Add the default permissions to the resource
-          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Projektleiter,"
-                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
-                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:delegate";
-          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Projektleiter,"
-                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
-                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:publish";
-          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Projektleiter,"
-                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
-                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:read";
-          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Administrator,"
-                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
-                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:delete";
-          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Administrator,"
-                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
-                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:read";
-          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Bearbeiter,"
-                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
-                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:read";
-          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Bearbeiter,"
-                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
-                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:write";
-          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Beobachter,"
-                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
-                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:read";
-
-
-          // Try to add the resource with the appropriate number. If
-          // this fails, we will try again (10 times).
-          $registered = $this->connection['resource']->add( $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" ) . "=TGRS-"
-                                                            . $strRbacResourceUuid . "," . $this->config->getValue( "textGridResource", "base" ),
-                                                            $arrEntry );
-
-
-          $registerTry--;
-
-        }
-
-
-        // Create the set of operations the user has on
-        // the new object.
-
-        $result->operation = $this->rbac->userOperationsOnObject( $this->rbac->sessionUser( $inRequest->auth ), "TGRS-" . $strRbacResourceUuid );
-
-      }
-      else {
-
-        $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
-        $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
-        $objFaultDetail->cause = "You are not allowed to create resources in this project.";
-
-
-        return new SoapFault( "authenticationFault",
-                              "You are not allowed to create resources in this project.",
-                              get_class( $this ),
-                              $objFaultDetail );
-
-      }
-
-
-      return $result;
-
-    }
-    else {
-
-      $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
-      $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
-      $objFaultDetail->cause = "You are not cruddy enough - Go away and come back as CRUD!";
-
-
-      return new SoapFault( "authenticationFault",
-                            "You are not cruddy enough - Go away and come back as CRUD!",
-                            get_class( $this ),
-                            $objFaultDetail );
-
-    }
-
-  }
-
-
-
-
   // -----------------------------------------------------
   // Function: getLeader
   // Input: log / xsd:string
@@ -3308,7 +2552,6 @@ class TgExtra {
 
     return $result;
 
-
   }
 
 
@@ -3484,7 +2727,6 @@ class TgExtra {
 
 
 
-
   function uuidV4() {
 
     $strResult = "";
diff --git a/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtraCrud.class.php b/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtraCrud.class.php
index 1cd9384a27ee1a398a888d12c4b659c3149e0e1f..319dcc433776ca97dbd77f56d3a59f1b0dcb77b0 100755
--- a/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtraCrud.class.php
+++ b/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtraCrud.class.php
@@ -56,12 +56,12 @@ class TgExtraCrud {
 
 
 
-
   // -----------------------------------------------------
   // Function: nearlyPublish
   // Input: auth / xsd:string
   //        log / xsd:string
-  //        project / xsd:string
+  //        secret / xsd:string
+  //        resource / xsd:string
   // Output: result / xsd:boolean
   // Description
   //   Returns a list of operations allowed by the user
@@ -75,6 +75,19 @@ class TgExtraCrud {
     $result = new booleanResponse();  // The return-result
     $objFaultDetail = new stdClass();
 
+    if( $inRequest->secret !== $this->config->getValue( "crud", "secret" ) ) {
+
+      $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
+      $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
+      $objFaultDetail->cause = "Only CRUD can nearly publish resources.";
+
+      return new SoapFault( "authenticationFault",
+                            "Only CRUD can nearly publish resources.",
+                            get_class( $this ),
+                            $objFaultDetail );
+    }
+
+    // ELSE (presented secret is correct)
 
     $filter  = "(&" . $this->rbac->getConfiguration()->getValue( "resource", "filter" );
     $filter .= "(|(" . $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" ) . "=" . $inRequest->resource . ")";
@@ -142,5 +155,808 @@ class TgExtraCrud {
 
   }
 
+
+  // -----------------------------------------------------
+  // Function: registerResource
+  // Input: auth / xsd:string
+  //        log / xsd:string
+  //        project / xsd:string
+  //        uri / xsd:string
+  //        uuid / xsd:string
+  // Output: result / xsd:boolean
+  // Description
+  //   Tries to add a resource to the directory. There for
+  //   a user has to have the permission "create" on the
+  //   resource "project".
+  // -----------------------------------------------------
+  function registerResource( $inRequest ) {
+
+    $connection = false;              // The connection for resources
+    $registered = false;              // The result of the registration-tries
+    $registerTry = 10;                // The number of tries of registering the resource
+    $resourceNamingAttribute = "";    // The naming-attribute of the resource
+    $arrCounter = false;              // The counter entry
+    $askedDaemon = false;
+    $result = new operationsetResponse();  // The return-result
+    $objFaultDetail = new stdClass();
+
+
+    // Create a new uuid for the new project
+    $strRbacResourceUuid = $this->uuidV4();	
+
+
+    if( $inRequest->secret === $this->config->getValue( "crud", "secret" ) ) {
+
+
+      // The TextGrid-resource naming-attribute
+      $resourceNamingAttribute = $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" );
+
+
+      if( $this->rbac->checkAccess( $inRequest->auth, "create", $inRequest->project ) ) {
+
+        // As long as the resource is not registered and the number
+        // of tries has not been reached, try to register
+        while(    !$registered
+               && ($registerTry > 0) ) {
+
+          // This is the resource-entry that will be
+          // added to the directory
+          $arrEntry = Array();
+          $arrEntry['objectclass'][] = "textgridResource";
+          $arrEntry['objectclass'][] = "rbacResource";
+          $arrEntry['rbacoperation'][] = "read";
+          $arrEntry['rbacoperation'][] = "write";
+          $arrEntry['rbacoperation'][] = "delegate";
+          $arrEntry['rbacoperation'][] = "delete";
+          $arrEntry['rbacoperation'][] = "publish";
+          $arrEntry['tgresourceuri'][] = $inRequest->uri;
+	  if (isset($inRequest->uuid)) {
+	          $arrEntry['tgresourceuuid'][] = $inRequest->uuid;
+	  }
+          $arrEntry['tgprojectid'][] = $inRequest->project;
+          $arrEntry['tgispublic'][] = "FALSE";
+          $arrEntry[$resourceNamingAttribute][] = "TGRS-" . $strRbacResourceUuid; //($freeNumber);
+          $arrEntry['tgresourceowner'][] = $this->rbac->sessionUser( $inRequest->auth );
+
+
+          // Add the default permissions to the resource
+          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Projektleiter,"
+                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
+                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:delegate";
+          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Projektleiter,"
+                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
+                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:publish";
+          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Projektleiter,"
+                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
+                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:read";
+          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Administrator,"
+                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
+                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:delete";
+          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Administrator,"
+                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
+                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:read";
+          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Bearbeiter,"
+                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
+                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:read";
+          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Bearbeiter,"
+                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
+                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:write";
+          $arrEntry['rbacpermission'][] = $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=Beobachter,"
+                                          . $this->rbac->getConfiguration()->getValue( "role", "namingattribute" ) . "=" . $inRequest->project . ","
+                                          . $this->rbac->getConfiguration()->getValue( "project", "base" ) . ":-:read";
+
+
+          // Try to add the resource with the appropriate number. If
+          // this fails, we will try again (10 times).
+          $registered = $this->connection['resource']->add( $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" ) . "=TGRS-"
+                                                            . $strRbacResourceUuid . "," . $this->config->getValue( "textGridResource", "base" ),
+                                                            $arrEntry );
+
+
+          $registerTry--;
+        }
+
+	if (!$registered) {
+
+          $objFaultDetail->faultNo = 4096;
+ 	  $objFaultDetail->faultMessage = "An LDAP-Error occured, see description";
+          $objFaultDetail->cause = "Could not register the resource";
+
+      	  return new SoapFault( "rbacFault",
+                            "Could not register the resource",
+                            get_class( $this ),
+                            $objFaultDetail );
+
+	}
+
+        // Create the set of operations the user has on
+        // the new object.
+
+        $result->operation = $this->rbac->userOperationsOnObject( $this->rbac->sessionUser( $inRequest->auth ), "TGRS-" . $strRbacResourceUuid );
+
+      }
+      else {
+
+        $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
+        $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
+        $objFaultDetail->cause = "You are not allowed to create resources in this project.";
+
+
+        return new SoapFault( "authenticationFault",
+                              "You are not allowed to create resources in this project.",
+                              get_class( $this ),
+                              $objFaultDetail );
+
+      }
+
+
+      return $result;
+
+    }
+    else {
+
+      $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
+      $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
+      $objFaultDetail->cause = "You are not cruddy enough - Go away and come back as CRUD!";
+
+
+      return new SoapFault( "authenticationFault",
+                            "You are not cruddy enough - Go away and come back as CRUD!",
+                            get_class( $this ),
+                            $objFaultDetail );
+
+    }
+
+  }
+
+
+
+
+
+  // -----------------------------------------------------
+  // Function: unregisterResource
+  // Input: auth / xsd:string
+  //        log / xsd:string
+  //        project / xsd:string
+  //        uri / xsd:string
+  // Output: result / xsd:boolean
+  // Description
+  //   Tries to remove a resource from the directory. There for
+  //   a user has to have the permission "delete" on the
+  //   resource.
+  // -----------------------------------------------------
+  function unregisterResource( $inRequest ) {
+
+    $resourceNamingAttribute = "";    // The naming-attribute of the resource
+    $resourceAliasAttribute = "";     // The alias-attribute of the resource
+    $filter = "";                     // The LDAP-filter to find the resource
+    $result = new booleanResponse();  // The return-result
+    $objFaultDetail = new stdClass();
+
+
+    if( $inRequest->secret === $this->config->getValue( "crud", "secret" ) ) {
+
+      if( $this->rbac->checkAccess( $inRequest->auth, "delete", $inRequest->uri ) ) {
+
+        // The TextGrid-resource naming-attribute
+        $resourceNamingAttribute = $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" );
+        $resourceAliasAttribute = $this->rbac->getConfiguration()->getValue( "resource", "aliasattribute" );
+
+
+        $filter  = "(&" . $this->rbac->getConfiguration()->getValue( "resource", "filter" );
+        $filter .= "(|(" . $resourceNamingAttribute . "=" . $inRequest->uri . ")";
+        $filter .= "  (" . $resourceAliasAttribute . "=" . $inRequest->uri . ")))";
+
+        $arrResource = $this->connection['resource']->search( $this->rbac->getConfiguration()->getValue( "resource", "base" ), $filter, "sub" );
+
+
+        if( sizeof( $arrResource ) == 1 ) {
+
+          $result->result = $this->connection['resource']->delete( $arrResource[0]['dn'] );
+
+        }
+        else {
+
+          $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" );
+          $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" );
+          $objFaultDetail->cause = "The specified resource " . $inRequest->resource . " could not be found.";
+
+
+          return new SoapFault( "unknownResourceFault",
+                                $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" ),
+                                get_class( $this ),
+                                $objFaultDetail );
+
+        }
+
+      }
+      else {
+
+        $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
+        $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
+        $objFaultDetail->cause = "You do not have the permission to remove " . $inRequest->resource . ".";
+
+
+        return new SoapFault( "authenticationFault",
+                               $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" ),
+                               get_class( $this ),
+                               $objFaultDetail );
+
+      }
+
+
+      return $result;
+
+    }
+    else {
+
+      $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
+      $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
+      $objFaultDetail->cause = "You are not cruddy enough - Go away and come back as CRUD!";
+
+
+      return new SoapFault( "authenticationFault",
+                            "You are not cruddy enough - Go away and come back as CRUD!",
+                            get_class( $this ),
+                            $objFaultDetail );
+
+    }
+
+  }
+
+
+
+
+
+  // -----------------------------------------------------
+  // Function: tgCrudCheckAccess
+  // Input: log / xsd:string
+  //        session / xsd:string
+  //        operation / xsd:string
+  //        resource / xsd:string
+  // Output: sid / xsd:string
+  // Description
+  //   Searches for the given resource. If it's existing the
+  //   method starts the checkAccess query and returns the
+  //   result. Otherwise a Fault is generated that sais that
+  //   the resource does not exist.
+  // -----------------------------------------------------
+  public function tgCrudCheckAccess( $inRequest ) {
+
+    // Must check in the following order:
+    // 1. Check if the tgcrud secret is correctly set, if not > authenticationFault
+    // 2. Check if the resource is existing, if not > unknownResourceFault
+    // 3. Check the session ID, if not valid > set result to false and return
+    // 4. Set the other results and return true
+
+    $result = new tgCrudCheckAccessResponse();
+    $objProjectInfo = new stdClass();
+    $objFaultDetail = new stdClass();
+    $arrResource = Array();
+    $arrProject = None;
+    $filter = "";
+
+
+    if( $inRequest->secret === $this->config->getValue( "crud", "secret" ) ) {
+
+      $filter  = "(&(objectClass=rbacResource)";
+      $filter .= "(|(" . $this->rbac->getConfiguration()->getValue( "resource", "aliasattribute" ) . "=" . $inRequest->resource . ")";
+      $filter .= "(" . $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" ) . "=" . $inRequest->resource . ")))";
+
+
+      // Search for the resource.
+      $arrResource = $this->connection['resource']->search( $this->rbac->getConfiguration()->getValue( "resource", "base" ), $filter, "sub" );
+
+
+      if( sizeof( $arrResource ) > 0 ) {
+
+        // Add the PDP result
+        $result->result = $this->rbac->checkAccess( $inRequest->auth, $inRequest->operation, $inRequest->resource );
+	if( !isset( $arrResource[0]['tgispublic'] ) ) {
+	  $result->public = false;
+	} else {
+	  preg_match( "/^true$/i", $arrResource[0]['tgispublic'][0] ) ? $result->public = true : $result->public = false;
+	}
+
+        // See if the object is a project role...
+        for( $loObjectclass = 0; $loObjectclass < sizeof( $arrResource[0]['objectclass'] ); $loObjectclass++ ) {
+
+          // If this matches the resource is a project and the
+          // work has already been done.
+          if( preg_match( "/TextGridProject/i", $arrResource[0]['objectclass'][$loObjectclass] ) ) {
+
+            $arrProject = $arrResource;
+            break;
+
+          }
+
+        }
+
+
+        // If the resource isn't a project the project corresponding to the
+        // has to be searched now.
+        if( $arrProject == None && isset( $arrResource['tgprojectid'] ) ) {
+
+          $filter  = "(&(objectClass=rbacResource)";
+          $filter .= "(|(" . $this->rbac->getConfiguration()->getValue( "resource", "aliasattribute" ) . "=" . $arrResource['tgprojectid'][0] . ")";
+          $filter .= "(" . $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" ) . "=" . $arrResource['tgprojectid'][0] . ")))";
+
+
+          // Search for the project.
+          $arrProject = $this->connection['resource']->search( $this->rbac->getConfiguration()->getValue( "resource", "base" ), $filter, "sub" );
+
+        }
+
+
+        if( $arrProject != None && sizeof( $arrProject ) > 0 ) {
+
+          $result->project = new ProjectInfo( $arrProject[0][$this->rbac->getConfiguration()->getValue( "role", "namingattribute" )][0],
+                                              $arrProject[0]['tgprojectname'][0], $arrProject[0]['tgprojectdescription'][0],
+                                              $arrProject[0]['tgprojectfile'][0] );
+
+        }
+
+
+        // Finally add the username and allowed
+        // operations for the current session.
+        $result->username = $this->rbac->sessionUser( $inRequest->auth );
+	
+
+        try {
+
+          $result->operation = $this->rbac->userOperationsOnObject( $result->username, $inRequest->resource );
+
+
+          // Make sure that if the operation was "read" and the user
+          // has access but has this right due to an extension the
+          // permissionset contains the read operation.
+          if( $inRequest->operation == "read" && $result->result && !in_array( "read", $result->operation ) ) {
+
+            $result->operation[] = "read";
+
+          }
+
+
+          return $result;
+
+        }
+        catch( Exception $e ) {
+
+          $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" );
+          $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" );
+          $objFaultDetail->cause = "Object does not exist";
+
+
+          return new SoapFault( "unknownResourceFault",
+                                $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ),
+                                get_class( $this ),
+                                $objFaultDetail );
+
+        }
+
+      }
+      else {
+
+        $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" );
+        $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" );
+        $objFaultDetail->cause = "Object does not exist";
+
+
+        return new SoapFault( "unknownResourceFault",
+                              $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ),
+                              get_class( $this ),
+                              $objFaultDetail );
+
+      }
+
+    }
+    else {
+
+      $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
+      $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
+      $objFaultDetail->cause = "You are not cruddy enough - Go away and come back as CRUD!";
+
+
+      return new SoapFault( "authenticationFault",
+                            "You are not cruddy enough - Go away and come back as CRUD!",
+                            get_class( $this ),
+                            $objFaultDetail );
+
+    }
+
+  }
+
+
+
+
+  // -----------------------------------------------------
+  // Function: getEPPN
+  // Input: auth / xsd:string
+  //        log / xsd:string
+  //        secret / xsd:string
+  // Output: eppn / xsd:string
+  // Description
+  //   Returns the TextGrid ID (ePPN) of a session user
+  // -----------------------------------------------------
+  public function getEPPN ( $inRequest ) {
+
+    $result = new StdClass();  // The return-result
+
+    if ($inRequest->secret !== $this->config->getValue( "SIDcheck", "secret" ) ) { 
+      return new SoapFault( "authenticationFault",
+                            $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" ),
+                            get_class( $this ),
+		            $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" ) );
+    }
+
+    try {
+      $result->eppn = $this->rbac->sessionUser( $inRequest->auth );
+    } catch (Fault $f) {
+      return new SoapFault( "authenticationFault",
+                            $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" ),
+                            get_class( $this ),
+                            $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" ) );
+    }
+    return $result;
+  }
+
+
+
+  // -----------------------------------------------------
+  // Function: getUUID
+  // Input: auth / xsd:string
+  //        log / xsd:string
+  //        resource / xsd:string
+  // Output: result / xsd:string
+  // Description
+  //   Returns the UUID of a resource, possibly nothing if unset.
+  // -----------------------------------------------------
+  public function getUUID( $inRequest ) {
+
+    $result = new getUUIDResponse();  // The return-result
+    $filter = "";                      // RBAC-filter
+    $arrResource = Array();            // Resoult of the RBAC-search
+
+
+    // Create a filter that searches for the
+    // given resource.
+    $filter  = "(&" . $this->rbac->getConfiguration()->getValue( "resource", "filter" );
+    $filter .= "(|(" . $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" ) . "=" . $inRequest->resource . ")";
+    $filter .= "  (" . $this->rbac->getConfiguration()->getValue( "resource", "aliasattribute" ) . "=" . $inRequest->resource . ")))";
+
+
+    if( $this->rbac->checkAccess( $inRequest->auth, "read", $inRequest->resource ) ) {
+
+      $arrResource = $this->connection['resource']->search( $this->rbac->getConfiguration()->getValue( "resource", "base" ),
+                                                            $filter, "sub",
+                                                            Array( "tgresourceuuid" ) );
+
+
+      if( sizeof( $arrResource ) == 1 ) {
+
+	if (isset($arrResource[0]['tgresourceuuid'][0])) {
+
+          $result->uuid = $arrResource[0]['tgresourceuuid'][0];
+
+	} else {
+
+          $result->uuid = "No UUID defined"; // will be a fault later
+
+	}
+
+      } else {
+
+        $result->uuid = "Resource not found or no access right";	// will be a fault later
+
+      }
+
+    } else {
+
+      $result->uuid = "Resource not found or no access right";	// will be a fault later
+
+    }
+
+    return $result;
+
+  }
+
+
+  // -----------------------------------------------------
+  // Function: publish
+  // Input: auth / xsd:string
+  //        log / xsd:string
+  //        secret / xsd:string
+  //        resource / xsd:string
+  // Output: result / xsd:boolean
+  // Description
+  //   Returns a list of operations allowed by the user
+  //   on a specific resource.
+  // -----------------------------------------------------
+  public function publish( $inRequest ) {
+
+    $arrResource = Array();
+    $arrModify = Array();
+    $filter = "";
+    $result = new booleanResponse();  // The return-result
+    $objFaultDetail = new stdClass();
+
+    if( $inRequest->secret !== $this->config->getValue( "crud", "secret" ) ) {
+
+      $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
+      $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
+      $objFaultDetail->cause = "Only CRUD can publish resources.";
+
+      return new SoapFault( "authenticationFault",
+                            "Only CRUD can publish resources.",
+                            get_class( $this ),
+                            $objFaultDetail );
+    }
+
+    // ELSE (presented secret is correct)
+-
+
+    $filter  = "(&" . $this->rbac->getConfiguration()->getValue( "resource", "filter" );
+    $filter .= "(|(" . $this->rbac->getConfiguration()->getValue( "resource", "namingattribute" ) . "=" . $inRequest->resource . ")";
+    $filter .= "  (" . $this->rbac->getConfiguration()->getValue( "resource", "aliasattribute" ) . "=" . $inRequest->resource . ")))";
+
+
+    // Get the resource
+    $arrResource = $this->connection['resource']->search( $this->rbac->getConfiguration()->getValue( "resource", "base" ), $filter, "sub",
+                                                          Array( "tgispublic", "tgprojectid" ) );
+
+
+    if( $this->rbac->checkAccess( $inRequest->auth, "publish", $inRequest->resource ) ) {
+
+      $arrModify['tgispublic'][] = "TRUE";
+      $arrModify['rbacpermission'] = Array();
+      $result->result = $this->connection['resource']->modify( $arrResource[0]['dn'], $arrModify );
+
+    }
+    else {
+
+      $objFaultDetail->faultNo = $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" );
+      $objFaultDetail->faultMessage = $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" );
+      $objFaultDetail->cause = "You do not have the permission publish the resource " . $inRequest->resource . ".";
+
+
+      return new SoapFault( "authenticationFault",
+                             $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" ),
+                             get_class( $this ),
+                             $objFaultDetail );
+
+    }
+
+
+    return $result;
+
+  }
+
+
+
+
+  // -----------------------------------------------------
+  // Function: getSLC
+  // Input: auth / xsd:string
+  //        log / xsd:string
+  //        secret / xsd:string
+  // Output: slc / xsd:base64binary
+  // Description
+  // CRUD may use this to retrieve a Short-Lived Certificate Key pair for the user
+  // -----------------------------------------------------
+  function getSLC ( $inRequest ) {
+
+    if ($inRequest->secret !== $this->config->getValue( "crud", "secret" ) ) { 
+      return new SoapFault( "authenticationFault",
+                            $this->config->getValue( "errorCode", "INSUFFICIENT_ACCESS" ),
+                            get_class( $this ),
+		            $this->config->getValue( "errorDescription", "INSUFFICIENT_ACCESS" ) );
+    }
+
+    // Search for Session entry
+    $filter = "(" . $this->rbac->getConfiguration()->getValue( "session", "namingattribute" ) .
+      "=" . $inRequest->auth . ")";
+    $arrSessionEntry = $this->connection['user']->search(
+           $this->rbac->getConfiguration()->getValue( "session", "base" ),
+	   $filter,	   "sub",           Array( "rbacSessionUser" ) );
+
+    // retrieve rbacSessionUser attribute (ePPN)
+    if(    isset( $arrSessionEntry[0] ) && isset( $arrSessionEntry[0]['dn'] ) ) {
+      $eppn = $arrSessionEntry[0]['rbacsessionuser'][0];
+    } else {
+      // echo ("Could not find Session entry");
+      return new SoapFault( "authenticationFault",
+			    $this->config->getValue( "errorCode", "AUTHENTICATION_ERROR" ),
+			    get_class( $this ),
+			    $this->config->getValue( "errorDescription", "AUTHENTICATION_ERROR" ) );
+
+    }
+
+    // Search for user entry
+    $filter = "(" . $this->config->getValue( "authentication", "namingattribute" ) . "=" . $eppn . ")";
+    $arrUserEntry = $this->connection['user']->search( 
+       $this->config->getValue( "authentication", "base" ),
+       $filter, "sub", Array( "dn" ) );
+
+    
+    // Retrieve userPKCS12 attribute (certificate + key)
+    if(  isset( $arrUserEntry[0] ) && isset( $arrUserEntry[0]['dn'] ) ) {
+      // have to set binary mode to TRUE...
+      $certArr = $this->connection['user']->getEntry( $arrUserEntry[0]['dn'], array("userpkcs12"), TRUE);
+      $pkcs12 = $certArr['userpkcs12'][0];
+    } else {
+      //echo ("Failed finding the user entry");
+      return new SoapFault( "authenticationFault",
+			    $this->config->getValue( "errorCode", "AUTHENTICATION_ERROR" ),
+			    get_class( $this ),
+			    $this->config->getValue( "errorDescription", "AUTHENTICATION_ERROR" ) );
+
+    }
+
+    // find the passphrase for the p12 from the mapSIDtoePassphrase demon 
+    $sock = socket_create( AF_UNIX, SOCK_STREAM, 0 );
+    $response = new stdClass();
+    $socketfilename = $this->config->getValue( "SLCPassphraseMap", "socketfile"  );
+
+    if( socket_connect( $sock, $socketfilename ) ) {
+	socket_write ( $sock, "getPassphrase\n");
+        socket_write ( $sock, $inRequest->auth . "\n" );
+	socket_write ( $sock, "\n" . '>>>EOF<<<' . "\n");
+
+	$result = socket_read( $sock, 4096 , PHP_NORMAL_READ );
+	
+	if ( strpos ($result, "getPassphraseresult") == 0 ){
+   	    $passphrase = chop(socket_read( $sock, 4096 , PHP_NORMAL_READ ));
+	} else {
+            // no passphrase returned
+            return new SoapFault( "unknownResourceFault",
+                            $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" ),
+                            get_class( $this ),
+                            $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ) );
+	}
+
+        socket_shutdown( $sock, 2 );
+        socket_close( $sock );
+
+    } else {
+        // could not connect to socket
+        return new SoapFault( "unknownResourceFault",
+                            $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" ),
+                            get_class( $this ),
+                            $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ) );
+
+    }
+    // Encode certificate into PEM format
+    $both = '';
+    if ( openssl_pkcs12_read($pkcs12, $allpem, $passphrase) ) {
+      $both = $allpem['cert'] .  $allpem['pkey'];
+    } else {
+      //echo ("Failed reading the user's certificate");
+      return new SoapFault( "unknownResourceFault",
+			    $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" ),
+			    get_class( $this ),
+			    $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ) );
+
+    }  
+
+    $result = new getSLCResponse();
+    $result->slc =  base64_encode($both);
+    
+    return $result;
+
+  }
+
+
+  // -----------------------------------------------------
+  // Function: getCSR
+  // Input: auth / xsd:string
+  //        log / xsd:string
+  // Output: csr / xsd:base64binary
+  // Description
+  // Returns a dummy certificate signing request, where the contacted deamon will hold the key in memory
+  // -----------------------------------------------------
+  function getCSR ( $inRequest ) {
+
+    # TODO should check whether auth is valid
+    $sock = socket_create( AF_UNIX, SOCK_STREAM, 0 );
+    $response = new stdClass();
+    $socketfilename = $this->config->getValue( "SLCPassphraseMap", "socketfile"  );
+
+    if( socket_connect( $sock, $socketfilename ) ) {
+
+        socket_write ( $sock, "getCSR\n");
+	socket_write ( $sock, $inRequest->auth . "\n" );
+        $result = socket_read( $sock, 80, PHP_NORMAL_READ );
+        if ( strpos ($result , "getCSRresult") == 0 ) {
+            $result = socket_read( $sock, 80, PHP_NORMAL_READ );
+            $csr = "";
+            while ( $result && !(strpos ($result, '>>>EOF<<<') === 0 )) {
+                $csr .= $result;
+                $result = socket_read( $sock, 80, PHP_NORMAL_READ );
+            }
+
+   	    $response->csr =  $csr;
+    
+	return $response;
+	} else {
+            return new SoapFault( "unknownResourceFault",
+                            $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" ),
+                            get_class( $this ),
+                            $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ) );
+
+	}
+	socket_shutdown( $sock, 2 );
+        socket_close( $sock );
+
+    } else {
+    $response->csr = base64_encode(socket_strerror(socket_last_error()));
+    return $response;
+
+        return new SoapFault( "unknownResourceFault",
+                            $this->config->getValue( "errorCode", "RESOURCENOTFOUND_ERROR" ),
+                            get_class( $this ),
+                            $this->config->getValue( "errorDescription", "RESOURCENOTFOUND_ERROR" ) );
+
+    }
+}
+
+
+  // -----------------------------------------------------
+  // Function: putCRT
+  // Input: auth / xsd:string
+  //        log / xsd:string
+  //        crt / xsd:string 
+  // Output: success / xsd:boolean
+  // Description
+  // Returns a dummy certificate signing request
+  // -----------------------------------------------------
+  function putCRT ( $inRequest ) {
+
+    # TODO should check whether auth is valid
+    $sock = socket_create( AF_UNIX, SOCK_STREAM, 0 );
+    $response = new stdClass();
+    $socketfilename = $this->config->getValue( "SLCPassphraseMap", "socketfile"  );
+
+    if( socket_connect( $sock, $socketfilename ) ) {
+
+        socket_write ( $sock, "putCRT\n");
+	socket_write ( $sock, $inRequest->auth . "\n" );
+	socket_write ( $sock, $inRequest->crt );
+        socket_write ( $sock, "\n" . '>>>EOF<<<' . "\n");
+
+        $result = socket_read( $sock, 4096, PHP_NORMAL_READ );
+	if ( strpos ($result, "putCRTresult") == 0 ) {
+	    $success  = chop(socket_read( $sock, 4096 , PHP_NORMAL_READ));
+	    if ($success == "true") {
+		$response->success = true;
+                return $response;
+	    }
+	}
+	socket_shutdown( $sock, 2 );
+        socket_close( $sock );
+    } 
+    $response->success = false;
+    return $response;
+  }
+
+
+  function uuidV4() {
+
+    $strResult = "";
+    $strRandom = "";
+
+
+    $strRandom = uniqid( md5( rand() ) );
+
+    $strResult .= substr( $strRandom, 0, 8 ) . "-";
+    $strResult .= substr( $strRandom, 8, 4 ) . "-";
+    $strResult .= substr( $strRandom, 12, 4 ) . "-";
+    $strResult .= substr( $strRandom, 16, 4 ) . "-";
+    $strResult .= substr( $strRandom, 32, 12 );
+
+
+    return $strResult;
+
+  }
+
 }
 ?>
diff --git a/info.textgrid.middleware.tgauth.rbac/rbacSoap/examples/tgCrudCheckAccess.php b/info.textgrid.middleware.tgauth.rbac/rbacSoap/examples/tgCrudCheckAccess.php
index 604069d23b8242dacdc5ef880f73746a96c7fd3b..cd6fd542687e629e78e51b43b30aaca972962ae4 100755
--- a/info.textgrid.middleware.tgauth.rbac/rbacSoap/examples/tgCrudCheckAccess.php
+++ b/info.textgrid.middleware.tgauth.rbac/rbacSoap/examples/tgCrudCheckAccess.php
@@ -14,7 +14,7 @@ require_once( "../soapTypes.inc.php" );
 // -----------------------------------------------------
 // You'll need these services
 // -----------------------------------------------------
-$soapSystem = new SoapClient( "../wsdl/tgextra.wsdl", Array( "trace" => true ) );
+$soapSystem = new SoapClient( "../wsdl/tgextra-crud.wsdl", Array( "trace" => true ) );
 
 
 echo "<BODY><HTML>";
diff --git a/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-ws4/tgextra-crud.wsdl b/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-ws4/tgextra-crud.wsdl
index 6749038a760e5de755979596581c11b814bd77fb..d657dca0a9b43c02d38d4e7f1353ae47b50542aa 100644
--- a/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-ws4/tgextra-crud.wsdl
+++ b/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-ws4/tgextra-crud.wsdl
@@ -1,12 +1,220 @@
 <?xml version="1.0" encoding="UTF-8"?>
+
+<!-- NOTE This tgextra-crud.wsdl file is ment to COMMUNICATE WITH TG-crud 
+	service only, for read access please use tgextra.wsdl, for write access use 
+	tgextra-write.wsdl -->
+
 <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
 	xmlns:tns="http://textgrid.info/namespaces/middleware/tgauth-crud"
 	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-	name="tgextra" targetNamespace="http://textgrid.info/namespaces/middleware/tgauth-crud">
-	<!-- #################### # Typ-Definitionen # #################### // -->
+	name="tgextra-crud" targetNamespace="http://textgrid.info/namespaces/middleware/tgauth-crud">
+
+	<!-- ################################################################### -->
+	<!-- ## Typ-Definitionen -->
+	<!-- ################################################################### -->
+
 	<wsdl:types>
 		<xsd:schema targetNamespace="http://textgrid.info/namespaces/middleware/tgauth-crud">
-			<!-- #### nearlyPublish #### // -->
+			<xsd:element name="registerResourceRequest">
+				<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="secret" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="project" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="uri" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+						<xsd:element name="uuid" type="xsd:string" minOccurs="0"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="operationsetResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="operation" type="xsd:string"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="unregisterResourceRequest">
+				<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="secret" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="uri" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="tgCrudCheckAccessRequest">
+				<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="secret" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="sid" type="xsd:string" minOccurs="0"
+							maxOccurs="1" />
+						<xsd:element name="operation" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="resource" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="tgCrudCheckAccessResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="result" type="xsd:boolean"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="public" type="xsd:boolean"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="project" type="tns:projectInfo"
+							minOccurs="0" maxOccurs="1" />
+						<xsd:element name="username" type="xsd:string"
+							minOccurs="0" maxOccurs="1" />
+						<xsd:element name="operation" type="xsd:string"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="publishRequest">
+				<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="secret" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="resource" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="isPublicRequest">
+				<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="resource" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getCSRRequest">
+				<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>
+			<xsd:element name="getCSRResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="csr" type="xsd:base64Binary"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="putCRTRequest">
+				<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="crt" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="putCRTResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="success" type="xsd:boolean"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getEPPNRequest">
+				<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="secret" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getEPPNResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="eppn" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getSLCRequest">
+				<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="secret" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getSLCResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="slc" type="xsd:base64Binary"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getUUIDRequest">
+				<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="secret" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="resource" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getUUIDResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="uuid" type="xsd:string" minOccurs="0"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
 			<xsd:element name="nearlyPublishRequest">
 				<xsd:complexType>
 					<xsd:sequence>
@@ -14,6 +222,8 @@
 							maxOccurs="1" />
 						<xsd:element name="log" type="xsd:string" minOccurs="0"
 							maxOccurs="1" />
+						<xsd:element name="secret" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
 						<xsd:element name="resource" type="xsd:string"
 							minOccurs="1" maxOccurs="1" />
 					</xsd:sequence>
@@ -27,13 +237,29 @@
 					</xsd:sequence>
 				</xsd:complexType>
 			</xsd:element>
-			<!-- #### authenticationFault #### // -->
+			<xsd:complexType name="projectInfo">
+				<xsd:sequence>
+					<xsd:element name="id" type="xsd:string" minOccurs="1"
+						maxOccurs="1" />
+					<xsd:element name="description" type="xsd:string"
+						minOccurs="0" maxOccurs="1" />
+					<xsd:element name="name" type="xsd:string" minOccurs="1"
+						maxOccurs="1" />
+					<xsd:element name="file" type="xsd:string" minOccurs="0"
+						maxOccurs="1" />
+				</xsd:sequence>
+			</xsd:complexType>
+
+			<!-- ########################################################### -->
+			<!-- ## Typ-Definitionen FAULTS -->
+			<!-- ########################################################### -->
+
 			<xsd:element name="authenticationFaultResponse" type="tns:TextGridFaultType" />
-			<!-- #### rbacFault #### // -->
+			<xsd:element name="unknownProjectFaultResponse" type="tns:TextGridFaultType" />
 			<xsd:element name="rbacFaultResponse" type="tns:TextGridFaultType" />
-			<!-- #### unknownResourceFault #### // -->
+			<xsd:element name="notEmptyFaultResponse" type="tns:TextGridFaultType" />
+			<xsd:element name="objectNotFoundFaultResponse" type="tns:TextGridFaultType" />
 			<xsd:element name="unknownResourceFaultResponse" type="tns:TextGridFaultType" />
-			<!-- #### TextGridFaultType #### // -->
 			<xsd:complexType name="TextGridFaultType">
 				<xsd:sequence>
 					<xsd:element name="faultNo" type="xsd:int" minOccurs="0"
@@ -46,27 +272,363 @@
 			</xsd:complexType>
 		</xsd:schema>
 	</wsdl:types>
-	<!-- ################# # WSDL-Messages # ################# // -->
-	<!-- #### nearlyPublish #### // -->
+
+	<!-- ################################################################### -->
+	<!-- ## WSDL-Messages -->
+	<!-- ################################################################### -->
+
+	<wsdl:message name="registerResourceRequest">
+		<wsdl:part element="tns:registerResourceRequest" name="registerResourceInput" />
+	</wsdl:message>
+	<wsdl:message name="registerResourceResponse">
+		<wsdl:part element="tns:operationsetResponse" name="registerResourceOutput" />
+	</wsdl:message>
+	<wsdl:message name="unregisterResourceRequest">
+		<wsdl:part element="tns:unregisterResourceRequest" name="unregisterResourceInput" />
+	</wsdl:message>
+	<wsdl:message name="unregisterResourceResponse">
+		<wsdl:part element="tns:booleanResponse" name="unregisterResourceOutput" />
+	</wsdl:message>
+	<wsdl:message name="publishRequest">
+		<wsdl:part element="tns:publishRequest" name="publishInput" />
+	</wsdl:message>
+	<wsdl:message name="publishResponse">
+		<wsdl:part element="tns:booleanResponse" name="publishOutput" />
+	</wsdl:message>
+	<wsdl:message name="getCSRRequest">
+		<wsdl:part element="tns:getCSRRequest" name="getCSRInput" />
+	</wsdl:message>
+	<wsdl:message name="getCSRResponse">
+		<wsdl:part element="tns:getCSRResponse" name="getCSROutput" />
+	</wsdl:message>
+	<wsdl:message name="putCRTRequest">
+		<wsdl:part element="tns:putCRTRequest" name="putCRTInput" />
+	</wsdl:message>
+	<wsdl:message name="putCRTResponse">
+		<wsdl:part element="tns:putCRTResponse" name="putCRTOutput" />
+	</wsdl:message>
+	<wsdl:message name="getEPPNRequest">
+		<wsdl:part element="tns:getEPPNRequest" name="getEPPNInput" />
+	</wsdl:message>
+	<wsdl:message name="getEPPNResponse">
+		<wsdl:part element="tns:getEPPNResponse" name="getEPPNOutput" />
+	</wsdl:message>
+	<wsdl:message name="getSLCRequest">
+		<wsdl:part element="tns:getSLCRequest" name="getSLCInput" />
+	</wsdl:message>
+	<wsdl:message name="getSLCResponse">
+		<wsdl:part element="tns:getSLCResponse" name="getSLCOutput" />
+	</wsdl:message>
+	<wsdl:message name="getUUIDRequest">
+		<wsdl:part element="tns:getUUIDRequest" name="getUUIDInput" />
+	</wsdl:message>
+	<wsdl:message name="getUUIDResponse">
+		<wsdl:part element="tns:getUUIDResponse" name="getUUIDResponse" />
+	</wsdl:message>
+	<wsdl:message name="tgCrudCheckAccessRequest">
+		<wsdl:part element="tns:tgCrudCheckAccessRequest" name="tgCrudCheckAccessInput" />
+	</wsdl:message>
+	<wsdl:message name="tgCrudCheckAccessResponse">
+		<wsdl:part element="tns:tgCrudCheckAccessResponse" name="tgCrudCheckAccessOutput" />
+	</wsdl:message>
 	<wsdl:message name="nearlyPublishRequest">
 		<wsdl:part element="tns:nearlyPublishRequest" name="nearlyPublishInput" />
 	</wsdl:message>
 	<wsdl:message name="nearlyPublishResponse">
 		<wsdl:part element="tns:booleanResponse" name="nearlyPublishOutput" />
 	</wsdl:message>
-	<!-- #### authenticationFault #### // -->
+
+	<!-- ################################################################### -->
+	<!-- ## WSDL-Messages FAULTS -->
+	<!-- ################################################################### -->
+
 	<wsdl:message name="authenticationFault">
 		<wsdl:part element="tns:authenticationFaultResponse" name="authenticationFault" />
 	</wsdl:message>
-	<!-- #### unknownResourceFault #### // -->
+	<wsdl:message name="unknownProjectFault">
+		<wsdl:part element="tns:unknownProjectFaultResponse" name="unknownProjectFault" />
+	</wsdl:message>
+	<wsdl:message name="rbacFault">
+		<wsdl:part element="tns:rbacFaultResponse" name="rbacFault" />
+	</wsdl:message>
+	<wsdl:message name="notEmptyFault">
+		<wsdl:part element="tns:notEmptyFaultResponse" name="notEmptyFault" />
+	</wsdl:message>
 	<wsdl:message name="unknownResourceFault">
 		<wsdl:part element="tns:unknownResourceFaultResponse" name="unknownResourceFault" />
 	</wsdl:message>
-	<!-- ########################## # Port-Type-Definitionen # ########################## 
-		// -->
+
+	<!-- ################################################################### -->
+	<!-- ## Port-Type-Definitionen -->
+	<!-- ################################################################### -->
+
 	<wsdl:portType name="port_tgextra_crud">
-		<!-- #### nearlyPublish #### // -->
-		<wsdl:operation name="nearlyPublish">
+		<wsdl:operation name="registerResource">
+			<wsdl:documentation>
+				Registers a resource in the database. Assigns standard permissions
+				to roles in project:
+				<table>
+					<tr>
+						<td>Role</td>
+						<td>Right on Resource</td>
+					</tr>
+					<tr>
+						<td>Projektleiter (project leader)</td>
+						<td>delegate, publish</td>
+					</tr>
+					<tr>
+						<td>Administrator</td>
+						<td>delete</td>
+					</tr>
+					<tr>
+						<td>Bearbeiter (editor)</td>
+						<td>read, write</td>
+					</tr>
+					<tr>
+						<td>Beobachter (observer)</td>
+						<td>read</td>
+					</tr>
+				</table>
+				These permissions can be adapted afterwards. User needs create right
+				on project resource, see createProject().
+				<br />
+				This function is
+				<b>only for use by TG-crud.</b>
+				Clients should call TG-crud.create instead.
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						registerResourceRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of future owner of this resource</li>
+							<li>log - String for log information, optional</li>
+							<li>secret - String known by TG-crud to authenticate
+								itself</li>
+							<li>project - String with project ID, such as "TGPR123".</li>
+							<li>uri - String holding URI of TgObject resource to be
+								registered in RBAC</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
+						operationsSetResponse, with element
+						<ul>
+							<li>operation (0..n) Strings with permissible operations on the
+								newly created resource</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>authenticationFault</li>
+							<li>rbacFault - if resource could not be registered successfully</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:registerResourceRequest" />
+			<wsdl:output message="tns:registerResourceResponse" />
+			<wsdl:fault name="rbacFault" message="tns:rbacFault" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="unregisterResource">
+			<wsdl:documentation>
+				Removes resource from database. User needs delete right on
+				resource.
+				<b>Only for use by TG-crud.</b>
+				Clients should call
+				TG-crud.delete instead.
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						unregisterResourceRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of requester</li>
+							<li>log - String for log information, optional</li>
+							<li>secret - String known by TG-crud to authenticate
+								itself</li>
+							<li>uri - String holding URI of TgObject resource to be
+								removed
+								from RBAC</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>
+							<li>unknownResourceFault</li>
+							<li>authenticationFault</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:unregisterResourceRequest" />
+			<wsdl:output message="tns:unregisterResourceResponse" />
+			<wsdl:fault name="unknownResourceFault" message="tns:unknownResourceFault" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="tgCrudCheckAccess">
+			<wsdl:documentation>
+				Returns access decision for given operation on given resource
+				for
+				session. In addition the owner of the session and informations
+				on the
+				project is returned.
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						tgCrudCheckAccessRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of user (or service) that
+								wants to
+								intitiate the check</li>
+							<li>log - String for log information, optional</li>
+							<li>secret - String known by TG-crud to authenticate
+								itself</li>
+							<li>
+								sid - String, SessionID of user for whom the check
+								is to be done.
+								Leave empty if check is to be done for
+								user's own session given
+								under
+								<em>auth</em>
+							</li>
+							<li>operation - String, such as "read", "write"</li>
+							<li>resource - String, name of project or role, or URI of
+								TgObject resource</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
+						See wsdl
+						<ul>
+							<li>XXX</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>unknownResourceFault</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:tgCrudCheckAccessRequest" />
+			<wsdl:output message="tns:tgCrudCheckAccessResponse" />
+			<wsdl:fault name="unknownResourceFault" message="tns:unknownResourceFault" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="putCRT">
+			<wsdl:documentation>
+				Puts the signed Certificate into the RBAC's accompanying daemon that
+				holds the key.
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						putCRTRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of user</li>
+							<li>log - String for log information, optional</li>
+							<li>crt - the Certificate as a String</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
+						putCRTResponse, with element
+						<ul>
+							<li>success, Boolean.</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:putCRTRequest" />
+			<wsdl:output message="tns:putCRTResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+			<wsdl:fault name="unknownResourceFault" message="tns:unknownResourceFault" />
+		</wsdl:operation>
+		<wsdl:operation name="getEPPN">
+			<wsdl:documentation>
+				Returns ePPN (aka TextGrid ID) of authenticated user. As ths
+				function could be used for SID guessing, the caller must know a
+				secret.
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						getEPPNRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of user that wants to query his ePPN</li>
+							<li>log - String for log information, optional</li>
+							<li>secret - String known by TG-crud to authenticate
+								itself</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
+						getEPPNResponse, with element
+						<ul>
+							<li>eppn - String, ePPN of user.</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>authenticationFault</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:getEPPNRequest" />
+			<wsdl:output message="tns:getEPPNResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="getUUID">
+			<wsdl:documentation>
+				Returns UUID (full path including server address) of the resource.
+				User
+				must have read permission on the resource, or resource must be
+				public.
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						getUUIDRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of user that wants to query
+								for the
+								UUID</li>
+							<li>log - String for log information, optional</li>
+							<li>secret - String known by TG-crud to authenticate
+								itself</li>
+							<li>resource - String, URI of TgObject</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
+						getUUIDResponse, with element
+						<ul>
+							<li>uuid - String, UUID if defined.</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>authenticationFault</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:getUUIDRequest" />
+			<wsdl:output message="tns:getUUIDResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="publish">
 			<wsdl:documentation>
 				Sets the isPublic flag of a TextGridObject identified by its
 				URI to
@@ -75,17 +637,16 @@
 				(only by manual modification of the database) and
 				needs the publish
 				right, which by default is granted to
-				project leaders. The difference
-				to the publish method is that
-				some rights are preserved to allow
-				deletion and publication.
+				project leaders.
 				<ul>
 					<li>
 						<b>Input Parameters</b>
-						nearlyPublishRequest, with elements
+						publishRequest, with elements
 						<ul>
 							<li>auth - String, SessionID of user that wants publish</li>
 							<li>log - String for log information, optional</li>
+							<li>secret - String known by TG-crud to authenticate
+								itself</li>
 							<li>resource - String, URI of TgObject</li>
 						</ul>
 					</li>
@@ -106,15 +667,84 @@
 					</li>
 				</ul>
 			</wsdl:documentation>
+			<wsdl:input message="tns:publishRequest" />
+			<wsdl:output message="tns:publishResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="getSLC">
+			<wsdl:documentation>
+				CRUD may use this to retrieve a Short-Lived Certificate Key pair in
+				PEM format for the user
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						getSLCRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of user</li>
+							<li>log - String for log information, optional</li>
+							<li>secret - String known by TG-crud to authenticate
+								itself</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
+						getSLCResponse, with element
+						<ul>
+							<li>slc - Base64binary String with the key pair. Contains only
+								printable ASCII Character.</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:getSLCRequest" />
+			<wsdl:output message="tns:getSLCResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+			<wsdl:fault name="unknownResourceFault" message="tns:unknownResourceFault" />
+		</wsdl:operation>
+		<wsdl:operation name="nearlyPublish">
+			<wsdl:documentation>++TODO++</wsdl:documentation>
 			<wsdl:input message="tns:nearlyPublishRequest" />
 			<wsdl:output message="tns:nearlyPublishResponse" />
 			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
 			<wsdl:fault name="unknownResourceFault" message="tns:unknownResourceFault" />
 		</wsdl:operation>
+		<wsdl:operation name="getCSR">
+			<wsdl:documentation>
+				The Portal may use this to retrieve a Dummy Certificate Signing
+				Request (CSR)
+				in PEM format, for which the RBAC's accompanying daemon
+				will hold the real key.
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						getCSRRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of user</li>
+							<li>log - String for log information, optional</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
+						getCSRResponse, with element
+						<ul>
+							<li>csr - Base64binary String with the CSR. Contains only
+								printable ASCII Character.</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:getCSRRequest" />
+			<wsdl:output message="tns:getCSRResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+			<wsdl:fault name="unknownResourceFault" message="tns:unknownResourceFault" />
+		</wsdl:operation>
 	</wsdl:portType>
-	<!-- ########### # Binding # ########### // -->
+
+	<!-- ################################################################### -->
+	<!-- ## Binding -->
+	<!-- ################################################################### -->
+
 	<wsdl:binding name="binding_tgextra_crud" type="tns:port_tgextra_crud">
-		<!-- #### nearlyPublish #### // -->
 		<soap:binding style="document"
 			transport="http://schemas.xmlsoap.org/soap/http" />
 		<wsdl:operation name="nearlyPublish">
@@ -133,8 +763,147 @@
 				<soap:fault use="literal" name="unknownResourceFault" />
 			</wsdl:fault>
 		</wsdl:operation>
+		<wsdl:operation name="registerResource">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth-crud/registerResource" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+			<wsdl:fault name="rbacFault">
+				<soap:fault use="literal" name="rbacFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="unregisterResource">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth-crud/unregisterResource" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="unknownResourceFault">
+				<soap:fault use="literal" name="unknownResourceFault" />
+			</wsdl:fault>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="tgCrudCheckAccess">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth-crud/tgCrudCheckAccess" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="unknownResourceFault">
+				<soap:fault use="literal" name="unknownResourceFault" />
+			</wsdl:fault>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="getEPPN">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth-crud/getEPPN" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="getUUID">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth-crud/getUUID" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="publish">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth-crud/publish" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="getSLC">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth-crud/getSLC" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+			<wsdl:fault name="unknownResourceFault">
+				<soap:fault use="literal" name="unknownResourceFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="getCSR">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth-crud/getCSR" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+			<wsdl:fault name="unknownResourceFault">
+				<soap:fault use="literal" name="unknownResourceFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="putCRT">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth-crud/putCRT" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+			<wsdl:fault name="unknownResourceFault">
+				<soap:fault use="literal" name="unknownResourceFault" />
+			</wsdl:fault>
+		</wsdl:operation>
 	</wsdl:binding>
-	<!-- ##################### # Servicedefinition # ##################### // -->
+
+	<!-- ################################################################### -->
+	<!-- ## Service-Definition -->
+	<!-- ################################################################### -->
+
 	<wsdl:service name="tgextra_crud">
 		<wsdl:port binding="tns:binding_tgextra_crud" name="tgextra_crud">
 			<soap:address location="https://textgridlab.org/dev/tgauth/tgextra-crud.php" />
diff --git a/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-ws4/tgextra.wsdl b/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-ws4/tgextra.wsdl
index 510dc3b2a752f9c337daff14abfd3e384197f3cd..e9b5315cd69767f47621997ab099cb95b8743f07 100644
--- a/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-ws4/tgextra.wsdl
+++ b/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-ws4/tgextra.wsdl
@@ -1,1384 +1,1163 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://textgrid.info/namespaces/middleware/tgauth" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="tgextra" targetNamespace="http://textgrid.info/namespaces/middleware/tgauth">
-<!--
-		#################### # Typ-Definitionen # #################### //
-	-->
-  <wsdl:types>
-    <xsd:schema targetNamespace="http://textgrid.info/namespaces/middleware/tgauth">
-<!-- #### authenticate #### //-->
-      <xsd:element name="authenticateRequest">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="username" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="password" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="log" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="authenticateResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="auth" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### userExists #### //-->
-      <xsd:element name="userExistsRequest">
-        <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="username" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### createProject #### //-->
-      <xsd:element name="createProjectRequest">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="auth" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-            <xsd:element name="log" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-            <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-            <xsd:element name="file" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="createProjectResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="projectId" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### filterBySid #### //-->
-      <xsd:element name="filterBySidRequest">
-        <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="resource" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
-            <xsd:element name="operation" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### addMember #### //-->
-      <xsd:element name="addMemberRequest">
-        <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="username" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="role" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### deleteMember #### //-->
-      <xsd:element name="deleteMemberRequest">
-        <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="username" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="role" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### getSid #### //-->
-      <xsd:element name="getSidRequest">
-        <xsd:complexType>
-          <xsd:sequence>
-	  </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="getSidResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="sid" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- ### getSLC ### //-->
-      <xsd:element name="getSLCRequest">
-        <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="secret" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="getSLCResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="slc" type="xsd:base64Binary" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- ### getCSR ### //-->
-      <xsd:element name="getCSRRequest">
-        <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>
-      <xsd:element name="getCSRResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="csr" type="xsd:base64Binary" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- ### putCRT ### //-->
-      <xsd:element name="putCRTRequest">
-        <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="crt" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="putCRTResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="success" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### getSupportedUserAttributes #### //-->
-      <xsd:element name="getSupportedUserAttributesRequest">
-        <xsd:complexType>
-          <xsd:sequence>
-	  </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="getSupportedUserAttributesResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="attribute" type="tns:userAttribute" minOccurs="0" maxOccurs="unbounded"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### getMyUserAttributes #### //-->
-      <xsd:element name="getMyUserAttributesRequest">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="auth" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="getMyUserAttributesResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="attribute" type="tns:userAttribute" minOccurs="0" maxOccurs="unbounded"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### setMyUserAttributes #### //-->
-      <xsd:element name="setMyUserAttributesRequest">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="auth" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="webAuthSecret" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="attribute" type="tns:userAttribute" minOccurs="0" maxOccurs="unbounded"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### registerResource #### //-->
-      <xsd:element name="registerResourceRequest">
-        <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="project" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="uri" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="uuid" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-            <xsd:element name="secret" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### unregisterResource #### //-->
-      <xsd:element name="unregisterResourceRequest">
-        <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="uri" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="secret" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### getObjects #### //-->
-      <xsd:element name="getObjectsRequest">
-        <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="project" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### getAllProjects #### //-->
-      <xsd:element name="getAllProjectsRequest">
-        <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>
-      <xsd:element name="getAllProjectsResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="project" type="tns:projectInfo" minOccurs="0" maxOccurs="unbounded"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### getDeactivatedProjects #### //-->
-      <xsd:element name="getDeactivatedProjectsRequest">
-        <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>
-      <xsd:element name="getDeactivatedProjectsResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="project" type="tns:projectInfo" minOccurs="0" maxOccurs="unbounded"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### tgCheckAccess #### //-->
-      <xsd:element name="tgCheckAccessRequest">
-        <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="sid" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-            <xsd:element name="operation" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="resource" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### tgCrudCheckAccess #### //-->
-      <xsd:element name="tgCrudCheckAccessRequest">
-        <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="secret" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="sid" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-            <xsd:element name="operation" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="resource" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### tgAddActiveRole #### //-->
-      <xsd:element name="tgAddActiveRoleRequest">
-        <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="role" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### tgDropActiveRole #### //-->
-      <xsd:element name="tgDropActiveRoleRequest">
-        <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="role" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### tgAssignedRoles #### //-->
-      <xsd:element name="tgAssignedRolesRequest">
-        <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="username" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### tgAssignedProjects #### //-->
-      <xsd:element name="tgAssignedProjectsRequest">
-        <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="level" type="xsd:int" minOccurs="0" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### getLeader #### //-->
-      <xsd:element name="getLeaderRequest">
-        <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="project" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### tgGrantPermission #### //-->
-      <xsd:element name="tgGrantPermissionRequest">
-        <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="role" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="operation" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="resource" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### tgRevokePermission #### //-->
-      <xsd:element name="tgRevokePermissionRequest">
-        <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="role" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="operation" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="resource" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### getOwner #### //-->
-      <xsd:element name="getOwnerRequest">
-        <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="resource" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="getOwnerResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="owner" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### getEPPN #### //-->
-      <xsd:element name="getEPPNRequest">
-        <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="secret" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="getEPPNResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="eppn" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### getUUID #### //-->
-      <xsd:element name="getUUIDRequest">
-        <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="resource" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="getUUIDResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="uuid" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### getMembers #### //-->
-      <xsd:element name="getMembersRequest">
-        <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="project" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### getUserRole #### //-->
-      <xsd:element name="getUserRoleRequest">
-        <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="project" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </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">
-        <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="resource" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="username" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### publish #### //-->
-      <xsd:element name="publishRequest">
-        <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="resource" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### isPublic #### //-->
-      <xsd:element name="isPublicRequest">
-        <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="resource" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### getNumberOfResourcesRequest #### //-->
-      <xsd:element name="getNumberOfResourcesRequest">
-        <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="project" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="getNumberOfResourcesResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="allresources" type="xsd:int"/>
-            <xsd:element name="publicresources" type="xsd:int"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### setProjectFile #### //-->
-      <xsd:element name="setProjectFileRequest">
-        <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="project" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="file" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </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:element name="organisation" 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">
-        <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="project" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="getProjectDescriptionResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="project" type="tns:projectInfo" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### deactivateProject #### //-->
-      <xsd:element name="deactivateProjectRequest">
-        <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="project" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### reactivateProject #### //-->
-      <xsd:element name="reactivateProjectRequest">
-        <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="project" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-<!-- #### deleteProject #### //-->
-      <xsd:element name="deleteProjectRequest">
-        <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="project" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="filterResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="resource" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="booleanResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="result" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="tgCrudCheckAccessResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="result" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
-	    <xsd:element name="public" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="project" type="tns:projectInfo" minOccurs="0" maxOccurs="1"/>
-            <xsd:element name="username" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-            <xsd:element name="operation" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="rolesetResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="role" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="usersetResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="username" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="resourcesetResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="resource" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="operationsetResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="operation" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="getUserRoleResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="userRole" type="tns:userRole" minOccurs="0" maxOccurs="unbounded"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:complexType name="userRole">
-        <xsd:sequence>
-          <xsd:element name="username" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          <xsd:element name="roles" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
-        </xsd:sequence>
-      </xsd:complexType>
-      <xsd:complexType name="userAttribute">
-        <xsd:sequence>
-          <xsd:element name="value" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-          <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-        </xsd:sequence>
-        <xsd:attribute name="name" type="xsd:string" use="required"/>
-        <xsd:attribute name="mandatory" type="xsd:boolean"/>
-        <xsd:attribute name="ldapname" type="xsd:string"/>
-        <xsd:attribute name="inclass" type="xsd:string"/>
-        <xsd:attribute name="displayname" type="xsd:string"/>
-      </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>
-          <xsd:element name="id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-          <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          <xsd:element name="file" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-        </xsd:sequence>
-      </xsd:complexType>
-<!-- #### authenticationFault #### //-->
-      <xsd:element name="authenticationFaultResponse" type="tns:TextGridFaultType"/>
-<!-- #### unknownProjectFault #### //-->
-      <xsd:element name="unknownProjectFaultResponse" type="tns:TextGridFaultType"/>
-<!-- #### rbacFault #### //-->
-      <xsd:element name="rbacFaultResponse" type="tns:TextGridFaultType"/>
-<!-- #### notEmptyFault #### //-->
-      <xsd:element name="notEmptyFaultResponse" type="tns:TextGridFaultType"/>
-<!-- #### objectNotFoundFault #### //-->
-      <xsd:element name="objectNotFoundFaultResponse" type="tns:TextGridFaultType"/>
-<!-- #### unknownResourceFault #### //-->
-      <xsd:element name="unknownResourceFaultResponse" type="tns:TextGridFaultType"/>
-<!-- #### TextGridFaultType #### //-->
-      <xsd:complexType name="TextGridFaultType">
-        <xsd:sequence>
-          <xsd:element name="faultNo" type="xsd:int" minOccurs="0" maxOccurs="1"/>
-          <xsd:element name="faultMessage" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-          <xsd:element name="cause" type="xsd:string" minOccurs="0" maxOccurs="1"/>
-        </xsd:sequence>
-      </xsd:complexType>
-    </xsd:schema>
-  </wsdl:types>
-<!--
-  #################
-  # WSDL-Messages #
-  #################
-  //-->
-<!-- #### authenticate #### //-->
-  <wsdl:message name="authenticateRequest">
-    <wsdl:part element="tns:authenticateRequest" name="authenticateInput"/>
-  </wsdl:message>
-  <wsdl:message name="authenticateResponse">
-    <wsdl:part element="tns:authenticateResponse" name="authenticateOutput"/>
-  </wsdl:message>
-<!-- #### userExists #### //-->
-  <wsdl:message name="userExistsRequest">
-    <wsdl:part element="tns:userExistsRequest" name="userExistsInput"/>
-  </wsdl:message>
-  <wsdl:message name="userExistsResponse">
-    <wsdl:part element="tns:booleanResponse" name="userExistsOutput"/>
-  </wsdl:message>
-<!-- #### createProject #### //-->
-  <wsdl:message name="createProjectRequest">
-    <wsdl:part element="tns:createProjectRequest" name="createProjectInput"/>
-  </wsdl:message>
-  <wsdl:message name="createProjectResponse">
-    <wsdl:part element="tns:createProjectResponse" name="createProjectOutput"/>
-  </wsdl:message>
-<!-- #### getObjects #### //-->
-  <wsdl:message name="getObjectsRequest">
-    <wsdl:part element="tns:getObjectsRequest" name="getObjectsInput"/>
-  </wsdl:message>
-  <wsdl:message name="getObjectsResponse">
-    <wsdl:part element="tns:resourcesetResponse" name="getObjectsOutput"/>
-  </wsdl:message>
-<!-- #### addMember #### //-->
-  <wsdl:message name="addMemberRequest">
-    <wsdl:part element="tns:addMemberRequest" name="addMemberInput"/>
-  </wsdl:message>
-  <wsdl:message name="addMemberResponse">
-    <wsdl:part element="tns:booleanResponse" name="addMemberOutput"/>
-  </wsdl:message>
-<!-- #### deleteMember #### //-->
-  <wsdl:message name="deleteMemberRequest">
-    <wsdl:part element="tns:deleteMemberRequest" name="deleteMemberInput"/>
-  </wsdl:message>
-  <wsdl:message name="deleteMemberResponse">
-    <wsdl:part element="tns:booleanResponse" name="deleteMemberOutput"/>
-  </wsdl:message>
-<!-- #### tgCheckAccess #### //-->
-  <wsdl:message name="tgCheckAccessRequest">
-    <wsdl:part element="tns:tgCheckAccessRequest" name="tgCheckAccessInput"/>
-  </wsdl:message>
-  <wsdl:message name="tgCheckAccessResponse">
-    <wsdl:part element="tns:booleanResponse" name="tgCheckAccessOutput"/>
-  </wsdl:message>
-<!-- #### tgCrudCheckAccess #### //-->
-  <wsdl:message name="tgCrudCheckAccessRequest">
-    <wsdl:part element="tns:tgCrudCheckAccessRequest" name="tgCrudCheckAccessInput"/>
-  </wsdl:message>
-  <wsdl:message name="tgCrudCheckAccessResponse">
-    <wsdl:part element="tns:tgCrudCheckAccessResponse" name="tgCrudCheckAccessOutput"/>
-  </wsdl:message>
-<!-- #### tgAddActiveRole #### //-->
-  <wsdl:message name="tgAddActiveRoleRequest">
-    <wsdl:part element="tns:tgAddActiveRoleRequest" name="tgAddActiveRoleInput"/>
-  </wsdl:message>
-  <wsdl:message name="tgAddActiveRoleResponse">
-    <wsdl:part element="tns:booleanResponse" name="tgAddActiveRoleOutput"/>
-  </wsdl:message>
-<!-- #### tgDropActiveRole #### //-->
-  <wsdl:message name="tgDropActiveRoleRequest">
-    <wsdl:part element="tns:tgDropActiveRoleRequest" name="tgDropActiveRoleInput"/>
-  </wsdl:message>
-  <wsdl:message name="tgDropActiveRoleResponse">
-    <wsdl:part element="tns:booleanResponse" name="tgDropActiveRoleOutput"/>
-  </wsdl:message>
-<!-- #### tgAssignedRoles #### //-->
-  <wsdl:message name="tgAssignedRolesRequest">
-    <wsdl:part element="tns:tgAssignedRolesRequest" name="tgAssignedRolesInput"/>
-  </wsdl:message>
-  <wsdl:message name="tgAssignedRolesResponse">
-    <wsdl:part element="tns:rolesetResponse" name="tgAssignedRolesOutput"/>
-  </wsdl:message>
-<!-- #### tgAssignedProjects #### //-->
-  <wsdl:message name="tgAssignedProjectsRequest">
-    <wsdl:part element="tns:tgAssignedProjectsRequest" name="tgAssignedProjectsInput"/>
-  </wsdl:message>
-  <wsdl:message name="tgAssignedProjectsResponse">
-    <wsdl:part element="tns:rolesetResponse" name="tgAssignedProjectsOutput"/>
-  </wsdl:message>
-<!-- #### getAllProjects #### //-->
-  <wsdl:message name="getAllProjectsRequest">
-    <wsdl:part element="tns:getAllProjectsRequest" name="getAllProjectsInput"/>
-  </wsdl:message>
-  <wsdl:message name="getAllProjectsResponse">
-    <wsdl:part element="tns:getAllProjectsResponse" name="getAllProjectsOutput"/>
-  </wsdl:message>
-<!-- #### getDeactivatedProjects #### //-->
-  <wsdl:message name="getDeactivatedProjectsRequest">
-    <wsdl:part element="tns:getDeactivatedProjectsRequest" name="getDeactivatedProjectsInput"/>
-  </wsdl:message>
-  <wsdl:message name="getDeactivatedProjectsResponse">
-    <wsdl:part element="tns:getDeactivatedProjectsResponse" name="getDeactivatedProjectsOutput"/>
-  </wsdl:message>
-<!-- #### getLeader #### //-->
-  <wsdl:message name="getLeaderRequest">
-    <wsdl:part element="tns:getLeaderRequest" name="getLeaderInput"/>
-  </wsdl:message>
-  <wsdl:message name="getLeaderResponse">
-    <wsdl:part element="tns:usersetResponse" name="getLeaderOutput"/>
-  </wsdl:message>
-<!-- #### registerResource #### //-->
-  <wsdl:message name="registerResourceRequest">
-    <wsdl:part element="tns:registerResourceRequest" name="registerResourceInput"/>
-  </wsdl:message>
-  <wsdl:message name="registerResourceResponse">
-    <wsdl:part element="tns:operationsetResponse" name="registerResourceOutput"/>
-  </wsdl:message>
-<!-- #### unregisterResource #### //-->
-  <wsdl:message name="unregisterResourceRequest">
-    <wsdl:part element="tns:unregisterResourceRequest" name="unregisterResourceInput"/>
-  </wsdl:message>
-  <wsdl:message name="unregisterResourceResponse">
-    <wsdl:part element="tns:booleanResponse" name="unregisterResourceOutput"/>
-  </wsdl:message>
-<!-- #### filterBySid #### //-->
-  <wsdl:message name="filterBySidRequest">
-    <wsdl:part element="tns:filterBySidRequest" name="filterBySidInput"/>
-  </wsdl:message>
-  <wsdl:message name="filterBySidResponse">
-    <wsdl:part element="tns:filterResponse" name="filterBySidOutput"/>
-  </wsdl:message>
-<!-- #### tgGrantPermission #### //-->
-  <wsdl:message name="tgGrantPermissionRequest">
-    <wsdl:part element="tns:tgGrantPermissionRequest" name="tgGrantPermissionInput"/>
-  </wsdl:message>
-  <wsdl:message name="tgGrantPermissionResponse">
-    <wsdl:part element="tns:booleanResponse" name="tgGrantPermissionOutput"/>
-  </wsdl:message>
-<!-- #### tgRevokePermission #### //-->
-  <wsdl:message name="tgRevokePermissionRequest">
-    <wsdl:part element="tns:tgRevokePermissionRequest" name="tgRevokePermissionInput"/>
-  </wsdl:message>
-  <wsdl:message name="tgRevokePermissionResponse">
-    <wsdl:part element="tns:booleanResponse" name="tgRevokePermissionOutput"/>
-  </wsdl:message>
-<!-- #### getOwner #### //-->
-  <wsdl:message name="getOwnerRequest">
-    <wsdl:part element="tns:getOwnerRequest" name="getOwnerInput"/>
-  </wsdl:message>
-  <wsdl:message name="getOwnerResponse">
-    <wsdl:part element="tns:getOwnerResponse" name="getOwnerOutput"/>
-  </wsdl:message>
-<!-- #### getEPPN #### //-->
-  <wsdl:message name="getEPPNRequest">
-    <wsdl:part element="tns:getEPPNRequest" name="getEPPNInput"/>
-  </wsdl:message>
-  <wsdl:message name="getEPPNResponse">
-    <wsdl:part element="tns:getEPPNResponse" name="getEPPNOutput"/>
-  </wsdl:message>
-<!-- #### getUUID #### //-->
-  <wsdl:message name="getUUIDRequest">
-    <wsdl:part element="tns:getUUIDRequest" name="getUUIDInput"/>
-  </wsdl:message>
-  <wsdl:message name="getUUIDResponse">
-    <wsdl:part element="tns:getUUIDResponse" name="getUUIDOutput"/>
-  </wsdl:message>
-<!-- #### getMembers #### //-->
-  <wsdl:message name="getMembersRequest">
-    <wsdl:part element="tns:getMembersRequest" name="getMembersInput"/>
-  </wsdl:message>
-  <wsdl:message name="getMembersResponse">
-    <wsdl:part element="tns:usersetResponse" name="getMembersOutput"/>
-  </wsdl:message>
-<!-- #### getUserRole #### //-->
-  <wsdl:message name="getUserRoleRequest">
-    <wsdl:part element="tns:getUserRoleRequest" name="getUserRoleInput"/>
-  </wsdl:message>
-  <wsdl:message name="getUserRoleResponse">
-    <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">
-    <wsdl:part element="tns:getRightsRequest" name="getRightsInput"/>
-  </wsdl:message>
-  <wsdl:message name="getRightsResponse">
-    <wsdl:part element="tns:operationsetResponse" name="getRightsOutput"/>
-  </wsdl:message>
-<!-- #### publish #### //-->
-  <wsdl:message name="publishRequest">
-    <wsdl:part element="tns:publishRequest" name="publishInput"/>
-  </wsdl:message>
-  <wsdl:message name="publishResponse">
-    <wsdl:part element="tns:booleanResponse" name="publishOutput"/>
-  </wsdl:message>
-<!-- #### isPublic #### //-->
-  <wsdl:message name="isPublicRequest">
-    <wsdl:part element="tns:isPublicRequest" name="isPublicInput"/>
-  </wsdl:message>
-  <wsdl:message name="isPublicResponse">
-    <wsdl:part element="tns:booleanResponse" name="isPublicOutput"/>
-  </wsdl:message>
-<!-- #### getNumberOfResources #### //-->
-  <wsdl:message name="getNumberOfResourcesRequest">
-    <wsdl:part element="tns:getNumberOfResourcesRequest" name="getNumberOfResourcesInput"/>
-  </wsdl:message>
-  <wsdl:message name="getNumberOfResourcesResponse">
-    <wsdl:part element="tns:getNumberOfResourcesResponse" name="getNumberOfResourcesOutput"/>
-  </wsdl:message>
-<!-- #### setProjectFile #### //-->
-  <wsdl:message name="setProjectFileRequest">
-    <wsdl:part element="tns:setProjectFileRequest" name="setProjectFileInput"/>
-  </wsdl:message>
-  <wsdl:message name="setProjectFileResponse">
-    <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"/>
-  </wsdl:message>
-  <wsdl:message name="getProjectDescriptionResponse">
-    <wsdl:part element="tns:getProjectDescriptionResponse" name="getProjectDescriptionOutput"/>
-  </wsdl:message>
 
-<!-- #### getSLC  #### //-->
-  <wsdl:message name="getSLCRequest">
-    <wsdl:part element="tns:getSLCRequest" name="getSLCInput"/>
-  </wsdl:message>
-  <wsdl:message name="getSLCResponse">
-    <wsdl:part element="tns:getSLCResponse" name="getSLCOutput"/>
-  </wsdl:message>
-<!-- #### getCSR  #### //-->
-  <wsdl:message name="getCSRRequest">
-    <wsdl:part element="tns:getCSRRequest" name="getCSRInput"/>
-  </wsdl:message>
-  <wsdl:message name="getCSRResponse">
-    <wsdl:part element="tns:getCSRResponse" name="getCSROutput"/>
-  </wsdl:message>
-<!-- #### putCRT  #### //-->
-  <wsdl:message name="putCRTRequest">
-    <wsdl:part element="tns:putCRTRequest" name="putCRTInput"/>
-  </wsdl:message>
-  <wsdl:message name="putCRTResponse">
-    <wsdl:part element="tns:putCRTResponse" name="putCRTOutput"/>
-  </wsdl:message>
+<!-- NOTE This tgextra.wsdl file is ment to READ ONLY on any TextGrid RBAC 
+	installation, for writing please use tgextra-write.wsdl, for communication 
+	with TG-crud use tgextra-crud.wsdl -->
 
-<!-- #### deactivateProject #### //-->
-  <wsdl:message name="deactivateProjectRequest">
-    <wsdl:part element="tns:deactivateProjectRequest" name="deactivateProjectInput"/>
-  </wsdl:message>
-  <wsdl:message name="deactivateProjectResponse">
-    <wsdl:part element="tns:booleanResponse" name="deactivateProjectOutput"/>
-  </wsdl:message>
-<!-- #### reactivateProject #### //-->
-  <wsdl:message name="reactivateProjectRequest">
-    <wsdl:part element="tns:reactivateProjectRequest" name="reactivateProjectInput"/>
-  </wsdl:message>
-  <wsdl:message name="reactivateProjectResponse">
-    <wsdl:part element="tns:booleanResponse" name="reactivateProjectOutput"/>
-  </wsdl:message>
-<!-- #### deleteProject #### //-->
-  <wsdl:message name="deleteProjectRequest">
-    <wsdl:part element="tns:deleteProjectRequest" name="deleteProjectInput"/>
-  </wsdl:message>
-  <wsdl:message name="deleteProjectResponse">
-    <wsdl:part element="tns:booleanResponse" name="deleteProjectOutput"/>
-  </wsdl:message>
-<!-- #### getSid #### //-->
-  <wsdl:message name="getSidRequest">
-    <wsdl:part element="tns:getSidRequest" name="getSidInput"/>
-  </wsdl:message>
-  <wsdl:message name="getSidResponse">
-    <wsdl:part element="tns:getSidResponse" name="getSidOutput"/>
-  </wsdl:message>
-<!-- #### getSupportedUserAttributes #### //-->
-  <wsdl:message name="getSupportedUserAttributesRequest">
-    <wsdl:part element="tns:getSupportedUserAttributesRequest" name="getSupportedUserAttributesInput"/>
-  </wsdl:message>
-  <wsdl:message name="getSupportedUserAttributesResponse">
-    <wsdl:part element="tns:getSupportedUserAttributesResponse" name="getSupportedUserAttributesOutput"/>
-  </wsdl:message>
-<!-- #### getMyUserAttributes #### //-->
-  <wsdl:message name="getMyUserAttributesRequest">
-    <wsdl:part element="tns:getMyUserAttributesRequest" name="getMyUserAttributesInput"/>
-  </wsdl:message>
-  <wsdl:message name="getMyUserAttributesResponse">
-    <wsdl:part element="tns:getMyUserAttributesResponse" name="getMyUserAttributesOutput"/>
-  </wsdl:message>
-<!-- #### setMyUserAttributes #### //-->
-  <wsdl:message name="setMyUserAttributesRequest">
-    <wsdl:part element="tns:setMyUserAttributesRequest" name="setMyUserAttributesInput"/>
-  </wsdl:message>
-  <wsdl:message name="setMyUserAttributesResponse">
-    <wsdl:part element="tns:booleanResponse" name="setMyUserAttributesOutput"/>
-  </wsdl:message>
-<!-- #### authenticationFault #### //-->
-  <wsdl:message name="authenticationFault">
-    <wsdl:part element="tns:authenticationFaultResponse" name="authenticationFault"/>
-  </wsdl:message>
-<!-- #### unknownProjectFault #### //-->
-  <wsdl:message name="unknownProjectFault">
-    <wsdl:part element="tns:unknownProjectFaultResponse" name="unknownProjectFault"/>
-  </wsdl:message>
-<!-- #### rbacFault #### //-->
-  <wsdl:message name="rbacFault">
-    <wsdl:part element="tns:rbacFaultResponse" name="rbacFault"/>
-  </wsdl:message>
-<!-- #### notEmptyFault #### //-->
-  <wsdl:message name="notEmptyFault">
-    <wsdl:part element="tns:notEmptyFaultResponse" name="notEmptyFault"/>
-  </wsdl:message>
-<!-- #### unknownResourceFault #### //-->
-  <wsdl:message name="unknownResourceFault">
-    <wsdl:part element="tns:unknownResourceFaultResponse" name="unknownResourceFault"/>
-  </wsdl:message>
-<!--
-		########################## # Port-Type-Definitionen #
-		########################## //
-	-->
-  <wsdl:portType name="port_tgextra">
-<!-- #### authenticate #### //-->
-    <wsdl:operation name="authenticate">
-      <wsdl:documentation>
-				Internal function used by applications to identify themselves
-				(via
-				shared secret between RBAC and WebAuth).
-				<ul><li><b>Input Parameters</b>
-						authenticateRequest, with elements
-						<ul><li>username - String with name of application</li><li>password - String with password for this application</li><li>log - String for log information, optional</li></ul></li><li><b>Output Parameters</b>
-						authenticateResponse, with element
-						<ul><li>auth - String, SessionID of authenticated application
-								(See
-								getSid() for format.)</li></ul></li><li><b>Faults</b><ul><li>authenticationFault</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:authenticateRequest"/>
-      <wsdl:output message="tns:authenticateResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-<!-- #### userExists #### //-->
-    <wsdl:operation name="userExists">
-      <wsdl:documentation>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:tns="http://textgrid.info/namespaces/middleware/tgauth"
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	name="tgextra" targetNamespace="http://textgrid.info/namespaces/middleware/tgauth">
+	<wsdl:types>
+		<xsd:schema targetNamespace="http://textgrid.info/namespaces/middleware/tgauth">
+
+			<!-- ########################################################### -->
+			<!-- ## Typ-Definitionen READ -->
+			<!-- ########################################################### -->
+
+			<xsd:element name="userExistsRequest">
+				<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="username" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="filterBySidRequest">
+				<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="resource" type="xsd:string"
+							minOccurs="0" maxOccurs="unbounded" />
+						<xsd:element name="operation" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getSidRequest">
+				<xsd:complexType>
+					<xsd:sequence>
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getSidResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="sid" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getSupportedUserAttributesRequest">
+				<xsd:complexType>
+					<xsd:sequence>
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getSupportedUserAttributesResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="attribute" type="tns:userAttribute"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getMyUserAttributesRequest">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="auth" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getMyUserAttributesResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="attribute" type="tns:userAttribute"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getObjectsRequest">
+				<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="project" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getAllProjectsRequest">
+				<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>
+			<xsd:element name="getAllProjectsResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="project" type="tns:projectInfo"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getDeactivatedProjectsRequest">
+				<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>
+			<xsd:element name="getDeactivatedProjectsResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="project" type="tns:projectInfo"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="tgCheckAccessRequest">
+				<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="sid" type="xsd:string" minOccurs="0"
+							maxOccurs="1" />
+						<xsd:element name="operation" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="resource" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="tgAssignedRolesRequest">
+				<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="username" type="xsd:string"
+							minOccurs="0" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="tgAssignedProjectsRequest">
+				<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="level" type="xsd:int" minOccurs="0"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getLeaderRequest">
+				<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="project" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getOwnerRequest">
+				<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="resource" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getOwnerResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="owner" type="xsd:string" minOccurs="0"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getMembersRequest">
+				<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="project" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getUserRoleRequest">
+				<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="project" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getUserRoleResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="userRole" type="tns:userRole"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<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>
+			<xsd:element name="getRightsRequest">
+				<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="resource" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="username" type="xsd:string"
+							minOccurs="0" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="isPublicRequest">
+				<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="resource" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getNumberOfResourcesRequest">
+				<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="project" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getNumberOfResourcesResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="allresources" type="xsd:int" />
+						<xsd:element name="publicresources" type="xsd:int" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<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>
+			<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:element name="organisation" 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>
+			<xsd:element name="getProjectDescriptionRequest">
+				<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="project" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="getProjectDescriptionResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="project" type="tns:projectInfo"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+
+			<!-- ########################################################### -->
+			<!-- ## Typ-Definitionen WRITE -->
+			<!-- ########################################################### -->
+
+			<xsd:element name="authenticateRequest">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="username" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="password" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="log" type="xsd:string" minOccurs="0"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="authenticateResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="auth" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="createProjectRequest">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="auth" type="xsd:string" minOccurs="0"
+							maxOccurs="1" />
+						<xsd:element name="log" type="xsd:string" minOccurs="0"
+							maxOccurs="1" />
+						<xsd:element name="name" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+						<xsd:element name="description" type="xsd:string"
+							minOccurs="0" maxOccurs="1" />
+						<xsd:element name="file" type="xsd:string" minOccurs="0"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="createProjectResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="projectId" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="addMemberRequest">
+				<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="username" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="role" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="deleteMemberRequest">
+				<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="username" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="role" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="setMyUserAttributesRequest">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="auth" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+						<xsd:element name="webAuthSecret" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="attribute" type="tns:userAttribute"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="tgAddActiveRoleRequest">
+				<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="role" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="tgDropActiveRoleRequest">
+				<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="role" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="tgGrantPermissionRequest">
+				<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="role" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+						<xsd:element name="operation" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="resource" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="tgRevokePermissionRequest">
+				<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="role" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+						<xsd:element name="operation" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="resource" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="setProjectFileRequest">
+				<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="project" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+						<xsd:element name="file" type="xsd:string" minOccurs="1"
+							maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<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>
+			<xsd:element name="deactivateProjectRequest">
+				<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="project" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="reactivateProjectRequest">
+				<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="project" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="deleteProjectRequest">
+				<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="project" type="xsd:string"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+
+			<!-- ########################################################### -->
+			<!-- ## Typ-Definitionen GENERAL -->
+			<!-- ########################################################### -->
+
+			<xsd:element name="filterResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="resource" type="xsd:string"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="booleanResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="result" type="xsd:boolean"
+							minOccurs="1" maxOccurs="1" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="rolesetResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="role" type="xsd:string" minOccurs="0"
+							maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="usersetResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="username" type="xsd:string"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="resourcesetResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="resource" type="xsd:string"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="operationsetResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="operation" type="xsd:string"
+							minOccurs="0" maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:complexType name="userRole">
+				<xsd:sequence>
+					<xsd:element name="username" type="xsd:string"
+						minOccurs="1" maxOccurs="1" />
+					<xsd:element name="roles" type="xsd:string" minOccurs="1"
+						maxOccurs="unbounded" />
+				</xsd:sequence>
+			</xsd:complexType>
+			<xsd:complexType name="userAttribute">
+				<xsd:sequence>
+					<xsd:element name="value" type="xsd:string" minOccurs="0"
+						maxOccurs="1" />
+					<xsd:element name="description" type="xsd:string"
+						minOccurs="0" maxOccurs="1" />
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string" use="required" />
+				<xsd:attribute name="mandatory" type="xsd:boolean" />
+				<xsd:attribute name="ldapname" type="xsd:string" />
+				<xsd:attribute name="inclass" type="xsd:string" />
+				<xsd:attribute name="displayname" type="xsd:string" />
+			</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>
+					<xsd:element name="id" type="xsd:string" minOccurs="1"
+						maxOccurs="1" />
+					<xsd:element name="description" type="xsd:string"
+						minOccurs="0" maxOccurs="1" />
+					<xsd:element name="name" type="xsd:string" minOccurs="1"
+						maxOccurs="1" />
+					<xsd:element name="file" type="xsd:string" minOccurs="0"
+						maxOccurs="1" />
+				</xsd:sequence>
+			</xsd:complexType>
+
+			<!-- ########################################################### -->
+			<!-- ## Typ-Definitionen FAULTS -->
+			<!-- ########################################################### -->
+
+			<xsd:element name="authenticationFaultResponse" type="tns:TextGridFaultType" />
+			<xsd:element name="unknownProjectFaultResponse" type="tns:TextGridFaultType" />
+			<xsd:element name="rbacFaultResponse" type="tns:TextGridFaultType" />
+			<xsd:element name="notEmptyFaultResponse" type="tns:TextGridFaultType" />
+			<xsd:element name="objectNotFoundFaultResponse" type="tns:TextGridFaultType" />
+			<xsd:element name="unknownResourceFaultResponse" type="tns:TextGridFaultType" />
+			<xsd:complexType name="TextGridFaultType">
+				<xsd:sequence>
+					<xsd:element name="faultNo" type="xsd:int" minOccurs="0"
+						maxOccurs="1" />
+					<xsd:element name="faultMessage" type="xsd:string"
+						minOccurs="0" maxOccurs="1" />
+					<xsd:element name="cause" type="xsd:string" minOccurs="0"
+						maxOccurs="1" />
+				</xsd:sequence>
+			</xsd:complexType>
+		</xsd:schema>
+	</wsdl:types>
+
+	<!-- ################################################################### -->
+	<!-- ## WSDL-Messages READ -->
+	<!-- ################################################################### -->
+
+	<wsdl:message name="userExistsRequest">
+		<wsdl:part element="tns:userExistsRequest" name="userExistsInput" />
+	</wsdl:message>
+	<wsdl:message name="userExistsResponse">
+		<wsdl:part element="tns:booleanResponse" name="userExistsOutput" />
+	</wsdl:message>
+	<wsdl:message name="getObjectsRequest">
+		<wsdl:part element="tns:getObjectsRequest" name="getObjectsInput" />
+	</wsdl:message>
+	<wsdl:message name="getObjectsResponse">
+		<wsdl:part element="tns:resourcesetResponse" name="getObjectsOutput" />
+	</wsdl:message>
+	<wsdl:message name="tgCheckAccessRequest">
+		<wsdl:part element="tns:tgCheckAccessRequest" name="tgCheckAccessInput" />
+	</wsdl:message>
+	<wsdl:message name="tgCheckAccessResponse">
+		<wsdl:part element="tns:booleanResponse" name="tgCheckAccessOutput" />
+	</wsdl:message>
+	<wsdl:message name="tgAssignedRolesRequest">
+		<wsdl:part element="tns:tgAssignedRolesRequest" name="tgAssignedRolesInput" />
+	</wsdl:message>
+	<wsdl:message name="tgAssignedRolesResponse">
+		<wsdl:part element="tns:rolesetResponse" name="tgAssignedRolesOutput" />
+	</wsdl:message>
+	<wsdl:message name="tgAssignedProjectsRequest">
+		<wsdl:part element="tns:tgAssignedProjectsRequest" name="tgAssignedProjectsInput" />
+	</wsdl:message>
+	<wsdl:message name="tgAssignedProjectsResponse">
+		<wsdl:part element="tns:rolesetResponse" name="tgAssignedProjectsOutput" />
+	</wsdl:message>
+	<wsdl:message name="getAllProjectsRequest">
+		<wsdl:part element="tns:getAllProjectsRequest" name="getAllProjectsInput" />
+	</wsdl:message>
+	<wsdl:message name="getAllProjectsResponse">
+		<wsdl:part element="tns:getAllProjectsResponse" name="getAllProjectsOutput" />
+	</wsdl:message>
+	<wsdl:message name="getDeactivatedProjectsRequest">
+		<wsdl:part element="tns:getDeactivatedProjectsRequest" name="getDeactivatedProjectsInput" />
+	</wsdl:message>
+	<wsdl:message name="getDeactivatedProjectsResponse">
+		<wsdl:part element="tns:getDeactivatedProjectsResponse"
+			name="getDeactivatedProjectsOutput" />
+	</wsdl:message>
+	<wsdl:message name="getLeaderRequest">
+		<wsdl:part element="tns:getLeaderRequest" name="getLeaderInput" />
+	</wsdl:message>
+	<wsdl:message name="getLeaderResponse">
+		<wsdl:part element="tns:usersetResponse" name="getLeaderOutput" />
+	</wsdl:message>
+	<wsdl:message name="filterBySidRequest">
+		<wsdl:part element="tns:filterBySidRequest" name="filterBySidInput" />
+	</wsdl:message>
+	<wsdl:message name="filterBySidResponse">
+		<wsdl:part element="tns:filterResponse" name="filterBySidOutput" />
+	</wsdl:message>
+	<wsdl:message name="getOwnerRequest">
+		<wsdl:part element="tns:getOwnerRequest" name="getOwnerInput" />
+	</wsdl:message>
+	<wsdl:message name="getOwnerResponse">
+		<wsdl:part element="tns:getOwnerResponse" name="getOwnerOutput" />
+	</wsdl:message>
+	<wsdl:message name="getMembersRequest">
+		<wsdl:part element="tns:getMembersRequest" name="getMembersInput" />
+	</wsdl:message>
+	<wsdl:message name="getMembersResponse">
+		<wsdl:part element="tns:usersetResponse" name="getMembersOutput" />
+	</wsdl:message>
+	<wsdl:message name="getUserRoleRequest">
+		<wsdl:part element="tns:getUserRoleRequest" name="getUserRoleInput" />
+	</wsdl:message>
+	<wsdl:message name="getUserRoleResponse">
+		<wsdl:part element="tns:getUserRoleResponse" name="getUserRoleOutput" />
+	</wsdl:message>
+	<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>
+	<wsdl:message name="getRightsRequest">
+		<wsdl:part element="tns:getRightsRequest" name="getRightsInput" />
+	</wsdl:message>
+	<wsdl:message name="getRightsResponse">
+		<wsdl:part element="tns:operationsetResponse" name="getRightsOutput" />
+	</wsdl:message>
+	<wsdl:message name="isPublicRequest">
+		<wsdl:part element="tns:isPublicRequest" name="isPublicInput" />
+	</wsdl:message>
+	<wsdl:message name="isPublicResponse">
+		<wsdl:part element="tns:booleanResponse" name="isPublicOutput" />
+	</wsdl:message>
+	<wsdl:message name="getNumberOfResourcesRequest">
+		<wsdl:part element="tns:getNumberOfResourcesRequest" name="getNumberOfResourcesInput" />
+	</wsdl:message>
+	<wsdl:message name="getNumberOfResourcesResponse">
+		<wsdl:part element="tns:getNumberOfResourcesResponse" name="getNumberOfResourcesOutput" />
+	</wsdl:message>
+	<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>
+	<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>
+	<wsdl:message name="getProjectDescriptionRequest">
+		<wsdl:part element="tns:getProjectDescriptionRequest" name="getProjectDescriptionInput" />
+	</wsdl:message>
+	<wsdl:message name="getProjectDescriptionResponse">
+		<wsdl:part element="tns:getProjectDescriptionResponse" name="getProjectDescriptionOutput" />
+	</wsdl:message>
+	<wsdl:message name="getSidRequest">
+		<wsdl:part element="tns:getSidRequest" name="getSidInput" />
+	</wsdl:message>
+	<wsdl:message name="getSidResponse">
+		<wsdl:part element="tns:getSidResponse" name="getSidOutput" />
+	</wsdl:message>
+	<wsdl:message name="getSupportedUserAttributesRequest">
+		<wsdl:part element="tns:getSupportedUserAttributesRequest"
+			name="getSupportedUserAttributesInput" />
+	</wsdl:message>
+	<wsdl:message name="getSupportedUserAttributesResponse">
+		<wsdl:part element="tns:getSupportedUserAttributesResponse"
+			name="getSupportedUserAttributesOutput" />
+	</wsdl:message>
+	<wsdl:message name="getMyUserAttributesRequest">
+		<wsdl:part element="tns:getMyUserAttributesRequest" name="getMyUserAttributesInput" />
+	</wsdl:message>
+	<wsdl:message name="getMyUserAttributesResponse">
+		<wsdl:part element="tns:getMyUserAttributesResponse" name="getMyUserAttributesOutput" />
+	</wsdl:message>
+
+	<!-- ################################################################### -->
+	<!-- ## WSDL-Messages WRITE -->
+	<!-- ################################################################### -->
+
+	<wsdl:message name="authenticateRequest">
+		<wsdl:part element="tns:authenticateRequest" name="authenticateInput" />
+	</wsdl:message>
+	<wsdl:message name="authenticateResponse">
+		<wsdl:part element="tns:authenticateResponse" name="authenticateOutput" />
+	</wsdl:message>
+	<wsdl:message name="createProjectRequest">
+		<wsdl:part element="tns:createProjectRequest" name="createProjectInput" />
+	</wsdl:message>
+	<wsdl:message name="createProjectResponse">
+		<wsdl:part element="tns:createProjectResponse" name="createProjectOutput" />
+	</wsdl:message>
+	<wsdl:message name="addMemberRequest">
+		<wsdl:part element="tns:addMemberRequest" name="addMemberInput" />
+	</wsdl:message>
+	<wsdl:message name="addMemberResponse">
+		<wsdl:part element="tns:booleanResponse" name="addMemberOutput" />
+	</wsdl:message>
+	<wsdl:message name="deleteMemberRequest">
+		<wsdl:part element="tns:deleteMemberRequest" name="deleteMemberInput" />
+	</wsdl:message>
+	<wsdl:message name="deleteMemberResponse">
+		<wsdl:part element="tns:booleanResponse" name="deleteMemberOutput" />
+	</wsdl:message>
+	<wsdl:message name="tgAddActiveRoleRequest">
+		<wsdl:part element="tns:tgAddActiveRoleRequest" name="tgAddActiveRoleInput" />
+	</wsdl:message>
+	<wsdl:message name="tgAddActiveRoleResponse">
+		<wsdl:part element="tns:booleanResponse" name="tgAddActiveRoleOutput" />
+	</wsdl:message>
+	<wsdl:message name="tgDropActiveRoleRequest">
+		<wsdl:part element="tns:tgDropActiveRoleRequest" name="tgDropActiveRoleInput" />
+	</wsdl:message>
+	<wsdl:message name="tgDropActiveRoleResponse">
+		<wsdl:part element="tns:booleanResponse" name="tgDropActiveRoleOutput" />
+	</wsdl:message>
+	<wsdl:message name="tgGrantPermissionRequest">
+		<wsdl:part element="tns:tgGrantPermissionRequest" name="tgGrantPermissionInput" />
+	</wsdl:message>
+	<wsdl:message name="tgGrantPermissionResponse">
+		<wsdl:part element="tns:booleanResponse" name="tgGrantPermissionOutput" />
+	</wsdl:message>
+	<wsdl:message name="tgRevokePermissionRequest">
+		<wsdl:part element="tns:tgRevokePermissionRequest" name="tgRevokePermissionInput" />
+	</wsdl:message>
+	<wsdl:message name="tgRevokePermissionResponse">
+		<wsdl:part element="tns:booleanResponse" name="tgRevokePermissionOutput" />
+	</wsdl:message>
+	<wsdl:message name="setProjectFileRequest">
+		<wsdl:part element="tns:setProjectFileRequest" name="setProjectFileInput" />
+	</wsdl:message>
+	<wsdl:message name="setProjectFileResponse">
+		<wsdl:part element="tns:booleanResponse" name="setProjectFileOutput" />
+	</wsdl:message>
+	<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>
+	<wsdl:message name="deactivateProjectRequest">
+		<wsdl:part element="tns:deactivateProjectRequest" name="deactivateProjectInput" />
+	</wsdl:message>
+	<wsdl:message name="deactivateProjectResponse">
+		<wsdl:part element="tns:booleanResponse" name="deactivateProjectOutput" />
+	</wsdl:message>
+	<wsdl:message name="reactivateProjectRequest">
+		<wsdl:part element="tns:reactivateProjectRequest" name="reactivateProjectInput" />
+	</wsdl:message>
+	<wsdl:message name="reactivateProjectResponse">
+		<wsdl:part element="tns:booleanResponse" name="reactivateProjectOutput" />
+	</wsdl:message>
+	<wsdl:message name="deleteProjectRequest">
+		<wsdl:part element="tns:deleteProjectRequest" name="deleteProjectInput" />
+	</wsdl:message>
+	<wsdl:message name="deleteProjectResponse">
+		<wsdl:part element="tns:booleanResponse" name="deleteProjectOutput" />
+	</wsdl:message>
+	<wsdl:message name="setMyUserAttributesRequest">
+		<wsdl:part element="tns:setMyUserAttributesRequest" name="setMyUserAttributesInput" />
+	</wsdl:message>
+	<wsdl:message name="setMyUserAttributesResponse">
+		<wsdl:part element="tns:booleanResponse" name="setMyUserAttributesOutput" />
+	</wsdl:message>
+
+	<!-- ################################################################### -->
+	<!-- ## WSDL-Messages FAULTS -->
+	<!-- ################################################################### -->
+
+	<wsdl:message name="authenticationFault">
+		<wsdl:part element="tns:authenticationFaultResponse" name="authenticationFault" />
+	</wsdl:message>
+	<wsdl:message name="unknownProjectFault">
+		<wsdl:part element="tns:unknownProjectFaultResponse" name="unknownProjectFault" />
+	</wsdl:message>
+	<wsdl:message name="rbacFault">
+		<wsdl:part element="tns:rbacFaultResponse" name="rbacFault" />
+	</wsdl:message>
+	<wsdl:message name="notEmptyFault">
+		<wsdl:part element="tns:notEmptyFaultResponse" name="notEmptyFault" />
+	</wsdl:message>
+	<wsdl:message name="unknownResourceFault">
+		<wsdl:part element="tns:unknownResourceFaultResponse" name="unknownResourceFault" />
+	</wsdl:message>
+
+	<!-- ################################################################### -->
+	<!-- ## Port-Type-Definitionen -->
+	<!-- ################################################################### -->
+
+	<wsdl:portType name="port_tgextra">
+		<wsdl:operation name="userExists">
+			<wsdl:documentation>
 				Checks whether this UserID (eduPersonPrincipalName) exists in RBAC.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						userExistsRequest, with elements
-						<ul><li>auth - String, SessionID of application or user asking</li><li>log - String for log information, optional</li><li>username - String containing the ID (ePPN) of the user</li></ul></li><li><b>Output Parameters</b>
-						booleanResponse, with element
-						<ul><li>result - boolean, true if user exists, false
-								otherwise</li></ul></li><li><b>Faults</b><ul><li>authenticationFault</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:userExistsRequest"/>
-      <wsdl:output message="tns:userExistsResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-<!-- #### createProject #### //-->
-    <wsdl:operation name="createProject">
-      <wsdl:documentation>
-				Creates a project. Projects are roles with various sub-roles,
-				i.e
-				Leader, Administrator... Creates default roles with
-				default
-				permissions:
-				<table><tr><td>Role</td><td>Right on Project</td></tr><tr><td>Projektleiter (project leader)</td><td>delegate</td></tr><tr><td>Administrator</td><td>-none-</td></tr><tr><td>Bearbeiter (editor)</td><td>create</td></tr><tr><td>Beobachter (observer)</td><td>-none-</td></tr></table>
-				These permissions can be adapted afterwards. For the rights
-				on
-				resources, see registerResource().
-				<ul><li><b>Input Parameters</b>
-						createProjectRequest, with elements
-						<ul><li>auth - String, SessionID of future project
-								leader</li><li>log - String for log information, optional</li><li>name - String with name of project</li><li>description - String with description of
-								project</li><li>
-								file - String with URI of project file
-								-
-								<em>currently unused, omit or leave empty and use
-									setProjectFile( ) once the file resource has been
-									created</em>
-							</li></ul></li><li><b>Output Parameters</b>
-						createProjectResponse, with element
-						<ul><li>projectId - String with the newly assigned project
-								ID, such as
-								"TGPR123"</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:createProjectRequest"/>
-      <wsdl:output message="tns:createProjectResponse"/>
-    </wsdl:operation>
-<!-- #### setProjectFile #### //-->
-    <wsdl:operation name="setProjectFile">
-      <wsdl:documentation>
-				Registers the URI of a TextGridObject to be the project file
-				for
-				project-specific settings. The URI must be registered at
-				RBAC beforehand.
-				<ul><li><b>Input Parameters</b>
-						setProjectFileRequest, with elements
-						<ul><li>auth - String, SessionID of Project Leader</li><li>log - String for log information, optional</li><li>project - String with projectID</li><li>file - String with URI of project file</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><li>authenticationFault</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:setProjectFileRequest"/>
-      <wsdl:output message="tns:setProjectFileResponse"/>
-      <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>
+						<ul>
+							<li>auth - String, SessionID of application or user asking</li>
+							<li>log - String for log information, optional</li>
+							<li>username - String containing the ID (ePPN) of the user</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>
+						<ul>
+							<li>result - boolean, true if user exists, false
+								otherwise</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>authenticationFault</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:setNameRequest"/>
-      <wsdl:output message="tns:setNameResponse"/>
-    </wsdl:operation>
-<!-- #### getNames #### //-->
-    <wsdl:operation name="getNames">
-      <wsdl:documentation>
+			<wsdl:input message="tns:userExistsRequest" />
+			<wsdl:output message="tns:userExistsResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="getNames">
+			<wsdl:documentation>
 				Returns user records for a list of ePPNs
-				<ul><li><b>Input Parameters</b>
+				<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>
+						<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>
+						<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>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:getNamesRequest"/>
-      <wsdl:output message="tns:getNamesResponse"/>
-    </wsdl:operation>
-<!-- #### getIDs #### //-->
-    <wsdl:operation name="getIDs">
-      <wsdl:documentation>
+			<wsdl:input message="tns:getNamesRequest" />
+			<wsdl:output message="tns:getNamesResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="getIDs">
+			<wsdl:documentation>
 				Returns user records for a name or mail address.
-				<ul><li><b>Input Parameters</b>
+				<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 - String with Name</li><li>mail - String with E-Mail Address</li><li>organisation - String with Organisation</li></ul></li><li><b>Output Parameters</b>
+						<ul>
+							<li>auth - String, SessionID of user that wants to query for
+								names</li>
+							<li>log - String,</li>
+							<li>name - String with Name</li>
+							<li>mail - String with E-Mail Address</li>
+							<li>organisation - String with Organisation</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>
+						<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>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:getIDsRequest"/>
-      <wsdl:output message="tns:getIDsResponse"/>
-    </wsdl:operation>
-<!-- #### getObjects #### //-->
-    <wsdl:operation name="getObjects">
-      <wsdl:documentation>
+			<wsdl:input message="tns:getIDsRequest" />
+			<wsdl:output message="tns:getIDsResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="getObjects">
+			<wsdl:documentation>
 				Returns URIs of all resources in project. Caller must have
 				some role
 				in the project.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						getObjectsRequest, with elements
-						<ul><li>auth - String, SessionID of user</li><li>log - String for log information, optional</li><li>project - String with projectID</li></ul></li><li><b>Output Parameters</b>
+						<ul>
+							<li>auth - String, SessionID of user</li>
+							<li>log - String for log information, optional</li>
+							<li>project - String with projectID</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						resourcesetResponse, with element
-						<ul><li>resource - String with URI of resource in
+						<ul>
+							<li>resource - String with URI of resource in
 								project. Can occur
-								multiple times</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:getObjectsRequest"/>
-      <wsdl:output message="tns:getObjectsResponse"/>
-    </wsdl:operation>
-<!-- #### addMember #### //-->
-    <wsdl:operation name="addMember">
-      <wsdl:documentation>
-				Project leaders can assign users into specific roles. This
-				still does
-				not effect
-				<em>activation</em>
-				of the role in the
-				user(s)' session(s).
-				<ul><li><b>Input Parameters</b>
-						addMemberRequest, with elements
-						<ul><li>auth - String, SessionID of project leader</li><li>log - String for log information, optional</li><li>username - String with ePPN of user to be added</li><li>role - String with full-qualified role name of the
-								role the
-								user is to be signed into. The full-qualified
-								role name has the
-								form
-								"Administrator,TGPR3,Projekt-Teilnehmer"</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><li>rbacFault</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:addMemberRequest"/>
-      <wsdl:output message="tns:addMemberResponse"/>
-      <wsdl:fault name="rbacFault" message="tns:rbacFault"/>
-    </wsdl:operation>
-<!-- #### deleteMember #### //-->
-    <wsdl:operation name="deleteMember">
-      <wsdl:documentation>
-				Project leaders can delete a role from a user. This
-				still does not
-				effect
-				<em>(de-)activation</em>
-				of the role in the
-				user(s)' session(s).
-				<ul><li><b>Input Parameters</b>
-						deleteMemberRequest, with elements
-						<ul><li>auth - String, SessionID of project leader</li><li>log - String for log information, optional</li><li>username - String with ePPN of user to be signed off</li><li>role - String with full-qualified role name of the
-								role the
-								user is to be signed off. The full-qualified
-								role name has the
-								form
-								"Administrator,TGPR3,Projekt-Teilnehmer"</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></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:deleteMemberRequest"/>
-      <wsdl:output message="tns:deleteMemberResponse"/>
-    </wsdl:operation>
-<!-- #### tgAddActiveRole #### //-->
-    <wsdl:operation name="tgAddActiveRole">
-      <wsdl:documentation>
-				Activates a role for a session. NB, currently the login
-				process
-				activates
-				<em>all</em>
-				available roles of the user.
-				<ul><li><b>Input Parameters</b>
-						tgAddActiveRoleRequest, with elements
-						<ul><li>auth - String, SessionID of user</li><li>log - String for log information, optional</li><li>role - String with full-qualified role name of the
-								role the
-								user wants to activate. The full-qualified role
-								name has the form
-								"Administrator,TGPR3,Projekt-Teilnehmer".</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></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:tgAddActiveRoleRequest"/>
-      <wsdl:output message="tns:tgAddActiveRoleResponse"/>
-    </wsdl:operation>
-<!-- #### tgDropActiveRole #### //-->
-    <wsdl:operation name="tgDropActiveRole">
-      <wsdl:documentation>
-				De-activates a role for a session.
-				<ul><li><b>Input Parameters</b>
-						tgDropActiveRoleRequest, with elements
-						<ul><li>auth - String, SessionID of user</li><li>log - String for log information, optional</li><li>role - String with full-qualified role name of the
-								role the
-								user wants to de-activate. The full-qualified role
-								name has the
-								form
-								"Administrator,TGPR3,Projekt-Teilnehmer".</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></ul>
+								multiple times</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:tgDropActiveRoleRequest"/>
-      <wsdl:output message="tns:tgDropActiveRoleResponse"/>
-    </wsdl:operation>
-<!-- #### tgCheckAccess #### //-->
-    <wsdl:operation name="tgCheckAccess">
-      <wsdl:documentation>
+			<wsdl:input message="tns:getObjectsRequest" />
+			<wsdl:output message="tns:getObjectsResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="tgCheckAccess">
+			<wsdl:documentation>
 				Returns access decision for given operation on given resource
 				for
 				session.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						tgCheckAccessRequest, with elements
-						<ul><li>auth - String, SessionID of user (or service) that
+						<ul>
+							<li>auth - String, SessionID of user (or service) that
 								wants to
-								intitiate the check</li><li>log - String for log information, optional</li><li>
+								intitiate the check</li>
+							<li>log - String for log information, optional</li>
+							<li>
 								sid - String, SessionID of user for whom the check
 								is to be done.
 								Leave empty if check is to be done for
 								user's own session given
 								under
 								<em>auth</em>
-							</li><li>operation - String, such as "read", "write"</li><li>resource - String, name of project or role, or URI of
-								TgObject resource</li></ul></li><li><b>Output Parameters</b>
+							</li>
+							<li>operation - String, such as "read", "write"</li>
+							<li>resource - String, name of project or role, or URI of
+								TgObject resource</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						booleanResponse, with element
-						<ul><li>result - boolean, true if operation was successful,
+						<ul>
+							<li>result - boolean, true if operation was successful,
 								false
-								otherwise</li></ul></li><li><b>Faults</b><ul><li>unknownResourceFault</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:tgCheckAccessRequest"/>
-      <wsdl:output message="tns:tgCheckAccessResponse"/>
-      <wsdl:fault name="unknownResourceFault" message="tns:unknownResourceFault"/>
-    </wsdl:operation>
-<!-- #### tgCrudCheckAccess #### //-->
-    <wsdl:operation name="tgCrudCheckAccess">
-      <wsdl:documentation>
-				Returns access decision for given operation on given resource
-				for
-				session. In addition the owner of the session and informations
-				on the
-				project is returned.
-				<ul><li><b>Input Parameters</b>
-						tgCrudCheckAccessRequest, with elements
-						<ul><li>auth - String, SessionID of user (or service) that
-								wants to
-								intitiate the check</li><li>log - String for log information, optional</li><li>
-								sid - String, SessionID of user for whom the check
-								is to be done.
-								Leave empty if check is to be done for
-								user's own session given
-								under
-								<em>auth</em>
-							</li><li>secret - String, Shared secred only CRUD knows</li><li>operation - String, such as "read", "write"</li><li>resource - String, name of project or role, or URI of
-								TgObject resource</li></ul></li><li><b>Output Parameters</b>
-						See wsdl
-						<ul><li>XXX</li></ul></li><li><b>Faults</b><ul><li>unknownResourceFault</li></ul></li></ul>
+								otherwise</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>unknownResourceFault</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:tgCrudCheckAccessRequest"/>
-      <wsdl:output message="tns:tgCrudCheckAccessResponse"/>
-      <wsdl:fault name="unknownResourceFault" message="tns:unknownResourceFault"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-<!-- #### tgAssignedRoles #### //-->
-    <wsdl:operation name="tgAssignedRoles">
-      <wsdl:documentation>
+			<wsdl:input message="tns:tgCheckAccessRequest" />
+			<wsdl:output message="tns:tgCheckAccessResponse" />
+			<wsdl:fault name="unknownResourceFault" message="tns:unknownResourceFault" />
+		</wsdl:operation>
+		<wsdl:operation name="tgAssignedRoles">
+			<wsdl:documentation>
 				Returns the roles the requesting user has, in any project. Can
 				be
 				called for another user by project leaders, then roles will
@@ -1390,190 +1169,216 @@
 				<em>username</em>
 				has some
 				role in.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						tgAssignedRolesRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants to
-								query for roles</li><li>log - String for log information, optional</li><li>username - String, ePPN of user for whom the
+						<ul>
+							<li>auth - String, SessionID of user that wants to
+								query for roles</li>
+							<li>log - String for log information, optional</li>
+							<li>username - String, ePPN of user for whom the
 								query is to be
-								done. Can be empty.</li></ul></li><li><b>Output Parameters</b>
+								done. Can be empty.</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						rolesetResponse, with element
-						<ul><li>role - String with full-qualified role name of the
+						<ul>
+							<li>role - String with full-qualified role name of the
 								role. The
 								full-qualified role name has the form
 								"Administrator,TGPR3,Projekt-Teilnehmer". Can occur
 								multiple
-								times.</li></ul></li></ul>
+								times.</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:tgAssignedRolesRequest"/>
-      <wsdl:output message="tns:tgAssignedRolesResponse"/>
-    </wsdl:operation>
-<!-- #### tgAssignedProjects #### //-->
-    <wsdl:operation name="tgAssignedProjects">
-      <wsdl:documentation>
+			<wsdl:input message="tns:tgAssignedRolesRequest" />
+			<wsdl:output message="tns:tgAssignedRolesResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="tgAssignedProjects">
+			<wsdl:documentation>
 				Returns projectIDs of all projects the user has some role in.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						tgAssignedProjectsRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants to
-								query for roles</li><li>log - String for log information, optional</li><li>
+						<ul>
+							<li>auth - String, SessionID of user that wants to
+								query for roles</li>
+							<li>log - String for log information, optional</li>
+							<li>
 								level - Integer. Can be either empty (= level 0) or one of
 								the
 								following:
-								<ul><li>0 - Returns all projects the user has any
-										role in (default).</li><li>
+								<ul>
+									<li>0 - Returns all projects the user has any
+										role in (default).</li>
+									<li>
 										1 - Returns only projects where the user has
 										read access, i.e.
-										<ul><li>she is Beobachter
-												(observer) or</li><li>she is Bearbeiter (editor)
-												or</li><li>there are any public resources in the
-												project</li></ul>
-									</li><li>2 - like level 1, but public resources do not
-										count</li><li>3 - Returns only projects where the user has
+										<ul>
+											<li>she is Beobachter
+												(observer) or</li>
+											<li>she is Bearbeiter (editor)
+												or</li>
+											<li>there are any public resources in the
+												project</li>
+										</ul>
+									</li>
+									<li>2 - like level 1, but public resources do not
+										count</li>
+									<li>3 - Returns only projects where the user has
 										write access,
-										i.e. she is Bearbeiter (editor)</li><li>4 - Returns only projects where the user has
+										i.e. she is Bearbeiter (editor)</li>
+									<li>4 - Returns only projects where the user has
 										delegate
 										access, i.e. she is Projektleiter (project
-										leader)</li></ul>
-							</li></ul></li><li><b>Output Parameters</b>
+										leader)</li>
+								</ul>
+							</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						rolesetResponse, with element
-						<ul><li>role - String with projectID (no full-qualified role
+						<ul>
+							<li>role - String with projectID (no full-qualified role
 								name is
-								needed here). Can occur multiple times.</li></ul></li></ul>
+								needed here). Can occur multiple times.</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:tgAssignedProjectsRequest"/>
-      <wsdl:output message="tns:tgAssignedProjectsResponse"/>
-    </wsdl:operation>
-<!-- #### getAllProjects #### //-->
-    <wsdl:operation name="getAllProjects">
-      <wsdl:documentation>
+			<wsdl:input message="tns:tgAssignedProjectsRequest" />
+			<wsdl:output message="tns:tgAssignedProjectsResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="getAllProjects">
+			<wsdl:documentation>
 				Returns all projects stored in this RBAC instance with ID,
 				name, and
 				description. See also getProjectDescription().
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						getAllProjectsRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants to query
+						<ul>
+							<li>auth - String, SessionID of user that wants to query
 								for
 								projects. Can be omitted as this information can be
 								reviewed
-								publicly</li><li>log - String for log information, optional</li></ul></li><li><b>Output Parameters</b>
+								publicly</li>
+							<li>log - String for log information, optional</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						getAllProjectsResponse, with element
-						<ul><li>
+						<ul>
+							<li>
 								project - projectInfo, can occur multiple
 								times.
-								<br/>
+								<br />
 								The type projectInfo consists of the following elements:
-								<ul><li>id - String, project ID, such as "TGPR123"</li><li>description - String, project description</li><li>name - String, project name</li><li>file - String with URI of project file for
+								<ul>
+									<li>id - String, project ID, such as "TGPR123"</li>
+									<li>description - String, project description</li>
+									<li>name - String, project name</li>
+									<li>file - String with URI of project file for
 										project-specific
-										settings. </li></ul>
-							</li></ul></li></ul>
+										settings. </li>
+								</ul>
+							</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:getAllProjectsRequest"/>
-      <wsdl:output message="tns:getAllProjectsResponse"/>
-    </wsdl:operation>
-<!-- #### getDeactivatedProjects #### //-->
-    <wsdl:operation name="getDeactivatedProjects">
-      <wsdl:documentation>
+			<wsdl:input message="tns:getAllProjectsRequest" />
+			<wsdl:output message="tns:getAllProjectsResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="getDeactivatedProjects">
+			<wsdl:documentation>
 				Returns all projects stored in this RBAC instance with ID,
 				name, and
 				description that are deactivated and can be
 				reactivated by the
 				current user.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						getAllProjectsRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants to query
+						<ul>
+							<li>auth - String, SessionID of user that wants to query
 								for
 								projects. Can be omitted as this information can be
 								reviewed
-								publicly</li><li>log - String for log information, optional</li></ul></li><li><b>Output Parameters</b>
+								publicly</li>
+							<li>log - String for log information, optional</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						getDeactivatedProjectsResponse, with element
-						<ul><li>
+						<ul>
+							<li>
 								project - projectInfo, can occur multiple
 								times.
-								<br/>
+								<br />
 								The type projectInfo consists of the following elements:
-								<ul><li>id - String, project ID, such as "TGPR123"</li><li>description - String, project description</li><li>name - String, project name</li><li>file - String with URI of project file for
+								<ul>
+									<li>id - String, project ID, such as "TGPR123"</li>
+									<li>description - String, project description</li>
+									<li>name - String, project name</li>
+									<li>file - String with URI of project file for
 										project-specific
-										settings. </li></ul>
-							</li></ul></li></ul>
+										settings. </li>
+								</ul>
+							</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:getDeactivatedProjectsRequest"/>
-      <wsdl:output message="tns:getDeactivatedProjectsResponse"/>
-    </wsdl:operation>
-<!-- #### getLeader #### //-->
-    <wsdl:operation name="getLeader">
-      <wsdl:documentation>
+			<wsdl:input message="tns:getDeactivatedProjectsRequest" />
+			<wsdl:output message="tns:getDeactivatedProjectsResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="getLeader">
+			<wsdl:documentation>
 				Returns Project Leader/s (i.e. who have delegate right on the
 				respective project resource).
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						getLeaderRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants to query
+						<ul>
+							<li>auth - String, SessionID of user that wants to query
 								for
 								projects. Can be omitted as this information can be
 								reviewed
-								publicly</li><li>log - String for log information, optional</li><li>project - String with project ID, such as "TGPR123"</li></ul></li><li><b>Output Parameters</b>
+								publicly</li>
+							<li>log - String for log information, optional</li>
+							<li>project - String with project ID, such as "TGPR123"</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						usersetResponse, with element
-						<ul><li>username - String holding ePPN of user, can occur
+						<ul>
+							<li>username - String holding ePPN of user, can occur
 								multiple
 								times.
-	      </li></ul></li></ul>
+	      </li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:getLeaderRequest"/>
-      <wsdl:output message="tns:getLeaderResponse"/>
-    </wsdl:operation>
-<!-- #### registerResource #### //-->
-    <wsdl:operation name="registerResource">
-      <wsdl:documentation>
-				Registers a resource in the database. Assigns standard
-				permissions to
-				roles in project:
-				<table><tr><td>Role</td><td>Right on Resource</td></tr><tr><td>Projektleiter (project leader)</td><td>delegate, publish</td></tr><tr><td>Administrator</td><td>delete</td></tr><tr><td>Bearbeiter (editor)</td><td>read, write</td></tr><tr><td>Beobachter (observer)</td><td>read</td></tr></table>
-				These permissions can be adapted afterwards. User needs
-				create right
-				on project resource, see createProject().
-				<br/>
-				This function is
-				<b>only for use by TG-crud.</b>
-				Clients
-				should call TG-crud.create instead.
-				<ul><li><b>Input Parameters</b>
-						registerResourceRequest, with elements
-						<ul><li>auth - String, SessionID of future owner of this resource</li><li>log - String for log information, optional</li><li>project - String with project ID, such as "TGPR123".</li><li>uri - String holding URI of TgObject resource to be
-								registered in RBAC</li><li>secret - String known by TG-crud to authenticate
-								itself</li></ul></li><li><b>Output Parameters</b>
-						operationsSetResponse, with element
-						<ul><li>operation (0..n) Strings with permissible operations on the
-								newly created resource</li></ul></li><li><b>Faults</b><ul><li>authenticationFault</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:registerResourceRequest"/>
-      <wsdl:output message="tns:registerResourceResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-<!-- #### unregisterResource #### //-->
-    <wsdl:operation name="unregisterResource">
-      <wsdl:documentation>
-				Removes resource from database. User needs delete right on
-				resource.
-				<b>Only for use by TG-crud.</b>
-				Clients should call
-				TG-crud.delete instead.
-				<ul><li><b>Input Parameters</b>
-						unregisterResourceRequest, with elements
-						<ul><li>auth - String, SessionID of requester</li><li>log - String for log information, optional</li><li>uri - String holding URI of TgObject resource to be
-								removed
-								from RBAC</li><li>secret - String known by TG-crud to authenticate
-								itself</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><li>unknownResourceFault</li><li>authenticationFault</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:unregisterResourceRequest"/>
-      <wsdl:output message="tns:unregisterResourceResponse"/>
-      <wsdl:fault name="unknownResourceFault" message="tns:unknownResourceFault"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-<!-- #### filterBySid #### //-->
-    <wsdl:operation name="filterBySid">
-      <wsdl:documentation>
+			<wsdl:input message="tns:getLeaderRequest" />
+			<wsdl:output message="tns:getLeaderResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="filterBySid">
+			<wsdl:documentation>
 				This is tgCheckAccess in batch operation: Returns a list of
 				the
 				resources where a given operation with this SessionID is
@@ -1582,269 +1387,794 @@
 				resources, and the subset
 				of this list that matches
 				will be returned.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						filterBySidRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants to
-								do the check</li><li>log - String for log information, optional</li><li>resource - String with projectID, or URI of
+						<ul>
+							<li>auth - String, SessionID of user that wants to
+								do the check</li>
+							<li>log - String for log information, optional</li>
+							<li>resource - String with projectID, or URI of
 								TgObject resource.
-								Can occur multiple times.</li><li>operation - String, such as "read", "write"</li></ul></li><li><b>Output Parameters</b>
+								Can occur multiple times.</li>
+							<li>operation - String, such as "read", "write"</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						filterResponse, with element
-						<ul><li>resource - String with projectID, or URIs that
+						<ul>
+							<li>resource - String with projectID, or URIs that
 								match. Can
-								occur multiple times.</li></ul></li><li><b>Faults</b><ul><li>authenticationFault</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:filterBySidRequest"/>
-      <wsdl:output message="tns:filterBySidResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-<!-- #### tgGrantPermission #### //-->
-    <wsdl:operation name="tgGrantPermission">
-      <wsdl:documentation>
-				Enables given operation for given role on given
-				resource. Resource
-				may be an URI of a TgObject, or
-				a projectID. Users need delegate
-				right on resource or project
-				(i.e. be project leader).
-				<ul><li><b>Input Parameters</b>
-						tgGrantPermissionRequest, with elements
-						<ul><li>auth - String, SessionID of user</li><li>log - String for log information, optional</li><li>role - String with full-qualified role name of the
-								role the
-								user wants to grant a right. The full-qualified
-								role name has the
-								form
-								"Administrator,TGPR3,Projekt-Teilnehmer".</li><li>operation - String, operation to be granted, such as
-								"read",
-								"write".</li><li>resource - String, URI of TgObject, or projectID</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><li>authenticationFault</li><li>rbacFault</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:tgGrantPermissionRequest"/>
-      <wsdl:output message="tns:tgGrantPermissionResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-<!-- #### tgRevokePermission #### //-->
-    <wsdl:operation name="tgRevokePermission">
-      <wsdl:documentation>
-				Disables this permission, see tgGrantPermission for limitations.
-				<ul><li><b>Input Parameters</b>
-						tgRevokePermissionRequest, with elements
-						<ul><li>auth - String, SessionID of user</li><li>log - String for log information, optional</li><li>role - String with full-qualified role name of the
-								role the
-								user wants to revoke a right. The full-qualified
-								role name has
-								the form
-								"Administrator,TGPR3,Projekt-Teilnehmer".</li><li>operation - String, operation to be granted, such as
-								"read",
-								"write".</li><li>resource - String, URI of TgObject, or projectID</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><li>authenticationFault</li></ul></li></ul>
+								occur multiple times.</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>authenticationFault</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:tgRevokePermissionRequest"/>
-      <wsdl:output message="tns:tgRevokePermissionResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-<!-- #### getOwner #### //-->
-    <wsdl:operation name="getOwner">
-      <wsdl:documentation>
+			<wsdl:input message="tns:filterBySidRequest" />
+			<wsdl:output message="tns:filterBySidResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="getOwner">
+			<wsdl:documentation>
 				Returns ePPN of owner that was set in registerResource. User
 				must
 				have read permission on the resource, or resource must be
 				public.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						getOwnerRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants to query
+						<ul>
+							<li>auth - String, SessionID of user that wants to query
 								for the
-								owner</li><li>log - String for log information, optional</li><li>resource - String, URI of TgObject</li></ul></li><li><b>Output Parameters</b>
+								owner</li>
+							<li>log - String for log information, optional</li>
+							<li>resource - String, URI of TgObject</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						getOwnerResponse, with element
-						<ul><li>owner - String, ePPN of owner.</li></ul></li><li><b>Faults</b><ul><li>authenticationFault</li></ul></li></ul>
+						<ul>
+							<li>owner - String, ePPN of owner.</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>authenticationFault</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:getOwnerRequest"/>
-      <wsdl:output message="tns:getOwnerResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-
-<!-- #### getEPPN #### //-->
-    <wsdl:operation name="getEPPN">
-      <wsdl:documentation>
-				Returns ePPN (aka TextGrid ID) of authenticated user. As ths function could be used for SID guessing, the caller must know a secret.
-				<ul><li><b>Input Parameters</b>
-						getEPPNRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants to query his ePPN</li><li>log - String for log information, optional</li><li>secret - String with secret</li></ul></li><li><b>Output Parameters</b>
-						getEPPNResponse, with element
-						<ul><li>eppn - String, ePPN of user.</li></ul></li><li><b>Faults</b><ul><li>authenticationFault</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:getEPPNRequest"/>
-      <wsdl:output message="tns:getEPPNResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-
-<!-- #### getUUID #### //-->
-    <wsdl:operation name="getUUID">
-      <wsdl:documentation>
-	Returns UUID (full path including server address) of the resource. User
-	must have read permission on the resource, or resource must be
-	public.
-	<ul><li><b>Input Parameters</b> getUUIDRequest, with elements
-	    <ul><li>auth - String, SessionID of user that wants to query
-	      for the UUID</li><li>log - String for log information, optional</li><li>resource - String, URI of TgObject</li></ul></li><li><b>Output Parameters</b> getUUIDResponse, with element
-	    <ul><li>uuid - String, UUID if defined.</li></ul></li><li><b>Faults</b><ul><li>authenticationFault</li></ul></li></ul>
-      </wsdl:documentation>
-      <wsdl:input message="tns:getUUIDRequest"/>
-      <wsdl:output message="tns:getUUIDResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-
-<!-- #### getMembers #### //-->
-    <wsdl:operation name="getMembers">
-      <wsdl:documentation>
+			<wsdl:input message="tns:getOwnerRequest" />
+			<wsdl:output message="tns:getOwnerResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="getMembers">
+			<wsdl:documentation>
 				Returns ePPNs of all members in the project, caller must be
 				member
 				herself.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						getMembersRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants to query
+						<ul>
+							<li>auth - String, SessionID of user that wants to query
 								for
-								members</li><li>log - String for log information, optional</li><li>project - String, ProjectID, such as "TGPR123"</li></ul></li><li><b>Output Parameters</b>
+								members</li>
+							<li>log - String for log information, optional</li>
+							<li>project - String, ProjectID, such as "TGPR123"</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						usersetResponse, with element
-						<ul><li>username - String holding ePPN of user, can occur
+						<ul>
+							<li>username - String holding ePPN of user, can occur
 								multiple
-								times.</li></ul></li><li><b>Faults</b><ul><li>authenticationFault</li></ul></li></ul>
+								times.</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>authenticationFault</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:getMembersRequest"/>
-      <wsdl:output message="tns:getMembersResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-<!-- #### getUserRole #### //-->
-    <wsdl:operation name="getUserRole">
-      <wsdl:documentation>
+			<wsdl:input message="tns:getMembersRequest" />
+			<wsdl:output message="tns:getMembersResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="getUserRole">
+			<wsdl:documentation>
 				Returns ePPNs plus Array of Roles of all members in the project,
 				caller must be member herself.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						getUserRoleRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants to query
-								for roles</li><li>log - String for log information, optional</li><li>project - String, ProjectID, such as "TGPR123"</li></ul></li><li><b>Output Parameters</b>
+						<ul>
+							<li>auth - String, SessionID of user that wants to query
+								for roles</li>
+							<li>log - String for log information, optional</li>
+							<li>project - String, ProjectID, such as "TGPR123"</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						getUserRoleResponse. It contains 0...n userRoles, which themselves
 						have elements
-						<ul><li>username - String holding ePPN of user </li><li>roles - array of Strings with roles the user has (e.g.
-								"Bearbeiter").</li></ul></li><li><b>Faults</b><ul><li>authenticationFault</li><li>unknownProjectFault</li></ul></li></ul>
+						<ul>
+							<li>username - String holding ePPN of user </li>
+							<li>roles - array of Strings with roles the user has (e.g.
+								"Bearbeiter").</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>authenticationFault</li>
+							<li>unknownProjectFault</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:getUserRoleRequest"/>
-      <wsdl:output message="tns:getUserRoleResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-      <wsdl:fault name="unknownProjectFault" message="tns:unknownProjectFault"/>
-    </wsdl:operation>
-<!-- #### getFriends #### //-->
-    <wsdl:operation name="getFriends">
-      <wsdl:documentation>
+			<wsdl:input message="tns:getUserRoleRequest" />
+			<wsdl:output message="tns:getUserRoleResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+			<wsdl:fault name="unknownProjectFault" message="tns:unknownProjectFault" />
+		</wsdl:operation>
+		<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>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						getFriendsRequest, with element
-						<ul><li>auth - String, SessionID of user that wants to query
+						<ul>
+							<li>auth - String, SessionID of user that wants to query
 								for
-								friends</li></ul></li><li><b>Output Parameters</b>
+								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>
+						<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>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:getFriendsRequest"/>
-      <wsdl:output message="tns:getFriendsResponse"/>
-    </wsdl:operation>
-<!-- #### getRights #### //-->
-    <wsdl:operation name="getRights">
-      <wsdl:documentation>
+			<wsdl:input message="tns:getFriendsRequest" />
+			<wsdl:output message="tns:getFriendsResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="getRights">
+			<wsdl:documentation>
 				Returns permissions for given resource or projectID. Can be
 				used by
 				project leaders to check permissions for another
 				project member.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						getRightsRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants to query
+						<ul>
+							<li>auth - String, SessionID of user that wants to query
 								the
-								rights</li><li>log - String for log information, optional</li><li>resource - String, URI of TgObject or ProjectID</li><li>username - ePPN of user whose rights shall be
+								rights</li>
+							<li>log - String for log information, optional</li>
+							<li>resource - String, URI of TgObject or ProjectID</li>
+							<li>username - ePPN of user whose rights shall be
 								queried. Leave
 								empty to get rights of user authenticated
-								by the auth parameter.</li></ul></li><li><b>Output Parameters</b>
+								by the auth parameter.</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						operationsetResponse, with element
-						<ul><li>operation - String with a right, such as "read" or
-								"delegate". Can occur multiple times.</li></ul></li><li><b>Faults</b><ul><li>authenticationFault</li></ul></li></ul>
+						<ul>
+							<li>operation - String with a right, such as "read" or
+								"delegate". Can occur multiple times.</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>authenticationFault</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:getRightsRequest"/>
-      <wsdl:output message="tns:getRightsResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-<!-- #### publish #### //-->
-    <wsdl:operation name="publish">
-      <wsdl:documentation>
-				Sets the isPublic flag of a TextGridObject identified by its
-				URI to
-				TRUE. The resource will then be world-readable. This is
-				irreversible
-				(only by manual modification of the database) and
-				needs the publish
-				right, which by default is granted to
-				project leaders.
-				<ul><li><b>Input Parameters</b>
-						publishRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants publish</li><li>log - String for log information, optional</li><li>resource - String, URI of TgObject</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><li>authenticationFault</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:publishRequest"/>
-      <wsdl:output message="tns:publishResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-<!-- #### isPublic #### //-->
-    <wsdl:operation name="isPublic">
-      <wsdl:documentation>
+			<wsdl:input message="tns:getRightsRequest" />
+			<wsdl:output message="tns:getRightsResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="isPublic">
+			<wsdl:documentation>
 				Returns status of isPublic flag for a TextGridObject.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						isPublicRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants to
+						<ul>
+							<li>auth - String, SessionID of user that wants to
 								query. Can be
-								empty.</li><li>log - String for log information, optional</li><li>resource - String, URI of TgObject</li></ul></li><li><b>Output Parameters</b>
+								empty.</li>
+							<li>log - String for log information, optional</li>
+							<li>resource - String, URI of TgObject</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						booleanResponse, with element
-						<ul><li>result - boolean, true if resource has the isPublic
+						<ul>
+							<li>result - boolean, true if resource has the isPublic
 								flag set
 								to TRUE, i.e. has been published, false
-								otherwise</li></ul></li></ul>
+								otherwise</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:isPublicRequest"/>
-      <wsdl:output message="tns:isPublicResponse"/>
-    </wsdl:operation>
-<!-- #### getNumberOfResources #### //-->
-    <wsdl:operation name="getNumberOfResources">
-      <wsdl:documentation>
+			<wsdl:input message="tns:isPublicRequest" />
+			<wsdl:output message="tns:isPublicResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="getNumberOfResources">
+			<wsdl:documentation>
 				Returns the total number of resources and the number of public ones
 				in this project. Can be called by anyone.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						getNumberOfResourcesRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants to
+						<ul>
+							<li>auth - String, SessionID of user that wants to
 								query. Can be
-								empty.</li><li>log - String for log information, optional</li><li>project - String</li></ul></li><li><b>Output Parameters</b>
+								empty.</li>
+							<li>log - String for log information, optional</li>
+							<li>project - String</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						getNumberOfResourcesResponse, with elements
-						<ul><li>allresources - integer</li><li>publicresources - integer</li></ul></li></ul>
+						<ul>
+							<li>allresources - integer</li>
+							<li>publicresources - integer</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:getNumberOfResourcesRequest" />
+			<wsdl:output message="tns:getNumberOfResourcesResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="getProjectDescription">
+			<wsdl:documentation>
+				Returns name and description of project identified by ID. See
+				also
+				getAllProjects().
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						getProjectDescriptionRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of user. Can be empty.</li>
+							<li>log - String for log information, optional</li>
+							<li>project - String, ProjectID</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
+						getProjectDescriptionResponse, with element
+						<ul>
+							<li>
+								project - projectInfo
+								<br />
+								The type projectInfo consists of the following elements:
+								<ul>
+									<li>id - String, project ID, such as "TGPR123"</li>
+									<li>description - String, project description</li>
+									<li>name - String, project name</li>
+									<li>file - String with URI of project file for
+										project-specific
+										settings. </li>
+								</ul>
+							</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:getProjectDescriptionRequest" />
+			<wsdl:output message="tns:getProjectDescriptionResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="getSid">
+			<wsdl:documentation>
+				Returns some random SessionID suitable for RBAC.
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						empty
+					</li>
+					<li>
+						<b>Output Parameters</b>
+						getSidResponse, with element
+						<ul>
+							<li>sid - String, approximately 60-70 bytes long, consisting of
+								random characters taken from a-zA-Z0-9.</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:getSidRequest" />
+			<wsdl:output message="tns:getSidResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="getSupportedUserAttributes">
+			<wsdl:documentation>TODO</wsdl:documentation>
+			<wsdl:input message="tns:getSupportedUserAttributesRequest" />
+			<wsdl:output message="tns:getSupportedUserAttributesResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="getMyUserAttributes">
+			<wsdl:documentation>TODO</wsdl:documentation>
+			<wsdl:input message="tns:getMyUserAttributesRequest" />
+			<wsdl:output message="tns:getMyUserAttributesResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+
+		<!-- ############################################################### -->
+		<!-- ## Port-Type-Definitionen -->
+		<!-- ############################################################### -->
+
+		<wsdl:operation name="authenticate">
+			<wsdl:documentation>
+				Internal function used by applications to identify themselves (via
+				shared secret between RBAC and WebAuth).
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						authenticateRequest, with elements
+						<ul>
+							<li>username - String with name of application</li>
+							<li>password - String with password for this application</li>
+							<li>log - String for log information, optional</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
+						authenticateResponse, with element
+						<ul>
+							<li>auth - String, SessionID of authenticated application
+								(See
+								getSid() for format.)</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>authenticationFault</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:authenticateRequest" />
+			<wsdl:output message="tns:authenticateResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="createProject">
+			<wsdl:documentation>
+				Creates a project. Projects are roles with various sub-roles,
+				i.e
+				Leader, Administrator... Creates default roles with
+				default
+				permissions:
+				<table>
+					<tr>
+						<td>Role</td>
+						<td>Right on Project</td>
+					</tr>
+					<tr>
+						<td>Projektleiter (project leader)</td>
+						<td>delegate</td>
+					</tr>
+					<tr>
+						<td>Administrator</td>
+						<td>-none-</td>
+					</tr>
+					<tr>
+						<td>Bearbeiter (editor)</td>
+						<td>create</td>
+					</tr>
+					<tr>
+						<td>Beobachter (observer)</td>
+						<td>-none-</td>
+					</tr>
+				</table>
+				These permissions can be adapted afterwards. For the rights
+				on
+				resources, see registerResource().
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						createProjectRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of future project
+								leader</li>
+							<li>log - String for log information, optional</li>
+							<li>name - String with name of project</li>
+							<li>description - String with description of
+								project</li>
+							<li>
+								file - String with URI of project file
+								-
+								<em>currently unused, omit or leave empty and use
+									setProjectFile( ) once the file resource has been
+									created</em>
+							</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
+						createProjectResponse, with element
+						<ul>
+							<li>projectId - String with the newly assigned project
+								ID, such as
+								"TGPR123"</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:createProjectRequest" name="createProjectInput" />
+			<wsdl:output message="tns:createProjectResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="setProjectFile">
+			<wsdl:documentation>
+				Registers the URI of a TextGridObject to be the project file
+				for
+				project-specific settings. The URI must be registered at
+				RBAC
+				beforehand.
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						setProjectFileRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of Project Leader</li>
+							<li>log - String for log information, optional</li>
+							<li>project - String with projectID</li>
+							<li>file - String with URI of project file</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>
+							<li>authenticationFault</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:setProjectFileRequest" />
+			<wsdl:output message="tns:setProjectFileResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<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:getNumberOfResourcesRequest"/>
-      <wsdl:output message="tns:getNumberOfResourcesResponse"/>
-    </wsdl:operation>
-<!-- #### deactivateProject #### //-->
-    <wsdl:operation name="deactivateProject">
-      <wsdl:documentation>
+			<wsdl:input message="tns:setNameRequest" />
+			<wsdl:output message="tns:setNameResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="addMember">
+			<wsdl:documentation>
+				Project leaders can assign users into specific roles. This
+				still does
+				not effect
+				<em>activation</em>
+				of the role in the
+				user(s)' session(s).
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						addMemberRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of project leader</li>
+							<li>log - String for log information, optional</li>
+							<li>username - String with ePPN of user to be added</li>
+							<li>role - String with full-qualified role name of the
+								role the
+								user is to be signed into. The full-qualified
+								role name has the
+								form
+								"Administrator,TGPR3,Projekt-Teilnehmer"</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>
+							<li>rbacFault</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:addMemberRequest" />
+			<wsdl:output message="tns:addMemberResponse" />
+			<wsdl:fault name="rbacFault" message="tns:rbacFault" />
+		</wsdl:operation>
+		<wsdl:operation name="deleteMember">
+			<wsdl:documentation>
+				Project leaders can delete a role from a user. This
+				still does not
+				effect
+				<em>(de-)activation</em>
+				of the role in the
+				user(s)' session(s).
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						deleteMemberRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of project leader</li>
+							<li>log - String for log information, optional</li>
+							<li>username - String with ePPN of user to be signed off</li>
+							<li>role - String with full-qualified role name of the
+								role the
+								user is to be signed off. The full-qualified
+								role name has the
+								form
+								"Administrator,TGPR3,Projekt-Teilnehmer"</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>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:deleteMemberRequest" />
+			<wsdl:output message="tns:deleteMemberResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="tgAddActiveRole">
+			<wsdl:documentation>
+				Activates a role for a session. NB, currently the login
+				process
+				activates
+				<em>all</em>
+				available roles of the user.
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						tgAddActiveRoleRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of user</li>
+							<li>log - String for log information, optional</li>
+							<li>role - String with full-qualified role name of the
+								role the
+								user wants to activate. The full-qualified role
+								name has the form
+								"Administrator,TGPR3,Projekt-Teilnehmer".</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>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:tgAddActiveRoleRequest" />
+			<wsdl:output message="tns:tgAddActiveRoleResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="tgDropActiveRole">
+			<wsdl:documentation>
+				De-activates a role for a session.
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						tgDropActiveRoleRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of user</li>
+							<li>log - String for log information, optional</li>
+							<li>role - String with full-qualified role name of the
+								role the
+								user wants to de-activate. The full-qualified role
+								name has the
+								form
+								"Administrator,TGPR3,Projekt-Teilnehmer".</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>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:tgDropActiveRoleRequest" />
+			<wsdl:output message="tns:tgDropActiveRoleResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="tgGrantPermission">
+			<wsdl:documentation>
+				Enables given operation for given role on given
+				resource. Resource
+				may be an URI of a TgObject, or
+				a projectID. Users need delegate
+				right on resource or project
+				(i.e. be project leader).
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						tgGrantPermissionRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of user</li>
+							<li>log - String for log information, optional</li>
+							<li>role - String with full-qualified role name of the
+								role the
+								user wants to grant a right. The full-qualified
+								role name has the
+								form
+								"Administrator,TGPR3,Projekt-Teilnehmer".</li>
+							<li>operation - String, operation to be granted, such as
+								"read",
+								"write".</li>
+							<li>resource - String, URI of TgObject, or projectID</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>
+							<li>authenticationFault</li>
+							<li>rbacFault</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:tgGrantPermissionRequest" />
+			<wsdl:output message="tns:tgGrantPermissionResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="tgRevokePermission">
+			<wsdl:documentation>
+				Disables this permission, see tgGrantPermission for limitations.
+				<ul>
+					<li>
+						<b>Input Parameters</b>
+						tgRevokePermissionRequest, with elements
+						<ul>
+							<li>auth - String, SessionID of user</li>
+							<li>log - String for log information, optional</li>
+							<li>role - String with full-qualified role name of the
+								role the
+								user wants to revoke a right. The full-qualified
+								role name has
+								the form
+								"Administrator,TGPR3,Projekt-Teilnehmer".</li>
+							<li>operation - String, operation to be granted, such as
+								"read",
+								"write".</li>
+							<li>resource - String, URI of TgObject, or projectID</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>
+							<li>authenticationFault</li>
+						</ul>
+					</li>
+				</ul>
+			</wsdl:documentation>
+			<wsdl:input message="tns:tgRevokePermissionRequest" />
+			<wsdl:output message="tns:tgRevokePermissionResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="deactivateProject">
+			<wsdl:documentation>
 				Hides a project. User must be project leader of the project to
 				be
 				deactivated. Hidden projects cannot be modified or read
@@ -1854,721 +2184,558 @@
 				that the project can be re-activated by manual
 				modification of the
 				database.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						deactivateProjectRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants publish</li><li>log - String for log information, optional</li><li>project - String, ProjectID</li></ul></li><li><b>Output Parameters</b>
+						<ul>
+							<li>auth - String, SessionID of user that wants publish</li>
+							<li>log - String for log information, optional</li>
+							<li>project - String, ProjectID</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						booleanResponse, with element
-						<ul><li>result - boolean, true if operation was successful,
+						<ul>
+							<li>result - boolean, true if operation was successful,
 								false
-								otherwise</li></ul></li><li><b>Faults</b><ul><li>authenticationFault</li></ul></li></ul>
+								otherwise</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>authenticationFault</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:deactivateProjectRequest"/>
-      <wsdl:output message="tns:deactivateProjectResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-<!-- #### reactivateProject #### //-->
-    <wsdl:operation name="reactivateProject">
-      <wsdl:documentation>
+			<wsdl:input message="tns:deactivateProjectRequest" />
+			<wsdl:output message="tns:deactivateProjectResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+		<wsdl:operation name="reactivateProject">
+			<wsdl:documentation>
 				Reactivate a hidden and deactivated project. The user must be the
 				former project leader of the project to be able to reactivate it.
 				All rights will be restored.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						reactivateProjectRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants publish</li><li>log - String for log information, optional</li><li>project - String, ProjectID</li></ul></li><li><b>Output Parameters</b>
+						<ul>
+							<li>auth - String, SessionID of user that wants publish</li>
+							<li>log - String for log information, optional</li>
+							<li>project - String, ProjectID</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						booleanResponse, with element
-						<ul><li>result - boolean, true if operation was successful,
+						<ul>
+							<li>result - boolean, true if operation was successful,
 								false
-								otherwise</li></ul></li><li><b>Faults</b><ul><li>authenticationFault</li></ul></li></ul>
+								otherwise</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>authenticationFault</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:reactivateProjectRequest"/>
-      <wsdl:output message="tns:reactivateProjectResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-      <wsdl:fault name="unknownProjectFault" message="tns:unknownProjectFault"/>
-    </wsdl:operation>
-<!-- #### deleteProject #### //-->
-    <wsdl:operation name="deleteProject">
-      <wsdl:documentation>
+			<wsdl:input message="tns:reactivateProjectRequest" />
+			<wsdl:output message="tns:reactivateProjectResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+			<wsdl:fault name="unknownProjectFault" message="tns:unknownProjectFault" />
+		</wsdl:operation>
+		<wsdl:operation name="deleteProject">
+			<wsdl:documentation>
 				Delete a project. User must be project leader of the project that
 				is
 				deleted. Before a project can be deleted there must not be any
 				resources associated with the project. A deleted project cannot be
 				restored.
-				<ul><li><b>Input Parameters</b>
+				<ul>
+					<li>
+						<b>Input Parameters</b>
 						deleteProjectRequest, with elements
-						<ul><li>auth - String, SessionID of user that wants publish</li><li>log - String for log information, optional</li><li>project - String, ProjectID</li></ul></li><li><b>Output Parameters</b>
+						<ul>
+							<li>auth - String, SessionID of user that wants publish</li>
+							<li>log - String for log information, optional</li>
+							<li>project - String, ProjectID</li>
+						</ul>
+					</li>
+					<li>
+						<b>Output Parameters</b>
 						booleanResponse, with element
-						<ul><li>result - boolean, true if operation was successful,
+						<ul>
+							<li>result - boolean, true if operation was successful,
 								false
-								otherwise</li></ul></li><li><b>Faults</b><ul><li>authenticationFault</li><li>notEmptyFault</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:deleteProjectRequest"/>
-      <wsdl:output message="tns:deleteProjectResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-      <wsdl:fault name="notEmptyFault" message="tns:notEmptyFault"/>
-    </wsdl:operation>
-<!-- #### getProjectDescription #### //-->
-    <wsdl:operation name="getProjectDescription">
-      <wsdl:documentation>
-				Returns name and description of project identified by ID. See
-				also
-				getAllProjects().
-				<ul><li><b>Input Parameters</b>
-						getProjectDescriptionRequest, with elements
-						<ul><li>auth - String, SessionID of user. Can be empty.</li><li>log - String for log information, optional</li><li>project - String, ProjectID</li></ul></li><li><b>Output Parameters</b>
-						getProjectDescriptionResponse, with element
-						<ul><li>
-								project - projectInfo
-								<br/>
-								The type projectInfo consists of the following elements:
-								<ul><li>id - String, project ID, such as "TGPR123"</li><li>description - String, project description</li><li>name - String, project name</li><li>file - String with URI of project file for
-										project-specific
-										settings. </li></ul>
-							</li></ul></li></ul>
-			</wsdl:documentation>
-      <wsdl:input message="tns:getProjectDescriptionRequest"/>
-      <wsdl:output message="tns:getProjectDescriptionResponse"/>
-    </wsdl:operation>
-
-<!-- #### getSLC #### //-->
-    <wsdl:operation name="getSLC">
-      <wsdl:documentation>
-	CRUD may use this to retrieve a Short-Lived Certificate Key pair in PEM format for the user
-        <ul><li><b>Input Parameters</b> getSLCRequest, with elements             
-            <ul><li>auth - String, SessionID of user</li><li>log - String for log information, optional</li><li>secret - String known by TG-crud to authenticate itself</li></ul></li><li><b>Output Parameters</b> getSLCResponse, with element
-          <ul><li>slc - Base64binary String with the key pair. Contains only printable ASCII Character.</li></ul></li></ul>
-      </wsdl:documentation>
-      <wsdl:input message="tns:getSLCRequest"/>
-      <wsdl:output message="tns:getSLCResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-      <wsdl:fault name="unknownResourceFault" message="tns:unknownResourceFault"/>
-    </wsdl:operation>
-<!-- #### getCSR #### //-->
-    <wsdl:operation name="getCSR">
-      <wsdl:documentation>
-	The Portal may use this to retrieve a Dummy Certificate Signing Request (CSR)
-in PEM format, for which the RBAC's accompanying daemon will hold the real key.
-        <ul><li><b>Input Parameters</b> getCSRRequest, with elements             
-            <ul><li>auth - String, SessionID of user</li><li>log - String for log information, optional</li></ul></li><li><b>Output Parameters</b> getCSRResponse, with element
-          <ul><li>csr - Base64binary String with the CSR. Contains only printable ASCII Character.</li></ul></li></ul>
-      </wsdl:documentation>
-      <wsdl:input message="tns:getCSRRequest"/>
-      <wsdl:output message="tns:getCSRResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-      <wsdl:fault name="unknownResourceFault" message="tns:unknownResourceFault"/>
-    </wsdl:operation>
-<!-- #### putCRT #### //-->
-    <wsdl:operation name="putCRT">
-      <wsdl:documentation>
-	Puts the signed Certificate into the RBAC's accompanying daemon that holds the key.
-        <ul><li><b>Input Parameters</b> putCRTRequest, with elements             
-            <ul><li>auth - String, SessionID of user</li><li>log - String for log information, optional</li><li>crt - the Certificate as a String</li></ul></li><li><b>Output Parameters</b> putCRTResponse, with element
-          <ul><li>success, Boolean.</li></ul></li></ul>
-      </wsdl:documentation>
-      <wsdl:input message="tns:putCRTRequest"/>
-      <wsdl:output message="tns:putCRTResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-      <wsdl:fault name="unknownResourceFault" message="tns:unknownResourceFault"/>
-    </wsdl:operation>
-
-<!-- #### getSid #### //-->
-    <wsdl:operation name="getSid">
-      <wsdl:documentation>
-				Returns some random SessionID suitable for RBAC.
-				<ul><li><b>Input Parameters</b>
-						empty
-					</li><li><b>Output Parameters</b>
-						getSidResponse, with element
-						<ul><li>sid - String, approximately 60-70 bytes long, consisting of
-								random characters taken from a-zA-Z0-9.</li></ul></li></ul>
+								otherwise</li>
+						</ul>
+					</li>
+					<li>
+						<b>Faults</b>
+						<ul>
+							<li>authenticationFault</li>
+							<li>notEmptyFault</li>
+						</ul>
+					</li>
+				</ul>
 			</wsdl:documentation>
-      <wsdl:input message="tns:getSidRequest"/>
-      <wsdl:output message="tns:getSidResponse"/>
-    </wsdl:operation>
-<!-- #### getSupportedUserAttributes #### //-->
-    <wsdl:operation name="getSupportedUserAttributes">
-      <wsdl:documentation>TODO</wsdl:documentation>
-      <wsdl:input message="tns:getSupportedUserAttributesRequest"/>
-      <wsdl:output message="tns:getSupportedUserAttributesResponse"/>
-    </wsdl:operation>
-<!-- #### getMyUserAttributes #### //-->
-    <wsdl:operation name="getMyUserAttributes">
-      <wsdl:documentation>TODO</wsdl:documentation>
-      <wsdl:input message="tns:getMyUserAttributesRequest"/>
-      <wsdl:output message="tns:getMyUserAttributesResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-<!-- #### setMyUserAttributes #### //-->
-    <wsdl:operation name="setMyUserAttributes">
-      <wsdl:documentation>TODO</wsdl:documentation>
-      <wsdl:input message="tns:setMyUserAttributesRequest"/>
-      <wsdl:output message="tns:setMyUserAttributesResponse"/>
-      <wsdl:fault name="authenticationFault" message="tns:authenticationFault"/>
-    </wsdl:operation>
-  </wsdl:portType>
-<!--
-  ###########
-  # Binding #
-  ###########
-  //-->
-  <wsdl:binding name="binding_tgextra" type="tns:port_tgextra">
-<!-- #### authenticate #### //-->
-    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
-    <wsdl:operation name="authenticate">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/authenticate"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### userExists #### //-->
-    <wsdl:operation name="userExists">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/userExists"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### createProject #### //-->
-    <wsdl:operation name="createProject">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/createProject"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### setProjectFile #### //-->
-    <wsdl:operation name="setProjectFile">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/setProjectFile"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </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"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### addMember #### //-->
-    <wsdl:operation name="addMember">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/addMember"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="rbacFault">
-        <soap:fault use="literal" name="rbacFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### deleteMember #### //-->
-    <wsdl:operation name="deleteMember">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/deleteMember"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### tgAddActiveRole #### //-->
-    <wsdl:operation name="tgAddActiveRole">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgAddActiveRole"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### tgDropActiveRole #### //-->
-    <wsdl:operation name="tgDropActiveRole">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgDropActiveRole"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### tgCheckAccess #### //-->
-    <wsdl:operation name="tgCheckAccess">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgCheckAccess"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="unknownResourceFault">
-        <soap:fault use="literal" name="unknownResourceFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### tgCrudCheckAccess #### //-->
-    <wsdl:operation name="tgCrudCheckAccess">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgCrudCheckAccess"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="unknownResourceFault">
-        <soap:fault use="literal" name="unknownResourceFault"/>
-      </wsdl:fault>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### tgAssignedRoles #### //-->
-    <wsdl:operation name="tgAssignedRoles">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgAssignedRoles"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### tgAssignedProjects #### //-->
-    <wsdl:operation name="tgAssignedProjects">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgAssignedProjects"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### getAllProjects #### //-->
-    <wsdl:operation name="getAllProjects">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getAllProjects"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### getLeader #### //-->
-    <wsdl:operation name="getLeader">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getLeader"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### registerResource #### //-->
-    <wsdl:operation name="registerResource">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/registerResource"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### unregisterResource #### //-->
-    <wsdl:operation name="unregisterResource">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/unregisterResource"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="unknownResourceFault">
-        <soap:fault use="literal" name="unknownResourceFault"/>
-      </wsdl:fault>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### filterBySid #### //-->
-    <wsdl:operation name="filterBySid">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/filterBySid"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### tgGrantPermission #### //-->
-    <wsdl:operation name="tgGrantPermission">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgGrantPermission"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### tgRevokePermission #### //-->
-    <wsdl:operation name="tgRevokePermission">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgRevokePermission"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### getOwner #### //-->
-    <wsdl:operation name="getOwner">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getOwner"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
+			<wsdl:input message="tns:deleteProjectRequest" />
+			<wsdl:output message="tns:deleteProjectResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+			<wsdl:fault name="notEmptyFault" message="tns:notEmptyFault" />
+		</wsdl:operation>
+		<wsdl:operation name="setMyUserAttributes">
+			<wsdl:documentation>TODO</wsdl:documentation>
+			<wsdl:input message="tns:setMyUserAttributesRequest" />
+			<wsdl:output message="tns:setMyUserAttributesResponse" />
+			<wsdl:fault name="authenticationFault" message="tns:authenticationFault" />
+		</wsdl:operation>
+	</wsdl:portType>
 
-<!-- #### getEPPN #### //-->
-    <wsdl:operation name="getEPPN">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getEPPN"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
+	<!-- ################################################################### -->
+	<!-- ## Binding -->
+	<!-- ################################################################### -->
 
-<!-- #### getUUID #### //-->
-    <wsdl:operation name="getUUID">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getUUID"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault name="authenticationFault" use="literal"/>
-      </wsdl:fault>
-    </wsdl:operation>
+	<wsdl:binding name="binding_tgextra" type="tns:port_tgextra">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<wsdl:operation name="userExists">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/userExists" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<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>
+		<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>
+		<wsdl:operation name="getObjects">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/getObjects" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="tgCheckAccess">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgCheckAccess" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="unknownResourceFault">
+				<soap:fault use="literal" name="unknownResourceFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="tgAssignedRoles">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgAssignedRoles" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="tgAssignedProjects">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgAssignedProjects" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="getAllProjects">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/getAllProjects" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="getLeader">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/getLeader" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="filterBySid">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/filterBySid" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="getOwner">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/getOwner" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="getMembers">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/getMembers" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="getUserRole">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/getUserRole" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+			<wsdl:fault name="unknownProjectFault">
+				<soap:fault use="literal" name="unknownProjectFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<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>
+		<wsdl:operation name="getRights">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/getRights" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="isPublic">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/isPublic" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="getNumberOfResources">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/getNumberOfResources" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="getProjectDescription">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/getProjectDescription" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="getDeactivatedProjects">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/getDeactivatedProjects" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="getSupportedUserAttributes">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/getSupportedUserAttributes" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="getMyUserAttributes">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/getMyUserAttributes" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="getSid">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/getSid" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="authenticate">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/authenticate" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="createProject">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/createProject" />
+			<wsdl:input name="createProjectInput">
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="setProjectFile">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/setProjectFile" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<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>
+		<wsdl:operation name="addMember">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/addMember" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="rbacFault">
+				<soap:fault use="literal" name="rbacFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="deleteMember">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/deleteMember" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="tgAddActiveRole">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgAddActiveRole" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="tgDropActiveRole">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgDropActiveRole" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="tgGrantPermission">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgGrantPermission" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="tgRevokePermission">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/tgRevokePermission" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="deactivateProject">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/deactivateProject" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="reactivateProject">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/reactivateProject" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+			<wsdl:fault name="unknownProjectFault">
+				<soap:fault use="literal" name="unknownProjectFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="deleteProject">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/deleteProject" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+			<wsdl:fault name="notEmptyFault">
+				<soap:fault use="literal" name="notEmptyFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="setMyUserAttributes">
+			<soap:operation
+				soapAction="http://textgrid.info/namespaces/middleware/tgauth/setMyUserAttributes" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="authenticationFault">
+				<soap:fault use="literal" name="authenticationFault" />
+			</wsdl:fault>
+		</wsdl:operation>
+	</wsdl:binding>
 
-<!-- #### getMembers #### //-->
-    <wsdl:operation name="getMembers">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getMembers"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### getUserRole #### //-->
-    <wsdl:operation name="getUserRole">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getUserRole"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-      <wsdl:fault name="unknownProjectFault">
-        <soap:fault use="literal" name="unknownProjectFault"/>
-      </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"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### publish #### //-->
-    <wsdl:operation name="publish">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/publish"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### isPublic #### //-->
-    <wsdl:operation name="isPublic">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/isPublic"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### getNumberOfResources #### //-->
-    <wsdl:operation name="getNumberOfResources">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getNumberOfResources"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### getProjectDescription #### //-->
-    <wsdl:operation name="getProjectDescription">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getProjectDescription"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### deactivateProject #### //-->
-    <wsdl:operation name="deactivateProject">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/deactivateProject"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### getDeactivatedProjects #### //-->
-    <wsdl:operation name="getDeactivatedProjects">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getDeactivatedProjects"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### reactivateProject #### //-->
-    <wsdl:operation name="reactivateProject">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/reactivateProject"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-      <wsdl:fault name="unknownProjectFault">
-        <soap:fault use="literal" name="unknownProjectFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### deleteProject #### //-->
-    <wsdl:operation name="deleteProject">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/deleteProject"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault use="literal" name="authenticationFault"/>
-      </wsdl:fault>
-      <wsdl:fault name="notEmptyFault">
-        <soap:fault use="literal" name="notEmptyFault"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### getSupportedUserAttributes #### //-->
-    <wsdl:operation name="getSupportedUserAttributes">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getSupportedUserAttributes"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### getMyUserAttributes #### //-->
-    <wsdl:operation name="getMyUserAttributes">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getMyUserAttributes"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### setMyUserAttributes #### //-->
-    <wsdl:operation name="setMyUserAttributes">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/setMyUserAttributes"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### getSid #### //-->
-    <wsdl:operation name="getSid">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getSid"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-<!-- #### getSLC #### //-->
-    <wsdl:operation name="getSLC">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getSLC"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault name="authenticationFault" use="literal"/>
-      </wsdl:fault>
-      <wsdl:fault name="unknownResourceFault">
-        <soap:fault name="unknownResourceFault" use="literal"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### getCSR #### //-->
-    <wsdl:operation name="getCSR">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getCSR"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault name="authenticationFault" use="literal"/>
-      </wsdl:fault>
-      <wsdl:fault name="unknownResourceFault">
-        <soap:fault name="unknownResourceFault" use="literal"/>
-      </wsdl:fault>
-    </wsdl:operation>
-<!-- #### putCRT #### //-->
-    <wsdl:operation name="putCRT">
-      <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/putCRT"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-      <wsdl:fault name="authenticationFault">
-        <soap:fault name="authenticationFault" use="literal"/>
-      </wsdl:fault>
-      <wsdl:fault name="unknownResourceFault">
-        <soap:fault name="unknownResourceFault" use="literal"/>
-      </wsdl:fault>
-    </wsdl:operation>
+	<!-- ################################################################### -->
+	<!-- ## Service-Definition -->
+	<!-- ################################################################### -->
 
-  </wsdl:binding>
-<!--
-		##################### # Servicedefinition # ##################### //
-	-->
-  <wsdl:service name="tgextra">
-    <wsdl:port binding="tns:binding_tgextra" name="tgextra">
-      <soap:address location="https://textgridlab.org/dev/tgauth/tgextra.php"/>
-    </wsdl:port>
-  </wsdl:service>
+	<wsdl:service name="tgextra">
+		<wsdl:port binding="tns:binding_tgextra" name="tgextra">
+			<soap:address location="https://textgridlab.org/dev/tgauth/tgextra.php" />
+		</wsdl:port>
+	</wsdl:service>
 </wsdl:definitions>