diff --git a/tcp_tests/fixtures/config_fixtures.py b/tcp_tests/fixtures/config_fixtures.py
index 973e034..8026e5b 100644
--- a/tcp_tests/fixtures/config_fixtures.py
+++ b/tcp_tests/fixtures/config_fixtures.py
@@ -32,6 +32,8 @@
         for test_config in tests_configs.split(','):
             config_files.append(test_config)
 
+    LOG.info("\n" + "-" * 10 + " Initialize oslo.config variables with "
+             "defaults from environment" + "-" * 10)
     config_opts = settings_oslo.load_config(config_files)
 
     if os.path.isfile(config_opts.underlay.ssh_key_file):
diff --git a/tcp_tests/settings_oslo.py b/tcp_tests/settings_oslo.py
index 7fc8870..fa61884 100644
--- a/tcp_tests/settings_oslo.py
+++ b/tcp_tests/settings_oslo.py
@@ -22,8 +22,6 @@
 from tcp_tests.helpers import oslo_cfg_types as ct
 from tcp_tests import settings
 
-print("\n" + "-" * 10 + " Initialize oslo.config variables with defaults"
-      " from environment" + "-" * 10)
 
 _default_conf = pkg_resources.resource_filename(
     __name__, 'templates/{0}/underlay.yaml'.format(settings.LAB_CONFIG_NAME))
diff --git a/tcp_tests/utils/get_param_heat_template.py b/tcp_tests/utils/get_param_heat_template.py
new file mode 100755
index 0000000..9b8b236
--- /dev/null
+++ b/tcp_tests/utils/get_param_heat_template.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+import os
+import sys
+
+from heatclient.common import template_utils
+
+
+if len(sys.argv) <= 1:
+    print("Usage:\n"
+          "  export LAB_CONFIG_NAME=cookied-cicd-...  "
+          "# see directories in tcp_tests/templates/\n"
+          "  export LAB_PARAM_DEFAULTS=nnnn.env "
+          "# see files in tcp_tests/templates/_heat_environments")
+    sys.exit(1)
+
+sys.path.append(os.getcwd())
+try:
+    from tcp_tests import settings_oslo
+except ImportError:
+    print("ImportError: Run the application from the tcp-qa directory or "
+          "set the PYTHONPATH environment variable to directory which contains"
+          " ./tcp_tests")
+    sys.exit(1)
+
+config = settings_oslo.load_config([])
+
+template_file = config.hardware.heat_conf_path
+env_file = config.hardware.heat_env_path
+
+if not os.path.exists(template_file):
+    raise Exception("Heat template '{0}' not found!\n"
+                    "Please set the correct LAB_CONFIG_NAME with underlay.hot"
+                    .format(template_file))
+
+tpl_files, template = template_utils.get_template_contents(
+    template_file)
+
+if os.path.exists(env_file):
+    env_files_list = []
+    env_files, env = (
+        template_utils.process_multiple_environments_and_files(
+            env_paths=[env_file],
+            env_list_tracker=env_files_list))
+else:
+    env = {}
+
+parameter_name = sys.argv[1]
+parameter_value = env['parameter_defaults'].get(parameter_name)
+if parameter_value is None:
+    parameter_value = template['parameters'].get(parameter_name)
+    if parameter_value is None:
+        raise Exception("Parameter '{0}' not found in env file '{1}' "
+                        "and temlate file '{2}'"
+                        .format(parameter_name, env_file, template_file))
+
+print(parameter_value)
