diff --git a/tempest/scenario/test_network_basic_ops.py b/tempest/scenario/test_network_basic_ops.py
index a52e1a8..5cdf692 100644
--- a/tempest/scenario/test_network_basic_ops.py
+++ b/tempest/scenario/test_network_basic_ops.py
@@ -1016,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)
