diff --git a/bob/bio/base/script/grid_search.py b/bob/bio/base/script/grid_search.py
index 12ead1f6c767eb2a0b7d4b9b0d3fbd7412d2ca7c..3ccea8179521b79a254624bb8c25b2441836dd48 100755
--- a/bob/bio/base/script/grid_search.py
+++ b/bob/bio/base/script/grid_search.py
@@ -319,14 +319,14 @@ def execute_dependent_task(command_line, directories, dependency_level):
 
   # add dependencies
   if dependencies:
-    command_line += ['--external-dependencies'] + [str(d) for d in dependencies]
+    command_line += ['--external-dependencies'] + [str(d) for d in sorted(list(set(dependencies)))]
 
   # execute the command
   new_job_ids = {}
   try:
     verif_args = verify.parse_arguments(command_line)
-    result_dir = os.path.join(verif_args.result_directory, verif_args.sub_directory)
-    if not args.skip_when_existent or not os.path.exists(result_dir):
+    result_dirs = [os.path.join(verif_args.result_directory, verif_args.database.protocol, verif_args.score_directories[i]) for i in ((0,1) if verif_args.zt_norm else (0,))]
+    if not args.skip_when_existent or not all(os.path.exists(result_dir) for result_dir in result_dirs):
       # get the command line parameter for the result directory
       if args.dry_run:
         if args.verbose:
@@ -336,7 +336,7 @@ def execute_dependent_task(command_line, directories, dependency_level):
         global fake_job_id
         new_job_ids = verify.verify(verif_args, command_line, external_fake_job_id = fake_job_id)
     else:
-      logger.info("Skipping execution of %s since result directory '%s' already exists", tools.command_line(command_line), result_dir)
+      logger.info("Skipping execution of %s since result directories '%s' already exists", tools.command_line(command_line), result_dirs)
 
   except Exception as e:
     logger.error("The execution of job was rejected!\n%s\n Reason:\n%s", tools.command_line(command_line), e)