diff --git a/classes/TandemMatching.class.php b/classes/TandemMatching.class.php
index 5f4f50577ab4a970cba32375623fbfb88d52954b..333228384b712350b19d8b554c4b4aeab2933870 100644
--- a/classes/TandemMatching.class.php
+++ b/classes/TandemMatching.class.php
@@ -76,8 +76,19 @@ class TandemMatching
             AND tuml.user_id <> :user_id
             AND tandem_profiles.target_language_id IN ( :request_user_mother_language_ids ) ';
         if (Config::get()->TANDEMPLUGIN_USE_LEVEL) {
-            $sql .= "AND tuml.`level` IN ( :levels ) ";
-            $sql_params['levels'] = self::getEqualOrHigherLevels($tandem_request->level);
+            $sql .= "AND tuml.`level` IN ( :other_minimum_levels ) ";
+            //Check which level is higher: The requested one or the one of the user.
+            $user_and_higher_levels = self::getEqualOrHigherLevels($tandem_request->level);
+            if ($tandem_request->requested_level) {
+                $requested_and_higher_levels = self::getEqualOrHigherLevels($tandem_request->requested_level);
+                //Use the level array that has the least entries so that no lower levels as the requested
+                //ones are used.
+                $sql_params['other_minimum_levels'] = count($user_and_higher_levels) < count($requested_and_higher_levels)
+                    ? $user_and_higher_levels : $requested_and_higher_levels;
+            } else {
+                //Easy: Use the level of the user.
+                $sql_params['other_minimum_levels'] = $user_and_higher_levels;
+            }
         }
 
         //We must check, if there are tandem pairs. Profiles in tandem pairs
diff --git a/controllers/profile.php b/controllers/profile.php
index 18f89f6f2558e40797643a5eab4040ea2f6a1dba..ad734b23cccc779984305db0c0d4c66fa182220e 100644
--- a/controllers/profile.php
+++ b/controllers/profile.php
@@ -74,6 +74,7 @@ class ProfileController extends PluginController
             //Read all attributes:
             $this->target_language_id = Request::get('target_language_id', null);
             $this->level = Request::get('level', null);
+            $this->requested_level = Request::get('requested_level', '');
             $this->comment = Request::get('comment', '');
             $this->gender = Request::get('gender', '');
             if (Config::get()->TANDEMPLUGIN_PROOF_FIELDS_ENABLED) {
@@ -150,6 +151,7 @@ class ProfileController extends PluginController
             //the following is common for add and edit mode:
             $this->tandem_profile->target_language_id = $this->target_language_id;
             $this->tandem_profile->level = $this->level;
+            $this->tandem_profile->requested_level = $this->requested_level;
 
             $this->tandem_profile->comment = $this->comment;
             $this->tandem_profile->gender = $this->gender;
@@ -255,6 +257,7 @@ class ProfileController extends PluginController
                 //edit mode
                 $this->target_language_id = $this->tandem_profile->target_language_id;
                 $this->level = $this->tandem_profile->level;
+                $this->requested_level = $this->tandem_profile->requested_level;
 
                 $this->comment = $this->tandem_profile->comment;
                 $this->gender = $this->tandem_profile->gender;
@@ -266,6 +269,7 @@ class ProfileController extends PluginController
                 //add mode
                 $this->target_language_id = '';
                 $this->level = 'A1';
+                $this->requested_level = '';
 
                 $this->comment = '';
                 $this->gender = '';
diff --git a/migrations/11_add_requested_level.php b/migrations/11_add_requested_level.php
new file mode 100644
index 0000000000000000000000000000000000000000..caaa9945d080b88a5ec1032237046388f41c8bc0
--- /dev/null
+++ b/migrations/11_add_requested_level.php
@@ -0,0 +1,23 @@
+<?php
+
+
+class AddRequestedLevel extends Migration
+{
+    protected function up()
+    {
+        $db = DBManager::get();
+        $db->exec(
+            "ALTER TABLE `tandem_profiles`
+            ADD COLUMN requested_level VARCHAR(2) NOT NULL DEFAULT ''"
+        );
+    }
+
+
+    protected function down()
+    {
+        $db = DBManager::get();
+        $db->exec(
+            "ALTER TABLE `tandem_profiles` DROP COLUMN requested_level"
+        );
+    }
+}
diff --git a/models/TandemProfile.class.php b/models/TandemProfile.class.php
index defd7597b553fc7ff957ba317b63a8d740166bc6..3ccfa4fe8d41452a9fbaef2e1726084b81564a3c 100644
--- a/models/TandemProfile.class.php
+++ b/models/TandemProfile.class.php
@@ -26,6 +26,7 @@ require_once(__DIR__ . '/TandemUserMotherLanguage.class.php');
  * @property string target_language_id A reference to a language entry.
  * @property string level The language level that represents the user's skills in the target language:
  *     A1, A2, B1, B2, C1 or C2
+ * @property string requested_level The language level that the user requests for their tandem partner.
  * @property string comment
  * @property string gender
  * @property string proof_of_achievement
@@ -59,7 +60,7 @@ require_once(__DIR__ . '/TandemUserMotherLanguage.class.php');
     {
         return $this->target_language->getLocalName()
             . ' ('
-            . $this->level
+            . ($this->requested_level ?: $this->level)
             . ')';
     }
 
diff --git a/plugin.manifest b/plugin.manifest
index b23018aa6131b5ad7e63caf8f8e1a275470aa05c..394112baa42d835b3a13cc36c9969a7b95265995 100644
--- a/plugin.manifest
+++ b/plugin.manifest
@@ -1,7 +1,7 @@
 pluginname=TandemPlugin
 pluginclassname=TandemPlugin
 origin=data-quest
-version=1.3.0
+version=1.3.1
 description=Dieses Plugin ermöglicht es, Sprachtandems innerhalb der Stud.IP Platform zu bilden.
 studipMinVersion=4.0
 studipMaxVersion=5.9.99
diff --git a/views/profile/_add_edit_form.php b/views/profile/_add_edit_form.php
index 1779ca0ab9ec4356b035ecd307af19b6701d04b3..b53a4c19526aefbfdf9778e7f941c30524534690 100644
--- a/views/profile/_add_edit_form.php
+++ b/views/profile/_add_edit_form.php
@@ -29,6 +29,20 @@
             <option value="C2" <?= ($level == 'C2' ? 'selected="selected"' : '' ) ?>>C2</option>
         </select>
     </label>
+    <label>
+        <?= dgettext('TandemPlugin', 'Auf welcher Niveaustufe soll die andere Person die gesuchte Sprache mindestens beherrschen?') ?>
+        <select name="requested_level">
+            <option value="" <?= !$requested_level ? 'selected' : '' ?>>
+                <?= dgettext('TandemPlugin', 'Keine Auswahl') ?>
+            </option>
+            <option value="A1" <?= $requested_level == 'A1' ? 'selected' : '' ?>>A1</option>
+            <option value="A2" <?= $requested_level == 'A2' ? 'selected' : '' ?>>A2</option>
+            <option value="B1" <?= $requested_level == 'B1' ? 'selected' : '' ?>>B1</option>
+            <option value="B2" <?= $requested_level == 'B2' ? 'selected' : '' ?>>B2</option>
+            <option value="C1" <?= $requested_level == 'C1' ? 'selected' : '' ?>>C1</option>
+            <option value="C2" <?= $requested_level == 'C2' ? 'selected' : '' ?>>C2</option>
+        </select>
+    </label>
     <p><?= dgettext('TandemPlugin', 'Hinweis: Dies ist eine Selbsteinschätzung des Sprachniveaus. Es handelt sich nicht um die Einstufung des Fachsprachenzentrums!') ?></p>
     </p>
     <label>