diff --git a/lib/elearning/studip_referrer.php b/lib/elearning/studip_referrer_7x.php
similarity index 96%
rename from lib/elearning/studip_referrer.php
rename to lib/elearning/studip_referrer_7x.php
index 7a0257cc0464680857441b8af4933e51bbe357cd..e3675692cbf8c65be022b11006785ccad021ac40 100644
--- a/lib/elearning/studip_referrer.php
+++ b/lib/elearning/studip_referrer_7x.php
@@ -9,14 +9,14 @@
 *
 */
 
-/* ILIAS Version 4.4.x */
+/* ILIAS Version 7.x */
 
 if(file_exists("./ilias.ini.php")){
     require_once("./Services/Init/classes/class.ilIniFile.php");
     $ilIliasIniFile = new ilIniFile("./ilias.ini.php");
     $ilIliasIniFile->read();
     $serverSettings = $ilIliasIniFile->readGroup("server");
-    if ($serverSettings["studip"] != 1)
+    if (isset($serverSettings["studip"]) && $serverSettings["studip"] != 1)
     {
         echo 'Option "studip" in ilias.ini.php is not enabled. You need to add studip = "1" to the server section.';
         exit();
@@ -40,7 +40,7 @@ if(file_exists("./ilias.ini.php")){
 
     require_once "./include/inc.header.php";
 
-    $base_url= "ilias.php?baseClass=ilPersonalDesktopGUI";
+    $base_url= "ilias.php?baseClass=ilDashboardGUI";
 
 
     // redirect to specified page
@@ -121,4 +121,4 @@ if(file_exists("./ilias.ini.php")){
         exit();
     }
 }
-?>
\ No newline at end of file
+
diff --git a/lib/elearning/studip_referrer_8x.php b/lib/elearning/studip_referrer_8x.php
new file mode 100644
index 0000000000000000000000000000000000000000..f7552afb46fabcd358d99f98da70c45d85e1c7ba
--- /dev/null
+++ b/lib/elearning/studip_referrer_8x.php
@@ -0,0 +1,126 @@
+<?php
+/* Copyright (c) 1998-2014 ILIAS open source, Extended GPL, see docs/LICENSE */
+
+/**
+* redirect script for studip-users
+*
+* @author Arne Schroeder <schroeder@data-quest.de>
+* @author Andre Noack <noack@data-quest.de>
+*
+*/
+
+/* ILIAS Version 8.x */
+
+if(file_exists("./ilias.ini.php")){
+    require_once("./Services/Init/classes/class.ilIniFile.php");
+    $ilIliasIniFile = new ilIniFile("./ilias.ini.php");
+    $ilIliasIniFile->read();
+    $serverSettings = $ilIliasIniFile->readGroup("server");
+    if (isset($serverSettings["studip"]) && $serverSettings["studip"] != 1)
+    {
+        echo 'Option "studip" in ilias.ini.php is not enabled. You need to add studip = "1" to the server section.';
+        exit();
+    }
+
+    $cookie_path = dirname($_SERVER['PHP_SELF']);
+    if (substr($cookie_path,-1) != "/") {
+        $cookie_path .= "/";
+    }
+    if (isset($_GET['sess_id']))
+    {
+        setcookie('PHPSESSID',$_GET['sess_id'],0, $cookie_path);
+        $_COOKIE['PHPSESSID'] = $_GET['sess_id'];
+    }
+
+    if (isset($_GET['client_id']))
+    {
+        setcookie('ilClientId',$_GET['client_id'],0, $cookie_path);
+        $_COOKIE['ilClientId'] = $_GET['client_id'];
+    }
+
+    require_once "./include/inc.header.php";
+
+    $base_url= "ilias.php?baseClass=ilDashboardGUI";
+
+
+    // redirect to specified page
+    $redirect = false;
+    switch($_GET['target'])
+    {
+    case 'start':
+        switch($_GET['type'])
+        {
+        case 'lm':
+            $base_url= "ilias.php?baseClass=ilLMPresentationGUI";
+            break;
+        case 'tst':
+            $base_url= "ilias.php?cmd=infoScreen&cmdClass=ilobjtestgui&baseClass=ilRepositoryGUI";
+            break;
+        case 'svy':
+            $base_url= "ilias.php?cmd=infoScreen&cmdClass=ilObjSurveyGUI&baseClass=ilRepositoryGUI";
+            break;
+        case 'exc':
+            $base_url= "ilias.php?cmd=infoScreen&cmdClass=ilExerciseHandlerGUI&baseClass=ilRepositoryGUI";
+            break;
+        case 'sahs':
+            $base_url = "ilias.php?baseClass=ilSAHSPresentationGUI";
+            break;
+        case 'htlm':
+            $base_url = "ilias.php?baseClass=ilHTLMPresentationGUI";
+            break;
+        case 'glo':
+            $base_url = "ilias.php?baseClass=ilGlossaryPresentationGUI";
+            break;
+        case 'cat':
+        case 'crs':
+            $base_url= "ilias.php?cmd=render&cmdClass=ilrepositorygui&baseClass=ilRepositoryGUI";
+            break;
+        case 'webr':
+            $base_url= "ilias.php?cmd=calldirectlink&baseClass=ilLinkResourceHandlerGUI";
+            break;
+        }
+        break;
+    case 'new':
+        $base_url = "ilias.php?baseClass=ilRepositoryGUI&cmd=create&new_type=".preg_replace('/[^a-z]/', '', $_GET['type']);
+        break;
+    case 'edit':
+        switch($_GET['type'])
+        {
+        case 'lm':
+            $base_url = "ilias.php?baseClass=ilLMEditorGUI";
+            break;
+        case 'tst':
+            $base_url = "ilias.php?baseClass=ilObjTestGUI";
+            break;
+        case 'sahs':
+            $base_url = "ilias.php?baseClass=ilSAHSEditGUI";
+            break;
+        case 'htlm':
+            $base_url = "ilias.php?baseClass=ilHTLMEditorGUI";
+            break;
+        case 'glo':
+            $base_url = "ilias.php?baseClass=ilGlossaryEditorGUI";
+            break;
+        case 'svy':
+            $base_url = "ilias.php?baseClass=ilObjSurveyGUI";
+            break;
+        case 'exc':
+            $base_url = "ilias.php?baseClass=ilExerciseHandlerGUI";
+            break;
+        case 'webr':
+            $base_url = "ilias.php?baseClass=ilLinkResourceHandlerGUI";
+            break;
+        }
+        break;
+    }
+    if ($base_url)
+    {
+        $base_url .= "&ref_id=".(int)$_GET['ref_id'];
+        $token_repository = new ilCtrlTokenRepository();
+        $token = $token_repository->getToken();
+        $base_url .= '&' . ilCtrlInterface::PARAM_CSRF_TOKEN . '=' . $token->getToken();
+        header("Location: " . $base_url);
+        exit();
+    }
+}
+
diff --git a/lib/ilias_interface/ConnectedIlias.class.php b/lib/ilias_interface/ConnectedIlias.class.php
index e2d6327508773b339af75c3d5aa65ab01f1a09dc..4303c2e5a430b693e72130e1783f37e4969d1eaa 100644
--- a/lib/ilias_interface/ConnectedIlias.class.php
+++ b/lib/ilias_interface/ConnectedIlias.class.php
@@ -217,13 +217,13 @@ class ConnectedIlias
     public function getConnectionSettingsStatus()
     {
         // check ILIAS version
-        if (($this->ilias_int_version < 30000) || ($this->ilias_int_version > 80000)) {
+        if (($this->ilias_int_version < 30000)) {
             $this->error[] = _('Die ILIAS-Version ist ungültig.');
             return false;
         }
 
         // check if url exists
-        $check = @get_headers($this->ilias_config['url'] . 'login.php');
+        $check = @get_headers($this->ilias_config['url'] . 'webservice/soap/server.php');
         if (strpos($check[0], '200') === false) {
             $this->error[] = sprintf(_('Die URL "%s" ist nicht erreichbar.'), $this->ilias_config['url']);
             return false;
diff --git a/lib/ilias_interface/IliasSoap.class.php b/lib/ilias_interface/IliasSoap.class.php
index 0ba7dd3d719c4255e80a18ea1023353fdf27e53e..32aadd6dd38af22b5b4abbd47a549f275136c49f 100644
--- a/lib/ilias_interface/IliasSoap.class.php
+++ b/lib/ilias_interface/IliasSoap.class.php
@@ -372,10 +372,10 @@ class IliasSoap extends StudipSoapClient
             'sid' => $this->getSID(),
             'types' => $types,
             'key' => $key,
-            'combination' => $combination
+            'combination' => $combination,
+            'user_id' => (int)$user_id
             ];
-         if ($user_id != "")
-            $param["user_id"] = $user_id;
+
         $result = $this->call('searchObjects', $param);
         if ($result)
         {
@@ -398,10 +398,10 @@ class IliasSoap extends StudipSoapClient
     {
         $param = [
             'sid' => $this->getSID(),
-            'reference_id' => $ref
+            'reference_id' => $ref,
+            'user_id' => (int)$user_id
             ];
-         if ($user_id != "")
-            $param["user_id"] = $user_id;
+
         $result = $this->call('getObjectByReference', $param);
         if ($result != false)
         {
@@ -425,7 +425,8 @@ class IliasSoap extends StudipSoapClient
     {
         $param = [
             'sid'   => $this->getSID(),
-            'title' => $key
+            'title' => $key,
+            'user_id' => 0
         ];
         $result = $this->call('getObjectsByTitle', $param);
         if ($result != false)
@@ -459,9 +460,11 @@ class IliasSoap extends StudipSoapClient
     {
         $param = [
             'sid'   => $this->getSID(),
-            'title' => $key
+            'title' => $key,
+            'user_id' => 0
         ];
         $result = $this->call('getObjectsByTitle', $param);
+
         if ($result != false)
         {
             $objects = $this->parseIliasObject($result);
@@ -501,7 +504,7 @@ class IliasSoap extends StudipSoapClient
 
         $xml = "<!DOCTYPE Objects SYSTEM \"http://www.ilias.uni-koeln.de/download/dtd/ilias_object_0_1.dtd\">
 <Objects>
-  <Object type=\"$type\">
+  <Object type=\"$type\" obj_id=\"\" >
     <Title>
     $title
     </Title>
@@ -594,11 +597,10 @@ class IliasSoap extends StudipSoapClient
         $param = [
             'sid' => $this->getSID(),
             'ref_id' => $ref_id,
-            'types' => $types
+            'types' => $types,
+            'user_id' => (int)$user_id
             ];
-        if ($user_id != "") {
-            $param["user_id"] = $user_id;
-        }
+
         $result = $this->call('getTreeChilds', $param);
         $tree_childs = [];
         if ($result != false) {
@@ -897,17 +899,47 @@ class IliasSoap extends StudipSoapClient
     *
     * gets user-data for given user-id
     * @access public
-    * @param string user_id user-id
+    * @param string $user_id user-id
     * @return array user-data
     */
     function getUser($user_id)
     {
-        $param = [
-            'sid' => $this->getSID(),
-            'user_id'         => $user_id,
+        if ($this->ilias_version < 80000) {
+            $param = [
+                'sid'     => $this->getSID(),
+                'user_id' => $user_id
             ];
-        $result = $this->call('getUser', $param); // returns user data array
-        return $result;
+            $result = $this->call('getUser', $param); // returns user data array
+            return $result;
+        } else {
+            $param = [
+                'sid'          => $this->getSID(),
+                'user_ids'     => [$user_id],
+                'attach_roles' => 0,
+            ];
+            $result = $this->call('getUserXML', $param); // returns user xml data
+            if ($result) {
+                $s = simplexml_load_string($result);
+                $user_array = [];
+
+                foreach ($s->User as $user) {
+                    $id_parts = explode('usr_', $user->attributes()->Id);
+                    if ($id_parts[1] == $user_id) {
+                        $user_array['usr_id'] = $user_id;
+                        $user_array['user_language'] = (string)$user->attributes()->Language;
+                        $user_array['login'] = (string)$user->Login;
+                        $user_array['firstname'] = (string)$user->Firstname;
+                        $user_array['lastname'] = (string)$user->Lastname;
+                        $user_array['title'] = (string)$user->Title;
+                        $user_array['email'] = (string)$user->Email;
+                        $user_array['active'] = (string)$user->Active;
+                        $user_array['authmode'] = (string)$user->AuthMode->attributes()->type;
+                        return $user_array;
+                    }
+                }
+            }
+            return false;
+        }
     }
 
     /**
@@ -1227,17 +1259,45 @@ class IliasSoap extends StudipSoapClient
     *
     * deletes user-account
     * @access public
-    * @param string user_id user-id
+    * @param string $user_id user-id
     * @return string result
     */
     function deleteUser($user_id)
     {
         $this->clearCache();
-        $param = [
-            'sid' => $this->getSID(),
-            'user_id'         => $user_id
+        if ($this->ilias_version < 80000) {
+            $param = [
+                'sid'     => $this->getSID(),
+                'user_id' => $user_id
+            ];
+            return $this->call('deleteUser', $param);   // returns boolean
+        } else {
+            $user_data = $this->getUser($user_id);
+            if (!$user_data['login']) {
+                return false;
+            }
+            $usr_xml = '<Users>
+    <User Id="il_0_usr_' . $user_id . '" Action="Delete">
+    <UDFDefinitions></UDFDefinitions><Login>' . $user_data['login'] . '</Login>
+    </User>
+    </Users>';
+
+            $param = [
+                'sid'               => $this->getSID(),
+                'folder_id'         => -1,
+                'usr_xml'           => $usr_xml,
+                'conflict_rule'     => 1,
+                'send_account_mail' => 0
             ];
-        return $this->call('deleteUser', $param);   // returns boolean
+            $result = $this->call('importUsers', $param);
+
+            $s = simplexml_load_string($result);
+
+            if ((string)$s->rows->row->column[3] == "successful") {
+                return (string)$s->rows->row->column[0];
+            }
+            return false;
+        }
     }
 
 ////////////////////////////
@@ -1453,7 +1513,7 @@ class IliasSoap extends StudipSoapClient
 <Course>
   <MetaData>
     <General Structure=\"Hierarchical\">
-      <Identifier Catalog=\"ILIAS\"/>
+      <Identifier Catalog=\"ILIAS\" Entry=\"\"/>
       <Title Language=\"$crs_language\">
       $crs_title
       </Title>
diff --git a/lib/soap/StudipSoapClient_PHP5.class.php b/lib/soap/StudipSoapClient_PHP5.class.php
index 23bfa9c47d86b1e48d06d19e0f4d5ae6b9a33d09..0aafd4af56778021627ba5407ae45d8884f0dad2 100644
--- a/lib/soap/StudipSoapClient_PHP5.class.php
+++ b/lib/soap/StudipSoapClient_PHP5.class.php
@@ -19,7 +19,7 @@ class StudipSoapClient
         try {
             $this->soap_client = new SoapClient($path, ['trace' => 0]);
         } catch (SoapFault $fault) {
-            $this->error = "<b>Soap Constructor Error</b><br>" . $fault->faultcode . ": ".$fault->faultstring."<br><br>";
+            $this->error = "Soap Constructor Error " . $fault->faultcode . ": ".$fault->faultstring;
         }
     }
 
@@ -33,7 +33,8 @@ class StudipSoapClient
             } catch  (SoapFault $fault) {
                 $this->faultstring = $fault->faultstring;
                 if (!in_array(mb_strtolower($this->faultstring), ["session not valid","session invalid", "session idled"])) {
-                    $this->error .= "<hr><font size=\"-1\"><b>" . sprintf(_("SOAP-Fehler, Funktion \"%s\":"), $method) . "</b> " . $fault->faultstring . " (" .  $fault->faultcode . ")<br>".print_r($params,1).'</font><hr>';
+                    unset($params['password']);
+                    $this->error .= sprintf(_("SOAP-Fehler, Funktion \"%s\":"), $method) . " " . $fault->faultstring . " (" .  $fault->faultcode . ")".print_r($params,1);
                     error_log($this->error);
                 }
                 $this->soap_client->fault = true;
@@ -60,4 +61,3 @@ class StudipSoapClient
             return false;
     }
 }
-?>