diff --git a/alice/gen-sim/alice-gen-sim.spec b/alice/gen-sim/alice-gen-sim.spec
index 76b4c583b3ab7540c08932896a0595489ae1d215..b5b3b8cbebc9170c3fa6b708650d8f35aef10927 100644
--- a/alice/gen-sim/alice-gen-sim.spec
+++ b/alice/gen-sim/alice-gen-sim.spec
@@ -1,7 +1,7 @@
-HEPWL_BMKEXE=./alice-gen-sim/alice-gen-sim-bmk.sh
+HEPWL_BMKEXE=alice-gen-sim-bmk.sh
 HEPWL_BMKOPTS="-n 1 -e 1"
-HEPWL_BMKDIR=./alice-gen-sim
+HEPWL_BMKDIR=alice-gen-sim
 HEPWL_BMKDESCRIPTION="ALICE pp GEN-SIM"
-HEPWL_DOCKERIMAGENAME=alice-gen-sim
-HEPWL_DOCKERIMAGETAG=v0.9
+HEPWL_DOCKERIMAGENAME=alice-gen-sim-bmk
+HEPWL_DOCKERIMAGETAG=testv0.10
 HEPWL_CVMFSREPOS=alice.cern.ch
diff --git a/alice/gen-sim/alice-gen-sim/reference/test_1/alice-gen-sim_summary.json b/alice/gen-sim/alice-gen-sim/jobs/good_1/alice-gen-sim_summary.json
similarity index 100%
rename from alice/gen-sim/alice-gen-sim/reference/test_1/alice-gen-sim_summary.json
rename to alice/gen-sim/alice-gen-sim/jobs/good_1/alice-gen-sim_summary.json
diff --git a/alice/gen-sim/alice-gen-sim/reference/shortlog.txt b/alice/gen-sim/alice-gen-sim/jobs/good_1/cishortlog.txt
similarity index 100%
rename from alice/gen-sim/alice-gen-sim/reference/shortlog.txt
rename to alice/gen-sim/alice-gen-sim/jobs/good_1/cishortlog.txt
diff --git a/alice/gen-sim/alice-gen-sim/reference/joburl.txt b/alice/gen-sim/alice-gen-sim/jobs/good_1/joburl.txt
similarity index 100%
rename from alice/gen-sim/alice-gen-sim/reference/joburl.txt
rename to alice/gen-sim/alice-gen-sim/jobs/good_1/joburl.txt
diff --git a/alice/gen-sim/alice-gen-sim/reference/test_1/proc_1/out_1.log b/alice/gen-sim/alice-gen-sim/jobs/good_1/proc_1/out_1.log
similarity index 100%
rename from alice/gen-sim/alice-gen-sim/reference/test_1/proc_1/out_1.log
rename to alice/gen-sim/alice-gen-sim/jobs/good_1/proc_1/out_1.log
diff --git a/alice/gen-sim/alice-gen-sim/reference/test_1/proc_1/sim.log b/alice/gen-sim/alice-gen-sim/jobs/good_1/proc_1/sim.log
similarity index 100%
rename from alice/gen-sim/alice-gen-sim/reference/test_1/proc_1/sim.log
rename to alice/gen-sim/alice-gen-sim/jobs/good_1/proc_1/sim.log
diff --git a/alice/gen-sim/alice-gen-sim/reference/test_1/proc_1/simwatch.log b/alice/gen-sim/alice-gen-sim/jobs/good_1/proc_1/simwatch.log
similarity index 100%
rename from alice/gen-sim/alice-gen-sim/reference/test_1/proc_1/simwatch.log
rename to alice/gen-sim/alice-gen-sim/jobs/good_1/proc_1/simwatch.log
diff --git a/alice/gen-sim/alice-gen-sim/reference/test_1/proc_1/time_useronly.log b/alice/gen-sim/alice-gen-sim/jobs/good_1/proc_1/time_useronly.log
similarity index 100%
rename from alice/gen-sim/alice-gen-sim/reference/test_1/proc_1/time_useronly.log
rename to alice/gen-sim/alice-gen-sim/jobs/good_1/proc_1/time_useronly.log
diff --git a/alice/gen-sim/alice-gen-sim/jobs/good_1/summary.json b/alice/gen-sim/alice-gen-sim/jobs/good_1/summary.json
new file mode 120000
index 0000000000000000000000000000000000000000..d78a16c185a8616f7b26e2f7b4192945a18ac433
--- /dev/null
+++ b/alice/gen-sim/alice-gen-sim/jobs/good_1/summary.json
@@ -0,0 +1 @@
+alice-gen-sim_summary.json
\ No newline at end of file
diff --git a/alice/gen-sim/alice-gen-sim/jobs/refjob b/alice/gen-sim/alice-gen-sim/jobs/refjob
new file mode 120000
index 0000000000000000000000000000000000000000..9912a47175aa29f7496248aefdb66c6caedb2208
--- /dev/null
+++ b/alice/gen-sim/alice-gen-sim/jobs/refjob
@@ -0,0 +1 @@
+good_1
\ No newline at end of file
diff --git a/alice/gen-sim/alice-gen-sim/reference/summary.json b/alice/gen-sim/alice-gen-sim/reference/summary.json
deleted file mode 120000
index ec131e23736701917e6b244b6118cced8988d41d..0000000000000000000000000000000000000000
--- a/alice/gen-sim/alice-gen-sim/reference/summary.json
+++ /dev/null
@@ -1 +0,0 @@
-./test_1/alice-gen-sim_summary.json
\ No newline at end of file
diff --git a/atlas/gen/atlas-gen.spec b/atlas/gen/atlas-gen.spec
index cd9278f7efa66aa690f031a490a164d77bf5e66b..aac2cd335bc10b7904de2d85ba9296753dc65344 100644
--- a/atlas/gen/atlas-gen.spec
+++ b/atlas/gen/atlas-gen.spec
@@ -1,7 +1,7 @@
-HEPWL_BMKEXE=./atlas-gen/atlas-gen-bmk.sh
-HEPWL_BMKDIR=./atlas-gen
+HEPWL_BMKEXE=atlas-gen-bmk.sh
+HEPWL_BMKDIR=atlas-gen
 HEPWL_BMKDESCRIPTION="ATLAS Event Generation based on athena version 19.2.5.5"
 HEPWL_DOCKERIMAGENAME=atlas-gen-bmk
-HEPWL_DOCKERIMAGETAG=v0.10
+HEPWL_DOCKERIMAGETAG=testv0.10
 HEPWL_CVMFSREPOS=atlas.cern.ch,atlas-condb.cern.ch,sft.cern.ch
 HEPWL_EXTEND_SFT_SPEC=./sft_spec_custom.txt
diff --git a/atlas/gen/atlas-gen/reference/test_1/atlas-gen_summary.json b/atlas/gen/atlas-gen/jobs/good_1/atlas-gen_summary.json
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/atlas-gen_summary.json
rename to atlas/gen/atlas-gen/jobs/good_1/atlas-gen_summary.json
diff --git a/atlas/gen/atlas-gen/reference/test_1/atlas-gen_summary_new.json b/atlas/gen/atlas-gen/jobs/good_1/atlas-gen_summary_new.json
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/atlas-gen_summary_new.json
rename to atlas/gen/atlas-gen/jobs/good_1/atlas-gen_summary_new.json
diff --git a/atlas/gen/atlas-gen/reference/shortlog.txt b/atlas/gen/atlas-gen/jobs/good_1/cishortlog.txt
similarity index 100%
rename from atlas/gen/atlas-gen/reference/shortlog.txt
rename to atlas/gen/atlas-gen/jobs/good_1/cishortlog.txt
diff --git a/atlas/gen/atlas-gen/reference/joburl.txt b/atlas/gen/atlas-gen/jobs/good_1/joburl.txt
similarity index 100%
rename from atlas/gen/atlas-gen/reference/joburl.txt
rename to atlas/gen/atlas-gen/jobs/good_1/joburl.txt
diff --git a/atlas/gen/atlas-gen/reference/test_1/proc_1/jobReport.json b/atlas/gen/atlas-gen/jobs/good_1/proc_1/jobReport.json
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/proc_1/jobReport.json
rename to atlas/gen/atlas-gen/jobs/good_1/proc_1/jobReport.json
diff --git a/atlas/gen/atlas-gen/reference/test_1/proc_1/log.generate b/atlas/gen/atlas-gen/jobs/good_1/proc_1/log.generate
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/proc_1/log.generate
rename to atlas/gen/atlas-gen/jobs/good_1/proc_1/log.generate
diff --git a/atlas/gen/atlas-gen/reference/test_1/proc_1/out_1.log b/atlas/gen/atlas-gen/jobs/good_1/proc_1/out_1.log
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/proc_1/out_1.log
rename to atlas/gen/atlas-gen/jobs/good_1/proc_1/out_1.log
diff --git a/atlas/gen/atlas-gen/reference/test_1/proc_2/jobReport.json b/atlas/gen/atlas-gen/jobs/good_1/proc_2/jobReport.json
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/proc_2/jobReport.json
rename to atlas/gen/atlas-gen/jobs/good_1/proc_2/jobReport.json
diff --git a/atlas/gen/atlas-gen/reference/test_1/proc_2/log.generate b/atlas/gen/atlas-gen/jobs/good_1/proc_2/log.generate
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/proc_2/log.generate
rename to atlas/gen/atlas-gen/jobs/good_1/proc_2/log.generate
diff --git a/atlas/gen/atlas-gen/reference/test_1/proc_2/out_2.log b/atlas/gen/atlas-gen/jobs/good_1/proc_2/out_2.log
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/proc_2/out_2.log
rename to atlas/gen/atlas-gen/jobs/good_1/proc_2/out_2.log
diff --git a/atlas/gen/atlas-gen/reference/test_1/proc_3/jobReport.json b/atlas/gen/atlas-gen/jobs/good_1/proc_3/jobReport.json
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/proc_3/jobReport.json
rename to atlas/gen/atlas-gen/jobs/good_1/proc_3/jobReport.json
diff --git a/atlas/gen/atlas-gen/reference/test_1/proc_3/log.generate b/atlas/gen/atlas-gen/jobs/good_1/proc_3/log.generate
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/proc_3/log.generate
rename to atlas/gen/atlas-gen/jobs/good_1/proc_3/log.generate
diff --git a/atlas/gen/atlas-gen/reference/test_1/proc_3/out_3.log b/atlas/gen/atlas-gen/jobs/good_1/proc_3/out_3.log
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/proc_3/out_3.log
rename to atlas/gen/atlas-gen/jobs/good_1/proc_3/out_3.log
diff --git a/atlas/gen/atlas-gen/reference/test_1/proc_4/jobReport.json b/atlas/gen/atlas-gen/jobs/good_1/proc_4/jobReport.json
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/proc_4/jobReport.json
rename to atlas/gen/atlas-gen/jobs/good_1/proc_4/jobReport.json
diff --git a/atlas/gen/atlas-gen/reference/test_1/proc_4/log.generate b/atlas/gen/atlas-gen/jobs/good_1/proc_4/log.generate
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/proc_4/log.generate
rename to atlas/gen/atlas-gen/jobs/good_1/proc_4/log.generate
diff --git a/atlas/gen/atlas-gen/reference/test_1/proc_4/out_4.log b/atlas/gen/atlas-gen/jobs/good_1/proc_4/out_4.log
similarity index 100%
rename from atlas/gen/atlas-gen/reference/test_1/proc_4/out_4.log
rename to atlas/gen/atlas-gen/jobs/good_1/proc_4/out_4.log
diff --git a/atlas/gen/atlas-gen/jobs/good_1/summary.json b/atlas/gen/atlas-gen/jobs/good_1/summary.json
new file mode 120000
index 0000000000000000000000000000000000000000..330a7842dff95dbf727d14de10a55621d1007146
--- /dev/null
+++ b/atlas/gen/atlas-gen/jobs/good_1/summary.json
@@ -0,0 +1 @@
+atlas-gen_summary.json
\ No newline at end of file
diff --git a/atlas/gen/atlas-gen/jobs/refjob b/atlas/gen/atlas-gen/jobs/refjob
new file mode 120000
index 0000000000000000000000000000000000000000..9912a47175aa29f7496248aefdb66c6caedb2208
--- /dev/null
+++ b/atlas/gen/atlas-gen/jobs/refjob
@@ -0,0 +1 @@
+good_1
\ No newline at end of file
diff --git a/atlas/gen/atlas-gen/reference/summary.json b/atlas/gen/atlas-gen/reference/summary.json
deleted file mode 120000
index dd313dc3fa5a52fc184be5ea98573b89fbaf2f4c..0000000000000000000000000000000000000000
--- a/atlas/gen/atlas-gen/reference/summary.json
+++ /dev/null
@@ -1 +0,0 @@
-./test_1/atlas-gen_summary.json
\ No newline at end of file
diff --git a/atlas/kv/atlas-kv.spec b/atlas/kv/atlas-kv.spec
index ed09d8c1bae70d3d8208999309efe33094dedec6..1d60703416eaf19239aade86cd3f5bf6627c862d 100644
--- a/atlas/kv/atlas-kv.spec
+++ b/atlas/kv/atlas-kv.spec
@@ -1,8 +1,8 @@
-HEPWL_BMKEXE=./atlas-kv/atlas-kv-bmk.sh
+HEPWL_BMKEXE=atlas-kv-bmk.sh
 HEPWL_BMKOPTS="-n 1"
-HEPWL_BMKDIR=./atlas-kv
+HEPWL_BMKDIR=atlas-kv
 HEPWL_BMKDESCRIPTION="ATLAS KV: GEANT4 simulation of 100 single muon events, based on Athena version v17.8.0.9"
 HEPWL_BMKANNOUNCE=false
-HEPWL_DOCKERIMAGENAME=kv-bmk
+HEPWL_DOCKERIMAGENAME=atlas-kv-bmk
 HEPWL_DOCKERIMAGETAG=ci1.0
 HEPWL_CVMFSREPOS=atlas.cern.ch
diff --git a/atlas/kv/atlas-kv/reference/test_1/atlas-kv_summary.json b/atlas/kv/atlas-kv/jobs/good_1/atlas-kv_summary.json
similarity index 100%
rename from atlas/kv/atlas-kv/reference/test_1/atlas-kv_summary.json
rename to atlas/kv/atlas-kv/jobs/good_1/atlas-kv_summary.json
diff --git a/atlas/kv/atlas-kv/reference/shortlog.txt b/atlas/kv/atlas-kv/jobs/good_1/cishortlog.txt
similarity index 100%
rename from atlas/kv/atlas-kv/reference/shortlog.txt
rename to atlas/kv/atlas-kv/jobs/good_1/cishortlog.txt
diff --git a/atlas/kv/atlas-kv/reference/joburl.txt b/atlas/kv/atlas-kv/jobs/good_1/joburl.txt
similarity index 100%
rename from atlas/kv/atlas-kv/reference/joburl.txt
rename to atlas/kv/atlas-kv/jobs/good_1/joburl.txt
diff --git a/atlas/kv/atlas-kv/reference/test_1/proc_1/AtlasG4_trf.log b/atlas/kv/atlas-kv/jobs/good_1/proc_1/AtlasG4_trf.log
similarity index 100%
rename from atlas/kv/atlas-kv/reference/test_1/proc_1/AtlasG4_trf.log
rename to atlas/kv/atlas-kv/jobs/good_1/proc_1/AtlasG4_trf.log
diff --git a/atlas/kv/atlas-kv/reference/test_1/proc_1/out_1.log b/atlas/kv/atlas-kv/jobs/good_1/proc_1/out_1.log
similarity index 100%
rename from atlas/kv/atlas-kv/reference/test_1/proc_1/out_1.log
rename to atlas/kv/atlas-kv/jobs/good_1/proc_1/out_1.log
diff --git a/atlas/kv/atlas-kv/jobs/good_1/summary.json b/atlas/kv/atlas-kv/jobs/good_1/summary.json
new file mode 120000
index 0000000000000000000000000000000000000000..841c64e6db49924a4bd9513c770142ae26fb1700
--- /dev/null
+++ b/atlas/kv/atlas-kv/jobs/good_1/summary.json
@@ -0,0 +1 @@
+atlas-kv_summary.json
\ No newline at end of file
diff --git a/atlas/kv/atlas-kv/jobs/refjob b/atlas/kv/atlas-kv/jobs/refjob
new file mode 120000
index 0000000000000000000000000000000000000000..9912a47175aa29f7496248aefdb66c6caedb2208
--- /dev/null
+++ b/atlas/kv/atlas-kv/jobs/refjob
@@ -0,0 +1 @@
+good_1
\ No newline at end of file
diff --git a/atlas/kv/atlas-kv/reference/summary.json b/atlas/kv/atlas-kv/reference/summary.json
deleted file mode 120000
index dfbf027f8f06d370460fcd23da4acf4dfc4cc7bc..0000000000000000000000000000000000000000
--- a/atlas/kv/atlas-kv/reference/summary.json
+++ /dev/null
@@ -1 +0,0 @@
-./test_1/atlas-kv_summary.json
\ No newline at end of file
diff --git a/atlas/reco/atlas-reco.spec b/atlas/reco/atlas-reco.spec
index f6940da573059795a05a3aaa0e77d08b37b4944d..a7ae995d1402f2d12ce503d42ef750c4a14bb242 100644
--- a/atlas/reco/atlas-reco.spec
+++ b/atlas/reco/atlas-reco.spec
@@ -1,6 +1,6 @@
-HEPWL_BMKEXE=./atlas-reco/atlas-reco-bmk.sh
+HEPWL_BMKEXE=atlas-reco-bmk.sh
 HEPWL_BMKOPTS="-n 1 -e 2"
-HEPWL_BMKDIR=./atlas-reco
+HEPWL_BMKDIR=atlas-reco
 HEPWL_BMKDESCRIPTION="ATLAS Digi Reco based on version based on athena version 21.0.23"
 HEPWL_DOCKERIMAGENAME=atlas-reco-bmk
 HEPWL_DOCKERIMAGETAG=buildtest
diff --git a/atlas/reco/atlas-reco/reference/test_1/All-atlas-reco_summary.json b/atlas/reco/atlas-reco/jobs/good_1/All-atlas-reco_summary.json
similarity index 100%
rename from atlas/reco/atlas-reco/reference/test_1/All-atlas-reco_summary.json
rename to atlas/reco/atlas-reco/jobs/good_1/All-atlas-reco_summary.json
diff --git a/atlas/reco/atlas-reco/reference/test_1/ESDtoAOD-atlas-reco_summary.json b/atlas/reco/atlas-reco/jobs/good_1/ESDtoAOD-atlas-reco_summary.json
similarity index 100%
rename from atlas/reco/atlas-reco/reference/test_1/ESDtoAOD-atlas-reco_summary.json
rename to atlas/reco/atlas-reco/jobs/good_1/ESDtoAOD-atlas-reco_summary.json
diff --git a/atlas/reco/atlas-reco/reference/test_1/HITtoRDO-atlas-reco_summary.json b/atlas/reco/atlas-reco/jobs/good_1/HITtoRDO-atlas-reco_summary.json
similarity index 100%
rename from atlas/reco/atlas-reco/reference/test_1/HITtoRDO-atlas-reco_summary.json
rename to atlas/reco/atlas-reco/jobs/good_1/HITtoRDO-atlas-reco_summary.json
diff --git a/atlas/reco/atlas-reco/reference/test_1/RAWtoESD-atlas-reco_summary.json b/atlas/reco/atlas-reco/jobs/good_1/RAWtoESD-atlas-reco_summary.json
similarity index 100%
rename from atlas/reco/atlas-reco/reference/test_1/RAWtoESD-atlas-reco_summary.json
rename to atlas/reco/atlas-reco/jobs/good_1/RAWtoESD-atlas-reco_summary.json
diff --git a/atlas/reco/atlas-reco/reference/test_1/RDOtoRDOTrigger-atlas-reco_summary.json b/atlas/reco/atlas-reco/jobs/good_1/RDOtoRDOTrigger-atlas-reco_summary.json
similarity index 100%
rename from atlas/reco/atlas-reco/reference/test_1/RDOtoRDOTrigger-atlas-reco_summary.json
rename to atlas/reco/atlas-reco/jobs/good_1/RDOtoRDOTrigger-atlas-reco_summary.json
diff --git a/atlas/reco/atlas-reco/reference/test_1/atlas-reco_summary.json b/atlas/reco/atlas-reco/jobs/good_1/atlas-reco_summary.json
similarity index 100%
rename from atlas/reco/atlas-reco/reference/test_1/atlas-reco_summary.json
rename to atlas/reco/atlas-reco/jobs/good_1/atlas-reco_summary.json
diff --git a/atlas/reco/atlas-reco/reference/shortlog.txt b/atlas/reco/atlas-reco/jobs/good_1/cishortlog.txt
similarity index 100%
rename from atlas/reco/atlas-reco/reference/shortlog.txt
rename to atlas/reco/atlas-reco/jobs/good_1/cishortlog.txt
diff --git a/atlas/reco/atlas-reco/reference/joburl.txt b/atlas/reco/atlas-reco/jobs/good_1/joburl.txt
similarity index 100%
rename from atlas/reco/atlas-reco/reference/joburl.txt
rename to atlas/reco/atlas-reco/jobs/good_1/joburl.txt
diff --git a/atlas/reco/atlas-reco/reference/test_1/proc_1/jobReport.json b/atlas/reco/atlas-reco/jobs/good_1/proc_1/jobReport.json
similarity index 100%
rename from atlas/reco/atlas-reco/reference/test_1/proc_1/jobReport.json
rename to atlas/reco/atlas-reco/jobs/good_1/proc_1/jobReport.json
diff --git a/atlas/reco/atlas-reco/reference/test_1/proc_1/mem.summary.ESDtoAOD.json b/atlas/reco/atlas-reco/jobs/good_1/proc_1/mem.summary.ESDtoAOD.json
similarity index 100%
rename from atlas/reco/atlas-reco/reference/test_1/proc_1/mem.summary.ESDtoAOD.json
rename to atlas/reco/atlas-reco/jobs/good_1/proc_1/mem.summary.ESDtoAOD.json
diff --git a/atlas/reco/atlas-reco/reference/test_1/proc_1/mem.summary.HITtoRDO.json b/atlas/reco/atlas-reco/jobs/good_1/proc_1/mem.summary.HITtoRDO.json
similarity index 100%
rename from atlas/reco/atlas-reco/reference/test_1/proc_1/mem.summary.HITtoRDO.json
rename to atlas/reco/atlas-reco/jobs/good_1/proc_1/mem.summary.HITtoRDO.json
diff --git a/atlas/reco/atlas-reco/reference/test_1/proc_1/mem.summary.RAWtoESD.json b/atlas/reco/atlas-reco/jobs/good_1/proc_1/mem.summary.RAWtoESD.json
similarity index 100%
rename from atlas/reco/atlas-reco/reference/test_1/proc_1/mem.summary.RAWtoESD.json
rename to atlas/reco/atlas-reco/jobs/good_1/proc_1/mem.summary.RAWtoESD.json
diff --git a/atlas/reco/atlas-reco/reference/test_1/proc_1/mem.summary.RDOtoRDOTrigger.json b/atlas/reco/atlas-reco/jobs/good_1/proc_1/mem.summary.RDOtoRDOTrigger.json
similarity index 100%
rename from atlas/reco/atlas-reco/reference/test_1/proc_1/mem.summary.RDOtoRDOTrigger.json
rename to atlas/reco/atlas-reco/jobs/good_1/proc_1/mem.summary.RDOtoRDOTrigger.json
diff --git a/atlas/reco/atlas-reco/reference/test_1/proc_1/out_1.log b/atlas/reco/atlas-reco/jobs/good_1/proc_1/out_1.log
similarity index 100%
rename from atlas/reco/atlas-reco/reference/test_1/proc_1/out_1.log
rename to atlas/reco/atlas-reco/jobs/good_1/proc_1/out_1.log
diff --git a/atlas/reco/atlas-reco/jobs/good_1/summary.json b/atlas/reco/atlas-reco/jobs/good_1/summary.json
new file mode 120000
index 0000000000000000000000000000000000000000..5692ccd23a1eabf411dd70c2b64f83bac85f6043
--- /dev/null
+++ b/atlas/reco/atlas-reco/jobs/good_1/summary.json
@@ -0,0 +1 @@
+atlas-reco_summary.json
\ No newline at end of file
diff --git a/atlas/reco/atlas-reco/jobs/refjob b/atlas/reco/atlas-reco/jobs/refjob
new file mode 120000
index 0000000000000000000000000000000000000000..9912a47175aa29f7496248aefdb66c6caedb2208
--- /dev/null
+++ b/atlas/reco/atlas-reco/jobs/refjob
@@ -0,0 +1 @@
+good_1
\ No newline at end of file
diff --git a/atlas/reco/atlas-reco/reference/summary.json b/atlas/reco/atlas-reco/reference/summary.json
deleted file mode 120000
index 27490325aa407845f9478be8fe4f7750ecf64dd1..0000000000000000000000000000000000000000
--- a/atlas/reco/atlas-reco/reference/summary.json
+++ /dev/null
@@ -1 +0,0 @@
-./test_1/atlas-reco_summary.json
\ No newline at end of file
diff --git a/atlas/sim/atlas-sim.spec b/atlas/sim/atlas-sim.spec
index f0ff870241ef5c3b4b3e9cb2830c95107fa2473d..ad04ffb396a3f37e32ca63aa85e315d0de88e5b2 100644
--- a/atlas/sim/atlas-sim.spec
+++ b/atlas/sim/atlas-sim.spec
@@ -1,7 +1,7 @@
-HEPWL_BMKEXE=./atlas-sim/atlas-sim-bmk.sh 
+HEPWL_BMKEXE=atlas-sim-bmk.sh 
 HEPWL_BMKOPTS="-e 3 -t 2"
-HEPWL_BMKDIR=./atlas-sim
+HEPWL_BMKDIR=atlas-sim
 HEPWL_BMKDESCRIPTION="ATLAS Sim (GEANT4) based on athena version 21.0.15"
 HEPWL_DOCKERIMAGENAME=atlas-sim-bmk
-HEPWL_DOCKERIMAGETAG=v0.13
+HEPWL_DOCKERIMAGETAG=testv0.13
 HEPWL_CVMFSREPOS=atlas.cern.ch,atlas-condb.cern.ch,sft.cern.ch
diff --git a/atlas/sim/atlas-sim/reference/test_1/atlas-sim_summary.json b/atlas/sim/atlas-sim/jobs/good_1/atlas-sim_summary.json
similarity index 100%
rename from atlas/sim/atlas-sim/reference/test_1/atlas-sim_summary.json
rename to atlas/sim/atlas-sim/jobs/good_1/atlas-sim_summary.json
diff --git a/atlas/sim/atlas-sim/reference/test_1/atlas-sim_summary_new.json b/atlas/sim/atlas-sim/jobs/good_1/atlas-sim_summary_new.json
similarity index 100%
rename from atlas/sim/atlas-sim/reference/test_1/atlas-sim_summary_new.json
rename to atlas/sim/atlas-sim/jobs/good_1/atlas-sim_summary_new.json
diff --git a/atlas/sim/atlas-sim/reference/shortlog.txt b/atlas/sim/atlas-sim/jobs/good_1/cishortlog.txt
similarity index 100%
rename from atlas/sim/atlas-sim/reference/shortlog.txt
rename to atlas/sim/atlas-sim/jobs/good_1/cishortlog.txt
diff --git a/atlas/sim/atlas-sim/reference/joburl.txt b/atlas/sim/atlas-sim/jobs/good_1/joburl.txt
similarity index 100%
rename from atlas/sim/atlas-sim/reference/joburl.txt
rename to atlas/sim/atlas-sim/jobs/good_1/joburl.txt
diff --git a/atlas/sim/atlas-sim/reference/test_1/proc_1/jobReport.json b/atlas/sim/atlas-sim/jobs/good_1/proc_1/jobReport.json
similarity index 100%
rename from atlas/sim/atlas-sim/reference/test_1/proc_1/jobReport.json
rename to atlas/sim/atlas-sim/jobs/good_1/proc_1/jobReport.json
diff --git a/atlas/sim/atlas-sim/reference/test_1/proc_1/log.EVNTtoHITS b/atlas/sim/atlas-sim/jobs/good_1/proc_1/log.EVNTtoHITS
similarity index 100%
rename from atlas/sim/atlas-sim/reference/test_1/proc_1/log.EVNTtoHITS
rename to atlas/sim/atlas-sim/jobs/good_1/proc_1/log.EVNTtoHITS
diff --git a/atlas/sim/atlas-sim/reference/test_1/proc_1/mem.summary.EVNTtoHITS.json b/atlas/sim/atlas-sim/jobs/good_1/proc_1/mem.summary.EVNTtoHITS.json
similarity index 100%
rename from atlas/sim/atlas-sim/reference/test_1/proc_1/mem.summary.EVNTtoHITS.json
rename to atlas/sim/atlas-sim/jobs/good_1/proc_1/mem.summary.EVNTtoHITS.json
diff --git a/atlas/sim/atlas-sim/reference/test_1/proc_1/out_1.log b/atlas/sim/atlas-sim/jobs/good_1/proc_1/out_1.log
similarity index 100%
rename from atlas/sim/atlas-sim/reference/test_1/proc_1/out_1.log
rename to atlas/sim/atlas-sim/jobs/good_1/proc_1/out_1.log
diff --git a/atlas/sim/atlas-sim/reference/test_1/proc_2/jobReport.json b/atlas/sim/atlas-sim/jobs/good_1/proc_2/jobReport.json
similarity index 100%
rename from atlas/sim/atlas-sim/reference/test_1/proc_2/jobReport.json
rename to atlas/sim/atlas-sim/jobs/good_1/proc_2/jobReport.json
diff --git a/atlas/sim/atlas-sim/reference/test_1/proc_2/log.EVNTtoHITS b/atlas/sim/atlas-sim/jobs/good_1/proc_2/log.EVNTtoHITS
similarity index 100%
rename from atlas/sim/atlas-sim/reference/test_1/proc_2/log.EVNTtoHITS
rename to atlas/sim/atlas-sim/jobs/good_1/proc_2/log.EVNTtoHITS
diff --git a/atlas/sim/atlas-sim/reference/test_1/proc_2/mem.summary.EVNTtoHITS.json b/atlas/sim/atlas-sim/jobs/good_1/proc_2/mem.summary.EVNTtoHITS.json
similarity index 100%
rename from atlas/sim/atlas-sim/reference/test_1/proc_2/mem.summary.EVNTtoHITS.json
rename to atlas/sim/atlas-sim/jobs/good_1/proc_2/mem.summary.EVNTtoHITS.json
diff --git a/atlas/sim/atlas-sim/reference/test_1/proc_2/out_2.log b/atlas/sim/atlas-sim/jobs/good_1/proc_2/out_2.log
similarity index 100%
rename from atlas/sim/atlas-sim/reference/test_1/proc_2/out_2.log
rename to atlas/sim/atlas-sim/jobs/good_1/proc_2/out_2.log
diff --git a/atlas/sim/atlas-sim/jobs/good_1/summary.json b/atlas/sim/atlas-sim/jobs/good_1/summary.json
new file mode 120000
index 0000000000000000000000000000000000000000..e1bd40c5c7d359ed0d5591727aa142aa64d863f3
--- /dev/null
+++ b/atlas/sim/atlas-sim/jobs/good_1/summary.json
@@ -0,0 +1 @@
+atlas-sim_summary.json
\ No newline at end of file
diff --git a/atlas/sim/atlas-sim/jobs/refjob b/atlas/sim/atlas-sim/jobs/refjob
new file mode 120000
index 0000000000000000000000000000000000000000..9912a47175aa29f7496248aefdb66c6caedb2208
--- /dev/null
+++ b/atlas/sim/atlas-sim/jobs/refjob
@@ -0,0 +1 @@
+good_1
\ No newline at end of file
diff --git a/atlas/sim/atlas-sim/reference/summary.json b/atlas/sim/atlas-sim/reference/summary.json
deleted file mode 120000
index 98d15d561af0e94ccde97ba25e2124c039cf1104..0000000000000000000000000000000000000000
--- a/atlas/sim/atlas-sim/reference/summary.json
+++ /dev/null
@@ -1 +0,0 @@
-./test_1/atlas-sim_summary.json
\ No newline at end of file
diff --git a/build-executor/generate_Dockerfile.sh b/build-executor/generate_Dockerfile.sh
index 51a0080fee3d5de3944f3dd53963e8798fadd3f8..99b0d454984a30c8829c4c0990958d9819031a5c 100644
--- a/build-executor/generate_Dockerfile.sh
+++ b/build-executor/generate_Dockerfile.sh
@@ -58,19 +58,22 @@ function generate_Dockerfile(){
     return 1
   fi
 
-  source "$hepwlSpecFile"
+  if ! load_and_validate_specfile "$hepwlSpecFile"; then
+    echo "ERROR! invalid SPEC file"
+    return 1
+  fi  
 
   dockerFile="$(dirname $hepwlSpecFile)/Dockerfile"
 
-  cat $dockerCommonTemplate | sed -e "s@__insert_bmkdir__@$HEPWL_BMKDIR@g" \
+  cat $dockerCommonTemplate | sed -e "s@__insert_bmkdir__@./$HEPWL_BMKDIR@g" \
     -e "s@__insert_bmkdescription__@$HEPWL_BMKDESCRIPTION@g" \
-    -e "s@__insert_bmkexe__@$HEPWL_BMKEXE@g" > $dockerFile
+    -e "s@__insert_bmkexe__@./$HEPWL_BMKDIR/$HEPWL_BMKEXE@g" > $dockerFile
 
   hepwlDockerAppend="$(dirname hepwlSpecFile)/Dockerfile.append"
   if [ -f ${hepwlDockerAppend} ]; then 
-    cat ${hepwlDockerAppend} | sed -e "s@__insert_bmkdir__@$HEPWL_BMKDIR@g" \
+    cat ${hepwlDockerAppend} | sed -e "s@__insert_bmkdir__@./$HEPWL_BMKDIR@g" \
       -e "s@__insert_bmkdescription__@$HEPWL_BMKDESCRIPTION@g" \
-      -e "s@__insert_bmkexe__@$HEPWL_BMKEXE@g" >> $dockerFile
+      -e "s@__insert_bmkexe__@./$HEPWL_BMKDIR/$HEPWL_BMKEXE@g" >> $dockerFile
   fi
 
   echo "RUN tar -cf /tmp/checksum.tar /bmk /cvmfs && checksum=\`md5sum /tmp/checksum.tar| cut -f1 -d\" \"\` && rm /tmp/checksum.tar && echo '{\"version\":\"$HEPWL_DOCKERIMAGETAG\",\"description\":\"$HEPWL_BMKDESCRIPTION\",\"checksum\":\"'\$checksum'\"}' > /bmk/$HEPWL_BMKDIR/version.json" >> $dockerFile
diff --git a/build-executor/main.sh b/build-executor/main.sh
index a100c17ef01eede97637fabc23f7ca345ee7b57f..47079c904f561dab9614c312ddc057705992bfd3 100755
--- a/build-executor/main.sh
+++ b/build-executor/main.sh
@@ -29,6 +29,46 @@ function execute_command(){
 }
 
 
+# Load the spec file and validate it against common naming conventions (BMK-135)
+# [Eventually this could use readonly bash variables and check if any HEPWL_ variables are already defined?]
+function load_and_validate_specfile(){
+  if [ "$1" == "" ] || [ "$2" != "" ]; then
+    echo "Usage: ${FUNCNAME[0]} <hepwlSpecFile>"
+    return 1
+  fi
+  hepwlSpecFile=$1
+  echo "[${FUNCNAME[0]}] HEPWL SPEC FILE: $hepwlSpecFile"
+  echo "[${FUNCNAME[0]}] validate spec file name"
+  spec=$(basename ${hepwlSpecFile})
+  spec12="${spec%%.spec}"
+  if [ "${spec}" == "${spec12}" ]; then
+    echo "ERROR! spec file name does not end in .spec"
+    return 1
+  fi
+  spec1=${spec12%-*}
+  spec2=${spec12#*-}
+  echo "[${FUNCNAME[0]}] experiment: ${spec1}"
+  echo "[${FUNCNAME[0]}] workload: ${spec2}"
+  ###echo "[${FUNCNAME[0]}] set | grep ^HEPWL :"; set | grep ^HEPWL_
+  echo "[${FUNCNAME[0]}] source $hepwlSpecFile"
+  source "$hepwlSpecFile"
+  ###echo "[${FUNCNAME[0]}] set | grep ^HEPWL :"; set | grep ^HEPWL_
+  echo "[${FUNCNAME[0]}] validate HEPWL_ environment variables"
+  if [ "${HEPWL_BMKDIR}" != "${spec12}" ]; then
+    echo "ERROR! Invalid HEPWL_BMKDIR=${HEPWL_BMKDIR}, expected ${spec12}"
+    return 1
+  elif [ "${HEPWL_BMKEXE}" != "${spec12}-bmk.sh" ]; then
+    echo "ERROR! Invalid HEPWL_BMKEXE=${HEPWL_BMKEXE}, expected ${spec12}-bmk.sh"
+    return 1
+  elif [ "${HEPWL_DOCKERIMAGENAME}" != "${spec12}-bmk" ]; then
+    echo "ERROR! Invalid HEPWL_DOCKERIMAGENAME=${HEPWL_DOCKERIMAGENAME}, expected ${spec12}-bmk"
+    return 1
+  fi
+  echo "[${FUNCNAME[0]}] OK"
+  return 0
+}
+
+
 # Mount the cvmfs repos specified in $HEPWL_CVMFSREPOS
 # Input environment variable ${HEPWL_CVMFSREPOS}: cvmfs repos to mount
 # Input environment variable ${MAIN_CVMFSTRACESDIR}: directory containing the cvmfs trace files
@@ -227,9 +267,14 @@ function copy_cvmfs(){
   echo "[copy_cvmfs] mv ${MAIN_CVMFSEXPORTDIR}/cvmfs $MAIN_HEPWLBUILDDIR "
   mv ${MAIN_CVMFSEXPORTDIR}/cvmfs $MAIN_HEPWLBUILDDIR || fail "[copy_cvmfs] cannot mv ${MAIN_CVMFSEXPORTDIR}/cvmfs $MAIN_HEPWLBUILDDIR"
   # FIXME: if cms repo, need to copy by hand the SITECONF/local, because it's a sym link
-  if [ -e /cvmfs/cms.cern.ch/SITECONF/local ]; then
-    cp -r -H /cvmfs/cms.cern.ch/SITECONF/local $MAIN_HEPWLBUILDDIR/cvmfs/cms.cern.ch/SITECONF/ || fail "[copy_cvmfs] cannot cp /cvmfs/cms.cern.ch/SITECONF/local" # BMK-15: do NOT use '.. && ( .. || fail )'
+  #if [ -e /cvmfs/cms.cern.ch/SITECONF/local ]; then
+  #  cp -r -H /cvmfs/cms.cern.ch/SITECONF/local $MAIN_HEPWLBUILDDIR/cvmfs/cms.cern.ch/SITECONF/ || fail "[copy_cvmfs] cannot cp /cvmfs/cms.cern.ch/SITECONF/local" # BMK-15: do NOT use '.. && ( .. || fail )'
+  #fi
+  # FIXME: try to run CMS bmks without SITECONF/local (BMK-15)
+  if [ -e $MAIN_HEPWLBUILDDIR/cvmfs/cms.cern.ch/SITECONF/local ]; then
+    rm -rf $MAIN_HEPWLBUILDDIR/cvmfs/cms.cern.ch/SITECONF/local
   fi
+  mkdir -p $MAIN_HEPWLBUILDDIR/cvmfs/cms.cern.ch/SITECONF/local/JobConfig # empty
   ls $MAIN_HEPWLBUILDDIR/cvmfs
   echo "[copy_cvmfs] finished at $(date)"
   return 0
@@ -266,9 +311,6 @@ function build_standalone_image(){
   echo "[build_standalone_image] theimage: $theimage"
   # [NB ./cvmfs here contains the data copied by the function copy_cvmfs]
   build_docker_image "$theimage" || fail "[build_standalone_image] build_docker_image $theimage"
-  clean_cvmfs_copy || fail "[build_standalone_image] clean_cvmfs_copy"
-  test_standalone_image || fail "[build_standalone_image] test_standalone_image"
-  publish_standalone_image || fail "[build_standalone_image] publish_standalone_image"
   echo "[build_standalone_image] finished at $(date)"
   return 0
 }
@@ -281,25 +323,25 @@ function build_standalone_image(){
 # Input environment variable ${HEPWL_BMKOPTS}: options for the HEP workload script
 # Input environment variable ${CIENV_JOBDIR}/results: host directory where results should be stored
 # Output: status code for the success of the test and results in ${CIENV_JOBDIR}/results
-function test_in_singularity(){
-  echo "[test_in_singularity] ................................................"
-  echo "[test_in_singularity] starting at $(date)"
-  echo "[test_in_singularity] current directory is $(pwd)"
+function test_standalone_image_singularity(){
+  echo "[test_standalone_image_singularity] ................................................"
+  echo "[test_standalone_image_singularity] starting at $(date)"
+  echo "[test_standalone_image_singularity] current directory is $(pwd)"
   if [ "$CI_JOB_NAME" == "" ] || [ "$CI_JOB_NAME" == "noCI" ]; then
-    echo "[test_in_singularity] skipping singularity test CI_JOB_NAME='$CI_JOB_NAME'"
+    echo "[test_standalone_image_singularity] skipping singularity test CI_JOB_NAME='$CI_JOB_NAME'"
   else
-    SINGULARITY_REGISTRY="${CIENV_DOCKERREGISTRY}"
-    IMAGE="${HEPWL_DOCKERIMAGENAME}":"${HEPWL_DOCKERIMAGETAG}"
-    echo "[test_in_singularity] docker tag ${SINGULARITY_REGISTRY}/${IMAGE} ${SINGULARITY_REGISTRY}/${HEPWL_DOCKERIMAGENAME}:test_ci_singularity"
-    docker tag ${SINGULARITY_REGISTRY}/${IMAGE} ${SINGULARITY_REGISTRY}/${HEPWL_DOCKERIMAGENAME}:test_ci_singularity || fail "[test_in_singularity] docker tag"
-    echo $CI_BUILD_TOKEN | docker login -u gitlab-ci-token --password-stdin gitlab-registry.cern.ch || fail "[test_in_singularity] docker login"
-    echo "[test_in_singularity] docker push ${SINGULARITY_REGISTRY}/${HEPWL_DOCKERIMAGENAME}:test_ci_singularity"
-    docker push ${SINGULARITY_REGISTRY}/${HEPWL_DOCKERIMAGENAME}:test_ci_singularity
-    echo -e "\n[test_in_singularity] Run WL in singularity (to test the image) via execute_command - started"
-    execute_command docker run --privileged --network=host -v ${CIENV_JOBDIR}/results:/results ${SINGULARITY_REGISTRY}/singularity-executor singularity run -B /results:/results docker://${SINGULARITY_REGISTRY}/${HEPWL_DOCKERIMAGENAME}:test_ci_singularity $HEPWL_BMKOPTS || fail "[test_in_singularity] singularity run -B $CIENV_JOBDIR/results:/results ${HEPWL_DOCKERIMAGENAME}:ci_singularity $HEPWL_BMKOPTS"
-    echo -e "[test_in_singularity] Run WL in singularity (to test the image) via execute_command - completed\n"
+    singularityregistry="${CIENV_DOCKERREGISTRY}"
+    theimage="${HEPWL_DOCKERIMAGENAME}":"${HEPWL_DOCKERIMAGETAG}"
+    echo "[test_standalone_image_singularity] docker tag ${singularityregistry}/${theimage} ${singularityregistry}/${HEPWL_DOCKERIMAGENAME}:test_ci_singularity"
+    docker tag ${singularityregistry}/${theimage} ${singularityregistry}/${HEPWL_DOCKERIMAGENAME}:test_ci_singularity || fail "[test_standalone_image_singularity] docker tag"
+    echo $CI_BUILD_TOKEN | docker login -u gitlab-ci-token --password-stdin gitlab-registry.cern.ch || fail "[test_standalone_image_singularity] docker login"
+    echo "[test_standalone_image_singularity] docker push ${singularityregistry}/${HEPWL_DOCKERIMAGENAME}:test_ci_singularity"
+    docker push ${singularityregistry}/${HEPWL_DOCKERIMAGENAME}:test_ci_singularity
+    echo -e "\n[test_standalone_image_singularity] Run WL in singularity (to test the image) via execute_command - started"
+    execute_command docker run --privileged --network=host -v ${CIENV_JOBDIR}/results:/results ${singularityregistry}/singularity-executor singularity run -B /results:/results docker://${singularityregistry}/${HEPWL_DOCKERIMAGENAME}:test_ci_singularity $HEPWL_BMKOPTS || fail "[test_standalone_image_singularity] singularity run -B $CIENV_JOBDIR/results:/results ${HEPWL_DOCKERIMAGENAME}:ci_singularity $HEPWL_BMKOPTS"
+    echo -e "[test_standalone_image_singularity] Run WL in singularity (to test the image) via execute_command - completed\n"
   fi
-  echo "[test_in_singularity] finished at $(date)"
+  echo "[test_standalone_image_singularity] finished at $(date)"
   return 0
 }
 
@@ -311,35 +353,30 @@ function test_in_singularity(){
 # Input environment variable ${HEPWL_BMKOPTS}: options for the HEP workload script
 # Input environment variable ${CIENV_JOBDIR}/results: host directory where results should be stored
 # Output: status code for the success of the test and results in ${CIENV_JOBDIR}/results
-function test_standalone_image(){
-  echo "[test_standalone_image] ................................................"
-  echo "[test_standalone_image] starting at $(date)"
-  echo "[test_standalone_image] current directory is $(pwd)"
+function test_standalone_image_docker(){
+  echo "[test_standalone_image_docker] ................................................"
+  echo "[test_standalone_image_docker] starting at $(date)"
+  echo "[test_standalone_image_docker] current directory is $(pwd)"
   theimage="${HEPWL_DOCKERIMAGENAME}":"${HEPWL_DOCKERIMAGETAG}"
   if [ "${CIENV_DOCKERREGISTRY}" != "" ]; then theimage="${CIENV_DOCKERREGISTRY}/${theimage}"; fi
-  echo "[test_standalone_image] theimage: $theimage"
+  echo "[test_standalone_image_docker] theimage: $theimage"
   if [ -z "$HEPWL_BMKOPTS" ]; then HEPWL_BMKOPTS=""; fi
   strace=""
   net_conn="--network none" # by default run the test without network connectivity
   if [ "$MAIN_NETWORKCONN" == "1" ]; then net_conn=""; fi
   ###strace="--cap-add SYS_PTRACE" # optionally add SYS_PTRACE capability to use strace (see https://github.com/moby/moby/issues/21051)
-  echo -e "\n[test_standalone_image] Run WL in docker (to test the image) via execute_command - started"
-  execute_command docker run ${strace} ${net_conn} --rm -v $CIENV_JOBDIR/results:/results $theimage $HEPWL_BMKOPTS
-  status=$?
-  if [[ "$status" -ne "0" ]]; then
-    docker rmi -f $theimage #see BMK-122
-    fail "[test_standalone_image] docker run $theimage"
+  echo -e "\n[test_standalone_image_docker] Run WL in docker (to test the image) via execute_command - started"
+  if ! execute_command docker run ${strace} ${net_conn} --rm -v $CIENV_JOBDIR/results:/results $theimage $HEPWL_BMKOPTS; then
+    docker rmi -f $theimage # BMK-122
+    fail "[test_standalone_image_docker] docker run $theimage"
   fi
-  echo -e "[test_standalone_image] Run WL in docker (to test the image) via execute_command - completed\n"
-  ## NB THE LINE BELOW WILL BE MOVED ELSEWHERE
-  test_in_singularity || fail "[test_standalone_image] test_in_singularity"
-  ## NB THE LINE ABOVE WILL BE MOVED ELSEWHERE
-  echo "[test_standalone_image] finished at $(date)"
+  echo -e "[test_standalone_image_docker] Run WL in docker (to test the image) via execute_command - completed\n"
+  echo "[test_standalone_image_docker] finished at $(date)"
   return 0
 }
 
 
-# Publish (and announce) the standalone HEP workload image with a local /cvmfs
+# Publish the standalone HEP workload image with a local /cvmfs
 # Input environment variable ${HEPWL_DOCKERIMAGENAME}: image name for the HEP workload
 # Input environment variable ${HEPWL_DOCKERIMAGETAG}: image tag for the standalone HEP workload
 # Input environment variable ${CIENV_DOCKERREGISTRY}: registry where the image should be pushed
@@ -361,10 +398,7 @@ function publish_standalone_image(){
       theimage_latest=${CIENV_DOCKERREGISTRY}/${HEPWL_DOCKERIMAGENAME}:latest
       docker tag "${theimage}" "${theimage_latest}" || fail "[publish_standalone_image] docker tag ${theimage} ${theimage_latest}"
       docker push "${theimage_latest}" || fail "[publish_standalone_image] docker push ${theimage_latest}"
-      docker rmi "${theimage_latest}"  #BMK-122 cleaning the local tag latest to free up space
-    fi
-    if [ -z $HEPWL_BMKANNOUNCE ] || [ "${HEPWL_BMKANNOUNCE,,}" != "false" ]; then
-      announce "${theimage}"
+      docker rmi "${theimage_latest}" # BMK-122 clean local tag latest to free up space
     fi
   fi
   echo "[publish_standalone_image] remove local image ${theimage}"
@@ -378,27 +412,30 @@ function publish_standalone_image(){
 # (send an email from ${CI_MAIL_FROM} to ${CI_ANNOUNCE_TO} announcing a new image created in ${CI_JOB_URL})
 # Input $1: docker image, including registry prefix (registry/image_name:image_tag)
 # Input environment variables ${CI_MAIL_FROM}, ${CI_ANNOUNCE_TO} and ${CI_JOB_URL}
-function announce(){
-  echo "[announce] ................................................"
-  echo "[announce] starting at $(date)"
-  echo "[announce] current directory is $(pwd)"
-  echo "[announce] send mail from CI_MAIL_FROM='${CI_MAIL_FROM}'"
-  echo "[announce] send mail to CI_ANNOUNCE_TO='${CI_ANNOUNCE_TO}'"
-  if [ "${CI_MAIL_FROM}" == "" ] || [ "${CI_ANNOUNCE_TO}" == "" ]; then
-    echo "[announce] WARNING! no mail sent, invalid CI_MAIL_FROM or CI_ANNOUNCE_TO"
-    return 0
+# Input environment variable ${HEPWL_BMKANNOUNCE}: if exists and "false", do not announce the release
+function announce_standalone_image(){
+  echo "[announce_standalone_image] ................................................"
+  echo "[announce_standalone_image] starting at $(date)"
+  echo "[announce_standalone_image] current directory is $(pwd)"
+  echo "[announce_standalone_image] send mail from CI_MAIL_FROM='${CI_MAIL_FROM}'"
+  echo "[announce_standalone_image] send mail to CI_ANNOUNCE_TO='${CI_ANNOUNCE_TO}'"
+  if [ "${HEPWL_BMKANNOUNCE}" == "false" ]; then
+    echo "[announce_standalone_image] WARNING! no mail sent, HEPWL_BMKANNOUNCE is '${HEPWL_BMKANNOUNCE}'"
+  elif [ "${CI_MAIL_FROM}" == "" ] || [ "${CI_ANNOUNCE_TO}" == "" ]; then
+    echo "[announce_standalone_image] WARNING! no mail sent, invalid CI_MAIL_FROM or CI_ANNOUNCE_TO"
+  else
+    theimage=$1
+    postfix start
+    announcement="announce.txt"
+    echo -e "Dear HEP Benchmark developers, \n" > $announcement
+    echo -e "we are pleased to inform that a new version has been released for the container image \n\n${theimage}" >> $announcement
+    echo -e "\nPlease DO NOT REPLY\nReport automatically generated from GitLab CI in job ${CI_JOB_URL}\n[$(date)]" >> $announcement
+    echo -e "\nYours sincerely,\nHEPiX Benchmarking Working Group\n\n" >> $announcement
+    cat $announcement
+    cat $announcement | mail -r ${CI_MAIL_FROM} -s "New Docker container available $theimage" ${CI_ANNOUNCE_TO}
+    sleep 100s # keep the container alive, otherwise no email is sent (emails are sent only once per minute, see BMK-80)
   fi
-  theimage=$1
-  postfix start
-  announcement="announce.txt"
-  echo -e "Dear HEP Benchmark developers, \n" > $announcement
-  echo -e "we are pleased to inform that a new version has been released for the container image \n\n${theimage}" >> $announcement
-  echo -e "\nPlease DO NOT REPLY\nReport automatically generated from GitLab CI in job ${CI_JOB_URL}\n[$(date)]" >> $announcement
-  echo -e "\nYours sincerely,\nHEPiX Benchmarking Working Group\n\n" >> $announcement
-  cat $announcement
-  cat $announcement | mail -r ${CI_MAIL_FROM} -s "New Docker container available $theimage" ${CI_ANNOUNCE_TO}
-  sleep 100s # keep the container alive, otherwise no email is sent (emails are sent only once per minute, see BMK-80)
-  echo "[announce] finished at $(date)"
+  echo "[announce_standalone_image] finished at $(date)"
   return 0
 }
 
@@ -472,16 +509,6 @@ function execute_procedure(){
       echo "docker run -v $CIENV_CVMFSVOLUME:/cvmfs:shared ..."
       sleep infinity
       ;;
-    build)
-      echo "Build, test and publish the standalone docker image. Skip previous steps."
-      build_standalone_image || fail "[execute_procedure] $1: build_standalone_image"
-      ;;
-    shrink)
-      echo "Shrink and copy cvmfs. Then build, test and publish the standalone docker image."
-      run_shrinkwrap || fail "[execute_procedure] $1: run_shrinkwrap"
-      copy_cvmfs || fail "[execute_procedure] $1: copy_cvmfs"
-      build_standalone_image || fail "[execute_procedure] $1: build_standalone_image"
-      ;;
     all)
       echo "Run the full sequence."
       check_tag_version || fail "[execute_procedure] $1: check_tag_version"
@@ -489,6 +516,11 @@ function execute_procedure(){
       run_shrinkwrap || fail "[execute_procedure] $1: run_shrinkwrap"
       copy_cvmfs || fail "[execute_procedure] $1: copy_cvmfs"
       build_standalone_image || fail "[execute_procedure] $1: build_standalone_image"
+      clean_cvmfs_copy || fail "[execute_procedure] $1: clean_cvmfs_copy"
+      test_standalone_image_docker || fail "[execute_procedure] $1: test_standalone_image_docker"
+      test_standalone_image_singularity || fail "[execute_procedure] $1: test_standalone_image_singularity"
+      publish_standalone_image || fail "[execute_procedure] $1: publish_standalone_image"
+      announce_standalone_image || fail "[execute_procedure] $1: announce_standalone_image"
       ;;
     *)
       fail "[execute_procedure] Unknown option $1"
@@ -550,7 +582,7 @@ while getopts "hds:r:e:m" o; do
       set -x # Enable debug printouts
       ;;
     h)
-      echo "Usage: $0 -s <full path to HEP Workload Spec file> [-e <execution step (all|shrink|buildonly|testpublish|sleep|none): default is all>] [-r <docker registry>] [-d (enable debug printouts)] [-n (force external network connectivity: default is false)"
+      echo "Usage: $0 -s <full path to HEP Workload Spec file> [-e <execution step (none|sleep|all): default is all>] [-r <docker registry>] [-d (enable debug printouts)] [-n (force external network connectivity: default is false)"
       fail "Invalid command line options"
       ;;
   esac
@@ -584,8 +616,8 @@ echo "-----------"
 # This sets all environment variables starting with HEPWL_ used in this script (BMK-118)
 # It should always set HEPWL_BMKEXE, HEPWL_BMKOPTS, HEPWL_BMKDIR, HEPWL_BMKDESCRIPTION,
 # as well as HEPWL_DOCKERIMAGENAME, HEPWL_DOCKERIMAGETAG and HEPWL_CVMFSREPOS
-# It may optionally set also HEPWL_ANNOUNCE and HEPWL_EXTEND_<repo>_SPEC
-source "$CIENV_HEPWL_SPECFILE"
+# It may optionally set also HEPWL_BMKANNOUNCE and HEPWL_EXTEND_<repo>_SPEC
+if ! load_and_validate_specfile "$CIENV_HEPWL_SPECFILE"; then fail "invalid SPEC file"; fi
 
 if [[ "$CIENV_MOUNTCVMFS" -gt 0 ]]; then
   mount_cvmfs || fail '[main.sh] mount_cvmfs'
diff --git a/cms/digi/cms-digi.spec b/cms/digi/cms-digi.spec
index 449356e6d0d2310934cf5d9a86ad2cc06c40db8c..3bc9f2a48840d86b9ff7d1997b86211c727bb704 100644
--- a/cms/digi/cms-digi.spec
+++ b/cms/digi/cms-digi.spec
@@ -1,7 +1,7 @@
-HEPWL_BMKEXE=./cms-digi/cms-digi-bmk.sh
+HEPWL_BMKEXE=cms-digi-bmk.sh
 HEPWL_BMKOPTS="-t 4 -e 2"
-HEPWL_BMKDIR=./cms-digi
+HEPWL_BMKDIR=cms-digi
 HEPWL_BMKDESCRIPTION="CMS DIGI of ttbar events based on CMSSW_10_2_9"
-HEPWL_DOCKERIMAGENAME=cms-digi
-HEPWL_DOCKERIMAGETAG=v0.9
+HEPWL_DOCKERIMAGENAME=cms-digi-bmk
+HEPWL_DOCKERIMAGETAG=testv0.10
 HEPWL_CVMFSREPOS=cms.cern.ch
diff --git a/cms/digi/cms-digi/reference/shortlog.txt b/cms/digi/cms-digi/jobs/good_1/cishortlog.txt
similarity index 100%
rename from cms/digi/cms-digi/reference/shortlog.txt
rename to cms/digi/cms-digi/jobs/good_1/cishortlog.txt
diff --git a/cms/digi/cms-digi/reference/test_1/cms-digi_summary.json b/cms/digi/cms-digi/jobs/good_1/cms-digi_summary.json
similarity index 100%
rename from cms/digi/cms-digi/reference/test_1/cms-digi_summary.json
rename to cms/digi/cms-digi/jobs/good_1/cms-digi_summary.json
diff --git a/cms/digi/cms-digi/reference/joburl.txt b/cms/digi/cms-digi/jobs/good_1/joburl.txt
similarity index 100%
rename from cms/digi/cms-digi/reference/joburl.txt
rename to cms/digi/cms-digi/jobs/good_1/joburl.txt
diff --git a/cms/digi/cms-digi/reference/test_1/proc_1/out_1.log b/cms/digi/cms-digi/jobs/good_1/proc_1/out_1.log
similarity index 100%
rename from cms/digi/cms-digi/reference/test_1/proc_1/out_1.log
rename to cms/digi/cms-digi/jobs/good_1/proc_1/out_1.log
diff --git a/cms/digi/cms-digi/jobs/good_1/summary.json b/cms/digi/cms-digi/jobs/good_1/summary.json
new file mode 120000
index 0000000000000000000000000000000000000000..1fe035e143dba78ee4af67033b60875acefc125c
--- /dev/null
+++ b/cms/digi/cms-digi/jobs/good_1/summary.json
@@ -0,0 +1 @@
+cms-digi_summary.json
\ No newline at end of file
diff --git a/cms/digi/cms-digi/jobs/refjob b/cms/digi/cms-digi/jobs/refjob
new file mode 120000
index 0000000000000000000000000000000000000000..9912a47175aa29f7496248aefdb66c6caedb2208
--- /dev/null
+++ b/cms/digi/cms-digi/jobs/refjob
@@ -0,0 +1 @@
+good_1
\ No newline at end of file
diff --git a/cms/digi/cms-digi/reference/summary.json b/cms/digi/cms-digi/reference/summary.json
deleted file mode 120000
index c68e9a79ac0de284f76c496a16abac78634f9fdd..0000000000000000000000000000000000000000
--- a/cms/digi/cms-digi/reference/summary.json
+++ /dev/null
@@ -1 +0,0 @@
-./test_1/cms-digi_summary.json
\ No newline at end of file
diff --git a/cms/gen-sim/cms-gen-sim.spec b/cms/gen-sim/cms-gen-sim.spec
index 3d64359f88ce73be321710757e6ceed27e5458f5..ba2646e859a216a6f445643ca38b2c8fe5248480 100644
--- a/cms/gen-sim/cms-gen-sim.spec
+++ b/cms/gen-sim/cms-gen-sim.spec
@@ -1,8 +1,8 @@
-HEPWL_BMKEXE=./cms-gen-sim/cms-gen-sim-bmk.sh
+HEPWL_BMKEXE=cms-gen-sim-bmk.sh
 HEPWL_BMKOPTS="-t 4 -e 2"
-HEPWL_BMKDIR=./cms-gen-sim
+HEPWL_BMKDIR=cms-gen-sim
 HEPWL_BMKDESCRIPTION="CMS GEN-SIM of ttbar events, based on CMSSW_10_2_9"
-HEPWL_DOCKERIMAGENAME=cms-gen-sim
-HEPWL_DOCKERIMAGETAG=v0.11
+HEPWL_DOCKERIMAGENAME=cms-gen-sim-bmk
+HEPWL_DOCKERIMAGETAG=testv0.12
 HEPWL_CVMFSREPOS=cms.cern.ch
 HEPWL_EXTEND_CMS_SPEC=./cms_spec_custom.txt
diff --git a/cms/gen-sim/cms-gen-sim/reference/shortlog.txt b/cms/gen-sim/cms-gen-sim/jobs/good_1/cishortlog.txt
similarity index 100%
rename from cms/gen-sim/cms-gen-sim/reference/shortlog.txt
rename to cms/gen-sim/cms-gen-sim/jobs/good_1/cishortlog.txt
diff --git a/cms/gen-sim/cms-gen-sim/reference/test_1/cms-gen-sim_summary.json b/cms/gen-sim/cms-gen-sim/jobs/good_1/cms-gen-sim_summary.json
similarity index 100%
rename from cms/gen-sim/cms-gen-sim/reference/test_1/cms-gen-sim_summary.json
rename to cms/gen-sim/cms-gen-sim/jobs/good_1/cms-gen-sim_summary.json
diff --git a/cms/gen-sim/cms-gen-sim/reference/joburl.txt b/cms/gen-sim/cms-gen-sim/jobs/good_1/joburl.txt
similarity index 100%
rename from cms/gen-sim/cms-gen-sim/reference/joburl.txt
rename to cms/gen-sim/cms-gen-sim/jobs/good_1/joburl.txt
diff --git a/cms/gen-sim/cms-gen-sim/reference/test_1/proc_1/out_1.log b/cms/gen-sim/cms-gen-sim/jobs/good_1/proc_1/out_1.log
similarity index 100%
rename from cms/gen-sim/cms-gen-sim/reference/test_1/proc_1/out_1.log
rename to cms/gen-sim/cms-gen-sim/jobs/good_1/proc_1/out_1.log
diff --git a/cms/gen-sim/cms-gen-sim/jobs/good_1/summary.json b/cms/gen-sim/cms-gen-sim/jobs/good_1/summary.json
new file mode 120000
index 0000000000000000000000000000000000000000..d916c5cb09273a95d69bc1a3403fb44f8ddbb354
--- /dev/null
+++ b/cms/gen-sim/cms-gen-sim/jobs/good_1/summary.json
@@ -0,0 +1 @@
+cms-gen-sim_summary.json
\ No newline at end of file
diff --git a/cms/gen-sim/cms-gen-sim/jobs/refjob b/cms/gen-sim/cms-gen-sim/jobs/refjob
new file mode 120000
index 0000000000000000000000000000000000000000..9912a47175aa29f7496248aefdb66c6caedb2208
--- /dev/null
+++ b/cms/gen-sim/cms-gen-sim/jobs/refjob
@@ -0,0 +1 @@
+good_1
\ No newline at end of file
diff --git a/cms/gen-sim/cms-gen-sim/reference/summary.json b/cms/gen-sim/cms-gen-sim/reference/summary.json
deleted file mode 120000
index ff4ec24e3481ccefdbf046795bc180a547492c08..0000000000000000000000000000000000000000
--- a/cms/gen-sim/cms-gen-sim/reference/summary.json
+++ /dev/null
@@ -1 +0,0 @@
-./test_1/cms-gen-sim_summary.json
\ No newline at end of file
diff --git a/cms/reco/cms-reco.spec b/cms/reco/cms-reco.spec
index 34c22e981b80d393156034d5f68ef21822a51eaf..3159339477738204977587bc40433cec1a3abe34 100644
--- a/cms/reco/cms-reco.spec
+++ b/cms/reco/cms-reco.spec
@@ -1,7 +1,7 @@
-HEPWL_BMKEXE=./cms-reco/cms-reco-bmk.sh
+HEPWL_BMKEXE=cms-reco-bmk.sh
 HEPWL_BMKOPTS="-t 4 -e 3"
-HEPWL_BMKDIR=./cms-reco
+HEPWL_BMKDIR=cms-reco
 HEPWL_BMKDESCRIPTION="CMS RECO of ttbar events, based on CMSSW_10_2_9"
-HEPWL_DOCKERIMAGENAME=cms-reco
-HEPWL_DOCKERIMAGETAG=v0.6
+HEPWL_DOCKERIMAGENAME=cms-reco-bmk
+HEPWL_DOCKERIMAGETAG=testv0.7
 HEPWL_CVMFSREPOS=cms.cern.ch
diff --git a/cms/reco/cms-reco/reference/shortlog.txt b/cms/reco/cms-reco/jobs/good_1/cishortlog.txt
similarity index 100%
rename from cms/reco/cms-reco/reference/shortlog.txt
rename to cms/reco/cms-reco/jobs/good_1/cishortlog.txt
diff --git a/cms/reco/cms-reco/reference/test_1/cms-reco_summary.json b/cms/reco/cms-reco/jobs/good_1/cms-reco_summary.json
similarity index 100%
rename from cms/reco/cms-reco/reference/test_1/cms-reco_summary.json
rename to cms/reco/cms-reco/jobs/good_1/cms-reco_summary.json
diff --git a/cms/reco/cms-reco/reference/joburl.txt b/cms/reco/cms-reco/jobs/good_1/joburl.txt
similarity index 100%
rename from cms/reco/cms-reco/reference/joburl.txt
rename to cms/reco/cms-reco/jobs/good_1/joburl.txt
diff --git a/cms/reco/cms-reco/reference/test_1/proc_1/out_1.log b/cms/reco/cms-reco/jobs/good_1/proc_1/out_1.log
similarity index 100%
rename from cms/reco/cms-reco/reference/test_1/proc_1/out_1.log
rename to cms/reco/cms-reco/jobs/good_1/proc_1/out_1.log
diff --git a/cms/reco/cms-reco/jobs/good_1/summary.json b/cms/reco/cms-reco/jobs/good_1/summary.json
new file mode 120000
index 0000000000000000000000000000000000000000..615f162cfeff25a13a64f760e75255694f991e73
--- /dev/null
+++ b/cms/reco/cms-reco/jobs/good_1/summary.json
@@ -0,0 +1 @@
+cms-reco_summary.json
\ No newline at end of file
diff --git a/cms/reco/cms-reco/jobs/refjob b/cms/reco/cms-reco/jobs/refjob
new file mode 120000
index 0000000000000000000000000000000000000000..9912a47175aa29f7496248aefdb66c6caedb2208
--- /dev/null
+++ b/cms/reco/cms-reco/jobs/refjob
@@ -0,0 +1 @@
+good_1
\ No newline at end of file
diff --git a/cms/reco/cms-reco/reference/summary.json b/cms/reco/cms-reco/reference/summary.json
deleted file mode 120000
index 1b7be838fe6acb216c9b38640f350d20ecb889bd..0000000000000000000000000000000000000000
--- a/cms/reco/cms-reco/reference/summary.json
+++ /dev/null
@@ -1 +0,0 @@
-./test_1/cms-reco_summary.json
\ No newline at end of file
diff --git a/common/referenceFromJobUrl.sh b/common/referenceFromJobUrl.sh
index a6c9068058b7efc84654e181bd045ab6457c4334..c6037ea5ca06c50f42efb0e10cc6b552fb75aee2 100755
--- a/common/referenceFromJobUrl.sh
+++ b/common/referenceFromJobUrl.sh
@@ -1,28 +1,35 @@
 #!/bin/bash
 
+###set -x # verbose
+
 set -e # immediate exit on error
 
 function usage(){
-  echo "Usage: $0 [-b <bmkdir>] [-d] [<gitlabJobUrl>|-r]"
+  echo "Usage: $0 [-b <bmkdir>] [-n <jobnam (default:good_1)>] [-d] [-r|<gitlabJobUrl>]"
   echo "Example: $0 -b atlas/kv/atlas-kv https://gitlab.cern.ch/valassi/hep-workloads/-/jobs/4783122 -d"
   echo ""
   echo "  -b <bmkdir>        benchmark directory (default: current directory .)"
-  echo "  -d                 delete <bmkdir>/reference/* if directory exists"
+  echo "  -n <jobnam>        job directory name (default: good_1)"
+  echo "  -d                 delete <bmkdir>/jobs/<jobnam>/* if directory exists"
+  echo "  -r                 recreate <bmkdir>/jobs/<jobnam>/* from <bmkdir>/jobs/<jobnam>/joburl.txt (implies -d)"
   echo "  <gitlabJobUrl>     job url https://gitlab.cern.ch/<owner>/hep-workloads/-/jobs/<jobid>"
-  echo "  -r                 recreate <bmkdir>/reference/* from <bmkdir>/reference/joburl.txt (implies -d)"
   echo ""
   exit 1
 }
 
 bmkdir=
-delref=
+deljob=
 joburl=
+jobnam=
 while [ "$1" != "" ]; do
   if [ "$1" == "-b" ] && [ "$2" != "" ] && [ "$bmkdir" == "" ]; then
     bmkdir=$2
     shift; shift
-  elif [ "$1" == "-d" ] && [ "$delref" == "" ]; then
-    delref=1
+  elif [ "$1" == "-n" ] && [ "$2" != "" ] && [ "$jobnam" == "" ]; then
+    jobnam=$2
+    shift; shift
+  elif [ "$1" == "-d" ] && [ "$deljob" == "" ]; then
+    deljob=1
     shift
   elif [ "${1##https://gitlab.cern.ch/}" != "$1" ] && [ "$joburl" == "" ]; then
     joburl=$1
@@ -34,11 +41,13 @@ while [ "$1" != "" ]; do
     usage
   fi
 done
+if [ "$jobnam" == "" ]; then jobnam="good_1"; fi
 if [ "$joburl" == "" ]; then usage; fi
 
 echo "[$(basename $0)] bmkdir: ${bmkdir}"
-echo "[$(basename $0)] delref: ${delref}"
+echo "[$(basename $0)] deljob: ${deljob}"
 echo "[$(basename $0)] joburl: ${joburl}"
+echo "[$(basename $0)] jobnam: ${jobnam}"
 
 if [ "${bmkdir}" != "" ]; then
   if [ ! -d "${bmkdir}" ]; then
@@ -55,36 +64,36 @@ if [ ! -f ${bmkspec} ]; then
   exit 1
 fi
 
+jobdir=${bmkdir}/jobs/${jobnam}
 if [ "$joburl" == "-r" ]; then 
-  echo -e "\n[$(basename $0)] Reading joburl from ${bmkdir}/reference/joburl.txt"
-  joburl=$(cat ${bmkdir}/reference/joburl.txt | head -1)
+  echo -e "\n[$(basename $0)] Reading joburl from ${jobdir}/joburl.txt"
+  joburl=$(cat ${jobdir}/joburl.txt | head -1)
   if [ "${joburl##https://gitlab.cern.ch/}" == "${joburl}" ]; then
     echo "ERROR! Invalid joburl ${joburl}"
     exit 1
   fi
-  delref=1
+  deljob=1
 fi
 
-refdir=${bmkdir}/reference
-if [ -d ${refdir} ]; then
-  if [ "${delref}" == "1" ]; then
-    echo -e "\nWARNING! Directory ${refdir} exists: delete all its contents"
-    \rm -rf ${refdir}/*
+if [ -d ${jobdir} ]; then
+  if [ "${deljob}" == "1" ]; then
+    echo -e "\nWARNING! Directory ${jobdir} exists: delete all its contents"
+    \rm -rf ${jobdir}/*
   else
-    echo -e "\nERROR! Directory ${refdir} exists: use option -d to delete all its contents"
+    echo -e "\nERROR! Directory ${jobdir} exists: use option -d to delete all its contents"
     exit 1
   fi
 else
-  mkdir ${refdir}
+  mkdir ${jobdir}
 fi
-cd ${refdir}
+cd ${jobdir}
 
 echo ${joburl} > joburl.txt
 
 # Keep both json (cvmfs-shrink and standalone), including sub-scores, and keep all Parsing messages
-wget -q -O- ${joburl}/raw | egrep '(Parsing results|"copies"|"score")' > shortlog.txt
+wget -q -O- ${joburl}/raw | egrep '(Parsing results|"copies"|"score")' > cishortlog.txt
 # Keep only the first (cvmfs-shrink) json, excluding sub-scores, and do not keep any Parsing messages
-#wget -q -O- ${joburl}/raw | egrep '"copies"' | head -1 > shortlog.json
+#wget -q -O- ${joburl}/raw | egrep '"copies"' | head -1 > cishortlog.json
 
 wget -q ${joburl}/artifacts/download -Odownload.zip
 
@@ -104,11 +113,11 @@ if [ "$(\ls -1 results | wc -l)" != "2" ]; then
   exit 1
 fi  
 test1="$(\ls -1 results | sort | head -1)"
-\mv results/$test1 ./test_1
+\mv results/$test1/* .
 \rm -rf results
 
-bmknam=$(basename $(cd ..; pwd))
-jsonsummary=./test_1/${bmknam}_summary.json
+bmknam=$(basename $(cd ../..; pwd))
+jsonsummary=${bmknam}_summary.json
 if [ ! -f ${jsonsummary} ]; then
   echo -e "\nERROR! File ${jsonsummary} not found\n"
   exit 1
@@ -118,8 +127,8 @@ ln -sf ${jsonsummary} summary.json
 echo -e "\n[$(basename $0)] Retrieved new reference results from ${joburl} into $(pwd)\n"
 ls -lR
 
-echo -e "\n[$(basename $0)] shortlog.txt:\n"
-cat shortlog.txt
+echo -e "\n[$(basename $0)] cishortlog.txt:\n"
+cat cishortlog.txt
 
 echo -e "\n[$(basename $0)] ${jsonsummary}:\n"
 cat ${jsonsummary}
diff --git a/lhcb/gen-sim/lhcb-gen-sim.spec b/lhcb/gen-sim/lhcb-gen-sim.spec
index c1bd72ed6e3b90061ba2e6c649b4e3c416efdc08..0491fe7ec89266fe0a07ae6ebe66e77f10d2bca0 100644
--- a/lhcb/gen-sim/lhcb-gen-sim.spec
+++ b/lhcb/gen-sim/lhcb-gen-sim.spec
@@ -1,12 +1,12 @@
 # These variables are needed in Dockerfile.template
-HEPWL_BMKEXE=./lhcb-gen-sim/lhcb-gen-sim-bmk.sh
-HEPWL_BMKDIR=./lhcb-gen-sim
+HEPWL_BMKEXE=lhcb-gen-sim-bmk.sh
+HEPWL_BMKDIR=lhcb-gen-sim
 HEPWL_BMKDESCRIPTION="LHCb GEN-SIM benchmark"
 
 # These variables are needed in main.sh
 HEPWL_BMKOPTS="-n 1 -e 2"
 ###HEPWL_BMKOPTS="-n 1 -e DUMMY" # DUMMY TEST FOR GITLAB CI DEVELOPMENTS
-HEPWL_DOCKERIMAGENAME=lhcb-gen-sim
-HEPWL_DOCKERIMAGETAG=v0.5
+HEPWL_DOCKERIMAGENAME=lhcb-gen-sim-bmk
+HEPWL_DOCKERIMAGETAG=testv0.6
 ###HEPWL_DOCKERIMAGETAG=DUMMY # DUMMY TEST FOR GITLAB CI DEVELOPMENTS
 HEPWL_CVMFSREPOS=lhcb.cern.ch
diff --git a/lhcb/gen-sim/lhcb-gen-sim/reference/shortlog.txt b/lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/cishortlog.txt
similarity index 100%
rename from lhcb/gen-sim/lhcb-gen-sim/reference/shortlog.txt
rename to lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/cishortlog.txt
diff --git a/lhcb/gen-sim/lhcb-gen-sim/reference/joburl.txt b/lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/joburl.txt
similarity index 100%
rename from lhcb/gen-sim/lhcb-gen-sim/reference/joburl.txt
rename to lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/joburl.txt
diff --git a/lhcb/gen-sim/lhcb-gen-sim/reference/test_1/lhcb-gen-sim_summary.json b/lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/lhcb-gen-sim_summary.json
similarity index 100%
rename from lhcb/gen-sim/lhcb-gen-sim/reference/test_1/lhcb-gen-sim_summary.json
rename to lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/lhcb-gen-sim_summary.json
diff --git a/lhcb/gen-sim/lhcb-gen-sim/reference/test_1/proc_1/out_1.log b/lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/proc_1/out_1.log
similarity index 100%
rename from lhcb/gen-sim/lhcb-gen-sim/reference/test_1/proc_1/out_1.log
rename to lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/proc_1/out_1.log
diff --git a/lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/summary.json b/lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/summary.json
new file mode 120000
index 0000000000000000000000000000000000000000..e1f1f3403ecf6766ea848c2c3ba8336f0814395f
--- /dev/null
+++ b/lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/summary.json
@@ -0,0 +1 @@
+lhcb-gen-sim_summary.json
\ No newline at end of file
diff --git a/lhcb/gen-sim/lhcb-gen-sim/jobs/refjob b/lhcb/gen-sim/lhcb-gen-sim/jobs/refjob
new file mode 120000
index 0000000000000000000000000000000000000000..9912a47175aa29f7496248aefdb66c6caedb2208
--- /dev/null
+++ b/lhcb/gen-sim/lhcb-gen-sim/jobs/refjob
@@ -0,0 +1 @@
+good_1
\ No newline at end of file
diff --git a/lhcb/gen-sim/lhcb-gen-sim/reference/summary.json b/lhcb/gen-sim/lhcb-gen-sim/reference/summary.json
deleted file mode 120000
index a2bba4bc24a942c9ba5e6efaa8ac9463aa6b354f..0000000000000000000000000000000000000000
--- a/lhcb/gen-sim/lhcb-gen-sim/reference/summary.json
+++ /dev/null
@@ -1 +0,0 @@
-./test_1/lhcb-gen-sim_summary.json
\ No newline at end of file