diff --git a/tcp_tests/tests/component/conftest.py b/tcp_tests/tests/component/conftest.py
new file mode 100644
index 0000000..d16387d
--- /dev/null
+++ b/tcp_tests/tests/component/conftest.py
@@ -0,0 +1,61 @@
+#    Copyright 2016 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.
+
+from tcp_tests.fixtures.common_fixtures import *  # noqa
+from tcp_tests.fixtures.ceph_fixtures import *  # noqa
+from tcp_tests.fixtures.config_fixtures import *  # noqa
+from tcp_tests.fixtures.underlay_fixtures import *  # noqa
+from tcp_tests.fixtures.rally_fixtures import *  # noqa
+from tcp_tests.fixtures.salt_fixtures import *  # noqa
+from tcp_tests.fixtures.common_services_fixtures import *  # noqa
+from tcp_tests.fixtures.openstack_fixtures import *  # noqa
+from tcp_tests.fixtures.opencontrail_fixtures import *  # noqa
+from tcp_tests.fixtures.oss_fixtures import *  # noqa
+from tcp_tests.fixtures.decapod_fixtures import *  # noqa
+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.runtest_fixtures import * # noqa
+
+
+__all__ = sorted([  # sort for documentation
+    # common_fixtures
+    'show_step',
+    'func_name',
+    # config_fixtures
+    'config',
+    # rally_fixtures
+    'rally',
+    # salt_fixtures
+    'salt_actions',
+    # common_services_fixtures
+    'common_services_actions',
+    # openstack_fixtures
+    'openstack_actions',
+    # oss_fixtures
+    'oss_actions',
+    # drivetrain_fixtures
+    'drivetrain_actions',
+    # decapod_fixtures
+    'decapod_actions',
+    # component fixtures
+    'opencontrail',
+    # stacklight_fixtures
+    'sl_actions',
+    'ceph_action',
+    # k8s fixtures
+    'k8s_actions',
+    # tempest
+    'tempest_actions'
+])
diff --git a/tcp_tests/tests/component/readme_first.txt b/tcp_tests/tests/component/readme_first.txt
new file mode 100644
index 0000000..8ac5988
--- /dev/null
+++ b/tcp_tests/tests/component/readme_first.txt
@@ -0,0 +1,10 @@
+Component tests in this directory are used for sanity checks for
+various of components during deployment.
+Results of these steps will be assumed as the results of the
+corresponding deployment step in the TestRail report.
+
+DO NOT use deployment fixtures that are depended on the 'hardware'
+fixture because 'hardware' fixture won't be initialized for these checks.
+
+To access the environment, please use '*_actions' fixtures that
+provide managers to work with the components directly.
\ No newline at end of file
diff --git a/tcp_tests/tests/component/test_check_calico.py b/tcp_tests/tests/component/test_check_calico.py
new file mode 100644
index 0000000..6cae1e1
--- /dev/null
+++ b/tcp_tests/tests/component/test_check_calico.py
@@ -0,0 +1,24 @@
+#    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 pytest
+
+from tcp_tests import logger
+
+LOG = logger.logger
+
+
+@pytest.mark.check_calico
+def test_check_calico(config, underlay_actions):
+    LOG.info("*************** DONE **************")
diff --git a/tcp_tests/tests/component/test_check_ceph.py b/tcp_tests/tests/component/test_check_ceph.py
new file mode 100644
index 0000000..7f0cc8d
--- /dev/null
+++ b/tcp_tests/tests/component/test_check_ceph.py
@@ -0,0 +1,24 @@
+#    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 pytest
+
+from tcp_tests import logger
+
+LOG = logger.logger
+
+
+@pytest.mark.check_ceph
+def test_check_ceph(config, underlay_actions):
+    LOG.info("*************** DONE **************")
diff --git a/tcp_tests/tests/component/test_check_cicd.py b/tcp_tests/tests/component/test_check_cicd.py
new file mode 100644
index 0000000..3c5382e
--- /dev/null
+++ b/tcp_tests/tests/component/test_check_cicd.py
@@ -0,0 +1,24 @@
+#    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 pytest
+
+from tcp_tests import logger
+
+LOG = logger.logger
+
+
+@pytest.mark.check_cicd
+def test_check_cicd(config, underlay_actions):
+    LOG.info("*************** DONE **************")
diff --git a/tcp_tests/tests/component/test_check_contrail.py b/tcp_tests/tests/component/test_check_contrail.py
new file mode 100644
index 0000000..1eb80f2
--- /dev/null
+++ b/tcp_tests/tests/component/test_check_contrail.py
@@ -0,0 +1,24 @@
+#    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 pytest
+
+from tcp_tests import logger
+
+LOG = logger.logger
+
+
+@pytest.mark.check_contrail
+def test_check_contrail(config, underlay_actions):
+    LOG.info("*************** DONE **************")
diff --git a/tcp_tests/tests/component/test_check_core.py b/tcp_tests/tests/component/test_check_core.py
new file mode 100644
index 0000000..940b54c
--- /dev/null
+++ b/tcp_tests/tests/component/test_check_core.py
@@ -0,0 +1,24 @@
+#    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 pytest
+
+from tcp_tests import logger
+
+LOG = logger.logger
+
+
+@pytest.mark.check_core
+def test_check_core(config, underlay_actions):
+    LOG.info("*************** DONE **************")
diff --git a/tcp_tests/tests/component/test_check_finalize.py b/tcp_tests/tests/component/test_check_finalize.py
new file mode 100644
index 0000000..e979c26
--- /dev/null
+++ b/tcp_tests/tests/component/test_check_finalize.py
@@ -0,0 +1,31 @@
+#    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 pytest
+
+from tcp_tests import logger
+
+LOG = logger.logger
+
+
+@pytest.mark.check_finalize
+def test_check_finalize(config, underlay_actions):
+    """Not a component test, just a placeholder.
+
+    'finalize' stands for state.highstate on all nodes
+    at the end of the deployment.
+    Here, can be checked that all the nodes completed this state
+    without errors (so no errors were skipped by pipelines)
+    """
+    LOG.info("*************** DONE **************")
diff --git a/tcp_tests/tests/component/test_check_k8s.py b/tcp_tests/tests/component/test_check_k8s.py
new file mode 100644
index 0000000..10e3040
--- /dev/null
+++ b/tcp_tests/tests/component/test_check_k8s.py
@@ -0,0 +1,24 @@
+#    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 pytest
+
+from tcp_tests import logger
+
+LOG = logger.logger
+
+
+@pytest.mark.check_k8s
+def test_check_k8s(config, underlay_actions):
+    LOG.info("*************** DONE **************")
diff --git a/tcp_tests/tests/component/test_check_kvm.py b/tcp_tests/tests/component/test_check_kvm.py
new file mode 100644
index 0000000..16db232
--- /dev/null
+++ b/tcp_tests/tests/component/test_check_kvm.py
@@ -0,0 +1,24 @@
+#    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 pytest
+
+from tcp_tests import logger
+
+LOG = logger.logger
+
+
+@pytest.mark.check_kvm
+def test_check_kvm(config, underlay_actions):
+    LOG.info("*************** DONE **************")
diff --git a/tcp_tests/tests/component/test_check_openstack.py b/tcp_tests/tests/component/test_check_openstack.py
new file mode 100644
index 0000000..14eb2a9
--- /dev/null
+++ b/tcp_tests/tests/component/test_check_openstack.py
@@ -0,0 +1,24 @@
+#    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 pytest
+
+from tcp_tests import logger
+
+LOG = logger.logger
+
+
+@pytest.mark.check_openstack
+def test_check_openstack(config, underlay_actions):
+    LOG.info("*************** DONE **************")
diff --git a/tcp_tests/tests/component/test_check_oss.py b/tcp_tests/tests/component/test_check_oss.py
new file mode 100644
index 0000000..47847bf
--- /dev/null
+++ b/tcp_tests/tests/component/test_check_oss.py
@@ -0,0 +1,24 @@
+#    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 pytest
+
+from tcp_tests import logger
+
+LOG = logger.logger
+
+
+@pytest.mark.check_oss
+def test_check_oss(config, underlay_actions):
+    LOG.info("*************** DONE **************")
diff --git a/tcp_tests/tests/component/test_check_ovs.py b/tcp_tests/tests/component/test_check_ovs.py
new file mode 100644
index 0000000..74445fa
--- /dev/null
+++ b/tcp_tests/tests/component/test_check_ovs.py
@@ -0,0 +1,24 @@
+#    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 pytest
+
+from tcp_tests import logger
+
+LOG = logger.logger
+
+
+@pytest.mark.check_ovs
+def test_check_ovs(config, underlay_actions):
+    LOG.info("*************** DONE **************")
diff --git a/tcp_tests/tests/component/test_check_stacklight.py b/tcp_tests/tests/component/test_check_stacklight.py
new file mode 100644
index 0000000..14b4169
--- /dev/null
+++ b/tcp_tests/tests/component/test_check_stacklight.py
@@ -0,0 +1,24 @@
+#    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 pytest
+
+from tcp_tests import logger
+
+LOG = logger.logger
+
+
+@pytest.mark.check_stacklight
+def test_check_stacklight(config, underlay_actions):
+    LOG.info("*************** DONE **************")
diff --git a/tcp_tests/tests/environment/test_bootstrap_salt.py b/tcp_tests/tests/environment/test_bootstrap_salt.py
new file mode 100644
index 0000000..f852ffa
--- /dev/null
+++ b/tcp_tests/tests/environment/test_bootstrap_salt.py
@@ -0,0 +1,31 @@
+#    Copyright 2017 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 pytest
+
+from tcp_tests import logger
+
+LOG = logger.logger
+
+
+class TestBootstrapCore(object):
+    """Test class for deploy local dns_vm"""
+
+    def test_create_environment(self, config, hardware):
+        """Create environment hardware in disabled state"""
+        LOG.info("*************** DONE **************")
+
+    @pytest.mark.fail_snapshot
+    def test_bootstrap_salt(self, config, underlay, salt_deployed):
+        LOG.info("*************** DONE **************")
diff --git a/tcp_tests/tests/environment/test_local_dns.py b/tcp_tests/tests/environment/test_local_dns.py
index dfd29a1..fcc0978 100644
--- a/tcp_tests/tests/environment/test_local_dns.py
+++ b/tcp_tests/tests/environment/test_local_dns.py
@@ -25,7 +25,3 @@
     @pytest.mark.fail_snapshot
     def test_install_local_dns(self, config, underlay):
         LOG.info("*************** DONE **************")
-
-    @pytest.mark.fail_snapshot
-    def test_install_local_salt(self, config, underlay, salt_deployed):
-        LOG.info("*************** DONE **************")
