diff --git a/tempest/lib/common/preprov_creds.py b/tempest/lib/common/preprov_creds.py
index 3ba7db1..fd4ccf8 100644
--- a/tempest/lib/common/preprov_creds.py
+++ b/tempest/lib/common/preprov_creds.py
@@ -312,7 +312,8 @@
     def get_primary_creds(self):
         if self._creds.get('primary'):
             return self._creds.get('primary')
-        net_creds = self._get_creds()
+        # NOTE(pas-ha) use the same call as get_project_member_creds
+        net_creds = self._get_creds(['member'], scope='project')
         self._creds['primary'] = net_creds
         return net_creds
 
diff --git a/tempest/tests/lib/common/test_preprov_creds.py b/tempest/tests/lib/common/test_preprov_creds.py
index 5a36f71..4e39c6b 100644
--- a/tempest/tests/lib/common/test_preprov_creds.py
+++ b/tempest/tests/lib/common/test_preprov_creds.py
@@ -78,12 +78,15 @@
              'password': 'p', 'roles': [admin_role]},
             {'username': 'test_admin3', 'project_name': 'test_tenant13',
              'password': 'p', 'types': ['admin']},
+            {'username': 'test_user14', 'project_name': 'test_tenant14',
+             'password': 'p', 'roles': ['member']},
             {'username': 'test_project_manager1',
              'project_name': 'test_tenant14', 'password': 'p',
              'roles': ['manager']},
             {'username': 'test_project_manager2',
              'tenant_name': 'test_tenant15', 'password': 'p',
-             'roles': ['manager']}]
+             'roles': ['manager']},
+        ]
 
     def setUp(self):
         super(TestPreProvisionedCredentials, self).setUp()
@@ -325,7 +328,7 @@
         calls = get_free_hash_mock.mock.mock_calls
         self.assertEqual(len(calls), 1)
         args = calls[0][1][0]
-        self.assertEqual(len(args), 12)
+        self.assertEqual(len(args), 13)
         for i in admin_hashes:
             self.assertNotIn(i, args)
 
@@ -507,11 +510,15 @@
              'domain_name': 'domain', 'password': 'p', 'roles': [admin_role]},
             {'username': 'test_admin3', 'project_name': 'test_tenant13',
              'domain_name': 'domain', 'password': 'p', 'types': ['admin']},
+            {'username': 'test_user14', 'project_name': 'test_tenant14',
+             'domain_name': 'domain', 'password': 'p',
+             'roles': ['member']},
             {'username': 'test_project_manager1',
              'project_name': 'test_project14', 'domain_name': 'domain',
              'password': 'p', 'roles': ['manager']},
             {'username': 'test_domain_manager1',
-             'domain_name': 'domain', 'password': 'p', 'roles': ['manager']}]
+             'domain_name': 'domain', 'password': 'p', 'roles': ['manager']},
+        ]
 
     def test_get_domain_manager_creds(self):
         test_accounts_class = preprov_creds.PreProvisionedCredentialProvider(
