diff --git a/classes/form/evaluserexport.php b/classes/form/evaluserexportform.php
similarity index 86%
rename from classes/form/evaluserexport.php
rename to classes/form/evaluserexportform.php
index 3f9a5f5861b5781575ce995c09dfeb1fdbb0eb84..c4557cb52a14a9ffb4169b677aa68bdb61e57364 100644
--- a/classes/form/evaluserexport.php
+++ b/classes/form/evaluserexportform.php
@@ -28,22 +28,29 @@ use moodleform;
 
 defined('MOODLE_INTERNAL') || die();
 
-class evaluserexport extends moodleform {
+global $CFG;
+
+require_once($CFG->libdir.'/formslib.php');
+
+class evaluserexportform extends moodleform {
 
     public function definition()
     {
         $mform = $this->_form;
 
+        $courseid = $this->_customdata['courseid'];
+        $coursecontext = $this->_customdata['coursecontext'];
+
         $introtext = get_string('evaluserexport_form_into', 'local_hshexport');
         $mform->addElement('html', '<div id="intor">' . $introtext . '</div>');
 
-        $courseid = $this->_customdata['courseid'];
-        $mform->addElement('hidden', 'courseid', $courseid);
+        $mform->addElement('hidden', 'courseid', null);
         $mform->setType('courseid', PARAM_INT);
+        $mform->setConstant('courseid', $courseid);
 
-        $coursecontext = $this->_customdata['coursecontext'];
-        $mform->addElement('hidden', 'coursecontextid', $coursecontext->id);
-        $mform->setType('coursecontextid', PARAM_INT);
+        $mform->addElement('hidden', 'coursecontext', null);
+        $mform->setType('coursecontext', PARAM_INT);
+        $mform->setConstant('coursecontext', $coursecontext->id);
 
         $placeholder = get_string('course_code_placeholder', 'local_hshexport');
         $mform->addElement('text', 'course_code', get_string('course_code', 'local_hshexport'), 'maxlength="150" size="50" placeholder="'.$placeholder.'"');
@@ -74,6 +81,6 @@ class evaluserexport extends moodleform {
         );
 
         $submitlabel = get_string('csvdownload', 'local_hshexport');
-        $this->add_action_buttons(false, $submitlabel);
+        $this->add_action_buttons(true, $submitlabel);
     }
 }
\ No newline at end of file
diff --git a/classes/local/helpers/download.php b/classes/local/helpers/download.php
index 09133c8a55fcf4a6d505c22485d2dd831f825df8..21860a2a1959fda2ff680c9f47d195741c524e14 100644
--- a/classes/local/helpers/download.php
+++ b/classes/local/helpers/download.php
@@ -17,6 +17,7 @@
 namespace local_hshexport\local\helpers;
 
 use core\context;
+use local_hshexport\local\helpers\user_query;
 
 /**
  * Plugin version and other meta-data are defined here.
@@ -27,13 +28,14 @@ use core\context;
  */
 
 class download {
-    public static function get_evaluation_filename(int $courseid = 0, string $course_code = null): string
+    public static function get_evaluation_filename($data): string
     {
         global $DB;
 
         define('FILENAME_PREFIX', 'TN_');
 
-        $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
+        $courseid = $data->courseid;
+        $course = $DB->get_record('course', ['id' => $courseid], '*', MUST_EXIST);
         $context = context\course::instance($course->id, MUST_EXIST);
 
         if ($context->contextlevel != CONTEXT_COURSE) {
@@ -41,11 +43,13 @@ class download {
         }
 
         $timestamp = download::get_file_timestamp();
-        $filename = $course_code;
 
         // use course shortname if no course_code is given
+        $course_code = $data->course_code;
         if ($course_code == null) {
             $filename = str_replace(',', '-', $course->shortname);
+        } else {
+            $filename = $course_code;
         }
 
         // extend filename with prefix and date
@@ -87,4 +91,23 @@ class download {
 
         \csv_export_writer::download_array($filename, $rows, $delimiter, $enclosure);
     }
+
+    public static function csv_file($data): void
+    {
+        global $CFG;
+        require_once($CFG->libdir.'/csvlib.class.php');
+
+        $course_code = $data->course_code;
+        if (!$course_code) {
+            $course = get_course($data->courseid);
+            $course_code = $course->shortname;
+        }
+
+        $filename = self::get_evaluation_filename($data);
+        $roles = array_filter(array_values($data->roles));
+        $roleids = array_map('intval', $roles);
+        $users = user_query::get_users_by_role($data->courseid, $data->coursecontext, $roleids);
+        $rows = self::get_rows($users, $course_code);
+        \csv_export_writer::download_array($filename, $rows, $delimiter='semicolon');
+    }
 }
\ No newline at end of file
diff --git a/export.php b/export.php
index ed2c609b5135759557b721f5a5273ed6937f181f..0e4da85f729fa8397ae9099018b1e5cfe8dc470e 100644
--- a/export.php
+++ b/export.php
@@ -22,52 +22,70 @@
  * @license     https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
-use local_hshexport\form\evaluserexport;
+use local_hshexport\form\evaluserexportform;
+use local_hshexport\local\helpers\download;
 
 require(__DIR__ . '/../../config.php');
 require_once($CFG->libdir.'/csvlib.class.php');
 
-$courseid = required_param('id', PARAM_INT);
-$course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
+$courseid = required_param('id',PARAM_INT);
+
+$course = $DB->get_record('course', ['id' => $courseid], '*', MUST_EXIST);
+
 $title = get_string('pluginname', 'local_hshexport');
 
 require_login($course, true);
 
-$PAGE->set_url('/local/hshexport/export.php', array('id' => $course->id));
+$PAGE->set_url('/local/hshexport/export.php', ['id' => $course->id]);
 $PAGE->set_title($title);
 
 $coursecontext = context_course::instance($course->id);
 $PAGE->set_context($coursecontext);
 require_capability('local/hshexport:canexport', $coursecontext);
 
-echo $OUTPUT->header();
-echo $OUTPUT->heading($title);
+
 
 $customdata = [
     'courseid' => $courseid,
-    'coursecontext' => $coursecontext
+    'coursecontext' => $coursecontext,
 ];
 
-$mform = new evaluserexport('#', $customdata);
+$mform = new evaluserexportform('#', $customdata);
 
-if ($formdata = $mform->get_data()) {
-
-    // removes not selected roles from array
-    $roleids = array_values(array_filter($formdata->roles));
-    $roles_param = urlencode(json_encode($roleids));
-
-    $params = [
-        'id' => $formdata->courseid,
-        'context' => $formdata->coursecontextid,
-        'roles' => $roles_param,
-        'code' => $formdata->course_code
-    ];
-
-    redirect(new moodle_url('/local/hshexport/download.php', $params));
+$formdata = $mform->get_data();
 
+if ($mform->is_cancelled()) {
+    $returnurl = new moodle_url('/user/index.php', ['id' => $course->id]);
+    redirect($returnurl);
+} elseif ($formdata) {
+    download::csv_file($formdata);
 } else {
     $mform->set_data($formdata);
 }
 
+
+
+//
+//    // removes not selected roles from array
+//    $roleids = array_values(array_filter($formdata->roles));
+//    $roles_param = urlencode(json_encode($roleids));
+//
+//    $params = [
+//        'id' => $formdata->courseid,
+//        'context' => $formdata->coursecontextid,
+//        'roles' => $roles_param,
+//        'code' => $formdata->course_code
+//    ];
+//
+////    redirect(new moodle_url('/local/hshexport/download.php', $params));
+//
+//} else {
+//    $mform->set_data($formdata);
+//}
+
+echo $OUTPUT->header();
+echo $OUTPUT->heading($title);
+
 $mform->display();
+
 echo $OUTPUT->footer();