diff --git a/tempest/service_clients.py b/tempest/service_clients.py
index d0daa2b..f131b58 100644
--- a/tempest/service_clients.py
+++ b/tempest/service_clients.py
@@ -22,9 +22,19 @@
 from tempest.lib import auth
 from tempest.lib import exceptions
 from tempest.lib.services import clients
+from tempest.lib.services import compute
+from tempest.lib.services import image
+from tempest.lib.services import network
 
 LOG = logging.getLogger(__name__)
 
+client_modules_by_service_name = {
+    'compute': compute,
+    'image.v1': image.v1,
+    'image.v2': image.v2,
+    'network': network
+}
+
 
 def tempest_modules():
     """List of service client modules available in Tempest.
@@ -289,6 +299,16 @@
             raise exceptions.UnknownServiceClient(
                 services=list(client_parameters.keys()))
 
+        # Register service clients owned by tempest
+        for service in tempest_modules():
+            if service in list(client_modules_by_service_name):
+                attribute = service.replace('.', '_')
+                configs = service.split('.')[0]
+                module = client_modules_by_service_name[service]
+                self.register_service_client_module(
+                    attribute, service, module.__name__,
+                    module.__all__, **self.parameters[configs])
+
         # Register service clients from plugins
         clients_registry = clients.ClientsRegistry()
         plugin_service_clients = clients_registry.get_service_clients()
@@ -362,10 +382,10 @@
 
     @property
     def registered_services(self):
-        # TODO(andreaf) For now add all Tempest services. to the list of
-        # registered service
-        _default_services = tempest_modules()
-        return self._registered_services | _default_services
+        # TODO(andreaf) Temporary set needed until all services are migrated
+        _non_migrated_services = tempest_modules() - set(
+            client_modules_by_service_name)
+        return self._registered_services | _non_migrated_services
 
     def _setup_parameters(self, parameters):
         """Setup default values for client parameters
diff --git a/tempest/tests/test_service_clients.py b/tempest/tests/test_service_clients.py
index befed68..3d8b360 100644
--- a/tempest/tests/test_service_clients.py
+++ b/tempest/tests/test_service_clients.py
@@ -265,11 +265,12 @@
                              _params[_key])
 
     def test_register_service_client_module(self):
-        factory_mock = self.useFixture(fixtures.MockPatch(
-            'tempest.service_clients.ClientsFactory')).mock
         expected_params = {'fake_param1': 'fake_value1',
                            'fake_param2': 'fake_value2'}
         _manager = self._get_manager(init_region='fake_region_default')
+        # Mock after the _manager is setup to preserve the call count
+        factory_mock = self.useFixture(fixtures.MockPatch(
+            'tempest.service_clients.ClientsFactory')).mock
         _manager.register_service_client_module(
             name='fake_module',
             service_version='fake_service',
@@ -291,13 +292,14 @@
         self.assertIn('fake_service', _manager._registered_services)
 
     def test_register_service_client_module_override_default(self):
-        factory_mock = self.useFixture(fixtures.MockPatch(
-            'tempest.service_clients.ClientsFactory')).mock
         new_region = 'new_region'
         expected_params = {'fake_param1': 'fake_value1',
                            'fake_param2': 'fake_value2',
                            'region': new_region}
         _manager = self._get_manager(init_region='fake_region_default')
+        # Mock after the _manager is setup to preserve the call count
+        factory_mock = self.useFixture(fixtures.MockPatch(
+            'tempest.service_clients.ClientsFactory')).mock
         _manager.register_service_client_module(
             name='fake_module',
             service_version='fake_service',
