diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index c9ec77c76dec57964d8900f5e0203c47bb4d1b79..4e17c62d3f5281e6f679bd5bde566288e6749a0c 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -264,6 +264,8 @@ function GETPOST($paramname, $check='', $method=0, $filter=NULL, $options=NULL)
 {
     global $mysoc,$user,$conf;
     
+    if (empty($paramname)) return 'BadFirstParameterForGETPOST';
+        
     if (empty($method)) $out = isset($_GET[$paramname])?$_GET[$paramname]:(isset($_POST[$paramname])?$_POST[$paramname]:'');
 	elseif ($method==1) $out = isset($_GET[$paramname])?$_GET[$paramname]:'';
 	elseif ($method==2) $out = isset($_POST[$paramname])?$_POST[$paramname]:'';
@@ -279,11 +281,11 @@ function GETPOST($paramname, $check='', $method=0, $filter=NULL, $options=NULL)
     	$relativepathstring = preg_replace('/^\//', '', $relativepathstring);
 	
 	    // Management of default values
-	    if (! isset($_GET['sortfield']) && ! empty($conf->global->MAIN_ENABLE_DEFAULT_VALUES))	// If we did a click on a field to sort, we do no apply default values. Same if option MAIN_DISABLE_DEFAULT_VALUES is on
+	    if (! isset($_GET['sortfield']) && ! empty($conf->global->MAIN_ENABLE_DEFAULT_VALUES))	// If we did a click on a field to sort, we do no apply default values. Same if option MAIN_ENABLE_DEFAULT_VALUES is not set
 	    {
-	        if (! empty($_GET['action']) && $_GET['action'] == 'create' && ! empty($paramname) && ! isset($_GET[$paramname]) && ! isset($_POST[$paramname]))
+	        if (! empty($_GET['action']) && $_GET['action'] == 'create' && ! isset($_GET[$paramname]) && ! isset($_POST[$paramname]))
 	        {
-	            if (! empty($user->default_values))		// $user->default_values defined from menu default values, and values loaded not at first
+	            if (! empty($user->default_values))		// $user->default_values defined from menu default values
 	            {
 	                //var_dump($user->default_values[$relativepathstring]['createform']);
 	                if (isset($user->default_values[$relativepathstring]['createform'][$paramname])) $out = $user->default_values[$relativepathstring]['createform'][$paramname];
@@ -328,11 +330,34 @@ function GETPOST($paramname, $check='', $method=0, $filter=NULL, $options=NULL)
 	            }
 	        }
 	    }
+	    
+	    // Retrieve values into restore_lastsearch_values
+	    if ($_GET['restore_lastsearch_values'])        // Keep $_GET here
+	    {
+	        if (! empty($_SESSION['lastsearch_values_'.$relativepathstring]))
+	        {
+	            $tmp=json_decode($_SESSION['lastsearch_values_'.$relativepathstring], true);
+	            if (is_array($tmp))
+	            {
+    	            foreach($tmp as $key => $val)
+    	            {
+        	           if ($key == $paramname)
+        	           {
+    	                   $out=$val;
+    	                   break;
+        	           }
+    	            }
+	            }
+	        }
+	    }
+	    
 	}	
 	
 	if (empty($check) && ! empty($conf->global->MAIN_FEATURES_LEVEL) && $conf->global->MAIN_FEATURES_LEVEL >= 2)
 	{
 	   dol_syslog("Deprecated use of GETPOST, called with 1st param = ".$paramname." and 2nd param not defined, when calling page ".$_SERVER["PHP_SELF"], LOG_WARNING);    
+	   // Enable this line to know who call the GETPOST with empty $check parameter.
+	   //var_dump(debug_backtrace()[0]);
 	}
 	
 	if (! empty($check))
@@ -423,14 +448,23 @@ function GETPOST($paramname, $check='', $method=0, $filter=NULL, $options=NULL)
 	    }
 	}
 
+    // Code for search criteria persistence.
 	// Save data into session if key start with 'search_' or is 'smonth', 'syear', 'month', 'year'
 	if (empty($method) || $method == 3 || $method == 4)
 	{
 	    //if (preg_match('/^search_/', $paramname) || in_array($paramname, array('sortorder', 'sortfield", 'smonth', 'syear', 'month', 'year')))
 	    if (preg_match('/^search_/', $paramname) || in_array($paramname, array('sortorder','sortfield')))
 	    {
+	        //var_dump($user->default_values[$relativepathstring]);exit;
 	        //if ($paramname == 'sortorder') var_dump($paramname.' - '.$out);
-	        $user->lastsearch_values_tmp[$relativepathstring][$paramname]=$out;
+	        
+	        // We save search key only if:
+	        // - not empty, or
+	        // - if value is empty and a default value exists that is not empty (it means we did a filter to an empty value when default was not).
+	        if (! empty($out) || ! empty($user->default_values[$relativepathstring][$paramname]))
+	        {
+                $user->lastsearch_values_tmp[$relativepathstring][$paramname]=$out;
+	        }
 	    }
 	}
 	
diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php
index 7272eb000d4f547d9a1772c671fd6cafecde5442..3cc9c569120c22f9d51e9800b21de251b7b2a87d 100644
--- a/htdocs/core/menus/standard/auguria.lib.php
+++ b/htdocs/core/menus/standard/auguria.lib.php
@@ -103,6 +103,14 @@ function print_auguria_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$m
 			$url=preg_replace('/__USERID__/',$user->id,$url);
 			$shorturl=preg_replace('/__USERID__/',$user->id,$shorturl);
 
+			// TODO Find a generic solution
+			if (preg_match('/search_project_user=__search_project_user__/', $shorturl))
+			{
+			    $search_project_user = GETPOST('search_project_user','int');
+			    if ($search_project_user) $shorturl=preg_replace('/search_project_user=__search_project_user__/', 'search_project_user='.$search_project_user, $shorturl);
+			    else $shorturl=preg_replace('/search_project_user=__search_project_user__/', '', $shorturl);
+			}
+			
 			// Define the class (top menu selected or not)
 			if (! empty($_SESSION['idmenu']) && $newTabMenu[$i]['rowid'] == $_SESSION['idmenu']) $classname='class="tmenusel"';
 			else if (! empty($_SESSION["mainmenu"]) && $newTabMenu[$i]['mainmenu'] == $_SESSION["mainmenu"]) $classname='class="tmenusel"';
diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php
index 4aa5064977deb106259dea9bd66327f6a881149a..521fd6831f21893d3e43129d96a69950ff08d18f 100644
--- a/htdocs/core/menus/standard/eldy.lib.php
+++ b/htdocs/core/menus/standard/eldy.lib.php
@@ -1299,11 +1299,13 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 			if (! empty($conf->projet->enabled))
 			{
 				$langs->load("projects");
-
+				
+				$search_project_user = GETPOST('search_project_user','int');
+				
 				// Project affected to user
-				$newmenu->add("/projet/index.php?leftmenu=projects&search_project_user=".GETPOST('search_project_user'), $langs->trans("Projects"), 0, $user->rights->projet->lire, '', $mainmenu, 'projects');
-				$newmenu->add("/projet/card.php?leftmenu=projects&action=create&search_project_user=".GETPOST('search_project_user'), $langs->trans("NewProject"), 1, $user->rights->projet->creer);
-				$newmenu->add("/projet/list.php?leftmenu=projects&search_project_user=".GETPOST('search_project_user')."&search_status=99", $langs->trans("List"), 1, $user->rights->projet->lire);
+				$newmenu->add("/projet/index.php?leftmenu=projects".($search_project_user?'&search_project_user='.$search_project_user:''), $langs->trans("Projects"), 0, $user->rights->projet->lire, '', $mainmenu, 'projects');
+				$newmenu->add("/projet/card.php?leftmenu=projects&action=create".($search_project_user?'&search_project_user='.$search_project_user:''), $langs->trans("NewProject"), 1, $user->rights->projet->creer);
+				$newmenu->add("/projet/list.php?leftmenu=projects".($search_project_user?'&search_project_user='.$search_project_user:'')."&search_status=99", $langs->trans("List"), 1, $user->rights->projet->lire);
 
 				// All project i have permission on
 				/*
@@ -1316,10 +1318,10 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				if (empty($conf->global->PROJECT_HIDE_TASKS))
 				{
 					// Project affected to user
-					$newmenu->add("/projet/activity/index.php?leftmenu=tasks&search_project_user=".GETPOST('search_project_user'), $langs->trans("Activities"), 0, $user->rights->projet->lire);
+					$newmenu->add("/projet/activity/index.php?leftmenu=tasks".($search_project_user?'&search_project_user='.$search_project_user:''), $langs->trans("Activities"), 0, $user->rights->projet->lire);
 					$newmenu->add("/projet/tasks.php?leftmenu=tasks&action=create", $langs->trans("NewTask"), 1, $user->rights->projet->creer);
-					$newmenu->add("/projet/tasks/list.php?leftmenu=tasks&search_project_user=".GETPOST('search_project_user'), $langs->trans("List"), 1, $user->rights->projet->lire);
-					$newmenu->add("/projet/activity/perweek.php?leftmenu=tasks&search_project_user=".GETPOST('search_project_user'), $langs->trans("NewTimeSpent"), 1, $user->rights->projet->lire);
+					$newmenu->add("/projet/tasks/list.php?leftmenu=tasks".($search_project_user?'&search_project_user='.$search_project_user:''), $langs->trans("List"), 1, $user->rights->projet->lire);
+					$newmenu->add("/projet/activity/perweek.php?leftmenu=tasks".($search_project_user?'&search_project_user='.$search_project_user:''), $langs->trans("NewTimeSpent"), 1, $user->rights->projet->lire);
 
 					// All project i have permission on
 					/*$newmenu->add("/projet/activity/index.php", $langs->trans("Activities"), 0, $user->rights->projet->lire && $user->rights->projet->lire);
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index d632e91d5379cf7659291c9bf3f8d8a3f41bf460..73f0a8154136a4b8f680b0edbc40acdc7d4d9cd1 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -646,6 +646,7 @@ if (! defined('NOLOGIN'))
 	       // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
 	       $hookmanager->initHooks(array('main'));
 
+	       // Code for search criteria persistence.
 	       if (! empty($_GET['save_lastsearch_values']))    // Keep $_GET here
 	       {
                $relativepathstring = preg_replace('/\?.*$/','',$_SERVER["HTTP_REFERER"]);
@@ -1886,6 +1887,7 @@ if (! function_exists("llxFooter"))
         // Global html output events ($mesgs, $errors, $warnings)
         dol_htmloutput_events();
 
+        // Code for search criteria persistence.
         // Save $user->lastsearch_values if defined (define on list pages when a form field search_xxx exists)
         if (is_object($user) && ! empty($user->lastsearch_values_tmp) && is_array($user->lastsearch_values_tmp))
         {
@@ -1897,7 +1899,7 @@ if (! function_exists("llxFooter"))
                 {
                     if (empty($val['sortfield'])) unset($val['sortfield']);
                     if (empty($val['sortorder'])) unset($val['sortorder']);
-                    dol_syslog('Save lastsearch_values_tmp_'.$key.'='.json_encode($val, 0, 1));
+                    dol_syslog('Save lastsearch_values_tmp_'.$key.'='.json_encode($val, 0, 1)." (systematic recording of last search criteria)");
                     $_SESSION['lastsearch_values_tmp_'.$key]=json_encode($val);
                     unset($_SESSION['lastsearch_values_'.$key]);
                 }
diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php
index 47d0f1c3148073a19c163c89f1b38e6a36ab2d13..f6355ec556698199563d3d394a1a50d04a2e14df 100644
--- a/htdocs/projet/card.php
+++ b/htdocs/projet/card.php
@@ -837,7 +837,7 @@ elseif ($object->id > 0)
     {
         // Project card
         
-        $linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php">'.$langs->trans("BackToList").'</a>';
+        $linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
         
         $morehtmlref='<div class="refidno">';
         // Title
diff --git a/htdocs/projet/contact.php b/htdocs/projet/contact.php
index e843d4951e4f146cda9674ad6aceb8042641d037..72b82ac2bb0c8273273685677a09c60bcd7bf7fa 100644
--- a/htdocs/projet/contact.php
+++ b/htdocs/projet/contact.php
@@ -151,7 +151,7 @@ if ($id > 0 || ! empty($ref))
 
     // Project card
     
-    $linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php">'.$langs->trans("BackToList").'</a>';
+    $linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
     
     $morehtmlref='<div class="refidno">';
     // Title
diff --git a/htdocs/projet/document.php b/htdocs/projet/document.php
index 2d5a6cd71d028aa6d8bbf74e80a8f56ee030d892..21dd30f560c55dedf7075cafe75f6eae58d71471 100644
--- a/htdocs/projet/document.php
+++ b/htdocs/projet/document.php
@@ -109,7 +109,7 @@ if ($object->id > 0)
 	
 	// Project card
 	
-	$linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php">'.$langs->trans("BackToList").'</a>';
+	$linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
 	
 	$morehtmlref='<div class="refidno">';
 	// Title
diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php
index 8aebe756d70934d1e4888a89f794208de7d994d0..f745c71d76152be58860241602bc77ba72fb7260 100644
--- a/htdocs/projet/element.php
+++ b/htdocs/projet/element.php
@@ -128,7 +128,7 @@ dol_fiche_head($head, 'element', $langs->trans("Project"), -1, ($object->public?
 
 // Project card
 
-$linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php">'.$langs->trans("BackToList").'</a>';
+$linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
 
 $morehtmlref='<div class="refidno">';
 // Title
diff --git a/htdocs/projet/ganttview.php b/htdocs/projet/ganttview.php
index 36fbfccca775e95a85467ede4656b2a4e582bca7..7ec9dcf1a4b2585d29795d920e712fa049da54bd 100644
--- a/htdocs/projet/ganttview.php
+++ b/htdocs/projet/ganttview.php
@@ -102,7 +102,7 @@ if ($id > 0 || ! empty($ref))
 
     // Project card
     
-    $linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php">'.$langs->trans("BackToList").'</a>';
+    $linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
     
     $morehtmlref='<div class="refidno">';
     // Title
diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php
index 8295e106be99eb940e0c63a76b09a0565a9a4280..c7f0181dbf5c18831ecac931644a6281be652848 100644
--- a/htdocs/projet/index.php
+++ b/htdocs/projet/index.php
@@ -33,7 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
 $langs->load("projects");
 $langs->load("companies");
 
-$mine = GETPOST('mode')=='mine' ? 1 : 0;
+$mine = GETPOST('mode','aZ09')=='mine' ? 1 : 0;
 $search_project_user = GETPOST('search_project_user','int');
 
 // Security check
diff --git a/htdocs/projet/info.php b/htdocs/projet/info.php
index 3206fd51244ed76dacab3c827bfae6f554bb847d..74015626b9ecc017bd94333ae6a89a052d0d103a 100644
--- a/htdocs/projet/info.php
+++ b/htdocs/projet/info.php
@@ -112,7 +112,7 @@ dol_fiche_head($head, 'agenda', $langs->trans("Project"), -1, ($object->public?'
 
 // Project card
 
-$linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php">'.$langs->trans("BackToList").'</a>';
+$linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
 
 $morehtmlref='<div class="refidno">';
 // Title
diff --git a/htdocs/projet/note.php b/htdocs/projet/note.php
index 9a73e4816666476d7b6163980dcce86560f62822..88217fbfb1c480cebcd22641357f69e122141d0b 100644
--- a/htdocs/projet/note.php
+++ b/htdocs/projet/note.php
@@ -30,7 +30,7 @@ $langs->load('projects');
 
 $action=GETPOST('action','aZ09');
 $id = GETPOST('id','int');
-$ref= GETPOST('ref');
+$ref= GETPOST('ref','alpha');
 
 $mine = $_REQUEST['mode']=='mine' ? 1 : 0;
 //if (! $user->rights->projet->all->lire) $mine=1;	// Special for projects
@@ -82,7 +82,7 @@ if ($id > 0 || ! empty($ref))
 	
 	// Project card
 	
-	$linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php">'.$langs->trans("BackToList").'</a>';
+	$linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
 	
 	$morehtmlref='<div class="refidno">';
 	// Title
diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php
index e8a949f3191e1c082c0c89d152dc80a7b83918a6..85fa0f640e9cece845dcb09f3e4176e3e4f28c1d 100644
--- a/htdocs/projet/tasks.php
+++ b/htdocs/projet/tasks.php
@@ -225,7 +225,7 @@ if ($id > 0 || ! empty($ref))
 
     // Project card
     
-    $linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php">'.$langs->trans("BackToList").'</a>';
+    $linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
     
     $morehtmlref='<div class="refidno">';
     // Title