diff --git a/tcp_tests/fixtures/k8s_fixtures.py b/tcp_tests/fixtures/k8s_fixtures.py
index 356a51b..50635d3 100644
--- a/tcp_tests/fixtures/k8s_fixtures.py
+++ b/tcp_tests/fixtures/k8s_fixtures.py
@@ -15,6 +15,7 @@
 import pytest
 
 from tcp_tests.helpers import ext
+from tcp_tests.helpers import utils
 from tcp_tests import logger
 from tcp_tests.managers import k8smanager
 
@@ -80,3 +81,19 @@
                             args='systemctl restart keepalived.service')
 
     return k8s_actions
+
+
+@pytest.fixture(scope='function', autouse=True)
+def grab_virtlet_results(request, func_name, underlay, k8s_deployed):
+    """Finalizer to extract virtlet conformance logs"""
+
+    grab_virtlet_result = request.keywords.get('grab_virtlet_results', None)
+
+    def test_fin():
+        if hasattr(request.node, 'rep_call') and \
+                (request.node.rep_call.passed or request.node.rep_call.failed)\
+                and grab_virtlet_result:
+            artifact_name = utils.extract_name_from_mark(grab_virtlet_result) \
+                            or "{}".format(func_name)
+            k8s_deployed.download_virtlet_conformance_log(artifact_name)
+    request.addfinalizer(test_fin)
diff --git a/tcp_tests/managers/k8smanager.py b/tcp_tests/managers/k8smanager.py
index 6394141..1126011 100644
--- a/tcp_tests/managers/k8smanager.py
+++ b/tcp_tests/managers/k8smanager.py
@@ -12,6 +12,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import os
 import time
 from uuid import uuid4
 
@@ -496,3 +497,44 @@
                "tail -n +3 | awk {{'print $2'}}".format(domain_id))
         result = self.__underlay.check_call(cmd, node_name=self.ctl_host)
         return result['stdout'].strip()
+
+    def run_virtlet_conformance(self, timeout=60 * 60,
+                                log_file='virtlet_conformance.log'):
+        if self.__config.k8s.run_extended_virtlet_conformance:
+            ci_image = "cloud-images.ubuntu.com/xenial/current/" \
+                       "xenial-server-cloudimg-amd64-disk1.img"
+            cmd = ("set -o pipefail; "
+                   "docker run --net=host {0} /virtlet-e2e-tests "
+                   "-include-cloud-init-tests -image {2} "
+                   "-sshuser ubuntu -memoryLimit 1024 "
+                   "-alsologtostderr -cluster-url http://127.0.0.1:8080 "
+                   "-ginkgo.focus '\[Conformance\]' "
+                   "| tee {1}".format(
+                    self.__config.k8s_deploy.kubernetes_virtlet_image,
+                    log_file, ci_image))
+        else:
+            cmd = ("set -o pipefail; "
+                   "docker run --net=host {0} /virtlet-e2e-tests "
+                   "-alsologtostderr -cluster-url http://127.0.0.1:8080 "
+                   "-ginkgo.focus '\[Conformance\]' "
+                   "| tee {1}".format(
+                    self.__config.k8s_deploy.kubernetes_virtlet_image,
+                    log_file))
+        LOG.info("Executing: {}".format(cmd))
+        with self.__underlay.remote(
+                node_name=self.ctl_host) as remote:
+            result = remote.check_call(cmd, timeout=timeout)
+            stderr = result['stderr']
+            stdout = result['stdout']
+            LOG.info("Test results stdout: {}".format(stdout))
+            LOG.info("Test results stderr: {}".format(stderr))
+        return result
+
+    def download_virtlet_conformance_log(self,
+                                         log_file='virtlet_conformance.log'):
+        master_host = self.__config.salt.salt_master_host
+        with self.__underlay.remote(host=master_host) as r:
+            cmd = "rsync {0}:/root/{1} /root/".format(self.ctl_host, log_file)
+            r.check_call(cmd, raise_on_err=False)
+            LOG.info("Downloading the artifact {0}".format(log_file))
+            r.download(destination=log_file, target=os.getcwd())
diff --git a/tcp_tests/settings_oslo.py b/tcp_tests/settings_oslo.py
index 0b69c58..8129f68 100644
--- a/tcp_tests/settings_oslo.py
+++ b/tcp_tests/settings_oslo.py
@@ -302,6 +302,8 @@
            help="", default=443),
     ct.Cfg("k8s_conformance_run", ct.Boolean(),
            default=False),
+    ct.Cfg("run_extended_virtlet_conformance", ct.Boolean(),
+           default=False),
     ct.Cfg('k8s_conformance_image', ct.String(),
            default='docker-prod-virtual.docker.mirantis.net/mirantis/'
                    'kubernetes/k8s-conformance:v1.7.5-2')
diff --git a/tcp_tests/tests/system/test_virtlet_actions.py b/tcp_tests/tests/system/test_virtlet_actions.py
index 0dbc296..21f7454 100644
--- a/tcp_tests/tests/system/test_virtlet_actions.py
+++ b/tcp_tests/tests/system/test_virtlet_actions.py
@@ -89,6 +89,20 @@
         show_step(4)
         k8s_deployed.delete_vm(target_yaml)
 
+    @pytest.mark.grab_versions
+    @pytest.mark.grab_virtlet_results(name='virtlet_conformance.log')
+    @pytest.mark.fail_snapshot
+    def test_virtlet_conformance(self, show_step, config, k8s_deployed):
+        """Test run of virtlet conformance tests
+
+        Scenario:
+            1. Perform virtlet conformance
+
+        """
+
+        show_step(1)
+        k8s_deployed.run_virtlet_conformance()
+
     @pytest.mark.skip(reason="No configuration with ceph and k8s")
     def test_rbd_flexvolume_driver(self, show_step, config, k8s_deployed):
         """Test for deploying a VM with Ceph RBD volume using flexvolumeDriver
