diff --git a/common/config.py b/common/config.py
index 3983792..fd6ccbf 100644
--- a/common/config.py
+++ b/common/config.py
@@ -17,8 +17,13 @@
 import heat_integrationtests
 
 
-IntegrationTestGroup = [
+heat_group = cfg.OptGroup(name="heat_plugin",
+                          title="Heat Service Options")
 
+HeatGroup = [
+    cfg.StrOpt("catalog_type",
+               default="orchestration",
+               help="Catalog type of the orchestration service."),
     cfg.StrOpt('username',
                default=os.environ.get('OS_USERNAME'),
                help="Username to use for non admin API requests."),
@@ -162,10 +167,10 @@
     conf(args=[], project='heat_integrationtests',
          default_config_files=default_config_files)
 
-    for opt in IntegrationTestGroup:
-        conf.register_opt(opt)
+    for group, opts in list_opts():
+        conf.register_opts(opts, group=group)
     return conf
 
 
 def list_opts():
-    yield None, IntegrationTestGroup
+    yield heat_group.name, HeatGroup
diff --git a/common/test.py b/common/test.py
index c864d3b..413e51f 100644
--- a/common/test.py
+++ b/common/test.py
@@ -73,7 +73,7 @@
     def setUp(self):
         super(HeatIntegrationTest, self).setUp()
 
-        self.conf = config.init_conf()
+        self.conf = config.init_conf().heat_plugin
 
         self.assertIsNotNone(self.conf.auth_url,
                              'No auth_url configured')
@@ -106,7 +106,7 @@
                              'No admin username configured')
         self.assertIsNotNone(self.conf.admin_password,
                              'No admin password configured')
-        conf = config.init_conf()
+        conf = config.init_conf().heat_plugin
         conf.username = self.conf.admin_username
         conf.password = self.conf.admin_password
         conf.tenant_name = self.conf.admin_tenant_name
