diff --git a/prule/__init__.py b/prule/__init__.py
index dd1bbad0dcc79b182cb8d41ca74944ab1ab10621..23b55156828eec3ca0de0753b92831485ad7c563 100644
--- a/prule/__init__.py
+++ b/prule/__init__.py
@@ -672,6 +672,7 @@ def rule_prepare_input(parameters, rules, clusters, job_meta, job_data):
             numthreads.accelerator[nix] = len(r["accelerators"])
     if exclusive_check == True and getattr(job, "exclusive") != 1:
         setattr(job, "exclusive", 1)
+        job_meta["exclusive"] = 1
         log.print_color(log.color.yellow, log.warn, "Overwrite job's exclusive state.")
     # print
     log.print_color(log.color.magenta, log.debug, "-"*25,"Job allocated hwthreads:","-"*25)
diff --git a/prule/__main__.py b/prule/__main__.py
index 89b0a89943420f974fa9006deb6d0c1570aa2af0..96145e949306b41c033d4bde939a701429dae49b 100644
--- a/prule/__main__.py
+++ b/prule/__main__.py
@@ -400,7 +400,7 @@ if __name__ == "__main__":
         job_meta   = None
         job_data   = None
         job_id     = None
-        job_output = {"jobId":None, "tags":[], "rules":[], "error":False, "errors":[], "rules_failed":[], "rules_evaluated":[], "rules_not_evaluated":[]}
+        job_output = {"jobId":None, "tags":[], "rules":[], "error":False, "errors":[], "rules_failed":[], "rules_evaluated":[], "rules_not_evaluated":[], "metadata":{}}
 
         # read meta file
         if os.path.exists(job.meta_path) == False:
@@ -463,6 +463,8 @@ if __name__ == "__main__":
             try:
                 rinput = rule_prepare_input(parameters, rules_list, clusters, job_meta, job_data)
                 rinput = make_immutable(rinput)
+                if "exclusive" in job_meta:
+                    job_output["metadata"]["exclusive"] = job_meta["exclusive"] # export "exclusive" overwritten value
             except Exception as e:
                 error = True
                 error_msg = "Error on preparing rule input for job {}".format(job.meta_path)
diff --git a/prule/daemon/__main__.py b/prule/daemon/__main__.py
index e6ba646dfd004141e3c6a0e2bcac82febab36e09..ed7bdb9862d401bb813fd4ec60388f15de59f21f 100644
--- a/prule/daemon/__main__.py
+++ b/prule/daemon/__main__.py
@@ -944,6 +944,11 @@ class PruleThread(threading.Thread):
                         return "failure-wait"
                 job_meta = job_res["Meta"]
 
+            # overwrite metadata in job from prule results
+            if "metadata" in result_json and job_meta != None:
+                for key,value in result_json["metadata"].items():
+                    job_meta[key] = result_json["metadata"][key]
+
             # save result to cache db
             try:
                 evaluated = "error" in result_json and result_json["error"] == False