diff --git a/_modules/designatev2/__init__.py b/_modules/designatev2/__init__.py
index 0becffe..e2379fa 100644
--- a/_modules/designatev2/__init__.py
+++ b/_modules/designatev2/__init__.py
@@ -7,8 +7,11 @@
 
 from designatev2 import lists
 from designatev2 import zones
+from designatev2 import services
 
 zone_list = lists.zone_list
+status_list = lists.status_list
+service_wait = services.wait_for_services
 zone_create = zones.zone_create
 zone_get_details = zones.zone_get_details
 zone_get_name_servers = zones.zone_get_name_servers
@@ -16,7 +19,7 @@
 zone_delete = zones.zone_delete
 
 
-__all__ = ('zone_list', 'zone_create', 'zone_delete', 'zone_update',
+__all__ = ('zone_list', 'status_list', 'service_wait', 'zone_create', 'zone_delete', 'zone_update',
            'zone_get_details', 'zone_get_name_servers',)
 
 
diff --git a/_modules/designatev2/lists.py b/_modules/designatev2/lists.py
index aebd573..4aa1c29 100644
--- a/_modules/designatev2/lists.py
+++ b/_modules/designatev2/lists.py
@@ -10,3 +10,9 @@
 def zone_list(**kwargs):
     url = '/zones?{}'.format(urlencode(kwargs))
     return url, None
+
+
+@send('get')
+def status_list(**kwargs):
+    url = '/service_statuses'
+    return url, None
\ No newline at end of file
diff --git a/_modules/designatev2/services.py b/_modules/designatev2/services.py
new file mode 100644
index 0000000..d18b156
--- /dev/null
+++ b/_modules/designatev2/services.py
@@ -0,0 +1,44 @@
+from designatev2.lists import status_list
+from salt.exceptions import CommandExecutionError
+import datetime
+import time
+
+
+def wait_for_services(cloud_name, host, service=None, retries=18, timeout=10, time_delta=5):
+    """Ensure the service is up and running on specified host.
+    :example:              salt-call designatev2.wait_for_services admin_identity host=cfg01 service=mdns
+    :param host:           name of a host where service is running
+    :param service:        name of the service (by default designate)
+    :param timeout:        number of seconds to wait before retries
+    :param retries:        number of retries
+    :time_delta:           time interval that can be between the request and service response
+    """
+
+    for _i in range(retries):
+        time_actual = datetime.datetime.now()
+        services = status_list(cloud_name=cloud_name)['service_statuses']
+        service_list = []
+        service_active = []
+
+        for s in services:
+            if s['hostname'] == host:
+                service_list.append(s['service_name'])
+
+        for s in services:
+            updated_at = datetime.datetime.strptime(s['updated_at'], '%Y-%m-%dT%H:%M:%S.%f')
+            time_diff = abs((time_actual - updated_at).total_seconds()) <= time_delta
+            service_name = s['service_name']
+
+            if s['hostname'] == host and time_diff:
+                if service is None:
+                    service_active.append(s['service_name'])
+                else:
+                    if service_name == service:
+                        return 'Designate-%s service are UP' % (service)
+            elif service_name == service and not time_diff:
+                continue
+
+        if len(service_list) == len(service_active):
+            return 'All Designate services are UP'
+        time.sleep(timeout)
+    raise CommandExecutionError("Designate-{} services are still down".format(set(service_list) - set(service_active)))
