diff --git a/htdocs/admin/tools/export.php b/htdocs/admin/tools/export.php
index 224ca245734ab0f3efa4a1b00823e1f2cb644921..b827fe887379de3b4c06947de8dbf2695a9fbe66 100644
--- a/htdocs/admin/tools/export.php
+++ b/htdocs/admin/tools/export.php
@@ -25,6 +25,7 @@
 require '../../main.inc.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/utils.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
 
 $langs->load("admin");
@@ -111,175 +112,34 @@ $outputdir  = $conf->admin->dir_output.'/backup';
 $result=dol_mkdir($outputdir);
 
 
+$utils = new Utils($db);
+
+
 // MYSQL
 if ($what == 'mysql')
 {
+    
     $cmddump=GETPOST("mysqldump");	// Do not sanitize here with 'alpha', will be sanitize later by escapeshellarg
     if ($cmddump)
     {
         dolibarr_set_const($db, 'SYSTEMTOOLS_MYSQLDUMP', $cmddump,'chaine',0,'',$conf->entity);
     }
 
-    $outputfile = $outputdir.'/'.$file;
-    // for compression format, we add extension
-    $compression=GETPOST('compression') ? GETPOST('compression','alpha') : 'none';
-    if ($compression == 'gz') $outputfile.='.gz';
-    if ($compression == 'bz') $outputfile.='.bz2';
-    $outputerror = $outputfile.'.err';
-    dol_mkdir($conf->admin->dir_output.'/backup');
-
-    // Parameteres execution
-    $command=$cmddump;
-    if (preg_match("/\s/",$command)) $command=escapeshellarg($command);	// Use quotes on command
-
-    //$param=escapeshellarg($dolibarr_main_db_name)." -h ".escapeshellarg($dolibarr_main_db_host)." -u ".escapeshellarg($dolibarr_main_db_user)." -p".escapeshellarg($dolibarr_main_db_pass);
-    $param=$dolibarr_main_db_name." -h ".$dolibarr_main_db_host;
-    $param.=" -u ".$dolibarr_main_db_user;
-    if (! empty($dolibarr_main_db_port)) $param.=" -P ".$dolibarr_main_db_port;
-    if (! GETPOST("use_transaction"))    $param.=" -l --single-transaction";
-    if (GETPOST("disable_fk"))           $param.=" -K";
-    if (GETPOST("sql_compat") && GETPOST("sql_compat") != 'NONE') $param.=" --compatible=".escapeshellarg(GETPOST("sql_compat","alpha"));
-    if (GETPOST("drop_database"))        $param.=" --add-drop-database";
-    if (GETPOST("sql_structure"))
-    {
-        if (GETPOST("drop"))			$param.=" --add-drop-table=TRUE";
-        else 							$param.=" --add-drop-table=FALSE";
-    }
-    else
-    {
-        $param.=" -t";
-    }
-    if (GETPOST("disable-add-locks")) $param.=" --add-locks=FALSE";
-    if (GETPOST("sql_data"))
-    {
-        $param.=" --tables";
-        if (GETPOST("showcolumns"))	 $param.=" -c";
-        if (GETPOST("extended_ins")) $param.=" -e";
-        else $param.=" --skip-extended-insert";
-        if (GETPOST("delayed"))	 	 $param.=" --delayed-insert";
-        if (GETPOST("sql_ignore"))	 $param.=" --insert-ignore";
-        if (GETPOST("hexforbinary")) $param.=" --hex-blob";
-    }
-    else
-    {
-        $param.=" -d";    // No row information (no data)
-    }
-    $param.=" --default-character-set=utf8";    // We always save output into utf8 charset
-    $paramcrypted=$param;
-    $paramclear=$param;
-    if (! empty($dolibarr_main_db_pass))
-    {
-        $paramcrypted.=' -p"'.preg_replace('/./i','*',$dolibarr_main_db_pass).'"';
-        $paramclear.=' -p"'.str_replace(array('"','`'),array('\"','\`'),$dolibarr_main_db_pass).'"';
-    }
-
-    $_SESSION["commandbackuplastdone"]=$command." ".$paramcrypted;
-    $_SESSION["commandbackuptorun"]="";
-    /*
-    print '<b>'.$langs->trans("RunCommandSummary").':</b><br>'."\n";
-    print '<textarea rows="'.ROWS_2.'" cols="120">'.$command." ".$paramcrypted.'</textarea><br>'."\n";
-    print '<br>';
-
-    //print $paramclear;
-
-    // Now run command and show result
-    print '<b>'.$langs->trans("BackupResult").':</b> ';
-	*/
-
-    $errormsg='';
-
-    // Debut appel methode execution
-    $fullcommandcrypted=$command." ".$paramcrypted." 2>&1";
-    $fullcommandclear=$command." ".$paramclear." 2>&1";
-    if ($compression == 'none') $handle = fopen($outputfile, 'w');
-    if ($compression == 'gz')   $handle = gzopen($outputfile, 'w');
-    if ($compression == 'bz')   $handle = bzopen($outputfile, 'w');
-
-    if ($handle)
-    {
-        $ok=0;
-        dol_syslog("Run command ".$fullcommandcrypted);
-        $handlein = popen($fullcommandclear, 'r');
-        $i=0;
-        while (!feof($handlein))
-        {
-            $i++;   // output line number
-            $read = fgets($handlein);
-            if ($i == 1 && preg_match('/'.preg_quote('Warning: Using a password').'/i', $read)) continue;
-            fwrite($handle,$read);
-            if (preg_match('/'.preg_quote('-- Dump completed').'/i',$read)) $ok=1;
-            elseif (preg_match('/'.preg_quote('SET SQL_NOTES=@OLD_SQL_NOTES').'/i',$read)) $ok=1;
-        }
-        pclose($handlein);
-
-        if ($compression == 'none') fclose($handle);
-        if ($compression == 'gz')   gzclose($handle);
-        if ($compression == 'bz')   bzclose($handle);
-
-        if (! empty($conf->global->MAIN_UMASK))
-        @chmod($outputfile, octdec($conf->global->MAIN_UMASK));
-    }
-    else
-    {
-        $langs->load("errors");
-        dol_syslog("Failed to open file ".$outputfile,LOG_ERR);
-        $errormsg=$langs->trans("ErrorFailedToWriteInDir");
-    }
-
-    // Get errorstring
-    if ($compression == 'none') $handle = fopen($outputfile, 'r');
-    if ($compression == 'gz')   $handle = gzopen($outputfile, 'r');
-    if ($compression == 'bz')   $handle = bzopen($outputfile, 'r');
-    if ($handle)
-    {
-        // Get 2048 first chars of error message.
-        $errormsg = fgets($handle,2048);
-        // Close file
-        if ($compression == 'none') fclose($handle);
-        if ($compression == 'gz')   gzclose($handle);
-        if ($compression == 'bz')   bzclose($handle);
-        if ($ok && preg_match('/^-- MySql/i',$errormsg)) $errormsg='';	// Pas erreur
-        else
-        {
-            // Renommer fichier sortie en fichier erreur
-            //print "$outputfile -> $outputerror";
-            @dol_delete_file($outputerror,1);
-            @rename($outputfile,$outputerror);
-            // Si safe_mode on et command hors du parametre exec, on a un fichier out vide donc errormsg vide
-            if (! $errormsg)
-            {
-            	$langs->load("errors");
-            	$errormsg=$langs->trans("ErrorFailedToRunExternalCommand");
-            }
-        }
-    }
-    // Fin execution commande
+    $utils->dumpDatabase(GETPOST('compression','alpha'), $what, 0, $file);
+    
+    $errormsg=$utils->error;
+    $_SESSION["commandbackuplastdone"]=$utils->result['commandbackuplastdone'];
+    $_SESSION["commandbackuptorun"]=$utils->result['commandbackuptorun'];
 }
 
+// MYSQL NO BIN
 if ($what == 'mysqlnobin')
 {
-    $outputfile = $outputdir.'/'.$file;
-    $outputfiletemp = $outputfile.'-TMP.sql';
-    // for compression format, we add extension
-    $compression=GETPOST('compression') ? GETPOST('compression','alpha') : 'none';
-    if ($compression == 'gz') $outputfile.='.gz';
-    if ($compression == 'bz') $outputfile.='.bz2';
-    $outputerror = $outputfile.'.err';
-    dol_mkdir($conf->admin->dir_output.'/backup');
-
-    if ($compression == 'gz' or $compression == 'bz')
-    {
-        backup_tables($outputfiletemp);
-        dol_compress_file($outputfiletemp, $outputfile, $compression);
-        unlink($outputfiletemp);
-    }
-    else
-    {
-        backup_tables($outputfile);
-    }
+    $utils->dumpDatabase(GETPOST('compression','alpha'), $what, 0, $file);
 
-    $_SESSION["commandbackuplastdone"]="";
-    $_SESSION["commandbackuptorun"]="";
+    $errormsg=$utils->error;
+    $_SESSION["commandbackuplastdone"]=$utils->result['commandbackuplastdone'];
+    $_SESSION["commandbackuptorun"]=$utils->result['commandbackuptorun'];
 }
 
 // POSTGRESQL
@@ -291,65 +151,13 @@ if ($what == 'postgresql')
         dolibarr_set_const($db, 'SYSTEMTOOLS_POSTGRESQLDUMP', $cmddump,'chaine',0,'',$conf->entity);
     }
 
-    $outputfile = $outputdir.'/'.$file;
-    // for compression format, we add extension
-    $compression=GETPOST('compression') ? GETPOST('compression','alpha') : 'none';
-    if ($compression == 'gz') $outputfile.='.gz';
-    if ($compression == 'bz') $outputfile.='.bz2';
-    $outputerror = $outputfile.'.err';
-    dol_mkdir($conf->admin->dir_output.'/backup');
-
-    // Parameteres execution
-    $command=$cmddump;
-    if (preg_match("/\s/",$command)) $command=escapeshellarg($command);	// Use quotes on command
-
-    //$param=escapeshellarg($dolibarr_main_db_name)." -h ".escapeshellarg($dolibarr_main_db_host)." -u ".escapeshellarg($dolibarr_main_db_user)." -p".escapeshellarg($dolibarr_main_db_pass);
-    //$param="-F c";
-    $param="-F p";
-    $param.=" --no-tablespaces --inserts -h ".$dolibarr_main_db_host;
-    $param.=" -U ".$dolibarr_main_db_user;
-    if (! empty($dolibarr_main_db_port)) $param.=" -p ".$dolibarr_main_db_port;
-    if (GETPOST("sql_compat") && GETPOST("sql_compat") == 'ANSI') $param.="  --disable-dollar-quoting";
-    if (GETPOST("drop_database"))        $param.=" -c -C";
-    if (GETPOST("sql_structure"))
-    {
-        if (GETPOST("drop"))			 $param.=" --add-drop-table";
-        if (! GETPOST("sql_data"))       $param.=" -s";
-    }
-    if (GETPOST("sql_data"))
-    {
-        if (! GETPOST("sql_structure"))	 $param.=" -a";
-        if (GETPOST("showcolumns"))	     $param.=" -c";
-    }
-    $param.=' -f "'.$outputfile.'"';
-    //if ($compression == 'none')
-    if ($compression == 'gz')   $param.=' -Z 9';
-    //if ($compression == 'bz')
-    $paramcrypted=$param;
-    $paramclear=$param;
-    /*if (! empty($dolibarr_main_db_pass))
-     {
-    $paramcrypted.=" -W".preg_replace('/./i','*',$dolibarr_main_db_pass);
-    $paramclear.=" -W".$dolibarr_main_db_pass;
-    }*/
-    $paramcrypted.=" -w ".$dolibarr_main_db_name;
-    $paramclear.=" -w ".$dolibarr_main_db_name;
-
-    $_SESSION["commandbackuplastdone"]="";
-    $_SESSION["commandbackuptorun"]=$command." ".$paramcrypted;
-    /*print $langs->trans("RunCommandSummaryToLaunch").':<br>'."\n";
-    print '<textarea rows="'.ROWS_3.'" cols="120">'.$command." ".$paramcrypted.'</textarea><br>'."\n";
-
-    print '<br>';
-
-
-    // Now show to ask to run command
-    print $langs->trans("YouMustRunCommandFromCommandLineAfterLoginToUser",$dolibarr_main_db_user,$dolibarr_main_db_user);
-
-    print '<br>';
-    print '<br>';*/
-
-    $what='';
+    $utils->dumpDatabase(GETPOST('compression','alpha'), $what, 0, $file);
+    
+    $errormsg=$utils->error;
+    $_SESSION["commandbackuplastdone"]=$utils->result['commandbackuplastdone'];
+    $_SESSION["commandbackuptorun"]=$utils->result['commandbackuptorun'];
+
+    $what='';   // Clear to show message to run command
 }
 
 
diff --git a/htdocs/core/class/utils.class.php b/htdocs/core/class/utils.class.php
index 59cbbecd6b24b0b8bbf36c1b0f0e53dfe45a5f81..dd4096c525786b0220176d7a3731a74256f795e0 100644
--- a/htdocs/core/class/utils.class.php
+++ b/htdocs/core/class/utils.class.php
@@ -29,6 +29,9 @@ class Utils
 {
 	var $db;
 	
+	var $output;   // Used by Cron method to return message
+	var $result;   // Used by Cron method to return data
+	
 	/**
 	 *	Constructor
 	 *
@@ -42,6 +45,7 @@ class Utils
 
 	/**
 	 *  Purge files into directory of data files.
+	 *  CAN BE A CRON TASK
 	 *
 	 *  @param	string		$choice		Choice of purge mode ('tempfiles', 'tempfilesold' to purge temp older than 24h, 'allfiles', 'logfiles')
 	 *  @return	int						0 if OK, < 0 if KO (this function is used also by cron so only 0 is OK) 
@@ -132,4 +136,275 @@ class Utils
 		//return $count;
 		return 0;     // This function can be called by cron so must return 0 if OK
 	}
+	
+
+	/**
+	 *  Make a backup of database
+	 *  CAN BE A CRON TASK
+	 *
+	 *  @param	string		$compression	   'gz' or 'bz' or 'none'
+	 *  @param  string      $type              'mysql', 'postgresql', ...
+	 *  @param  int         $usedefault        1=Use default backup profile (Set this to 1 when used as cron)
+	 *  @param  string      $file              'auto' or filename to build
+	 *  @return	int						       0 if OK, < 0 if KO (this function is used also by cron so only 0 is OK) 
+	 */
+	function dumpDatabase($compression='none', $type='auto', $usedefault=1, $file='auto')
+	{
+		global $db, $conf, $langs, $dolibarr_main_data_root;
+		global $dolibarr_main_db_name, $dolibarr_main_db_host, $dolibarr_main_db_user, $dolibarr_main_db_port, $dolibarr_main_db_pass;
+		
+		$langs->load("admin");
+		
+		dol_syslog("Utils::dumpDatabase type=".$type." compression=".$compression." file=".$file, LOG_DEBUG);
+		require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
+
+		// Check compression parameter
+		if (! in_array($compression, array('none', 'gz', 'bz', 'zip')))
+		{
+		    $langs->load("errors");
+		    $this->error=$langs->transnoentitiesnoconv("ErrorBadValueForParameter", $compression, "Compression");
+		    return -1;
+		}
+
+		// Check type parameter
+		if ($type == 'auto') $type = $db->type;
+		if (! in_array($type, array('pgsql', 'mysql', 'mysqli')))
+		{
+		    $langs->load("errors");
+		    $this->error=$langs->transnoentitiesnoconv("ErrorBadValueForParameter", $type, "Basetype");
+		    return -1;
+		}
+
+		// Check file parameter
+		if ($file == 'auto')
+		{
+		    $prefix='dump';
+		    $ext='.sql';
+		    if (in_array($type, array('mysql', 'mysqli')))  { $prefix='mysqldump'; $ext='sql'; }
+		    //if ($label == 'PostgreSQL') { $prefix='pg_dump'; $ext='dump'; }
+		    if (in_array($type, array('pgsql'))) { $prefix='pg_dump'; $ext='sql'; }
+		    $file=$prefix.'_'.$dolibarr_main_db_name.'_'.dol_sanitizeFileName(DOL_VERSION).'_'.strftime("%Y%m%d%H%M").'.'.$ext;
+		}
+
+		$outputdir  = $conf->admin->dir_output.'/backup';
+		$result=dol_mkdir($outputdir);
+		
+
+		// MYSQL
+		if ($type == 'mysql' || $type == 'mysqli')
+		{
+		    $cmddump=$conf->global->SYSTEMTOOLS_MYSQLDUMP;
+		
+		
+		    $outputfile = $outputdir.'/'.$file;
+		    // for compression format, we add extension
+		    $compression=$compression ? $compression : 'none';
+		    if ($compression == 'gz') $outputfile.='.gz';
+		    if ($compression == 'bz') $outputfile.='.bz2';
+		    $outputerror = $outputfile.'.err';
+		    dol_mkdir($conf->admin->dir_output.'/backup');
+		
+		    // Parameteres execution
+		    $command=$cmddump;
+		    if (preg_match("/\s/",$command)) $command=escapeshellarg($command);	// Use quotes on command
+		
+		    //$param=escapeshellarg($dolibarr_main_db_name)." -h ".escapeshellarg($dolibarr_main_db_host)." -u ".escapeshellarg($dolibarr_main_db_user)." -p".escapeshellarg($dolibarr_main_db_pass);
+		    $param=$dolibarr_main_db_name." -h ".$dolibarr_main_db_host;
+		    $param.=" -u ".$dolibarr_main_db_user;
+		    if (! empty($dolibarr_main_db_port)) $param.=" -P ".$dolibarr_main_db_port;
+		    if (! GETPOST("use_transaction"))    $param.=" -l --single-transaction";
+		    if (GETPOST("disable_fk") || $usedefault) $param.=" -K";
+		    if (GETPOST("sql_compat") && GETPOST("sql_compat") != 'NONE') $param.=" --compatible=".escapeshellarg(GETPOST("sql_compat","alpha"));
+		    if (GETPOST("drop_database"))        $param.=" --add-drop-database";
+		    if (GETPOST("sql_structure") || $usedefault)
+		    {
+		        if (GETPOST("drop") || $usedefault)	$param.=" --add-drop-table=TRUE";
+		        else 							    $param.=" --add-drop-table=FALSE";
+		    }
+		    else
+		    {
+		        $param.=" -t";
+		    }
+		    if (GETPOST("disable-add-locks")) $param.=" --add-locks=FALSE";
+		    if (GETPOST("sql_data") || $usedefault)
+		    {
+		        $param.=" --tables";
+		        if (GETPOST("showcolumns") || $usedefault)	 $param.=" -c";
+		        if (GETPOST("extended_ins") || $usedefault) $param.=" -e";
+		        else $param.=" --skip-extended-insert";
+		        if (GETPOST("delayed"))	 	 $param.=" --delayed-insert";
+		        if (GETPOST("sql_ignore"))	 $param.=" --insert-ignore";
+		        if (GETPOST("hexforbinary") || $usedefault) $param.=" --hex-blob";
+		    }
+		    else
+		    {
+		        $param.=" -d";    // No row information (no data)
+		    }
+		    $param.=" --default-character-set=utf8";    // We always save output into utf8 charset
+		    $paramcrypted=$param;
+		    $paramclear=$param;
+		    if (! empty($dolibarr_main_db_pass))
+		    {
+		        $paramcrypted.=' -p"'.preg_replace('/./i','*',$dolibarr_main_db_pass).'"';
+		        $paramclear.=' -p"'.str_replace(array('"','`'),array('\"','\`'),$dolibarr_main_db_pass).'"';
+		    }
+		
+		    $errormsg='';
+		
+		    // Debut appel methode execution
+		    $fullcommandcrypted=$command." ".$paramcrypted." 2>&1";
+		    $fullcommandclear=$command." ".$paramclear." 2>&1";
+		    if ($compression == 'none') $handle = fopen($outputfile, 'w');
+		    if ($compression == 'gz')   $handle = gzopen($outputfile, 'w');
+		    if ($compression == 'bz')   $handle = bzopen($outputfile, 'w');
+		
+		    if ($handle)
+		    {
+		        $ok=0;
+		        dol_syslog("Run command ".$fullcommandcrypted);
+		        $handlein = popen($fullcommandclear, 'r');
+		        $i=0;
+		        while (!feof($handlein))
+		        {
+		            $i++;   // output line number
+		            $read = fgets($handlein);
+		            if ($i == 1 && preg_match('/'.preg_quote('Warning: Using a password').'/i', $read)) continue;
+		            fwrite($handle,$read);
+		            if (preg_match('/'.preg_quote('-- Dump completed').'/i',$read)) $ok=1;
+		            elseif (preg_match('/'.preg_quote('SET SQL_NOTES=@OLD_SQL_NOTES').'/i',$read)) $ok=1;
+		        }
+		        pclose($handlein);
+		
+		        if ($compression == 'none') fclose($handle);
+		        if ($compression == 'gz')   gzclose($handle);
+		        if ($compression == 'bz')   bzclose($handle);
+		
+		        if (! empty($conf->global->MAIN_UMASK))
+		            @chmod($outputfile, octdec($conf->global->MAIN_UMASK));
+		    }
+		    else
+		    {
+		        $langs->load("errors");
+		        dol_syslog("Failed to open file ".$outputfile,LOG_ERR);
+		        $errormsg=$langs->trans("ErrorFailedToWriteInDir");
+		    }
+		
+		    // Get errorstring
+		    if ($compression == 'none') $handle = fopen($outputfile, 'r');
+		    if ($compression == 'gz')   $handle = gzopen($outputfile, 'r');
+		    if ($compression == 'bz')   $handle = bzopen($outputfile, 'r');
+		    if ($handle)
+		    {
+		        // Get 2048 first chars of error message.
+		        $errormsg = fgets($handle,2048);
+		        // Close file
+		        if ($compression == 'none') fclose($handle);
+		        if ($compression == 'gz')   gzclose($handle);
+		        if ($compression == 'bz')   bzclose($handle);
+		        if ($ok && preg_match('/^-- MySql/i',$errormsg)) $errormsg='';	// Pas erreur
+		        else
+		        {
+		            // Renommer fichier sortie en fichier erreur
+		            //print "$outputfile -> $outputerror";
+		            @dol_delete_file($outputerror,1);
+		            @rename($outputfile,$outputerror);
+		            // Si safe_mode on et command hors du parametre exec, on a un fichier out vide donc errormsg vide
+		            if (! $errormsg)
+		            {
+		                $langs->load("errors");
+		                $errormsg=$langs->trans("ErrorFailedToRunExternalCommand");
+		            }
+		        }
+		    }
+		    // Fin execution commande
+		
+		    $this->output = $errormsg;
+		    $this->error = $errormsg;
+		    $this->result = array("commandbackuplastdone" => $command." ".$paramcrypted, "commandbackuptorun" => "");
+		    //if (empty($this->output)) $this->output=$this->result['commandbackuplastdone'];
+		}
+		
+		// MYSQL NO BIN
+		if ($type == 'mysqlnobin')
+		{
+		    $outputfile = $outputdir.'/'.$file;
+		    $outputfiletemp = $outputfile.'-TMP.sql';
+		    // for compression format, we add extension
+		    $compression=$compression ? $compression : 'none';
+		    if ($compression == 'gz') $outputfile.='.gz';
+		    if ($compression == 'bz') $outputfile.='.bz2';
+		    $outputerror = $outputfile.'.err';
+		    dol_mkdir($conf->admin->dir_output.'/backup');
+		
+		    if ($compression == 'gz' or $compression == 'bz')
+		    {
+		        backup_tables($outputfiletemp);
+		        dol_compress_file($outputfiletemp, $outputfile, $compression);
+		        unlink($outputfiletemp);
+		    }
+		    else
+		    {
+		        backup_tables($outputfile);
+		    }
+		
+		    $this->output = "";
+		    $this->result = array("commandbackuplastdone" => "", "commandbackuptorun" => "");
+		}
+		
+		// POSTGRESQL
+		if ($type == 'postgresql')
+		{
+		    $cmddump=$conf->global->SYSTEMTOOLS_POSTGRESQLDUMP;
+		    
+		    $outputfile = $outputdir.'/'.$file;
+		    // for compression format, we add extension
+		    $compression=$compression ? $compression : 'none';
+		    if ($compression == 'gz') $outputfile.='.gz';
+		    if ($compression == 'bz') $outputfile.='.bz2';
+		    $outputerror = $outputfile.'.err';
+		    dol_mkdir($conf->admin->dir_output.'/backup');
+		
+		    // Parameteres execution
+		    $command=$cmddump;
+		    if (preg_match("/\s/",$command)) $command=escapeshellarg($command);	// Use quotes on command
+		
+		    //$param=escapeshellarg($dolibarr_main_db_name)." -h ".escapeshellarg($dolibarr_main_db_host)." -u ".escapeshellarg($dolibarr_main_db_user)." -p".escapeshellarg($dolibarr_main_db_pass);
+		    //$param="-F c";
+		    $param="-F p";
+		    $param.=" --no-tablespaces --inserts -h ".$dolibarr_main_db_host;
+		    $param.=" -U ".$dolibarr_main_db_user;
+		    if (! empty($dolibarr_main_db_port)) $param.=" -p ".$dolibarr_main_db_port;
+		    if (GETPOST("sql_compat") && GETPOST("sql_compat") == 'ANSI') $param.="  --disable-dollar-quoting";
+		    if (GETPOST("drop_database"))        $param.=" -c -C";
+		    if (GETPOST("sql_structure"))
+		    {
+		        if (GETPOST("drop"))			 $param.=" --add-drop-table";
+		        if (! GETPOST("sql_data"))       $param.=" -s";
+		    }
+		    if (GETPOST("sql_data"))
+		    {
+		        if (! GETPOST("sql_structure"))	 $param.=" -a";
+		        if (GETPOST("showcolumns"))	     $param.=" -c";
+		    }
+		    $param.=' -f "'.$outputfile.'"';
+		    //if ($compression == 'none')
+		    if ($compression == 'gz')   $param.=' -Z 9';
+		    //if ($compression == 'bz')
+		    $paramcrypted=$param;
+		    $paramclear=$param;
+		    /*if (! empty($dolibarr_main_db_pass))
+		     {
+		     $paramcrypted.=" -W".preg_replace('/./i','*',$dolibarr_main_db_pass);
+		     $paramclear.=" -W".$dolibarr_main_db_pass;
+		     }*/
+		    $paramcrypted.=" -w ".$dolibarr_main_db_name;
+		    $paramclear.=" -w ".$dolibarr_main_db_name;
+
+		    $this->output = "";
+		    $this->result = array("commandbackuplastdone" => "", "commandbackuptorun" => $command." ".$paramcrypted);
+		}
+		
+		
+		return 0;
+	}
 }
diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php
index 8ac2f573f5539c27c6884ff76b836403443c8d92..fc9f503ca83fba6e7c78808948abab1390a8a31a 100644
--- a/htdocs/core/modules/DolibarrModules.class.php
+++ b/htdocs/core/modules/DolibarrModules.class.php
@@ -982,7 +982,7 @@ class DolibarrModules           // Can not be abstract, because we need to insta
                 $unitfrequency = isset($this->cronjobs[$key]['unitfrequency'])?$this->cronjobs[$key]['unitfrequency']:'';
                 $status = isset($this->cronjobs[$key]['status'])?$this->cronjobs[$key]['status']:'';
                 $priority = isset($this->cronjobs[$key]['priority'])?$this->cronjobs[$key]['priority']:'';
-                $test = isset($this->cronjobs[$key]['test'])?$this->cronjobs[$key]['test']:'';
+                $test = isset($this->cronjobs[$key]['test'])?$this->cronjobs[$key]['test']:'';                              // Line must be visible
                 
                 // Search if boxes def already present
                 $sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."cronjob";
diff --git a/htdocs/core/modules/modCron.class.php b/htdocs/core/modules/modCron.class.php
index 10f2fa699481bf68fea8d18c675d28bc00438985..89a90dfc8bd0230377ab04e419304c0701632d8c 100644
--- a/htdocs/core/modules/modCron.class.php
+++ b/htdocs/core/modules/modCron.class.php
@@ -101,8 +101,8 @@ class modCron extends DolibarrModules
 
 		// Cronjobs
 		$this->cronjobs = array(
-			0=>array('label'=>'PurgeDeleteTemporaryFilesShort', 'jobtype'=>'method', 'class'=>'core/class/utils.class.php', 'objectname'=>'Utils', 'method'=>'purgeFiles', 'parameters'=>'', 'comment'=>'PurgeDeleteTemporaryFiles', 'frequency'=>1, 'unitfrequency'=>3600 * 24 * 7, 'priority'=>10, 'status'=>1, 'test'=>'1'),
-			1=>array('label'=>'MakeLocalDatabaseDumpShort', 'jobtype'=>'method', 'class'=>'core/class/utils.class.php', 'objectname'=>'Utils', 'method'=>'dumpDatabase', 'parameters'=>'', 'comment'=>'MakeLocalDatabaseDump', 'frequency'=>1, 'unitfrequency'=>3600 * 24 * 7, 'priority'=>20, 'status'=>0, 'test'=>'0'),
+			0=>array('label'=>'PurgeDeleteTemporaryFilesShort', 'jobtype'=>'method', 'class'=>'core/class/utils.class.php', 'objectname'=>'Utils', 'method'=>'purgeFiles', 'parameters'=>'', 'comment'=>'PurgeDeleteTemporaryFiles', 'frequency'=>1, 'unitfrequency'=>3600 * 24 * 7, 'priority'=>10, 'status'=>1, 'test'=>true),
+			1=>array('label'=>'MakeLocalDatabaseDumpShort', 'jobtype'=>'method', 'class'=>'core/class/utils.class.php', 'objectname'=>'Utils', 'method'=>'dumpDatabase', 'parameters'=>'none', 'comment'=>'MakeLocalDatabaseDump', 'frequency'=>1, 'unitfrequency'=>3600 * 24 * 7, 'priority'=>20, 'status'=>0, 'test'=>in_array($db->type, array('mysql','mysqli'))),
 		    // 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>1, 'unitfrequency'=>3600*24)
 		);
 		
diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang
index f754c933b398de30d1b303140c17761b0414b2ac..c69c49c793abca4dda03be2815fe3785f9b5a812 100755
--- a/htdocs/langs/en_US/errors.lang
+++ b/htdocs/langs/en_US/errors.lang
@@ -34,7 +34,7 @@ ErrorBadSupplierCodeSyntax=Bad syntax for supplier code
 ErrorSupplierCodeRequired=Supplier code required
 ErrorSupplierCodeAlreadyUsed=Supplier code already used
 ErrorBadParameters=Bad parameters
-ErrorBadValueForParameter=Wrong value '%s' for parameter incorrect '%s'
+ErrorBadValueForParameter=Wrong value '%s' for parameter '%s'
 ErrorBadImageFormat=Image file has not a supported format (Your PHP does not support functions to convert images of this format)
 ErrorBadDateFormat=Value '%s' has wrong date format
 ErrorWrongDate=Date is not correct!