diff --git a/tcp_tests/tests/system/conftest.py b/tcp_tests/tests/system/conftest.py
index 080cb4d..1214cd3 100644
--- a/tcp_tests/tests/system/conftest.py
+++ b/tcp_tests/tests/system/conftest.py
@@ -26,6 +26,8 @@
 from tcp_tests.fixtures.stacklight_fixtures import *  # noqa
 from tcp_tests.fixtures.k8s_fixtures import *  # noqa
 from tcp_tests.fixtures.drivetrain_fixtures import *  # noqa
+from tcp_tests.fixtures.day1_fixtures import *  # noqa
+
 
 __all__ = sorted([  # sort for documentation
     # common_fixtures
@@ -69,5 +71,8 @@
     'ceph_action',
     # k8s fixtures
     'k8s_actions',
-    'k8s_deployed'
+    'k8s_deployed',
+    'day1_underlay',
+    'day1_cfg_config',
+    'day1_salt_action'
 ])
diff --git a/tcp_tests/tests/system/test_offline.py b/tcp_tests/tests/system/test_offline.py
index 51757fd..83f3766 100644
--- a/tcp_tests/tests/system/test_offline.py
+++ b/tcp_tests/tests/system/test_offline.py
@@ -11,7 +11,7 @@
 #    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 pytest
+import pytest
 import time
 
 from collections import Counter
@@ -28,6 +28,139 @@
 class TestOfflineDeployment(object):
     """docstring for TestOfflineDeployment"""
 
+    @pytest.mark.day1_underlay
+    def test_maas_provision(self, show_step, hardware, underlay,
+                            day1_cfg_config):
+        """Test for deploying an mcp dvr environment and check it
+
+        Scenario:
+        1. Prepare salt on hosts
+        2. Setup controller nodes
+        3. Setup compute nodes
+        """
+
+        show_step(1)
+        show_step(2)
+        show_step(3)
+
+        cfg_node = 'cfg01.virtual-mcp-pike-dvr.local'
+        ssh_test_key = day1_cfg_config.config.underlay.ssh_keys[0]['public']
+        verbose = True
+
+        cfg_admin_iface = next(i for i in hardware.master_nodes[0].interfaces
+                               if i.network.name == 'admin')
+        admin_net = cfg_admin_iface.network.address_pool.ip_network
+
+        underlay.check_call(
+            node_name=cfg_node, verbose=verbose,
+            cmd='maas logout mirantis && '
+            'maas login mirantis '
+            'http://localhost:5240/MAAS/api/2.0/ '
+            'FTvqwe7ybBp68gPar2:5mcctTAXVL8mns4ef4:zrA9LZwu2tMc8BAZpsPUfwWwTyQnAtDN') # noqa
+
+        underlay.check_call(
+            node_name=cfg_node,
+            verbose=verbose,
+            cmd="maas mirantis package-repository update main_archive "
+                "disabled_pockets=backports,security")
+
+        underlay.check_call(
+            node_name=cfg_node, verbose=verbose,
+            cmd="maas mirantis ipranges create "
+            "type=dynamic start_ip={start} end_ip={end} "
+            "subnet=$(maas mirantis subnets read | jq '.[] | select(.name==\"{net}\") | .id')".format(  # noqa
+                start=admin_net[191],
+                end=admin_net[253],
+                net=admin_net))
+        underlay.check_call(node_name=cfg_node, verbose=verbose,
+            cmd="maas mirantis vlan update "
+            "$(maas mirantis subnets read | jq '.[] | select(.name==\"{net}\") | .vlan.fabric_id') " # noqa
+            "0 dhcp_on=True primary_rack='cfg01'".format(net=admin_net))
+
+        underlay.check_call(
+            node_name=cfg_node, verbose=verbose,
+            cmd="ssh-keygen -y -f ~root/.ssh/id_rsa > ~root/.ssh/id_rsa.pub")
+        underlay.check_call(
+            node_name=cfg_node, verbose=verbose,
+            cmd='maas mirantis sshkeys create '
+                'key="$(cat ~root/.ssh/id_rsa.pub)"')
+
+        r, f = day1_cfg_config.salt.enforce_state('cfg01*', 'maas.machines')
+        LOG.info(r)
+        LOG.info(f)
+
+        # show_step(8)
+        nodes_amount = len(hardware.slave_nodes)
+        cmd = """   timeout 1800s bash -c 'hosts=$(maas mirantis nodes read | jq -r ".[] | select(.node_type_name==\\"Machine\\") | select(.status_name==\\"Ready\\") | .hostname "); while ! [ $(echo "$hosts" | wc -w) -eq {amount} ]; do echo "Ready hosts:\n$hosts"; sleep 30; hosts=$(maas mirantis nodes read | jq -r ".[] | select(.node_type_name==\\"Machine\\") | select(.status_name==\\"Ready\\") | .hostname "); done '   """.format(amount=nodes_amount)  # noqa
+        underlay.check_call(node_name=cfg_node, verbose=verbose, cmd=cmd)
+        underlay.check_call(node_name=cfg_node, verbose=verbose,
+                            cmd='salt-key')
+        # show_step(9)
+        underlay.check_call(
+            node_name=cfg_node, verbose=verbose,
+            cmd='salt-call state.sls maas.machines.deploy')
+        # show_step(10)
+        underlay.check_call(
+            node_name=cfg_node, verbose=verbose,
+            cmd='salt-call state.sls maas.machines.wait_for_deployed')
+        underlay.check_call(node_name=cfg_node, verbose=verbose,
+                            cmd='salt-key')
+
+        underlay.check_call(
+            node_name=cfg_node,
+            verbose=verbose,
+            cmd="salt '*' ssh.set_auth_key root '{}'".format(ssh_test_key))
+        underlay.check_call(
+            node_name=cfg_node,
+            verbose=verbose,
+            cmd='salt "*" ssh.set_auth_key root '
+                '"$(ssh-keygen -y -f ~/.ssh/id_rsa | cut -d " " -f 2)"')
+
+        underlay.check_call(
+            node_name=cfg_node,
+            verbose=verbose,
+            cmd="salt '*' ssh.set_auth_key ubuntu '{}'".format(ssh_test_key))
+        underlay.check_call(
+            node_name=cfg_node,
+            verbose=verbose,
+            cmd='salt "*" ssh.set_auth_key ubuntu '
+                '"$(ssh-keygen -y -f ~/.ssh/id_rsa | cut -d " " -f 2)"')
+
+        result = \
+            day1_cfg_config.salt.get_pillar(cfg_node,
+                                            '_param:jenkins_salt_api_url')
+        result = result[0].get(cfg_node)
+
+        jenkins = JenkinsClient(
+            host='http://{host}:8081'.format(
+                host=day1_cfg_config.config.salt.salt_master_host),
+            username='admin',
+            password='r00tme')
+        params = jenkins.make_defults_params('deploy_openstack')
+        params['SALT_MASTER_URL'] = result
+        params['STACK_INSTALL'] = "core,openstack,ovs"
+        build = jenkins.run_build('deploy_openstack', params)
+
+        jenkins.wait_end_of_build(
+            name=build[0],
+            build_id=build[1],
+            timeout=60 * 60 * 2)
+
+        assert \
+            jenkins.build_info(
+                name=build[0], build_id=build[1])['result'] == 'SUCCESS', \
+            "Deploy openstack was failed"
+
+        openstack = managers.openstack_manager.OpenstackManager(
+            day1_cfg_config.config, underlay, hardware,
+            day1_cfg_config.salt)
+
+        if settings.RUN_TEMPEST:
+            openstack.run_tempest(pattern=settings.PATTERN)
+            openstack.download_tempest_report()
+
+        LOG.info("*************** DONE **************")
+
     def test_deploy_day1(self, show_step, config, underlay, hardware,
                          common_services_deployed, salt_deployed):
         """Test for deploying an mcp from day01 images
