import multiprocessing
 import subprocess
 import time
+import os
 import traceback
 
 from oslo_config import cfg
     Use of this process enables multiple instances of a scenario without
     messing up the output file.
     """
-    out_type = config['yardstick'].get('DEFAULT', {}).get('dispatcher', 'file')
+    try:
+        out_type = config['yardstick'].get('DEFAULT', {})['dispatcher']
+    except KeyError:
+        out_type = os.environ.get('DISPATCHER', 'file')
+
     conf = {
         'type': out_type.capitalize(),
         'file_path': filename
 
 CONF = cfg.CONF
 http_dispatcher_opts = [
     cfg.StrOpt('target',
-               default='http://127.0.0.1:8000/results',
+               default=os.getenv('TARGET', 'http://127.0.0.1:8000/results'),
                help='The target where the http request will be sent. '
                     'If this is not set, no data will be posted. For '
                     'example: target = http://hostname:1234/path'),
             "description": "yardstick test cases result",
             "pod_name": os.environ.get('NODE_NAME', 'unknown'),
             "installer": os.environ.get('INSTALLER_TYPE', 'unknown'),
-            "version": os.environ.get('YARDSTICK_VERSION', 'unknown')
+            "version": os.environ.get('YARDSTICK_VERSION', 'unknown'),
+            "build_tag": os.environ.get('BUILD_TAG')
         }
 
     def record_result_data(self, data):
                       'be posted.')
             return
 
-        self.result["details"] = self.raw_result
+        self.result["details"] = {'results': self.raw_result}
 
         case_name = ""
         for v in self.raw_result: