diff --git a/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueListBase.xml b/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueListBase.xml
index ba78df1c65aee74196f1ac58acb51f333fee0f26..64c446bbb1105ad0a96b68f4d0f66afe3c69c1c4 100644
--- a/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueListBase.xml
+++ b/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueListBase.xml
@@ -140,6 +140,11 @@ try:\n
   kw[\'effective_date\'] = effective_date\n
 \n
   if not all_versions:\n
+    group_by_list = list(kw.get(\'group_by_list\', []))\n
+    if all_languages:\n
+      kw[\'group_by_list\'] = group_by_list + [\'reference\', \'language\']\n
+    else:\n
+      kw[\'group_by_list\'] = group_by_list + [\'reference\',]\n
     return current_section.WebSection_zGetDocumentValueList(language=language,\n
                                                             all_languages=all_languages,\n
                                                             src__=src__,\n
diff --git a/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_zGetDocumentValueList.xml b/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_zGetDocumentValueList.xml
index b967e7516027de8d71b3a3513b2a8733162c66ff..57852473f3ce038fa6ce6930a7ec2607b5ce1564 100644
--- a/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_zGetDocumentValueList.xml
+++ b/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_zGetDocumentValueList.xml
@@ -64,9 +64,7 @@ kw</string> </value>
             <key> <string>src</string> </key>
             <value> <string encoding="cdata"><![CDATA[
 
-<dtml-let query="buildSQLQuery(query=portal_catalog.getSecurityQuery(**kw), **kw)"\n
-          is_translation_order_by="query[\'order_by_expression\'] is not None and\n
-            \'translated_message\' in query[\'order_by_expression\']"\n
+<dtml-let query="buildSQLQuery(query=portal_catalog.getSecurityQuery(**kw), auto_extend_select_list=True, **kw)"\n
           selection_domain="kw.get(\'selection_domain\', None)"\n
           selection_report="kw.get(\'selection_report\', None)">\n
 \n
@@ -76,12 +74,6 @@ kw</string> </value>
     this method should be refactored to use catalog only.\n
 \n
      The subquery is named catalog to prevent use another LEFT JOIN.\n
-\n
-     XXX This query heavily depends on MySQL implementation, \n
-     as it seems that the "GROUP BY reference" returns the first line of the subselect \n
-     (which is the expected one due to "ORDER BY priority DESC").\n
-     But, without any explicit reference of this behaviour in MySQL\n
-     documentation, wrong results may be returned with another MySQL version.\n
   </dtml-comment>\n
 \n
   SELECT\n
@@ -102,9 +94,7 @@ kw</string> </value>
                    WHEN \'en\' THEN \'2\'\n
                    ELSE \'1\' END,\n
                my_versioning.version) AS priority\n
-        <dtml-if is_translation_order_by>\n
-          , related_translation_intermediate.translated_message\n
-        </dtml-if>\n
+        <dtml-if "query[\'select_expression\']">,<dtml-var "query[\'select_expression\']"></dtml-if>\n
       FROM\n
         <dtml-in prefix="table" expr="query[\'from_table_list\']">\n
           <dtml-var table_item> AS <dtml-var table_key>,\n
@@ -116,9 +106,6 @@ kw</string> </value>
           <dtml-var "portal_selections.buildSQLJoinExpressionFromDomainSelection(selection_report)">,\n
         </dtml-if>\n
         versioning AS my_versioning\n
-        <dtml-if is_translation_order_by>\n
-          , translation AS related_translation_intermediate\n
-        </dtml-if>\n
       WHERE\n
         my_versioning.uid = catalog.uid\n
         <dtml-if "query[\'where_expression\']">\n
@@ -134,34 +121,17 @@ kw</string> </value>
         <dtml-else>\n
           AND my_versioning.language IN (<dtml-sqlvar language type="string">, \'\')\n
         </dtml-if>\n
-\n
-        <dtml-if is_translation_order_by>\n
-          AND catalog.validation_state = related_translation_intermediate.original_message\n
-        </dtml-if>\n
 \n
       ORDER BY\n
         priority DESC\n
 \n
     ) AS catalog\n
-  <dtml-if "\'versioning\' in query[\'order_by_expression\'] or all_languages">\n
-    , versioning\n
-    WHERE catalog.uid = versioning.uid\n
-  </dtml-if>\n
 \n
-  <dtml-if all_languages>\n
-    GROUP BY reference, language\n
-  <dtml-else>\n
-    GROUP BY reference\n
+  <dtml-if "query[\'group_by_expression\']">\n
+    GROUP BY <dtml-var "query[\'group_by_expression\']">\n
   </dtml-if>\n
 \n
-  <dtml-if "query[\'order_by_expression\']">\n
-    ORDER BY\n
-    <dtml-if is_translation_order_by>\n
-      translated_message\n
-    <dtml-else>\n
-      <dtml-var "query[\'order_by_expression\']">\n
-    </dtml-if>\n
-  </dtml-if>\n
+  ORDER BY <dtml-var "query[\'order_by_expression\'] or \'priority DESC\'">\n
 \n
   <dtml-if "query[\'limit_expression\']">\n
     LIMIT <dtml-var "query[\'limit_expression\']">\n