diff --git a/MultiCopy.class.php b/MultiCopy.class.php
index 54a63474008c5e5fa60bab341e019925180791cf..061399de7cae865a79af9bdc2eb3e08c4cd0b0a5 100644
--- a/MultiCopy.class.php
+++ b/MultiCopy.class.php
@@ -30,21 +30,21 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin
         Navigation::activateItem('/admin/plugins/multicopy');
 
 	// alle modi variablen umbiegen...
-	$modus = $_REQUEST['modus'];
-	$modus2 = $_REQUEST['modus2'];
-	$modus3 = $_REQUEST['modus3'];
-	$modus4 = $_REQUEST['modus4'];
-
-	$sem = $_REQUEST['sem'];
-	$category = $_REQUEST['category'];
-	$show_sem_tree = $_REQUEST['show_sem_tree'];
-	$subselects = $_REQUEST['subselects'];
-	$act_sem = $_REQUEST['act_sem'];
-	$my_cat = $_REQUEST['my_cat'];
-	$subselects2 = $_REQUEST['subselects2'];
-	$info_checkbox = $_REQUEST['info_checkbox'];
-	$sem_cp = $_REQUEST['sem_cp'];
-	$check = $_REQUEST['check'];
+	$modus = Request::get('modus');
+	$modus2 = Request::get('modus2');
+	$modus3 = Request::get('modus3');
+	$modus4 = Request::get('modus4');
+
+	$sem = Request::get('sem');
+	$category = Request::get('category');
+	$show_sem_tree = Request::get('show_sem_tree');
+	$subselects = Request::get('subselects');
+	$act_sem = Request::get('act_sem');
+	$my_cat = Request::get('my_cat');
+	$subselects2 = Request::get('subselects2');
+	$info_checkbox = Request::get('info_checkbox');
+	$sem_cp = Request::get('sem_cp');
+	$check = Request::getArray('check');
 
         ob_start();
 
@@ -132,10 +132,10 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin
 		$show = "one_kat";
 	}
 	elseif ($category=="") {
-		unset($modus);
+                $modus = null;
 	}
 	elseif (isset($category) && (!is_array($categories[$category]["sub"]))) {
-		unset($modus);
+                $modus = null;
 	}
 	elseif (isset($subselects) && (!is_array($categories[$category]["sub"][$subselects]["sub"]))) {
 		$modus = "go_fb";
@@ -177,6 +177,7 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin
 	        $u_reader->setAllSeminars();                // alle Seminare werden in den StorageVector gepackt
 	        $u_writer = new UniWriter($start_time, $u_reader->storage_vector);
 	        $u_writer->initWrite();
+                $info = null;
 
 
             // add all selected seminars to a new grouped courseset, removing
@@ -242,7 +243,7 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin
 	            }
                     ?></table><?
 	        }
-	        if (count($deny_sem_array)>0) {
+	        if ($deny_sem_array) {
 	            ?>
                         <?= MessageBox::error(sprintf('%d Veranstaltung(en) konnte(n) nicht kopiert werden (keine Berechtigung):', count($deny_sem_array))) ?>
                         <table class="default">
@@ -284,7 +285,7 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin
 	} elseif ($modus=="go_fb" && Request::submitted('modus_img')) {	// erste Unterkategorie
 
 		?>
-                        <?=make_form($PHP_SELF)?>
+                        <?=make_form()?>
                         <table width="100%">
 				<tr>
 					<td width="20%" class="blank">
@@ -296,8 +297,6 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin
 				<tr>
 					<td class="blank" width="20%" valign="top">
 						Oberkategorien:<br><?=$s_categories?>
-						<?=create_sem_tree_checkbox($show_sem_tree)?>
-						<?=create_info_checkbox($info_checkbox)?>
 					</td>
 					<td width="5%" class="blank" align="center" valign="middle">
 						<?=make_image_button("go_fb","right")?>
@@ -331,7 +330,7 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin
 	} elseif (($modus3=="go_fb2") && Request::submitted('modus3_img')) {	// weitere Unterkategorien
 			?>
 
-                        <?=make_form($PHP_SELF)?>
+                        <?=make_form()?>
                         <table width="100%">
 			<tr>
 				<td width="20%" class="blank">
@@ -344,8 +343,6 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin
 				<td class="blank" width="20%" valign="top">
 					Oberkategorien:<br>
 					<?=$s_categories?>
-					<?=create_sem_tree_checkbox($show_sem_tree)?>
-					<?=create_info_checkbox($info_checkbox)?>
 				</td>
 				<td width="5%" class="blank" align="center" valign="middle">
 					<?=make_image_button("go_fb","right")?>
@@ -388,7 +385,7 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin
             } elseif (($modus2=="go_sem") && Request::submitted('modus2_img')) {	// zeige alles an
 			?>
 
-                        <?=make_form($PHP_SELF)?>
+                        <?=make_form()?>
                         <table width="100%">
 			<tr>
 				<td width="20%" class="blank">
@@ -400,8 +397,6 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin
 			<tr>
 				<td class="blank" valign="top">
 					Oberkategorien:<br><?= $s_categories?>
-					<?= create_sem_tree_checkbox($show_sem_tree)?>
-					<?=create_info_checkbox($info_checkbox) ?>
 				</td>
 				<td width="5%" class="blank" align="center" valign="middle">
 					<?= make_image_button("go_fb","right")?>
@@ -507,7 +502,7 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin
 	        </fieldset>
 		<?=make_end_form()?>
             <? } else {		// default ?>
-                        <?=make_form($PHP_SELF)?>
+                        <?=make_form()?>
                         <table width="100%">
 				<tr>
 					<td width="20%" class="blank">
@@ -519,8 +514,6 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin
 				<tr>
 					<td class="blank">
 						Oberkategorien:<br> <?= $s_categories?>
-						<?=create_sem_tree_checkbox($show_sem_tree)?>
-						<?=create_info_checkbox($info_checkbox)?>
 					</td>
 					<td width="80%" class="blank" align="left" valign="middle">
 						<?=make_image_button("go_fb","right")?>
diff --git a/admin_copy_mult.inc.php b/admin_copy_mult.inc.php
index b806406b8dd611d17da54183f84ba0c7cefaf3af..99e92bf684bd6515a389439b0679453bf67efe5c 100644
--- a/admin_copy_mult.inc.php
+++ b/admin_copy_mult.inc.php
@@ -54,7 +54,7 @@ function show_select_categories($categories,$size,$selected="") {
 				$data .= " SELECTED ";
 			}
 			$data .=">".$val["name"]."</option>\n";
-			if (is_array($val["sub"])) {
+			if (isset($val["sub"]) && is_array($val["sub"])) {
 				$offset = "&nbsp;&nbsp;";
 				//$data .= show_sub_select_categories($val["sub"],$offset);
 			}
@@ -66,8 +66,8 @@ function show_select_categories($categories,$size,$selected="") {
 //
 // Erzeuge HTML-Formular-Kopf
 //
-function make_form($target) {
-	$form = "<form name=\"cp_mult\" action=\"".$target."\" METHOD=\"POST\">";
+function make_form() {
+	$form = "<form name=\"cp_mult\" action=\"\" METHOD=\"POST\">";
 	return $form;
 }
 
@@ -93,13 +93,14 @@ function show_sub_selected_categories($s_categories,$size,$selected="",$depth,$f
 // Hilfsfunktion: Enzeleinträge erzeugen
 //
 function show_sub_select_categories($s_categories,$offset="",$selected="",$depth) {
+        $data = '';
 	foreach ($s_categories as $key => $val) {
 		$data .= "<option value=\"".$key."\"";
 		if ($selected==$key) {
 			$data .= " SELECTED ";
 		}
 		$data .= ">".$offset.$val["name"]."</option></b>";
-		if (is_array($val["sub"]) && ($depth>=1)) {
+		if (isset($val["sub"]) && is_array($val["sub"]) && ($depth>=1)) {
 			//$depth--;
 			$data .= show_sub_select_categories($val["sub"],$offset."&nbsp;&nbsp;",$selected,$depth);
 		}
@@ -107,18 +108,6 @@ function show_sub_select_categories($s_categories,$offset="",$selected="",$depth
 	return $data;
 }
 
-//
-// Checkbox für sem_tree-Eintrage erzeugen
-//
-
-function create_sem_tree_checkbox($sem_tree) {
-	return $data;
-}
-
-function create_info_checkbox($info_checkbox) {
-	return $data;
-}
-
 function get_admin_user_inst($user_id) {
     $user_inst_array = array();
     $db = new DB_Seminar;
@@ -145,6 +134,8 @@ function show_cats_with_seminars($categories,$db,$offset,$start,$cats="",$show_s
 	$db6->query($sql);
 	$db6->next_record();
 	$semester_id = $db6->f("semester_id");
+        $data = $csv = '';
+
 	foreach ($categories as $key => $val) {
 
 
@@ -185,10 +176,6 @@ function show_cats_with_seminars($categories,$db,$offset,$start,$cats="",$show_s
 			$db4 = new DB_Seminar;
 			$sql4 = "SELECT a.Nachname,a.Vorname FROM seminar_user LEFT JOIN auth_user_md5 a USING (user_id) WHERE Seminar_id='".$db3->f("Seminar_id")."' AND status='dozent'";
 			$db4->query($sql4);
-			$db5 = new DB_Seminar;
-			$sql = "SELECT content FROM datafields_entries WHERE datafield_id='8d94e6a5277b8b279d4216be4800e570' AND range_id='".$db3->f("Seminar_id")."'";
-			$db5->query($sql);
-			$db5->next_record();
 			$style = " style=\"border-top:thin solid\" ";
 			$data .= "<tr>";
             // duerfen wir ueberhaupt kopieren?
@@ -248,21 +235,17 @@ function show_cats_with_seminars($categories,$db,$offset,$start,$cats="",$show_s
             }
             $checkbox_count++;
             $data .= "</tr>";
-			if ($db3->f("teilnehmer") || $db5->f("content")) {
+			if ($db3->f("teilnehmer")) {
 				$data .= "<tr><td>&nbsp;</td><td colspan=4>";
 				$data .= "<font ".$_color."><em>";
 				$data .= $db3->f("teilnehmer");
-				if ($db3->f("teilnehmer") && $db5->f("content")) {
-					$data .= ",&nbsp;";
-				}
-				$data .= $db5->f("content");
 				$data .= "&nbsp;</em></font>";
                 $data .= "</td>";
 				$data .= "</tr>\n";
 			}
             $data .= $_comment;
 
-			if ($path) {
+			if (isset($path) && $path) {
 				foreach($path as $sem_tree_id => $path_name) {
 					$data .= "<tr>";
 					$data .= "<td>&nbsp;</td>";
@@ -270,7 +253,6 @@ function show_cats_with_seminars($categories,$db,$offset,$start,$cats="",$show_s
 					$data .= "</tr>";
 				}
 			}
-			$position++;
 		}
 
 		if (is_array($val["sub"])) {
@@ -301,6 +283,7 @@ function get_institute($seminar_id) {
 }
 
 function make_cats_together($category,$db) {
+        $data = [];
 	$sql = "SELECT * FROM sem_tree WHERE sem_tree_id = '".$category."'";
 	$db->query($sql);
 	$db->next_record();
@@ -320,6 +303,7 @@ function make_cats_together($category,$db) {
 }
 
 function get_all_down_categories($id,$db) {
+        $data = [];
 	$sql = "SELECT * FROM sem_tree WHERE parent_id='".$id."' ORDER BY priority";
 	$db->query($sql);
 	while ($db->next_record()) {
@@ -332,6 +316,7 @@ function get_all_down_categories($id,$db) {
 }
 
 function make_image_button($modus,$pic) {
+        $button = '';
 	switch ($modus) {
 		case "go_fb":
 			$mod = "modus_img";
@@ -362,6 +347,7 @@ function make_image_button($modus,$pic) {
 }
 
 function get_sub_categories($level,$subselects,$db,$id) {
+        $data = null;
 	$level--;
 	$sql = "SELECT * FROM sem_tree s WHERE parent_id='".$id."' ORDER BY priority";
 	$db->query($sql);
@@ -418,6 +404,7 @@ function make_button($value,$name) {
 //  Sucht die Veranstaltungen raus, die nicht kopiert werden dürfen und gibt diese als assoz Array zurück
 //
 function check_seminars($seminars, $user) {
+    $sem_array = [[], []];
     $db = new DB_Seminar;
     $sql =  "SELECT Institut_id ".
             "FROM user_inst ".
diff --git a/multicopy/UniReader.class.php b/multicopy/UniReader.class.php
index e479e8a4bd66fe878a46943ac0c9a985b5a167dd..a132b83a17807468507445446f44db56de6017e7 100644
--- a/multicopy/UniReader.class.php
+++ b/multicopy/UniReader.class.php
@@ -71,8 +71,8 @@ class UniReader extends Reader {
     }
 
     function getDatafieldEntries($sem_id) {
-        $sql = "SELECT de.datafield_id,de.content,de.mkdate,de.chdate FROM datafields_entries de
-          LEFT JOIN datafields d ON  (d.datafield_id = de.datafield_id) WHERE de.range_id = '$sem_id' AND d.object_type IN ('sem','usersemdata')";
+        $sql = "SELECT datafields_entries.* FROM datafields_entries JOIN datafields USING(datafield_id)
+                WHERE range_id = '$sem_id' AND object_type = 'sem'";
         $db = DBManager::get();
         $st = $db->prepare($sql);
         $st->execute();
diff --git a/multicopy/UniWriter.class.php b/multicopy/UniWriter.class.php
index 57813a2e1b174e9dc098b8d3f34e99b2dab8123c..90ff61dd08107d8d76ca5bd5c9dc94dd3b8faea5 100644
--- a/multicopy/UniWriter.class.php
+++ b/multicopy/UniWriter.class.php
@@ -133,6 +133,7 @@ class UniWriter extends Writer {
     }
 
     function setSeminarInst($seminar_insts) {
+        $j = 0;
         $i = count($seminar_insts);
         foreach($seminar_insts as $seminar_inst)
         {
@@ -152,8 +153,12 @@ class UniWriter extends Writer {
     }
 
     function setGeneric($d_fields) {
-        $d_fields['range_id'] = $this->current_sem_id;
-        return $this->setData($d_fields, 'datafields_entries');
+        $datafield = DataField::find($d_fields['datafield_id']);
+
+        if ($datafield->editAllowed($GLOBALS['perm']->get_perm())) {
+            $d_fields['range_id'] = $this->current_sem_id;
+            $this->setData($d_fields, 'datafields_entries');
+        }
     }
 
     /**
@@ -225,9 +230,9 @@ class UniWriter extends Writer {
                 PageLayout::postError(sprintf(_("Fehler bei setDeputies für %s."), $new_semid));
             if(!$this->setSeminarInst($val->seminar_inst))
                 PageLayout::postError(sprintf(_("Fehler bei setSeminarInst für %s."), $new_semid));
+
             foreach ($val->generic as $val2) {
-                if(!$this->setGeneric($val2))
-                    PageLayout::postError(sprintf(_("Fehler bei setGeneric für %s."), $new_semid));
+                $this->setGeneric($val2);
             }
 
             if ($val->i18n_entries) {
diff --git a/plugin.manifest b/plugin.manifest
index 04731b7df656cbd13ccc48fbed5ffd8ddf4b2918..9e5ef3760657db0239069995348d824fd42e4761 100644
--- a/plugin.manifest
+++ b/plugin.manifest
@@ -1,5 +1,5 @@
 pluginclassname=MultiCopy
 pluginname=MultiCopy
 origin=virtUOS
-version=0.6.3
+version=0.7
 studipMinVersion=5.0