diff --git a/src/users/broker.cpp b/src/users/broker.cpp
index b2820af9afc74291cdcf3ac530e1d7f1db7c1c97..4684564501d2b1246b934f3d4373f4f0925a16cd 100644
--- a/src/users/broker.cpp
+++ b/src/users/broker.cpp
@@ -65,16 +65,16 @@ Broker::Broker(rapidjson::Document *user_description_file)
 
         //logging info parsing
         if(user_description_file->HasMember("log_user_stats")){
-           PPK_ASSERT((*user_description_file)["log_user_stats"].IsBool(),
+           PPK_ASSERT_ERROR((*user_description_file)["log_user_stats"].IsBool(),
                "Invalid user_description file : field"
                "'log_user_stats' should be a boolean");
            bool log_user_stats = (*user_description_file)["log_user_stats"].GetBool();
            if(log_user_stats){
-               PPK_ASSERT(user_description_file->HasMember("log_folder"),
+               PPK_ASSERT_ERROR(user_description_file->HasMember("log_folder"),
                    "Invalid user_description file : field"
                    "'log_folder' should be defined with 'log_user_stats' ");
                const Value &log_folder_param = (*user_description_file)["log_folder"];
-               PPK_ASSERT(log_folder_param.IsString(),
+               PPK_ASSERT_ERROR(log_folder_param.IsString(),
                    "Invalid user_description file : field"
                    " 'log_folder' should be a  string ");
                std::string log_folder = log_folder_param.GetString();
diff --git a/src/users/user_windows.cpp b/src/users/user_windows.cpp
index 683b48d3e06bc98d9a55eaa40426c748218010dc..9117d3cd116d1e0c0c6f5f47ed4ea212b7d0f865 100644
--- a/src/users/user_windows.cpp
+++ b/src/users/user_windows.cpp
@@ -38,13 +38,21 @@ void DMUserMultiBehavior::init_prob(const rapidjson::Value &param,uint_fast32_t
     for (std::vector<double>::size_type i =0 ; i < red_prob.size();i++){
         std::string current_prob = red_config[i];
         if(param.HasMember(current_prob.c_str())){
-            PPK_ASSERT(param[current_prob.c_str()].IsDouble()
+            PPK_ASSERT_ERROR(param[current_prob.c_str()].IsDouble()
                     && param[current_prob.c_str()].GetDouble()>=0.0,
                 "Error every specified red probability should be a non-negative Double");
             red_prob[i] = param[current_prob.c_str()].GetDouble();
             red_prob_total +=  red_prob[i];
         }
     }
+    /* If we need red_probabilities and
+     * they are none that are defined and non-zero we raise an error */
+    std::string error_message = "Error in parameter defined for user ";
+    error_message += user_name;
+    error_message += ". The sum of the probability given in parameter sum to 0.0 for red_windows"
+           "Check that you gave red_prob_behavior parameter to user and at least "
+           "one non-zero probability";
+    PPK_ASSERT_ERROR( red_prob_total != 0.0 || !(dm_window || red_windows), error_message.c_str());
     //we save the result in the used probability variable
     red_prob_degrad =  red_prob[0];
     red_prob_Cyoulater = red_prob[1] ;
@@ -61,13 +69,21 @@ void DMUserMultiBehavior::init_prob(const rapidjson::Value &param,uint_fast32_t
     for (std::vector<double>::size_type i =0 ; i < yellow_prob.size();i++){
         std::string current_prob = yellow_config[i];
         if(param.HasMember(current_prob.c_str())){
-            PPK_ASSERT(param[current_prob.c_str()].IsDouble()
+            PPK_ASSERT_ERROR(param[current_prob.c_str()].IsDouble()
                     && param[current_prob.c_str()].GetDouble()>=0.0,
                 "Error every specified yellow probability should be a non-negative Double");
             yellow_prob[i] = param[current_prob.c_str()].GetDouble();
             yellow_prob_total += yellow_prob[i];
         }
     }
+    error_message = "Error in parameter defined for user ";
+    error_message += user_name;
+    error_message += ". The sum of the probability given in parameter sum to 0.0 for yellow_windows"
+                     " Check that you gave at least one non-zero yellow_prob_behavior parameter to user ";
+    /* If we need yellow_probabilities,
+     * and they are none that are defined and non-zero we raise an error */
+    PPK_ASSERT_ERROR( yellow_prob_total != 0.0 || !(yellow_windows), error_message.c_str());
+    //we save the result in the used probability variable
     yellow_prob_degrad= yellow_prob[0];
     yellow_prob_reconfig = yellow_prob[1];
 }
@@ -104,7 +120,7 @@ void DMUserMultiBehavior::jobs_to_submit(
 bool DMUserMultiBehavior::C_you_later_job(double date, double next_time,shared_ptr<Job>  job)
 {
     /* Log... */
-    log_behavior(job,"C_you_later",next_time);
+    log_behavior(job,"C_you_later",(long) next_time);
     dm_stat[2 * DELAYED]++;
     dm_stat[2*DELAYED+1]+= job->nb_requested_resources * std::stol(job->profile);
     /* Delete original job from queue and update date */
@@ -211,7 +227,7 @@ bool DMUserMultiBehavior::yellow_window_behavior(shared_ptr<Job> job,Profile *pr
     }
 }
 
-void DMUserMultiBehavior::log_behavior(shared_ptr<Job> job, std::string behavior_name, long delay_time)
+void DMUserMultiBehavior::log_behavior(shared_ptr<Job> job,std::string behavior_name, long delay_time)
 {
     if(logger){
         logger->add_stat(job,behavior_name,delay_time);
diff --git a/test/test_assertion_error.py b/test/test_assertion_error.py
index d65ae3f391fc89782d11b77d222102ff30194885..7dcfdebbd14fd5869f8504a8dbe05c7bca1ffcb3 100644
--- a/test/test_assertion_error.py
+++ b/test/test_assertion_error.py
@@ -5,17 +5,18 @@ create_dir_rec_if_needed("test-instances")
 import json
 
 
-def make_error_file(seed=None,red_windows=None,yellow_windows=None) :
+def make_error_file(seed=None,red_windows=None, probas = [("red_prob_see_you_later",1.0)], yellow_windows=None) :
     """Create a simple user_description_file with the given parameters to check for proper handling of errors"""
+    param = { "input_json": "test/workloads/dyn/two_jobs.json"}
+    for proba in probas :
+        proba_name,proba_value = proba
+        param[proba_name] = proba_value
     error_file = {
         "users": [
             {
                 "name": "user14",
                 "category": "dm_user_multi_behavior",
-                "param": {
-                    "input_json": "test/workloads/dyn/two_jobs.json",
-                    "red_prob_see_you_later": 1.0
-                }
+                "param": param
             }
         ]
     }
@@ -70,11 +71,32 @@ def test_error_no_window(platform_multiC) :
     out_dir = error_user("dm_user_multi_behavior_no_windows", platform_multiC, "window")
 
 def test_empty_red_window(platform_multiC) :
-    make_error_file(3,red_windows=[])
+    make_error_file(3, red_windows=[])
     out_dir = error_user("dm_user_multi_behavior_empty_red_windows", platform_multiC, "red_windows should be a non-empty array")
 def test_empty_yellow_window(platform_multiC) :
-    make_error_file(3,yellow_windows=[])
+    make_error_file(3, yellow_windows=[])
     out_dir = error_user("dm_user_multi_behavior_empty_yellow_windows", platform_multiC, "yellow_windows should be a non-empty array")
+
+def test_invalid_red_prob(platform_multiC) :
+    invalid_probas = [[], [("red_prob_reconfig",0.0)], [("red_prob_degrad",0.0)], [("red_prob_rigid",0.0)],
+                      [("red_prob_see_you_later",0.0)],[("red_prob_renonce",0.0)],
+                      [("red_prob_reconfig", 0.0), ("red_prob_degrad", 0.0), ("red_prob_rigid", 0.0),
+                       ("red_prob_renonce", 0.0), ("red_prob_see_you_later", 0.0)]]
+    i = 0
+    for probas in invalid_probas :
+        make_error_file(3, red_windows=[[0, 1]],probas=probas)
+        out_dir = error_user("dm_user_multi_behavior_invalid_red_prob_" + str(i), platform_multiC, "red")
+        i += 1
+def test_invalid_yellow_prob(platform_multiC) :
+    invalid_probas = [[], [("yellow_prob_reconfig",0.0)], [("yellow_prob_degrad",0.0)], [("yellow_prob_rigid",0.0)],
+                      [("yellow_prob_reconfig", 0.0), ("yellow_prob_degrad", 0.0), ("yellow_prob_rigid", 0.0)]]
+    i = 0
+    for probas in invalid_probas :
+        make_error_file(3, yellow_windows=[[0, 1]],probas=probas)
+        out_dir = error_user("dm_user_multi_behavior_invalid_yellow_prob_" + str(i), platform_multiC, "yellow")
+        i += 1
+
+
 def test_error_invalid_window(platform_multiC) :
     invalid_windows_list = [[[0]], [[0.0, 1.0]], [[0, 1, 2]], [[0, 1], [1, 2], [3, 4], 5], [[1, 4.0]], [[1.0, 4]]]
     for i in range(len(invalid_windows_list)):