diff --git a/tempest/api/compute/admin/test_servers_on_multinodes.py b/tempest/api/compute/admin/test_servers_on_multinodes.py
index 013e7d8..e8367c5 100644
--- a/tempest/api/compute/admin/test_servers_on_multinodes.py
+++ b/tempest/api/compute/admin/test_servers_on_multinodes.py
@@ -142,6 +142,14 @@
     def skip_checks(cls):
         super(UnshelveToHostMultiNodesTest, cls).skip_checks()
 
+        if not CONF.compute_feature_enabled.shelve:
+            raise cls.skipException("Shelve is not available.")
+        # Test has two users from different projects. Member user creates VM
+        # and shelve it but admin user unshelve this VM. In case of encrypted
+        # Nova storage the admin user has no access to the user encryption
+        # keys and not be able to perform unshelve action.
+        if CONF.ephemeral_storage_encryption.enabled:
+            raise cls.skipException("Nova has encrypted storage.")
         if CONF.compute.min_compute_nodes < 2:
             raise cls.skipException(
                 "Less than 2 compute nodes, skipping multi-nodes test.")
diff --git a/tempest/api/compute/admin/test_volume_swap.py b/tempest/api/compute/admin/test_volume_swap.py
index 0180513..dcdfae2 100644
--- a/tempest/api/compute/admin/test_volume_swap.py
+++ b/tempest/api/compute/admin/test_volume_swap.py
@@ -30,16 +30,34 @@
         super(TestVolumeSwapBase, cls).setup_credentials()
 
     @classmethod
+    def setup_clients(cls):
+        super(TestVolumeSwapBase, cls).setup_clients()
+
+        cls.volume_type_client = cls.os_admin.volume_types_client_latest
+        cls.encryption_client = cls.os_admin.encryption_types_client_latest
+
+    @classmethod
     def skip_checks(cls):
         super(TestVolumeSwapBase, cls).skip_checks()
         if not CONF.service_available.cinder:
             raise cls.skipException("Cinder is not available")
         if not CONF.compute_feature_enabled.swap_volume:
             raise cls.skipException("Swapping volumes is not supported.")
-        if CONF.compute_feature_enabled.attach_encrypted_volume:
-            raise cls.skipException(
-                'Volume swap is not available for OS configurations '
-                'with crypted volumes.')
+
+    @classmethod
+    def _check_default_volume_type(cls):
+        default_volume_type = cls.volume_type_client.\
+            show_default_volume_type()["volume_type"]["id"]
+        volume_encryption = cls.encryption_client.show_encryption_type(
+            default_volume_type)
+        if volume_encryption and volume_encryption.get("provider"):
+            raise cls.skipException("Not allowed to run this test with "
+                                    "encrypted volume")
+
+    @classmethod
+    def resource_setup(cls):
+        cls._check_default_volume_type()
+        super(TestVolumeSwapBase, cls).resource_setup()
 
     def wait_for_server_volume_swap(self, server_id, old_volume_id,
                                     new_volume_id):
diff --git a/tempest/common/waiters.py b/tempest/common/waiters.py
index 36c2b8b..ae0bd76 100644
--- a/tempest/common/waiters.py
+++ b/tempest/common/waiters.py
@@ -679,8 +679,9 @@
     raise lib_exc.TimeoutException()
 
 
-def wait_for_cloudinit(ssh_client, timeout=60):
+def wait_for_cloudinit(ssh_client):
     """Waits for cloud-init completed"""
+    timeout = CONF.compute.cloudinit_timeout
     start_time = int(time.time())
     while int(time.time()) - start_time < timeout:
         try:
diff --git a/tempest/config.py b/tempest/config.py
index cffeb35..d5eeb21 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -348,6 +348,9 @@
                help="Timeout in seconds to wait for an instance to build. "
                     "Other services that do not define build_timeout will "
                     "inherit this value."),
+    cfg.IntOpt('cloudinit_timeout',
+               default=90,
+               help="Timeout in seconds to wait for a cloudinit on VM."),
     cfg.IntOpt('ready_wait',
                default=0,
                help="Additional wait time for clean state, when there is "
diff --git a/tempest/scenario/manager.py b/tempest/scenario/manager.py
index 212c1b3..94cc3bd 100644
--- a/tempest/scenario/manager.py
+++ b/tempest/scenario/manager.py
@@ -1342,12 +1342,12 @@
         return self.create_server(**create_kwargs)
 
     def wait_for_cloud_init(
-            self, ip_address, server, private_key, username, timeout=60):
+            self, ip_address, server, private_key, username):
         ssh_client = self.get_remote_client(ip_address,
                                             private_key=private_key,
                                             server=server,
                                             username=username)
-        waiters.wait_for_cloudinit(ssh_client, timeout)
+        waiters.wait_for_cloudinit(ssh_client)
 
     def create_volume_from_image(self, **kwargs):
         """Create volume from image.
diff --git a/tempest/scenario/test_encrypted_cinder_volumes.py b/tempest/scenario/test_encrypted_cinder_volumes.py
index 62b2823..1afb940 100644
--- a/tempest/scenario/test_encrypted_cinder_volumes.py
+++ b/tempest/scenario/test_encrypted_cinder_volumes.py
@@ -80,9 +80,10 @@
     @utils.services('compute', 'volume', 'image')
     def test_encrypted_cinder_volumes_luksv2(self):
         """LUKs v2 decrypts volume through os-brick."""
-        volume = self.create_encrypted_volume('luks2',
-                                              volume_type='luksv2',
-                                              wait_until=None)
+        volume = self.create_encrypted_volume(
+            'luks2',
+            volume_type=CONF.volume.volume_type_luks_v2,
+            wait_until=None)
         server = self.launch_instance()
         waiters.wait_for_volume_resource_status(self.volumes_client,
                                                 volume['id'], 'available')
diff --git a/tempest/scenario/test_network_advanced_server_ops.py b/tempest/scenario/test_network_advanced_server_ops.py
index 3a93f74..ba5245b 100644
--- a/tempest/scenario/test_network_advanced_server_ops.py
+++ b/tempest/scenario/test_network_advanced_server_ops.py
@@ -193,9 +193,10 @@
         # check if microversion is less than 2.25 because of
         # disk_over_commit is depracted since compute api version 2.25
         # if min_microversion is None, it runs on version < 2.25
-        if not migration and (CONF.compute.min_microversion is None or
-                              CONF.compute.min_microversion < '2.25'):
-            migration_kwargs['disk_over_commit'] = False
+        if (self.compute_request_microversion and
+                self.compute_request_microversion < '2.25'):
+            if not migration:
+                migration_kwargs['disk_over_commit'] = False
 
         if dest_host:
             migration_kwargs['host'] = dest_host
diff --git a/tempest/scenario/test_network_basic_ops.py b/tempest/scenario/test_network_basic_ops.py
index 700ad3b..5cdf692 100644
--- a/tempest/scenario/test_network_basic_ops.py
+++ b/tempest/scenario/test_network_basic_ops.py
@@ -401,10 +401,29 @@
     def _live_migrate_server(self, server, host_id=None):
         src_host = self.get_host_for_server(server['id'])
 
+        # check if microversion is equal or more than 2.25 because of
+        # block_migration(str) = 'auto' is supported since compute
+        # api version 2.25
+        # else use block_migration_for_live_migration config option
+        # and add disk_over_commit option to migration_kwargs
+        if (self.compute_request_microversion and
+                self.compute_request_microversion < '2.25'):
+            migration_kwargs = {
+                "host": host_id,
+                "block_migration": (CONF.compute_feature_enabled.
+                                    block_migration_for_live_migration),
+                "disk_over_commit": False,
+            }
+
+        else:
+            migration_kwargs = {
+                "host": host_id,
+                "block_migration": "auto",
+            }
+
         self.os_adm.servers_client.live_migrate_server(
             server_id=server['id'],
-            block_migration='auto',
-            host=host_id)
+            **migration_kwargs)
 
         waiters.wait_for_server_status(
             self.servers_client, server['id'], 'ACTIVE')
@@ -997,3 +1016,43 @@
         # Check ping between servers after live migration
         self._check_server_connectivity(self.floating_ip_tuple.floating_ip,
                                         server02_ip, should_connect=True)
+
+    @decorators.idempotent_id('392939d1-2a96-4985-9360-6a222373107a')
+    @testtools.skipUnless(CONF.compute_feature_enabled.live_migration,
+                          'Live migration is not available.')
+    @decorators.attr(type='slow')
+    @utils.services('compute', 'network')
+    def test_live_migrate_vm_with_two_networks(self):
+        """Live migrate a VM with two different networks.
+
+        1. Create server1 with tenant network1 and floating IP
+        2. Check connectivity to server1 via public and private networks
+        3. Create tenant network 2 with server 2
+        4. Attach the new network to the server1
+        5. Check connectivity to server2 from server1
+        6. Live migrate server1
+        7. Check connectivity to server1 via networks 1 and 2
+        8. Check connectivity to server2 from server1
+        """
+
+        self._setup_network_and_servers()
+        server1 = self.servers[0]
+        self._check_public_network_connectivity(should_connect=True)
+        self._check_network_internal_connectivity(network=self.network)
+        self._check_network_external_connectivity()
+        self._create_new_network()
+        new_server = self._create_server(self.new_net)
+        new_server_ips = [addr['addr'] for addr in
+                          new_server['addresses'][self.new_net['name']]]
+
+        # Attach the new network to the server1
+        self._hotplug_server()
+        self._check_server_connectivity(self.floating_ip_tuple.floating_ip,
+                                        new_server_ips, should_connect=True)
+
+        # Live migrate server1 and check connectivity
+        self._live_migrate_server(server=server1)
+        self._check_network_internal_connectivity(network=self.network)
+        self._check_public_network_connectivity(should_connect=True)
+        self._check_server_connectivity(self.floating_ip_tuple.floating_ip,
+                                        new_server_ips, should_connect=True)
diff --git a/tempest/scenario/test_volume_boot_pattern.py b/tempest/scenario/test_volume_boot_pattern.py
index 1c3c8bf..28d8ff8 100644
--- a/tempest/scenario/test_volume_boot_pattern.py
+++ b/tempest/scenario/test_volume_boot_pattern.py
@@ -288,10 +288,10 @@
         # Assert that the underlying volume is gone.
         self.volumes_client.wait_for_resource_deletion(volume_origin['id'])
 
-    def _do_test_boot_server_from_encrypted_volume_luks(self, provider):
+    def _do_test_boot_server_from_encrypted_volume_luks(self, provider, vtype):
         # Create an encrypted volume
         volume = self.create_encrypted_volume(provider,
-                                              volume_type=provider)
+                                              volume_type=vtype)
 
         self.volumes_client.set_bootable_volume(volume['id'], bootable=True)
 
@@ -315,6 +315,7 @@
     def test_boot_server_from_encrypted_volume_luks(self):
         """LUKs v1 decrypts volume through libvirt."""
         self._do_test_boot_server_from_encrypted_volume_luks(
+            "luks",
             CONF.volume.volume_type_luks
         )
 
@@ -330,5 +331,6 @@
     def test_boot_server_from_encrypted_volume_luksv2(self):
         """LUKs v2 decrypts volume through os-brick."""
         self._do_test_boot_server_from_encrypted_volume_luks(
+            "luks2",
             CONF.volume.volume_type_luks_v2
         )
