diff --git a/app/controllers/course/grouping.php b/app/controllers/course/grouping.php
index 198932e45c106227d823fcd3288991f8e94f2b55..4f35b53452de28b87941a25f92a647934d2c704e 100644
--- a/app/controllers/course/grouping.php
+++ b/app/controllers/course/grouping.php
@@ -190,44 +190,13 @@ class Course_GroupingController extends AuthenticatedController
         // Export all participants.
         if (Config::get()->EXPORT_ENABLE) {
             $widget = new ExportWidget();
-
-            // create csv-export link
-            $csvExport = export_link(
-                $this->course->id,
-                'person',
-                htmlReady(sprintf(
-                    '%s %s',
-                    get_title_for_status('autor', 2),
-                    $this->course->getFullName()
-                )),
-                'csv',
-                'csv-teiln',
-                '',
-                _('Teilnehmendenliste als CSV-Dokument exportieren'),
-                'passthrough'
-            );
-            $widget->addLinkFromhtmL(
-                $csvExport,
-                Icon::create('file-office', 'clickable')
-            );
-
-            // create csv-export link
-            $rtfExport = export_link(
-                $this->course->id,
-                'person',
-                htmlReady(sprintf(
-                    '%s %s',
-                    get_title_for_status('autor', 2), $this->course->getFullName()
-                )),
-                'rtf',
-                'rtf-teiln',
-                '',
-                _('Teilnehmendenliste als rtf-Dokument exportieren'),
-                'passthrough'
-            );
-            $widget->addLinkFromHTML(
-                $rtfExport,
-                Icon::create('file-text', 'clickable')
+            $widget->addLink(
+                _('Als CSV-Datei exportieren'),
+                URLHelper::getURL('dispatch.php/course/members/export', [
+                    'course_id' => $this->course_id,
+                    'format' => 'csv',
+                ]),
+                Icon::create('export')
             );
 
             $sidebar->addWidget($widget);
@@ -267,7 +236,7 @@ class Course_GroupingController extends AuthenticatedController
     {
         CSRFProtection::verifyUnsafeRequest();
         if (Request::submitted('single_action')) {
-            list($course_id, $permission) = explode('-', Request::get('single_action'));
+            [$course_id, $permission] = explode('-', Request::get('single_action'));
 
             $selected = Request::getArray('members');
 
diff --git a/app/controllers/course/members.php b/app/controllers/course/members.php
index 5ead0eae13fcd5a837e6ff5d3834b84c7ae7ee8c..bf072219814f47d8959635f7f1b56e887feae177 100644
--- a/app/controllers/course/members.php
+++ b/app/controllers/course/members.php
@@ -1675,33 +1675,13 @@ class Course_MembersController extends AuthenticatedController
                 );
 
                 if (count($this->awaiting) > 0) {
-                    $awaiting_rtf = export_link(
-                        $this->course_id,
-                        'person',
-                        sprintf(_('Warteliste %s'), $this->course_title),
-                        'rtf',
-                        'rtf-warteliste',
-                        $this->waiting_type,
-                        _('Warteliste als rtf-Dokument exportieren'),
-                        'passthrough'
-                    );
-                    $widget->addLinkFromHTML(
-                        $awaiting_rtf,
-                        Icon::create('export')
-                    );
-
-                    $awaiting_csv = export_link(
-                        $this->course_id,
-                        'person',
-                        sprintf(_('Warteliste %s'), $this->course_title),
-                        'csv',
-                        'csv-warteliste',
-                        $this->waiting_type,
-                        _('Warteliste als csv-Dokument exportieren'),
-                        'passthrough'
-                    );
-                    $widget->addLinkFromHTML(
-                        $awaiting_csv,
+                    $widget->addLink(
+                        _('Warteliste CSV-Datei exportieren'),
+                        URLHelper::getURL('dispatch.php/course/members/export', [
+                            'course_id' => $this->course_id,
+                            'format'    => 'csv',
+                            'status'    => $this->waiting_type,
+                        ]),
                         Icon::create('export')
                     );
                 }
@@ -1753,21 +1733,44 @@ class Course_MembersController extends AuthenticatedController
     public function export_action()
     {
         $export_format = Request::get('format');
+        $status = Request::get('status');
 
         if ($export_format !== 'csv' && $export_format !== 'xlsx') {
             throw new Exception('Wrong format');
         }
 
-        $header = [_('Status'), _('Anrede'), _('Titel'), _('Vorname'), _('Nachname'), _('Titel nachgestellt'), _('Benutzername'), _('Adresse'), _('Telefonnr.'),
-            _('E-Mail'), _('Anmeldedatum'), _('Matrikelnummer'), _('Studiengänge')];
-        $members = CourseMember::getMemberDataByCourse($this->course_id);
+        $header = [
+            _('Status'),
+            _('Anrede'),
+            _('Titel'),
+            _('Vorname'),
+            _('Nachname'),
+            _('Titel nachgestellt'),
+            _('Benutzername'),
+            _('Adresse'),
+            _('Telefonnr.'),
+            _('E-Mail'),
+            _('Anmeldedatum'),
+            _('Matrikelnummer'),
+        ];
+
+        if (in_array($status, ['awaiting', 'claiming'])) {
+            $header[] = _('Position');
+            $filename = _('Wartelistenexport');
+        } else {
+            $filename = _('Teilnehmendenexport');
+        }
+
+        $header[] = _('Studiengänge');
+
+        $members = CourseMember::getMemberDataByCourse($this->course_id, $status);
 
         foreach ($members as &$member) {
             $member['Anmeldedatum'] = $member['Anmeldedatum'] ? date("d.m.Y", $member['Anmeldedatum']) : _("unbekannt");
             unset($member['user_id']);
         }
 
-        $filename = _('Teilnehmendenexport') . ' ' . $this->course_title . '.' . $export_format;
+        $filename = $filename . ' ' . $this->course_title . '.' . $export_format;
 
         $this->render_spreadsheet($header, $members, $export_format, $filename);
     }
diff --git a/app/controllers/course/statusgroups.php b/app/controllers/course/statusgroups.php
index 3edccb2ad70a619bab16e3404e8a620d6127396d..d2921a794a6bef9ff5bf858aafc3d225563f2bb2 100644
--- a/app/controllers/course/statusgroups.php
+++ b/app/controllers/course/statusgroups.php
@@ -324,7 +324,7 @@ class Course_StatusgroupsController extends AuthenticatedController
         if ($groups) {
             foreach ($groups as $group) {
                 foreach ($group['members'] as $mem) {
-                    $member_data = CourseMember::getMemberDataByCourse($this->course_id, $mem['user_id']);
+                    $member_data = CourseMember::getMemberDataByCourse($this->course_id, '', $mem['user_id']);
 
                     foreach ($member_data as &$mem_data) {
                         $mem_data['Anmeldedatum'] = $mem_data['Anmeldedatum'] ? date('d.m.Y', $mem_data['Anmeldedatum']) : _('unbekannt');
diff --git a/lib/models/CourseMember.class.php b/lib/models/CourseMember.class.php
index 91256a9b0e933487b41445d8f731307a0870f015..5f9ec5042fa506dc46a1c49914a12be6389cbd01 100644
--- a/lib/models/CourseMember.class.php
+++ b/lib/models/CourseMember.class.php
@@ -442,7 +442,7 @@ class CourseMember extends SimpleORMap implements PrivacyObject
      * Get user information for all users in this course
      *
      */
-    public static function getMemberDataByCourse(string $seminar_id, ?string $user_id = null): array
+    public static function getMemberDataByCourse(string $seminar_id, ?string $status = '', ?string $user_id = null,): array
     {
         $query = "SELECT `datafield_id`
                   FROM `datafields`
@@ -455,34 +455,64 @@ class CourseMember extends SimpleORMap implements PrivacyObject
             ':seminar_id' => $seminar_id,
             ':datafield_id' => $datafield_id,
         ];
-        if (func_num_args() > 1) {
+        if ($user_id !== null) {
             $user_condition = " AND su.`user_id` = :user_id";
             $parameters[':user_id'] = $user_id;
         }
 
-        $query = "SELECT su.`user_id`,
-                         su.`status`,
-                         ui.`geschlecht`,
-                         ui.`title_front` AS Titel,
-                         aum.`Vorname`,
-                         aum.`Nachname`,
-                         ui.`title_rear` AS Titel2,
-                         aum.`username`,
-                         ui.`privadr`,
-                         ui.`privatnr`,
-                         aum.`Email`,
-                         ui.`mkdate` AS Anmeldedatum,
-                         IFNULL(aum.`matriculation_number`, dfe.`content`) AS Matrikelnummer
-                  FROM `seminar_user` AS su
-                  JOIN `auth_user_md5` AS aum USING (`user_id`)
-                  LEFT JOIN `user_info` AS ui USING (`user_id`)
-                  LEFT JOIN `datafields_entries` AS dfe
-                    ON dfe.`range_id` = su.`user_id`
-                      AND dfe.`datafield_id` = :datafield_id
-                  WHERE `Seminar_id` = :seminar_id
-                    {$user_condition}
-                  GROUP BY su.`user_id`
-                  ORDER BY `status` DESC, `Nachname`, `Vorname`";
+
+        if (in_array($status, ['awaiting', 'claiming'])) {
+            $query  = "SELECT su.`user_id`,
+                           su.`status`,
+                           ui.`geschlecht`,
+                           ui.`title_front` AS Titel,
+                           aum.`Vorname`,
+                           aum.`Nachname`,
+                           ui.`title_rear` AS Titel2,
+                           aum.`username`,
+                           ui.`privadr`,
+                           ui.`privatnr`,
+                           aum.`Email`,
+                           ui.`mkdate` AS Anmeldedatum,
+                           IFNULL(aum.`matriculation_number`, dfe.`content`) AS Matrikelnummer,
+                           su.position AS admission_position
+                       FROM admission_seminar_user AS su
+                       LEFT JOIN user_info AS ui USING (user_id)
+                       LEFT JOIN auth_user_md5 AS aum USING (user_id)
+                       LEFT JOIN `datafields_entries` AS dfe
+                         ON dfe.`range_id` = su.`user_id`
+                           AND dfe.`datafield_id` = :datafield_id
+                       WHERE seminar_id = :seminar_id AND su.status = :status
+                           {$user_condition}
+                       GROUP BY aum.user_id
+                       ORDER BY Nachname, Vorname";
+            $parameters[':status'] = $status;
+        }  else {
+            $query = "SELECT su.`user_id`,
+                             su.`status`,
+                             ui.`geschlecht`,
+                             ui.`title_front` AS Titel,
+                             aum.`Vorname`,
+                             aum.`Nachname`,
+                             ui.`title_rear` AS Titel2,
+                             aum.`username`,
+                             ui.`privadr`,
+                             ui.`privatnr`,
+                             aum.`Email`,
+                             ui.`mkdate` AS Anmeldedatum,
+                             IFNULL(aum.`matriculation_number`, dfe.`content`) AS Matrikelnummer
+                      FROM `seminar_user` AS su
+                      JOIN `auth_user_md5` AS aum USING (`user_id`)
+                      LEFT JOIN `user_info` AS ui USING (`user_id`)
+                      LEFT JOIN `datafields_entries` AS dfe
+                        ON dfe.`range_id` = su.`user_id`
+                          AND dfe.`datafield_id` = :datafield_id
+                      WHERE `Seminar_id` = :seminar_id
+                        {$user_condition}
+                      GROUP BY su.`user_id`
+                      ORDER BY `status` DESC, `Nachname`, `Vorname`";
+        }
+
         return DBManager::get()->fetchAll(
             $query,
             $parameters,