diff --git a/app/let_it_snow_fsc.py b/app/let_it_snow_fsc.py
index 7c005264c424b10c94b81a8b4b8f51e1360c58bc..b2afcb62d16ccc0445b49194e75533d05757bf25 100644
--- a/app/let_it_snow_fsc.py
+++ b/app/let_it_snow_fsc.py
@@ -60,7 +60,7 @@ def main(args):
         output_dir = args.output_dir
 
     if output_dir is None:
-        return OUTPUT_UNDEFINED
+        sys.exit(OUTPUT_UNDEFINED)
 
     if not os.path.exists(output_dir):
         os.makedirs(output_dir)
@@ -120,7 +120,7 @@ def main(args):
         logging.info("product counter: %s", args.product_counter)
         product_counter = args.product_counter
 
-    return let_it_snow_fsc(config_file, input_dir, output_dir, dem, tcd, water_mask, h2_chain_version, product_counter)
+    let_it_snow_fsc(config_file, input_dir, output_dir, dem, tcd, water_mask, h2_chain_version, product_counter)
 
 
 def let_it_snow_fsc(config_file, input_dir, output_dir, dem, tcd, water_mask, h2_chain_version=None,
@@ -128,7 +128,7 @@ def let_it_snow_fsc(config_file, input_dir, output_dir, dem, tcd, water_mask, h2
     # Check configuration file
     if not os.path.exists(config_file):
         logging.error("Configuration file does not exist.")
-        return INPUT_PARAMETER_ERROR
+        sys.exit(INPUT_PARAMETER_ERROR)
 
     # Load json_file from json files
     with open(config_file) as json_data_file:
@@ -137,11 +137,11 @@ def let_it_snow_fsc(config_file, input_dir, output_dir, dem, tcd, water_mask, h2
         try:
             config = FscConfig(data, input_dir, dem, tcd, water_mask)
         except LisConfigurationException:
-            return CONFIGURATION_ERROR
+            sys.exit(CONFIGURATION_ERROR)
         except UnknownProductException:
-            return UNKNOWN_PRODUCT_EXCEPTION
+            sys.exit(UNKNOWN_PRODUCT_EXCEPTION)
         except IOError:
-            return INPUT_PARAMETER_ERROR
+            sys.exit(INPUT_PARAMETER_ERROR)
 
     if not os.path.exists(output_dir):
         logging.warning("Output directory product does not exist.")
@@ -154,9 +154,9 @@ def let_it_snow_fsc(config_file, input_dir, output_dir, dem, tcd, water_mask, h2
         detect_snow(config, output_dir, h2_chain_version, product_counter)
     except Exception as e:
         logging.error(e)
-        return -1
+        sys.exit(1)
 
-    return 0
+    sys.exit(0)
 
 
 if __name__ == "__main__":
diff --git a/app/let_it_snow_synthesis.py b/app/let_it_snow_synthesis.py
index e1c203b1d43aa780f9284ed1a3e884d28d4e06cc..855f007057fa1ff8b750599db49fd28f6cbe0ed0 100644
--- a/app/let_it_snow_synthesis.py
+++ b/app/let_it_snow_synthesis.py
@@ -66,7 +66,7 @@ def main(args):
         output_dir = args.output_dir
 
     if output_dir is None:
-        return OUTPUT_UNDEFINED
+        sys.exit(OUTPUT_UNDEFINED)
 
     if not os.path.exists(output_dir):
         os.makedirs(output_dir)
@@ -132,7 +132,7 @@ def main(args):
         logging.info("product counter: %s", args.product_counter)
         product_counter = args.product_counter
 
-    return let_it_snow_synthesis(config_file, tile_id, input_products_list, densification_products_list, output_dir,
+    let_it_snow_synthesis(config_file, tile_id, input_products_list, densification_products_list, output_dir,
                                  date_start, date_stop, date_margin, h2_chain_version, product_counter)
 
 
@@ -142,7 +142,7 @@ def let_it_snow_synthesis(config_file, tile_id, input_products_list, densificati
     # Check configuration file
     if not os.path.exists(config_file):
         logging.error("Configuration file does not exist.")
-        return INPUT_PARAMETER_ERROR
+        sys.exit(INPUT_PARAMETER_ERROR)
 
     # Load json_file from json files
     with open(config_file) as json_data_file:
@@ -152,9 +152,9 @@ def let_it_snow_synthesis(config_file, tile_id, input_products_list, densificati
             config = SynthesisConfig(data, tile_id, input_products_list, date_start, date_stop, date_margin=date_margin,
                                      densification_products_list=densification_products_list)
         except LisConfigurationException:
-            return CONFIGURATION_ERROR
+            sys.exit(CONFIGURATION_ERROR)
         except IOError:
-            return INPUT_PARAMETER_ERROR
+            sys.exit(INPUT_PARAMETER_ERROR)
 
     # Run the snow detector
     try:
@@ -162,21 +162,21 @@ def let_it_snow_synthesis(config_file, tile_id, input_products_list, densificati
         compute_snow_synthesis(config, output_dir, h2_chain_version, product_counter)
     except UnknownPlatform as e:
         logging.error(e)
-        return UNKNOWN_PLATFORM
+        sys.exit(UNKNOWN_PLATFORM)
     except NoProductMatchingSynthesis as e:
         logging.error(e)
-        return NO_PRODUCT_MATCHING_SYNTHESIS
+        sys.exit(NO_PRODUCT_MATCHING_SYNTHESIS)
     except NoSnowProductFound as e:
         logging.error(e)
-        return NO_SNOW_PRODUCT_FOUND
+        sys.exit(NO_SNOW_PRODUCT_FOUND)
     except NoZipFound as e:
         logging.error(e)
-        return NO_ZIP_FOUND
+        sys.exit(NO_ZIP_FOUND)
     except Exception as e:
         logging.error(e)
-        return -1
+        sys.exit(-1)
 
-    return 0
+    sys.exit(0)
 
 
 if __name__ == "__main__":
diff --git a/python/s2snow/lis_constant.py b/python/s2snow/lis_constant.py
index de05f3e8baa204d2762e5f9b8d03302df24c6ff4..8cf43263751849a5eed43d15fec4feec3821ff83 100644
--- a/python/s2snow/lis_constant.py
+++ b/python/s2snow/lis_constant.py
@@ -107,14 +107,14 @@ QCOG = "LIS_FSC_QCOG.tif"
 
 OUTPUT_DATES_FILE = "output_dates.txt"
 # Error codes
-INPUT_PARAMETER_ERROR = -2
-UNKNOWN_PRODUCT_EXCEPTION = -3
-CONFIGURATION_ERROR = -4
-UNKNOWN_PLATFORM = -5
-NO_PRODUCT_MATCHING_SYNTHESIS = -6
-NO_SNOW_PRODUCT_FOUND = -7
-NO_ZIP_FOUND = -8
-OUTPUT_UNDEFINED = -9
+INPUT_PARAMETER_ERROR = 2
+UNKNOWN_PRODUCT_EXCEPTION = 3
+CONFIGURATION_ERROR = 4
+UNKNOWN_PLATFORM = 5
+NO_PRODUCT_MATCHING_SYNTHESIS = 6
+NO_SNOW_PRODUCT_FOUND = 7
+NO_ZIP_FOUND = 8
+OUTPUT_UNDEFINED = 9
 
 # Date Time format
 MUSCATE_DATETIME_FORMAT = "%Y%m%d-%H%M%S-%f"