diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php
index 64c2d026ab46fb8d22853f1bf1ca361a38913327..00f8d5d6ae002ffb7512354e70f6a696830b6831 100644
--- a/htdocs/cron/class/cronjob.class.php
+++ b/htdocs/cron/class/cronjob.class.php
@@ -439,7 +439,6 @@ class Cronjob extends CommonObject
     		{
 	    		while ($i < $num)
 	    		{
-
 	    			$line = new Cronjobline();
 
 	    			$obj = $this->db->fetch_object($resql);
@@ -480,7 +479,6 @@ class Cronjob extends CommonObject
 	    			$this->lines[]=$line;
 
 	    			$i++;
-
 	    		}
     		}
     		$this->db->free($resql);
diff --git a/htdocs/public/cron/cron_run_jobs.php b/htdocs/public/cron/cron_run_jobs.php
index 725aea8825debc814d212d3162c1539cddc4da63..36b21c514e987631435268367b82aaaef2417393 100644
--- a/htdocs/public/cron/cron_run_jobs.php
+++ b/htdocs/public/cron/cron_run_jobs.php
@@ -125,19 +125,25 @@ if ($result<0)
 	exit;
 }
 
+$qualifiedjobs = array();
+foreach($object->lines as $val)
+{
+	if (! verifCond($val->test)) continue;
+	$qualifiedjobs[] = $val;
+}
 
 // TODO Duplicate code. This sequence of code must be shared with code into cron_run_jobs.php script.
 
 // current date
 $now=dol_now();
-$nbofjobs=count($object->lines);
+$nbofjobs=count($qualifiedjobs);
 $nbofjobslaunchedok=0;
 $nbofjobslaunchedko=0;
 
-if (is_array($object->lines) && (count($object->lines)>0))
+if (is_array($qualifiedjobs) && (count($qualifiedjobs)>0))
 {
 	// Loop over job
-	foreach($object->lines as $line)
+	foreach($qualifiedjobs as $line)
 	{
 		dol_syslog("cron_run_jobs.php cronjobid: ".$line->id, LOG_WARNING);
 
@@ -150,16 +156,16 @@ if (is_array($object->lines) && (count($object->lines)>0))
 			$result=$cronjob->fetch($line->id);
 			if ($result<0)
 			{
-				echo "Error:".$cronjob->error."<br>\n";
-				dol_syslog("cron_run_jobs.php:: fetch Error".$cronjob->error, LOG_ERR);
+				echo "Error cronjob->fetch: ".$cronjob->error."<br>\n";
+				dol_syslog("cron_run_jobs.php::fetch Error".$cronjob->error, LOG_ERR);
 				exit;
 			}
 			// Execut job
 			$result=$cronjob->run_jobs($userlogin);
 			if ($result < 0)
 			{
-				echo "Error:".$cronjob->error."<br>\n";
-				dol_syslog("cron_run_jobs.php:: run_jobs Error".$cronjob->error, LOG_ERR);
+				echo "Error cronjob->run_job: ".$cronjob->error."<br>\n";
+				dol_syslog("cron_run_jobs.php::run_jobs Error".$cronjob->error, LOG_ERR);
 				$nbofjobslaunchedko++;
 			}
 			else
@@ -171,8 +177,8 @@ if (is_array($object->lines) && (count($object->lines)>0))
 			$result=$cronjob->reprogram_jobs($userlogin, $now);
 			if ($result<0)
 			{
-				echo "Error:".$cronjob->error."<br>\n";
-				dol_syslog("cron_run_jobs.php:: reprogram_jobs Error".$cronjob->error, LOG_ERR);
+				echo "Error cronjob->reprogram_job: ".$cronjob->error."<br>\n";
+				dol_syslog("cron_run_jobs.php::reprogram_jobs Error".$cronjob->error, LOG_ERR);
 				exit;
 			}
 
diff --git a/scripts/cron/cron_run_jobs.php b/scripts/cron/cron_run_jobs.php
index 841e85e144372830070032ace5012989709b437d..6ec317cdc708fae5928e824dddb9efda11550036 100755
--- a/scripts/cron/cron_run_jobs.php
+++ b/scripts/cron/cron_run_jobs.php
@@ -79,7 +79,7 @@ if ($key != $conf->global->CRON_KEY)
 	exit(-1);
 }
 
-// If param userlogin is reserved word 'firstadmin' 
+// If param userlogin is reserved word 'firstadmin'
 if ($userlogin == 'firstadmin')
 {
     $sql='SELECT login from '.MAIN_DB_PREFIX.'user WHERE admin = 1 and statut = 1 ORDER BY entity LIMIT 1';
@@ -87,7 +87,7 @@ if ($userlogin == 'firstadmin')
     if ($resql)
     {
         $obj=$db->fetch_object($resql);
-        if ($obj) 
+        if ($obj)
         {
             $userlogin = $obj->login;
             echo "First admin user found is login '".$userlogin."'\n";
@@ -136,27 +136,37 @@ if ($result<0)
 	exit(-1);
 }
 
+$qualifiedjobs = array();
+foreach($object->lines as $val)
+{
+	if (! verifCond($val->test)) continue;
+	$qualifiedjobs[] = $val;
+}
+
 // TODO This sequence of code must be shared with code into public/cron/cron_run_jobs.php php page.
 
 // current date
 $now=dol_now();
+$nbofjobs=count($qualifiedjobs);
+$nbofjobslaunchedok=0;
+$nbofjobslaunchedko=0;
 
-if(is_array($object->lines) && (count($object->lines)>0))
+if(is_array($qualifiedjobs) && (count($qualifiedjobs)>0))
 {
 	// Loop over job
-	foreach($object->lines as $line)
+	foreach($qualifiedjobs as $line)
 	{
 	    dol_syslog("cron_run_jobs.php cronjobid: ".$line->id, LOG_DEBUG);
 	    echo "cron_run_jobs.php cronjobid: ".$line->id."\n";
-	    
+
 		//If date_next_jobs is less of current date, execute the program, and store the execution time of the next execution in database
 		if (($line->datenextrun < $now) && (empty($line->datestart) || $line->datestart <= $now) && (empty($line->dateend) || $line->dateend >= $now))
 		{
 			dol_syslog("cron_run_jobs.php:: to run line->datenextrun:".dol_print_date($line->datenextrun,'dayhourrfc')." line->datestart:".dol_print_date($line->datestart,'dayhourrfc')." line->dateend:".dol_print_date($line->dateend,'dayhourrfc')." now:".dol_print_date($now,'dayhourrfc'));
-		    
+
 			$cronjob=new Cronjob($db);
 			$result=$cronjob->fetch($line->id);
-			if ($result<0) 
+			if ($result < 0)
 			{
 				echo "Error cronjob->fetch: ".$cronjob->error."\n";
 				echo "Failed to fetch job ".$line->id."\n";
@@ -165,18 +175,22 @@ if(is_array($object->lines) && (count($object->lines)>0))
 			}
 			// Execute job
 			$result=$cronjob->run_jobs($userlogin);
-			if ($result<0) 
+			if ($result < 0)
 			{
 				echo "Error cronjob->run_job: ".$cronjob->error."\n";
 				echo "At least one job failed. Go on menu Home-Setup-Admin tools to see result for each job.\n";
 				echo "You can also enable module Log if not yet enabled, run again and take a look into dolibarr.log file\n";
 				dol_syslog("cron_run_jobs.php::run_jobs Error ".$cronjob->error, LOG_ERR);
-				exit(-1);
+				$nbofjobslaunchedko++;
+			}
+			else
+			{
+				$nbofjobslaunchedok++;
 			}
 
 			// we re-program the next execution and stores the last execution time for this job
 			$result=$cronjob->reprogram_jobs($userlogin, $now);
-			if ($result<0) 
+			if ($result<0)
 			{
 				echo "Error cronjob->reprogram_job: ".$cronjob->error."\n";
 				echo "Enable module Log if not yet enabled, run again and take a look into dolibarr.log file\n";
@@ -194,6 +208,7 @@ if(is_array($object->lines) && (count($object->lines)>0))
 
 $db->close();
 
+if ($nbofjobslaunchedko) exit(1);
 exit(0);