diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ae80f1c27bc928906b1be29607f293de09fe8899..f5ded70cbc39db59bcaecaf1f789b342bf5d4cd1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -35,6 +35,8 @@ stages:
 
       - BRANCH="main"
       - echo "branch - " $BRANCH
+      - RUN_TIME=$(date '+%Y%m%d_%H%M%S')
+      - echo "run time - " $run_time
       - PACKAGES_DIR="$CI_PROJECT_DIR/packages/"
       - echo "project dir - " $CI_PROJECT_DIR
       - echo "output dir - " $OUTPUT_DIR
@@ -164,6 +166,16 @@ full_fat_advisory:
     - >
       cd $CI_PROJECT_DIR/tests/integration/full/
 
+#     RUN SURVEY
+      python3 full_test_survey.py 
+      --sys_config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/sys_config_EastAfrica_fc_live.json
+      --config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/survey_config_EastAfrica_fc_live.json
+      --outdir ${TEST_WORKSPACE_DIR}/integration/full/
+      --email_cred /storage/app/EWS_prod/envs/credentials/Cred_gmail.json
+      --run_date_type $FULL_FAT_RUN_DATE
+      --custom_run_date $CUSTOM_RUN_DATE
+      --custom_dir_prefix "ADVISORY_$RUN_TIME"
+      
       python3 full_test_advisory.py 
       --sys_config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/sys_config_EastAfrica_fc_live.json
       --config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/advisory_EastAfrica_fc_live.json
diff --git a/tests/integration/full/full_test_advisory.py b/tests/integration/full/full_test_advisory.py
index a46ca9029f7473006155f9ff8284822047081219..46bd3ad8f841144ee3b9c05c6b2dd4b3a654d45e 100644
--- a/tests/integration/full/full_test_advisory.py
+++ b/tests/integration/full/full_test_advisory.py
@@ -6,6 +6,7 @@ from ews.coordinator.processor_advisory import ProcessorAdvisory
 from ews.coordinator.processor_deposition import ProcessorDeposition
 from ews.coordinator.processor_environment import ProcessorEnvironment
 from ews.coordinator.processor_surveys import ProcessorSurveys
+from ews.coordinator.utils.processor_utils import parse_json_file_with_tokens
 from integration.partial.integration_test_utils import IntegrationTestUtils
 from integration.test_suites.advisory_test_suite import BaseAdvisoryTestSuite
 from integration.test_suites.depo_test_suite import BaseDepoTestSuite
@@ -25,11 +26,11 @@ class FullTestAdvisory(BaseAdvisoryTestSuite.AdvisoryTestSuite):
 
         self.set_expected_values()
 
-        if IntegrationTestUtils.TEST_OUT_PATH is None \
-                or not os.listdir(IntegrationTestUtils.TEST_OUT_PATH):
-        # if True:
+        if IntegrationTestUtils.TEST_JOB_DIR is None \
+                or not os.path.exists(IntegrationTestUtils.TEST_JOB_DIR):
+            # if True:
             FullTestAdvisory.write_temp_run_config_files()
-            FullTestAdvisory.run_dependent_pipelines()
+            # FullTestAdvisory.run_dependent_pipelines()
             FullTestAdvisory.run_advisory_pipeline()
         else:
             string = f"output in {IntegrationTestUtils.TEST_OUT_PATH} already written, skipping rerun"
@@ -39,28 +40,45 @@ class FullTestAdvisory(BaseAdvisoryTestSuite.AdvisoryTestSuite):
 
     @staticmethod
     def write_temp_run_config_files():
-        default_config = IntegrationTestUtils.DEFAULT_CONFIG_FILE_PATH
-        default_config_dict: dict = IntegrationTestUtils.load_json_file(default_config)
-        run_dict: dict = copy.deepcopy(default_config_dict)
-        run_dict['WorkspacePathout'] = IntegrationTestUtils.TEST_OUT_PATH
-        run_dict['WorkspacePath'] = IntegrationTestUtils.TEST_OUT_PATH
-        # we need to run the env suit pipeline as well
-        run_dict['Environment']['WORK_PATH'] = IntegrationTestUtils.TEST_OUT_PATH
-        run_dict['Environment']['INPUT_PATH'] = IntegrationTestUtils.TEST_OUT_PATH
-        run_dict['Environment']['OUTPUT_PATH'] = IntegrationTestUtils.TEST_OUT_PATH
-
-        #make sure we activate server download
-        run_dict['Survey']['SkipServerDownload'] = False
-
-        # survey_cred_file: str = run_dict['Survey']['ServerCredentialsFile']
-        # run_dict['Survey']['ServerCredentialsFile'] = survey_cred_file.replace("Cred-ODK-EIAR.json", "Cred-ODK-EIAR-NO-WRSIS.json")
-        run_dict['Survey']['FormEdits'].pop('WRSIS', None)
-
-        # may be reusing a non-timestamped output file during development, so allow extant TEST_OUT_PATH
+
+        # default_config = IntegrationTestUtils.DEFAULT_CONFIG_FILE_PATH
+        # default_config_dict: dict = IntegrationTestUtils.load_json_file(default_config)
+        # run_dict: dict = copy.deepcopy(default_config_dict)
+        # run_dict['WorkspacePathout'] = IntegrationTestUtils.TEST_OUT_PATH
+        # run_dict['WorkspacePath'] = IntegrationTestUtils.TEST_OUT_PATH
+        #
+        # # may be reusing a non-timestamped output file during development, so allow extant TEST_OUT_PATH
+        # os.makedirs(IntegrationTestUtils.TEST_OUT_PATH, exist_ok = True)
+        # IntegrationTestUtils.RUN_CONFIG_FILE_PATH = IntegrationTestUtils.TEST_OUT_PATH + "temp_config.json"
+        # IntegrationTestUtils.write_json_file(run_dict, IntegrationTestUtils.RUN_CONFIG_FILE_PATH)
+
+        """
+        IntegrationTestUtils.RUN_SYS_CONFIG_FILE_PATH will have been set from the command line args, and point to the
+        production sys config file. We need to modify this file to point to the test output directory.
+        :return:
+        """
+        sys_config = IntegrationTestUtils.RUN_SYS_CONFIG_FILE_PATH
+        sys_config_dict: dict = parse_json_file_with_tokens(sys_config)
+
+        sys_config_dict['WorkspacePathout'] = IntegrationTestUtils.TEST_OUT_PATH
+        sys_config_dict['WorkspacePath'] = IntegrationTestUtils.TEST_OUT_PATH
+
         os.makedirs(IntegrationTestUtils.TEST_OUT_PATH, exist_ok = True)
-        IntegrationTestUtils.RUN_CONFIG_FILE_PATH = IntegrationTestUtils.TEST_OUT_PATH + "temp_config.json"
-        IntegrationTestUtils.write_json_file(run_dict, IntegrationTestUtils.RUN_CONFIG_FILE_PATH)
+        job_sys_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_sys_advisory_config.json"
+        IntegrationTestUtils.write_json_file(sys_config_dict, job_sys_config_file)
+
+        # now set the sys config file path to the new job-specific file
+        IntegrationTestUtils.RUN_SYS_CONFIG_FILE_PATH = job_sys_config_file
+
+        run_config = IntegrationTestUtils.RUN_CONFIG_FILE_PATH
+        run_config_temp_dict: dict = parse_json_file_with_tokens(run_config, sys_config_dict)
+        run_dict: dict = copy.deepcopy(run_config_temp_dict)
+
+        job_run_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_advisory_config.json"
+        IntegrationTestUtils.write_json_file(run_dict, job_run_config_file)
 
+        # set the run config file path to the new job-specific file
+        IntegrationTestUtils.RUN_CONFIG_FILE_PATH = job_run_config_file
 
     @staticmethod
     def run_dependent_pipelines():
diff --git a/tests/integration/full/full_test_deposition.py b/tests/integration/full/full_test_deposition.py
index db5529123d5bb3edbaca793bf465f0fb5d5d8427..5f7209782bf59fd77bd47de8a1318626cf17d3e5 100644
--- a/tests/integration/full/full_test_deposition.py
+++ b/tests/integration/full/full_test_deposition.py
@@ -21,14 +21,13 @@ class FullTestDeposition(BaseDepoTestSuite.DepoTestSuite):
 
         self.set_expected_values()
 
-        path = IntegrationTestUtils.TEST_OUT_PATH
-        if path is None \
-                or not os.listdir(IntegrationTestUtils.TEST_OUT_PATH):
+        if IntegrationTestUtils.TEST_JOB_DIR is None \
+                or not os.path.exists(IntegrationTestUtils.TEST_JOB_DIR):
         # if True:
             FullTestDeposition.write_temp_run_config_file()
             FullTestDeposition.run_depo_pipeline()
         else:
-            print(f"output in {IntegrationTestUtils.TEST_OUT_PATH} already written, skipping rerun")
+            print(f"output in {IntegrationTestUtils.TEST_JOB_DIR} already written, skipping rerun")
 
 
     @staticmethod
@@ -46,7 +45,7 @@ class FullTestDeposition(BaseDepoTestSuite.DepoTestSuite):
         sys_config_dict['WorkspacePath'] = IntegrationTestUtils.TEST_OUT_PATH
 
         os.makedirs(IntegrationTestUtils.TEST_OUT_PATH, exist_ok = True)
-        job_sys_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_sys_config.json"
+        job_sys_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_sys_deposition_config.json"
         IntegrationTestUtils.write_json_file(sys_config_dict, job_sys_config_file)
 
         # now set the sys config file path to the new job-specific file
@@ -56,7 +55,7 @@ class FullTestDeposition(BaseDepoTestSuite.DepoTestSuite):
         run_config_temp_dict: dict = parse_json_file_with_tokens(run_config, sys_config_dict)
         run_dict: dict = copy.deepcopy(run_config_temp_dict)
 
-        job_run_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_config.json"
+        job_run_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_deposition_config.json"
         IntegrationTestUtils.write_json_file(run_dict, job_run_config_file)
 
         # set the run config file path to the new job-specific file
diff --git a/tests/integration/full/full_test_env_suit.py b/tests/integration/full/full_test_env_suit.py
index a8537e3b80a0859b255d798a6c7a7952353cbc22..c4c4f17eb5fbffb9a70ca2d8d3eef3713fabf14b 100644
--- a/tests/integration/full/full_test_env_suit.py
+++ b/tests/integration/full/full_test_env_suit.py
@@ -20,12 +20,12 @@ class FullTestEnvSuit(BaseEnvSuitTestSuite.EnvSuitTestSuite):
 
         self.set_expected_values()
 
-        if IntegrationTestUtils.TEST_OUT_PATH is None \
-                or not os.listdir(IntegrationTestUtils.TEST_OUT_PATH):
+        if IntegrationTestUtils.TEST_JOB_DIR is None \
+                or not os.path.exists(IntegrationTestUtils.TEST_JOB_DIR):
             FullTestEnvSuit.write_temp_run_config_file()
             FullTestEnvSuit.run_env_pipeline()
         else:
-            print(f"output in {IntegrationTestUtils.TEST_OUT_PATH} already written, skipping rerun")
+            print(f"output in {IntegrationTestUtils.TEST_JOB_DIR} already written, skipping rerun")
 
 
     @staticmethod
@@ -42,7 +42,7 @@ class FullTestEnvSuit(BaseEnvSuitTestSuite.EnvSuitTestSuite):
         sys_config_dict['WorkspacePath'] = IntegrationTestUtils.TEST_OUT_PATH
 
         os.makedirs(IntegrationTestUtils.TEST_OUT_PATH, exist_ok = True)
-        job_sys_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_sys_config.json"
+        job_sys_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_sys_advisory_config.json"
         IntegrationTestUtils.write_json_file(sys_config_dict, job_sys_config_file)
 
         # now set the sys config file path to the new job-specific file
@@ -57,7 +57,7 @@ class FullTestEnvSuit(BaseEnvSuitTestSuite.EnvSuitTestSuite):
         run_dict['EWS-Plotting']['Ethiopia']['FilterForCountry'] = "True"
         run_dict['EWS-Plotting']['Kenya']['FilterForCountry'] = "True"
 
-        job_run_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_config.json"
+        job_run_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_deposition_config.json"
         IntegrationTestUtils.write_json_file(run_dict, job_run_config_file)
 
         # set the run config file path to the new job-specific file
diff --git a/tests/integration/full/full_test_epi.py b/tests/integration/full/full_test_epi.py
index a4a8faa48dd413842b670b1bd24577fd718f3513..792df1151c6f0f3602ba61651b52dbc1c7fdf7db 100644
--- a/tests/integration/full/full_test_epi.py
+++ b/tests/integration/full/full_test_epi.py
@@ -23,14 +23,14 @@ class FullTestEpi(BaseEpiTestSuite.EpiTestSuite):
 
         self.set_expected_values()
 
-        if IntegrationTestUtils.TEST_OUT_PATH is None \
-                or not os.listdir(IntegrationTestUtils.TEST_OUT_PATH):
-        # if True:
+        if IntegrationTestUtils.TEST_JOB_DIR is None \
+                or not os.path.exists(IntegrationTestUtils.TEST_JOB_DIR):
+            # if True:
             FullTestEpi.write_temp_run_config_files()
-            FullTestEpi.run_dependent_pipelines()
+            # FullTestEpi.run_dependent_pipelines()
             FullTestEpi.run_epi_pipeline()
         else:
-            print(f"output in {IntegrationTestUtils.TEST_OUT_PATH} already written, skipping rerun")
+            print(f"output in {IntegrationTestUtils.TEST_JOB_DIR} already written, skipping rerun")
 
 
     @staticmethod
@@ -57,7 +57,7 @@ class FullTestEpi(BaseEpiTestSuite.EpiTestSuite):
         sys_config_dict['WorkspacePath'] = IntegrationTestUtils.TEST_OUT_PATH
 
         os.makedirs(IntegrationTestUtils.TEST_OUT_PATH, exist_ok = True)
-        job_sys_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_sys_config.json"
+        job_sys_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_sys_epi_config.json"
         IntegrationTestUtils.write_json_file(sys_config_dict, job_sys_config_file)
 
         # now set the sys config file path to the new job-specific file
@@ -70,8 +70,6 @@ class FullTestEpi(BaseEpiTestSuite.EpiTestSuite):
         run_dict['Environment']['WORK_PATH'] = IntegrationTestUtils.TEST_OUT_PATH
         run_dict['Environment']['INPUT_PATH'] = IntegrationTestUtils.TEST_OUT_PATH
         run_dict['Environment']['OUTPUT_PATH'] = IntegrationTestUtils.TEST_OUT_PATH
-        # make sure we activate server download
-        run_dict['Survey']['SkipServerDownload'] = False
 
         # change the config for the Epi so it only runs on a single past date. Requires use of a different
         # FileListerFunction and a different calculation span
@@ -89,7 +87,7 @@ class FullTestEpi(BaseEpiTestSuite.EpiTestSuite):
         previous_day_string: str = IntegrationTestUtils.get_day_before_as_string(IntegrationTestUtils.TEST_START_DATE)
         run_dict['SeasonStartString'] = previous_day_string
 
-        job_run_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_config.json"
+        job_run_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_epi_config.json"
         IntegrationTestUtils.write_json_file(run_dict, job_run_config_file)
 
         # set the run config file path to the new job-specific file
diff --git a/tests/integration/full/full_test_survey.py b/tests/integration/full/full_test_survey.py
index fdb71f59d6e37b1034bab173afa62c305596a2e7..831c4cb58a5c3db14612f8c17235fc1261d26be8 100644
--- a/tests/integration/full/full_test_survey.py
+++ b/tests/integration/full/full_test_survey.py
@@ -19,12 +19,12 @@ class FullTestSurvey(BaseSurveyTestSuite.SurveyTestSuite):
 
         self.set_expected_values()
 
-        if IntegrationTestUtils.TEST_OUT_PATH is None \
-                or not os.listdir(IntegrationTestUtils.TEST_OUT_PATH):
+        if IntegrationTestUtils.TEST_JOB_DIR is None \
+                or not os.path.exists(IntegrationTestUtils.TEST_JOB_DIR):
             FullTestSurvey.write_temp_run_config_file()
             FullTestSurvey.run_survey_pipeline()
         else:
-            print(f"output in {IntegrationTestUtils.TEST_OUT_PATH} already written, skipping rerun")
+            print(f"output in {IntegrationTestUtils.TEST_JOB_DIR} already written, skipping rerun")
 
 
     @staticmethod
@@ -41,7 +41,7 @@ class FullTestSurvey(BaseSurveyTestSuite.SurveyTestSuite):
         sys_config_dict['WorkspacePath'] = IntegrationTestUtils.TEST_OUT_PATH
 
         os.makedirs(IntegrationTestUtils.TEST_OUT_PATH, exist_ok = True)
-        job_sys_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_sys_config.json"
+        job_sys_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_sys_survey_config.json"
         IntegrationTestUtils.write_json_file(sys_config_dict, job_sys_config_file)
 
         # now set the sys config file path to the new job-specific file
@@ -52,7 +52,7 @@ class FullTestSurvey(BaseSurveyTestSuite.SurveyTestSuite):
         run_dict: dict = copy.deepcopy(run_config_temp_dict)
         run_dict['SkipServerDownload'] = False
 
-        job_run_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_config.json"
+        job_run_config_file = IntegrationTestUtils.TEST_OUT_PATH + "temp_survey_config.json"
         IntegrationTestUtils.write_json_file(run_dict, job_run_config_file)
 
         # set the run config file path to the new job-specific file
diff --git a/tests/integration/partial/integration_test_utils.py b/tests/integration/partial/integration_test_utils.py
index ebc59a0613c19ab13f463b8360a44e77328b4377..48cadf3a44715a55c933d51947e847196090e53a 100644
--- a/tests/integration/partial/integration_test_utils.py
+++ b/tests/integration/partial/integration_test_utils.py
@@ -64,6 +64,7 @@ class IntegrationTestUtils:
         parser.add_argument('--test_report_dir', required = False)
         parser.add_argument('--run_date_type', required = False)
         parser.add_argument('--custom_run_date', required = False)
+        parser.add_argument('--custom_dir_prefix', required = False, help = "prefix for the test dir, a sensible value will be set as default")
         parser.add_argument('unittest_args', nargs='*')
         return parser
 
@@ -93,6 +94,7 @@ class IntegrationTestUtils:
         _test_report_dir: str = _args.test_report_dir
         _run_date_type: str = _args.run_date_type
         _custom_run_date: str = _args.custom_run_date
+        _custom_dir_prefix: str = _args.custom_dir_prefix
 
         """
         We store paths to the production run json files here, these are then read into a dict, output paths are 
@@ -102,9 +104,13 @@ class IntegrationTestUtils:
         IntegrationTestUtils.RUN_SYS_CONFIG_FILE_PATH = _sys_config_file
         IntegrationTestUtils.RUN_CONFIG_FILE_PATH = _run_config_file
 
-        nowstring: str = IntegrationTestUtils.get_now_string()
-        prefix: str = f"temp_{test_prefix}_" + nowstring
-        # prefix: str = f"temp_{test_prefix}"
+        if _custom_dir_prefix is None:
+            nowstring: str = IntegrationTestUtils.get_now_string()
+            prefix: str = f"temp_{test_prefix}_" + nowstring
+            # prefix: str = f"temp_{test_prefix}"
+        else:
+            prefix = _custom_dir_prefix
+
         IntegrationTestUtils.TEST_OUT_PATH = _outdir + prefix + os.sep
         IntegrationTestUtils.EMAIL_CRED_PATH = _email_cred_path