diff --git a/tcp_tests/tests/system/test_install_opencontrail.py b/tcp_tests/tests/system/test_install_opencontrail.py
index efc37c8..4bd6183 100644
--- a/tcp_tests/tests/system/test_install_opencontrail.py
+++ b/tcp_tests/tests/system/test_install_opencontrail.py
@@ -52,14 +52,14 @@
         if settings.RUN_SL_TESTS:
             show_step(5)
             stacklight_deployed.run_sl_functional_tests(
-                'ctl01',
+                'cfg01',
                 '/root/stacklight-pytest/stacklight_tests/',
                 'tests/prometheus',
                 'test_alerts.py')
             show_step(8)
             # Download report
             stacklight_deployed.download_sl_test_report(
-                'ctl01',
+                'cfg01',
                 '/root/stacklight-pytest/stacklight_tests/report.xml')
         LOG.info("*************** DONE **************")
 
@@ -121,5 +121,74 @@
             stacklight_deployed.download_sl_test_report(
                 'ctl01',
                 '/root/stacklight-pytest/stacklight_tests/report.xml')
+        LOG.info("*************** DONE **************")
 
+    @pytest.mark.extract(container_system='docker', extract_from='myimage',
+                         files_to_extract=['report'])
+    @pytest.mark.merge_xunit(path='/root/report',
+                             output='/root/conformance_result.xml')
+    @pytest.mark.grab_k8s_results(name=['k8s_conformance.log',
+                                        'conformance_result.xml'])
+    @pytest.mark.grab_versions
+    @pytest.mark.fail_snapshot
+    def test_install_opencontrail4_k8s(self, config, show_step,
+                                       k8s_deployed, k8s_logs):
+        """Test for deploying MCP environment with k8s and check it
+
+        Scenario:
+            1. Prepare salt on hosts
+            2. Setup controller nodes
+            3. Setup compute nodes
+            4. Setup Kubernetes cluster
+            5. Run conformance if need
+
+        """
+
+        if config.k8s.k8s_conformance_run:
+            show_step(5)
+            k8s_deployed.run_conformance(raise_on_err=False)
+        LOG.info("*************** DONE **************")
+
+    @pytest.mark.extract(container_system='docker', extract_from='myimage',
+                         files_to_extract=['report'])
+    @pytest.mark.merge_xunit(path='/root/report',
+                             output='/root/conformance_result.xml')
+    @pytest.mark.grab_k8s_results(name=['k8s_conformance.log',
+                                        'conformance_result.xml'])
+    @pytest.mark.grab_versions
+    @pytest.mark.fail_snapshot
+    def test_install_opencontrail4_k8s_lma(self, config, show_step,
+                                           k8s_deployed,
+                                           stacklight_deployed,
+                                           k8s_logs):
+        """Test for deploying MCP environment with k8s and check it
+
+        Scenario:
+            1. Prepare salt on hosts
+            2. Setup controller nodes
+            3. Setup compute nodes
+            4. Setup Kubernetes cluster
+            5. Check targets
+            6. Check docker services
+            7. Run SL tests
+            8. Download SL report
+            9. Run conformance if need
+        """
+        # Run SL component tetsts
+        if settings.RUN_SL_TESTS:
+            show_step(7)
+            stacklight_deployed.run_sl_functional_tests(
+                'cfg01',
+                '/root/stacklight-pytest/stacklight_tests/',
+                'tests/prometheus',
+                'test_alerts.py')
+            show_step(8)
+            # Download report
+            stacklight_deployed.download_sl_test_report(
+                'cfg01',
+                '/root/stacklight-pytest/stacklight_tests/report.xml')
+
+        if config.k8s.k8s_conformance_run:
+            show_step(9)
+            k8s_deployed.run_conformance(raise_on_err=False)
         LOG.info("*************** DONE **************")
