diff --git a/extension/Classes/Core/AbstractBuildForm.php b/extension/Classes/Core/AbstractBuildForm.php
index 8b032674bea11135326c55d9673c74dec2d5c1b4..af47ea23b9bf2efad711c4a48a6c4d01bc18f498 100644
--- a/extension/Classes/Core/AbstractBuildForm.php
+++ b/extension/Classes/Core/AbstractBuildForm.php
@@ -11,6 +11,7 @@ namespace IMATHUZH\Qfq\Core;
 use IMATHUZH\Qfq\Core\Database\Database;
 use IMATHUZH\Qfq\Core\Form\Checkbox;
 use IMATHUZH\Qfq\Core\Form\FormAsFile;
+use IMATHUZH\Qfq\Core\Form\TypeAhead;
 use IMATHUZH\Qfq\Core\Helper\HelperFile;
 use IMATHUZH\Qfq\Core\Helper\HelperFormElement;
 use IMATHUZH\Qfq\Core\Helper\KeyValueStringParser;
@@ -846,6 +847,12 @@ abstract class AbstractBuildForm {
                 // Retrieve value via FSRVD
                 $sanitizeClass = ($mode == FORM_UPDATE) ? SANITIZE_ALLOW_ALL : $formElement[FE_CHECK_TYPE];
                 $value = $this->store->getVar($name, $storeUse, $sanitizeClass, $foundInStore);
+
+                // For typeAhead fields: perform prefetch to display description instead of key (#5444)
+                if ($mode == FORM_SAVE && isset($fe[FE_TYPEAHEAD_SQL_PREFETCH])) {
+                    $config = [FE_TYPEAHEAD_SQL_PREFETCH => $fe[FE_TYPEAHEAD_SQL_PREFETCH]];
+                    $value = TypeAhead::typeAheadSqlPrefetch($config, $value, $this->dbArray[$this->dbIndexData]);
+                }
             }
 
             if ($formElement[FE_ENCODE] === FE_ENCODE_SPECIALCHAR) {
diff --git a/extension/Classes/Core/Form/TypeAhead.php b/extension/Classes/Core/Form/TypeAhead.php
index f21d4c7851382ef9c3d195dfb6dae39f325a5f5f..9cb408106a8d6e75448dfe077d02f2a6b854592f 100644
--- a/extension/Classes/Core/Form/TypeAhead.php
+++ b/extension/Classes/Core/Form/TypeAhead.php
@@ -83,7 +83,7 @@ class TypeAhead {
             if($this->vars[TYPEAHEAD_API_PREFETCH] == '') {
                 $arr = $this->typeAheadSql($sipVars, $this->vars[TYPEAHEAD_API_QUERY]);
             } else {
-                $arr = $this->typeAheadSqlPrefetch($sipVars, $this->vars[TYPEAHEAD_API_PREFETCH]);
+                $arr = $this->typeAheadSqlPrefetch($sipVars, $this->vars[TYPEAHEAD_API_PREFETCH], $this->db);
             }
         } elseif (isset($sipVars[FE_LDAP_SERVER])) {
             $ldap = new Ldap();
@@ -155,7 +155,7 @@ class TypeAhead {
      * @throws \UserFormException
      */
 
-    private function typeAheadSqlPrefetch(array $config, $key) {
+    public static function typeAheadSqlPrefetch(array $config, $key, $db) {
         $keys = array();
 
         $sql = $config[FE_TYPEAHEAD_SQL_PREFETCH];
@@ -172,7 +172,7 @@ class TypeAhead {
             $keys[] = $key;
         }
 
-        $arr = $this->db->sql($sql, ROW_REGULAR, $keys);
+        $arr = $db->sql($sql, ROW_REGULAR, $keys);
         if ($arr == false || count($arr) == 0) {
             return array();
         }