diff --git a/_modules/runtest/tempest_sections/auth.py b/_modules/runtest/tempest_sections/auth.py
index 7f37e22..0803984 100644
--- a/_modules/runtest/tempest_sections/auth.py
+++ b/_modules/runtest/tempest_sections/auth.py
@@ -20,7 +20,10 @@
 
     @property
     def admin_domain_name(self):
-        return 'Default'
+        c = conditions.BaseRule('runtest.tempest.enabled', 'eq', True)
+        return self.get_item_when_condition_match(
+            'keystone.client.os_client_config.cfgs.root.content.'
+            'clouds.admin_identity.auth.project_domain_name', c)
 
     @property
     def admin_password(self):
@@ -46,7 +49,7 @@
 
     @property
     def default_credentials_domain_name(self):
-        pass
+        return self.admin_domain_name
 
     @property
     def tempest_roles(self):
diff --git a/_modules/runtest/tempest_sections/heat_plugin.py b/_modules/runtest/tempest_sections/heat_plugin.py
index 3a34d04..43dbf05 100644
--- a/_modules/runtest/tempest_sections/heat_plugin.py
+++ b/_modules/runtest/tempest_sections/heat_plugin.py
@@ -2,6 +2,7 @@
 import base_section
 
 from runtest import conditions
+from runtest.tempest_sections.identity import Identity
 
 
 DEFAULT_HEAT_PLUGIN_PARAMETERS = {
@@ -218,11 +219,15 @@
 
     @property
     def project_domain_id(self):
-        pass
+        identity = Identity(self.pillar, self.runtest_opts)
+        return identity.default_domain_id
 
     @property
     def project_domain_name(self):
-        pass
+        c = conditions.BaseRule('runtest.tempest.enabled', 'eq', True)
+        return self.get_item_when_condition_match(
+            'keystone.client.os_client_config.cfgs.root.content.'
+            'clouds.admin_identity.auth.project_domain_name', c)
 
     @property
     def project_name(self):
@@ -297,11 +302,11 @@
 
     @property
     def user_domain_id(self):
-        pass
+        return self.project_domain_id
 
     @property
     def user_domain_name(self):
-        pass
+        return self.project_domain_name
 
     @property
     def username(self):
diff --git a/_modules/runtest/tempest_sections/identity.py b/_modules/runtest/tempest_sections/identity.py
index 7864cda..6fb64a1 100644
--- a/_modules/runtest/tempest_sections/identity.py
+++ b/_modules/runtest/tempest_sections/identity.py
@@ -2,6 +2,7 @@
 import base_section
 
 from runtest import conditions
+from runtest.tempest_sections.auth import Auth
 
 class Identity(base_section.BaseSection):
 
@@ -50,7 +51,22 @@
 
     @property
     def default_domain_id(self):
-        pass
+        c = conditions.BaseRule(field='keystone.client.enabled', op='eq',
+                                val=True)
+        nodes = self.get_nodes_where_condition_match(c)
+        keystone_profile_admin = self.runtest_opts.get(
+            'keystone_profile_admin', {})
+        res = self.authenticated_openstack_module_call(
+            nodes[0],
+            'keystonev3.domain_list',
+            cloud_name=keystone_profile_admin)[nodes[0]]
+        auth = Auth(self.pillar, self.runtest_opts)
+        try:
+            domain_id = [d['id'] for d in res['domains']
+                         if d['name'] == auth.admin_domain_name][0]
+            return domain_id
+        except Exception:
+            pass
 
     @property
     def disable_ssl_certificate_validation(self):
