diff --git a/app/controllers/admin/ilias_interface.php b/app/controllers/admin/ilias_interface.php
index fd3ac073f0023587efd3bbbcb99255426c8231e6..206e6754d944259e15b87297ae27ffb442957a51 100644
--- a/app/controllers/admin/ilias_interface.php
+++ b/app/controllers/admin/ilias_interface.php
@@ -243,6 +243,15 @@ class Admin_IliasInterfaceController extends AuthenticatedController
     {
         $this->ilias_config = $this->ilias_configs[$index];
         $this->ilias_index = $index;
+        $this->ilias_datafields = [];
+
+        $connected_ilias = new ConnectedIlias($index);
+        if ($admin_id = $connected_ilias->soap_client->lookupUser($this->ilias_config['admin'])) {
+            $user = $connected_ilias->soap_client->getUser($admin_id);
+            if (array_key_exists('udfs', $user)) {
+                $this->ilias_datafields = $user['udfs'];
+            }
+        }
     }
 
     /**
@@ -315,6 +324,28 @@ class Admin_IliasInterfaceController extends AuthenticatedController
                     if (Request::getInstance()->offsetExists('ilias_matriculation')) {
                         $this->ilias_configs[$index]['matriculation'] = Request::get('ilias_matriculation');
                     }
+                    if (Request::getInstance()->offsetExists('ilias_discipline_1') && Request::getInstance()->offsetExists('ilias_discipline_2')) {
+                        if ($admin_id = $connected_ilias->soap_client->lookupUser($this->ilias_configs[$index]['admin'])) {
+                            $user = $connected_ilias->soap_client->getUser($admin_id);
+                            if (array_key_exists('udfs', $user)) {
+                                $this->ilias_datafields = $user['udfs'];
+                                foreach ($this->ilias_datafields as $field) {
+                                    if (Request::option('ilias_discipline_1') == $field['id']) {
+                                        $this->ilias_configs[$index]['discipline_1'] = ['id' => $field['id'], 'name' => $field['name']];
+                                    }
+                                    if (Request::option('ilias_discipline_2') == $field['id']) {
+                                        $this->ilias_configs[$index]['discipline_2'] = ['id' => $field['id'], 'name' => $field['name']];
+                                    }
+                                }
+                                if (!Request::option('ilias_discipline_1')) {
+                                    unset($this->ilias_configs[$index]['discipline_1']);
+                                }
+                                if (!Request::option('ilias_discipline_2')) {
+                                    unset($this->ilias_configs[$index]['discipline_2']);
+                                }
+                            }
+                        }
+                    }
                     if (Request::getInstance()->offsetExists('ilias_cat_semester')) {
                         $this->ilias_configs[$index]['cat_semester'] = Request::get('ilias_cat_semester');
                     }
diff --git a/app/views/admin/ilias_interface/edit_content.php b/app/views/admin/ilias_interface/edit_content.php
index fdbaed95cf7ca9b94fefbba1b6225cb8d6776bd5..f54a62d909d163c803a95305b8fa5df8b5e3b6a1 100644
--- a/app/views/admin/ilias_interface/edit_content.php
+++ b/app/views/admin/ilias_interface/edit_content.php
@@ -4,6 +4,7 @@
  * @var string $ilias_index
  * @var array $ilias_config
  * @var array $modules_available
+ * @var array $ilias_datafields
  */
 ?>
 <form class="default" action="<?= $controller->url_for('admin/ilias_interface/save/'.$ilias_index) ?>" method="post">
@@ -47,6 +48,26 @@
         <span><?= _('Datenfeld (Name) mit Matrikelnummer (wenn leer, wird keine Matrikelnummer übergeben)') ?></span>
         <input type="text" name="ilias_matriculation" size="50" maxlength="255" value="<?= htmlReady($ilias_config['matriculation']) ?>">
     </label>
+    <? if (count($ilias_datafields)) : ?>
+        <label>
+            <span><?= _('ILIAS-Datenfeld für Studiengang 1 (wenn leer, wird der Studiengang nicht übertragen)') ?></span>
+            <select name="ilias_discipline_1">
+            <option></option>
+            <? foreach ($ilias_datafields as $field) : ?>
+                <option value="<?=$field['id']?>" <?=$ilias_config['discipline_1']['id'] == $field['id'] ? 'selected' : ''?>><?=htmlReady($field['name'])?></option>
+            <? endforeach ?>
+            </select>
+        </label>
+        <label>
+            <span><?= _('ILIAS-Datenfeld für Studiengang 2 (wenn leer, wird der Studiengang nicht übertragen)') ?></span>
+            <select name="ilias_discipline_2">
+                <option></option>
+            <? foreach ($ilias_datafields as $field) : ?>
+                <option value="<?=$field['id']?>" <?=$ilias_config['discipline_2']['id'] == $field['id'] ? 'selected' : ''?>><?=htmlReady($field['name'])?></option>
+            <? endforeach ?>
+            </select>
+        </label>
+    <? endif ?>
     <label>
     <span class="required"><?= _('Struktur für angelegte Kurse') ?></span>
     </label>
@@ -82,11 +103,11 @@
         <span><?= _('Veranstaltungsname (Semester)') ?></span>
     </label>
     <label>
-        <input type="checkbox" name="ilias_course_veranstaltungsnummer" value="1" <?= $ilias_config['course_veranstaltungsnummer'] ? 'checked' : '' ?>>
+        <input type="checkbox" name="ilias_course_veranstaltungsnummer" value="1" <?= !empty($ilias_config['course_veranstaltungsnummer']) ? 'checked' : '' ?>>
         <span><?= _('Stud.IP-Veranstaltungsnummer im ILIAS-Kurstitel anzeigen') ?></span>
     </label>
     <label>
-        <input type="checkbox" name="ilias_delete_ilias_courses" value="1" <?= $ilias_config['delete_ilias_courses'] ? 'checked' : '' ?>>
+        <input type="checkbox" name="ilias_delete_ilias_courses" value="1" <?= !empty($ilias_config['delete_ilias_courses'] )? 'checked' : '' ?>>
         <span><?= _('Beim Löschen von Stud.IP-Veranstaltungen ILIAS-Kurse ebenfalls löschen (alle untergeordneten Objekte werden gelöscht!)') ?></span>
     </label>
     <label>
diff --git a/lib/ilias_interface/IliasSoap.php b/lib/ilias_interface/IliasSoap.php
index 7911e9e2af0bdaffeacad9dbf55ee03dc1bc54d3..645170c647c07d1d395124244da3a02b50860780 100644
--- a/lib/ilias_interface/IliasSoap.php
+++ b/lib/ilias_interface/IliasSoap.php
@@ -934,6 +934,11 @@ class IliasSoap extends StudipSoapClient
                         $user_array['email'] = (string)$user->Email;
                         $user_array['active'] = (string)$user->Active;
                         $user_array['authmode'] = (string)$user->AuthMode->attributes()->type;
+                        if (isset($user->UserDefinedField)) {
+                            foreach ($user->UserDefinedField as $field) {
+                                $user_array['udfs'][] = ['id' => (string)$field->attributes()->Id, 'name' => (string)$field->attributes()->Name];
+                            }
+                        }
                         return $user_array;
                     }
                 }
@@ -1021,7 +1026,9 @@ class IliasSoap extends StudipSoapClient
     {
         $this->clearCache();
         foreach($user_data as $key => $value) {
-            $user_data[$key] = htmlReady($user_data[$key]);
+            if (!is_array($value)) {
+                $user_data[$key] = htmlReady($user_data[$key]);
+            }
         }
         $update = $user_data["id"];
 
@@ -1050,8 +1057,13 @@ class IliasSoap extends StudipSoapClient
             $usr_xml .= "<Look Skin=\"".$user_data["user_skin"]."\" Style=\"".$user_data["user_style"]."\"/>";
         }
         $usr_xml .= "<AuthMode type=\"".$user_data["auth_mode"]."\"/>
-<ExternalAccount>".$user_data["external_account"]."</ExternalAccount>
-</User>
+<ExternalAccount>".$user_data["external_account"]."</ExternalAccount>";
+        if (array_key_exists('UDF', $user_data) && is_array($user_data['UDF'])) {
+            foreach ($user_data['UDF'] as $udf_id => $udf_content) {
+                $usr_xml .= "<UserDefinedField Id=\"{$udf_id}\" Name=\"".$udf_content['name']."\">".htmlReady($udf_content['value'])."</UserDefinedField>";
+            }
+        }
+        $usr_xml .= "</User>
 </Users>";
 
         $param = [
diff --git a/lib/ilias_interface/IliasUser.php b/lib/ilias_interface/IliasUser.php
index 426de8098259c7c35e7ad43440e6d9b83f92485e..da360827689c7fb147355e080cd18f3b04ce4141 100644
--- a/lib/ilias_interface/IliasUser.php
+++ b/lib/ilias_interface/IliasUser.php
@@ -41,6 +41,7 @@ class IliasUser
     public $phone_home;
     public $fax;
     public $matriculation;
+    public $disciplines;
     public $email;
     public $type;
     public $is_connected;
@@ -156,6 +157,20 @@ class IliasUser
         if ($this->title_rear != '') {
             $this->title .= $this->title_rear;
         }
+
+        $disciplines = UserStudyCourse::findByUser($this->studip_id);
+        if (is_array($disciplines) && count($disciplines)) {
+            if ((array_key_exists('discipline_1', $this->ilias_config) && $this->ilias_config['discipline_1']) || (array_key_exists('discipline_2', $this->ilias_config) && $this->ilias_config['discipline_2'])) {
+                $discipline = reset($disciplines);
+                if ($discipline) {
+                    $this->disciplines[] = $discipline->studycourse_name . ' ' . $discipline->degree_name;
+                }
+                $discipline = next($disciplines);
+                if ($discipline) {
+                    $this->disciplines[] = $discipline->studycourse_name . ' ' . $discipline->degree_name;
+                }
+            }
+        }
         return true;
     }
 
@@ -187,6 +202,15 @@ class IliasUser
         $user_data['agree_date'] = date('Y-m-d H:i:s');
         $user_data['auth_mode'] = 'default';
         $user_data['external_account'] = '';
+        $user_data['UDF'] = [];
+        if (is_array($this->disciplines)) {
+            if (is_array($this->ilias_config) && array_key_exists('discipline_1', $this->ilias_config) && array_key_exists(0, $this->disciplines)) {
+                $user_data['UDF'][$this->ilias_config['discipline_1']['id']] = ['name' => $this->ilias_config['discipline_1']['name'], 'value' => $this->disciplines[0]];
+            }
+            if (is_array($this->ilias_config) && array_key_exists('discipline_2', $this->ilias_config) && array_key_exists(1, $this->disciplines)) {
+                $user_data['UDF'][$this->ilias_config['discipline_2']['id']] = ['name' => $this->ilias_config['discipline_2']['name'], 'value' => $this->disciplines[1]];
+            }
+        }
         return $user_data;
     }