diff --git a/README.rst b/README.rst
index 827ddc1..f90f2fb 100644
--- a/README.rst
+++ b/README.rst
@@ -1349,6 +1349,29 @@
         tcp_tw_recycle: 0
         ....
 
+Define extra states for contrail services health check
+------------------------------------------------------
+
+Service health check procedure verifies that all available contrail services are in ``active``
+state.
+Additional states could be defined for every service as expected states for validation procedure.
+
+.. code-block:: yaml
+
+    config:
+      ....
+      services_extra_states:
+        contrail-schema:
+          - backup
+        contrail-device-manager
+          - backup
+        contrail-svc-monitor:
+          - backup
+      ....
+
+``contrail-schema``, ``contrail-device-manager`` and ``contrail-svc-monitor`` config services already
+have additional ``backup`` state by default.
+
 Usage
 =====
 
diff --git a/_modules/contrail_health.py b/_modules/contrail_health.py
new file mode 100644
index 0000000..59530e6
--- /dev/null
+++ b/_modules/contrail_health.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+# Copyright 2018 Mirantis, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+import os
+import subprocess
+
+
+def __virtual__():
+    '''
+    Only load this module if contrail-status or doctrail utility
+    (in case of containerized contrail version) is available.
+    '''
+    if _is_cmd_available('contrail-status') or _is_cmd_available('doctrail'):
+        return 'contrail_health'
+    return False
+
+
+def _is_cmd_available(cmd_name):
+    try:
+        with open(os.devnull) as devnull:
+            subprocess.Popen(
+                [cmd_name], stdout=devnull, stderr=devnull
+            ).communicate()
+    except OSError as e:
+        if e.errno == os.errno.ENOENT:
+            return False
+    return True
+
+
+def get_services_status():
+
+    if _is_cmd_available('contrail-status'):
+        status_cmd_list = ['contrail-status']
+    else:
+        status_cmd_list = ['doctrail', 'all', 'contrail-status']
+
+    cs_out = str(subprocess.check_output(status_cmd_list))
+    status_map = {}
+
+    for line in cs_out.split('\n'):
+        line_list = line.split()
+        if (not line.startswith("==") and "FOR NODE" not in line and
+                len(line_list) >= 2):
+            status_map[line_list[0].split(":")[0]] = line_list[1]
+
+    return status_map
diff --git a/_states/contrail_health.py b/_states/contrail_health.py
new file mode 100644
index 0000000..fdd1f48
--- /dev/null
+++ b/_states/contrail_health.py
@@ -0,0 +1,58 @@
+#!/usr/bin/python
+# Copyright 2018 Mirantis, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+'''
+Verification of Contrail services states
+'''
+
+
+def __virtual__():
+    '''
+    Load Contrail Health state module
+    '''
+    return 'contrail_health'
+
+
+def services_health(name, healthy_states=None, extra_states_map=None):
+    services_states = __salt__['contrail_health.get_services_status']()
+
+    healthy_states = healthy_states or ['active']
+    extra_states_map = extra_states_map or {}
+
+    if services_states:
+
+        nonhealthy_services = []
+
+        for service_name, state in services_states.items():
+            if (state not in healthy_states and
+                    state not in extra_states_map.get(service_name, [])):
+                nonhealthy_services.append(service_name)
+
+        if nonhealthy_services:
+            comment = ("The following services didn't pass health check:\n" +
+                       "\n".join(nonhealthy_services))
+            result = False
+        else:
+            comment = ("All contrail services have health state:\n" +
+                       "\n".join(services_states.keys()))
+            result = True
+
+    else:
+        comment = ("Contrail services were not found.\n"
+                   "If contrail services are working inside container(s) "
+                   "(starting from version 4.0), please check "
+                   "that related container(s) is (are) started.")
+        result = False
+
+    return {'name': name, 'changes': {}, 'comment': comment, 'result': result}
diff --git a/metadata/service/control/control.yml b/metadata/service/control/control.yml
index c3bb5d1..7cb3521 100644
--- a/metadata/service/control/control.yml
+++ b/metadata/service/control/control.yml
@@ -68,6 +68,13 @@
         id: 2
       - host: ${_param:cluster_node03_address}
         id: 3
+      services_extra_states:
+        contrail-schema:
+        - backup
+        contrail-svc-monitor:
+        - backup
+        contrail-device-manager:
+        - backup
     control:
       version: ${_param:opencontrail_version}
       enabled: true
diff --git a/opencontrail/upgrade/verify/_service.sls b/opencontrail/upgrade/verify/_service.sls
new file mode 100644
index 0000000..9151bd1
--- /dev/null
+++ b/opencontrail/upgrade/verify/_service.sls
@@ -0,0 +1,18 @@
+{%- from "opencontrail/map.jinja" import control, config, collector, web, database, compute with context %}
+
+{%- set extra_states_map = {} %}
+
+{%- for data in [control, config, collector, web, database, compute] %}
+
+{%- if data.get('enabled', False) %}
+  {%- if data.get('services_extra_states', False) %}
+    {% do extra_states_map.update(data.get('services_extra_states')) %}
+  {%- endif %}
+{%- endif %}
+
+{%- endfor %}
+
+contrail_services_health_check:
+  contrail_health.services_health:
+    - healthy_states: ['active']
+    - extra_states_map: {{ extra_states_map }}
diff --git a/opencontrail/upgrade/verify/init.sls b/opencontrail/upgrade/verify/init.sls
new file mode 100644
index 0000000..c40bb57
--- /dev/null
+++ b/opencontrail/upgrade/verify/init.sls
@@ -0,0 +1,2 @@
+include:
+- opencontrail.upgrade.verify._service
