diff --git a/smoketest/configs/basic-vyos b/smoketest/configs/basic-vyos
index c42f14841..76aa52039 100644
--- a/smoketest/configs/basic-vyos
+++ b/smoketest/configs/basic-vyos
@@ -1,205 +1,224 @@
 interfaces {
     ethernet eth0 {
         address 192.168.0.1/24
         address fe88::1/56
         duplex auto
         smp-affinity auto
         speed auto
     }
     ethernet eth1 {
         duplex auto
         smp-affinity auto
         speed auto
     }
     ethernet eth2 {
         duplex auto
         smp-affinity auto
         speed auto
         vif 100 {
             address 100.100.0.1/24
         }
         vif-s 200 {
             address 100.64.200.254/24
             vif-c 201 {
                 address 100.64.201.254/24
+                address fe89::1/56
             }
             vif-c 202 {
                 address 100.64.202.254/24
             }
         }
     }
     loopback lo {
     }
 }
 protocols {
     static {
         arp 192.168.0.20 {
             hwaddr 00:50:00:00:00:20
         }
         arp 192.168.0.30 {
             hwaddr 00:50:00:00:00:30
         }
         arp 192.168.0.40 {
             hwaddr 00:50:00:00:00:40
         }
         arp 100.100.0.2 {
             hwaddr 00:50:00:00:02:02
         }
         arp 100.100.0.3 {
             hwaddr 00:50:00:00:02:03
         }
         arp 100.100.0.4 {
             hwaddr 00:50:00:00:02:04
         }
         arp 100.64.200.1 {
             hwaddr 00:50:00:00:00:01
         }
         arp 100.64.200.2 {
             hwaddr 00:50:00:00:00:02
         }
         arp 100.64.201.10 {
             hwaddr 00:50:00:00:00:10
         }
         arp 100.64.201.20 {
             hwaddr 00:50:00:00:00:20
         }
         arp 100.64.202.30 {
             hwaddr 00:50:00:00:00:30
         }
         arp 100.64.202.40 {
             hwaddr 00:50:00:00:00:40
         }
         route 0.0.0.0/0 {
             next-hop 100.64.0.1 {
             }
         }
     }
 }
 service {
     dhcp-server {
         shared-network-name LAN {
             authoritative
             subnet 192.168.0.0/24 {
                 default-router 192.168.0.1
                 dns-server 192.168.0.1
                 domain-name vyos.net
                 domain-search vyos.net
                 range LANDynamic {
                     start 192.168.0.20
                     stop 192.168.0.240
                 }
             }
         }
     }
     dhcpv6-server {
         shared-network-name LAN6 {
             subnet fe88::/56 {
                 address-range {
                     prefix fe88::/60 {
                         temporary
                     }
                     start fe88:0000:0000:fe:: {
                         stop fe88:0000:0000:ff::
                     }
                 }
                 domain-search vyos.net
                 name-server fe88::1
                 prefix-delegation {
                     start fe88:0000:0000:0001:: {
                         prefix-length 64
                         stop fe88:0000:0000:0010::
                     }
                 }
             }
+            subnet fe89::/56 {
+                address-range {
+                    prefix fe89::/60 {
+                        temporary
+                    }
+                    start fe89:0000:0000:fe:: {
+                        stop fe89:0000:0000:ff::
+                    }
+                }
+                domain-search vyos.net
+                name-server fe89::1
+                prefix-delegation {
+                    start fe89:0000:0000:0001:: {
+                        prefix-length 64
+                        stop fe89:0000:0000:0010::
+                    }
+                }
+            }
         }
     }
     dns {
         forwarding {
             allow-from 192.168.0.0/16
             cache-size 10000
             dnssec off
             listen-address 192.168.0.1
         }
     }
     ssh {
         ciphers aes128-ctr,aes192-ctr,aes256-ctr
         ciphers chacha20-poly1305@openssh.com,rijndael-cbc@lysator.liu.se
         listen-address 192.168.0.1
         key-exchange curve25519-sha256@libssh.org
         key-exchange diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256
         port 22
     }
 }
 system {
     config-management {
         commit-revisions 100
     }
     console {
         device ttyS0 {
             speed 115200
         }
     }
     conntrack {
         ignore {
             rule 1 {
                 destination {
                     address 192.0.2.2
                 }
                 source {
                     address 192.0.2.1
                 }
             }
         }
     }
     host-name vyos
     login {
         user vyos {
             authentication {
                 encrypted-password $6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0
                 plaintext-password ""
             }
         }
     }
     name-server 192.168.0.1
     syslog {
         console {
             facility all {
                 level emerg
             }
             facility mail {
                 level info
             }
         }
         global {
             facility all {
                 level info
             }
             facility protocols {
                 level debug
             }
             facility security {
                 level info
             }
             preserve-fqdn
         }
         host syslog.vyos.net {
             facility local7 {
                 level notice
             }
             facility protocols {
                 level alert
             }
             facility security {
                 level warning
             }
             format {
                 octet-counted
             }
             port 8000
         }
     }
     time-zone Europe/Berlin
 }
 /* Warning: Do not remove the following line. */
 /* === vyatta-config-version: "broadcast-relay@1:cluster@1:config-management@1:conntrack-sync@1:conntrack@1:dhcp-relay@2:dhcp-server@5:dns-forwarding@1:firewall@5:ipsec@5:l2tp@1:mdns@1:nat@4:ntp@1:pptp@1:qos@1:quagga@6:snmp@1:ssh@1:system@9:vrrp@2:wanloadbalance@3:webgui@1:webproxy@1:webproxy@2:zone-policy@1" === */
 /* Release version: 1.2.6 */
diff --git a/src/migration-scripts/dhcpv6-server/4-to-5 b/src/migration-scripts/dhcpv6-server/4-to-5
index e808edbe0..ae506b9c5 100755
--- a/src/migration-scripts/dhcpv6-server/4-to-5
+++ b/src/migration-scripts/dhcpv6-server/4-to-5
@@ -1,68 +1,88 @@
 #!/usr/bin/env python3
 #
 # Copyright (C) 2024 VyOS maintainers and contributors
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 2 or later as
 # published by the Free Software Foundation.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # T5993: Check if subnet is locally accessible and assign interface to subnet
 
 import sys
 from ipaddress import ip_network
 from vyos.configtree import ConfigTree
 
 if (len(sys.argv) < 1):
     print("Must specify file name!")
     sys.exit(1)
 
 file_name = sys.argv[1]
 
 with open(file_name, 'r') as f:
     config_file = f.read()
 
 base = ['service', 'dhcpv6-server', 'shared-network-name']
 config = ConfigTree(config_file)
 
 if not config.exists(base):
     # Nothing to do
     exit(0)
 
 def find_subnet_interface(subnet):
     subnet_net = ip_network(subnet)
 
+    def check_addr(if_path):
+        if config.exists(if_path + ['address']):
+            for addr in config.return_values(if_path + ['address']):
+                if ip_network(addr, strict=False) == subnet_net:
+                    return True
+        return None
+
     for iftype in config.list_nodes(['interfaces']):
         for ifname in config.list_nodes(['interfaces', iftype]):
             if_base = ['interfaces', iftype, ifname]
 
-            if config.exists(if_base + ['address']):
-                for addr in config.return_values(if_base + ['address']):
-                    if ip_network(addr, strict=False) == subnet_net:
-                        return ifname
+            if check_addr(if_base):
+                return ifname
+
+            if config.exists(if_base + ['vif']):
+                for vif in config.list_nodes(if_base + ['vif']):
+                    if check_addr(if_base + ['vif', vif]):
+                        return f'{ifname}.{vif}'
+
+            if config.exists(if_base + ['vif-s']):
+                for vifs in config.list_nodes(if_base + ['vif-s']):
+                    if check_addr(if_base + ['vif-s', vifs]):
+                        return f'{ifname}.{vifs}'
+
+                    if config.exists(if_base + ['vif-s', vifs, 'vif-c']):
+                        for vifc in config.list_nodes(if_base + ['vif-s', vifs, 'vif-c']):
+                            if check_addr(if_base + ['vif-s', vifs, 'vif-c', vifc]):
+                                return f'{ifname}.{vifs}.{vifc}'
 
     return False
 
 for network in config.list_nodes(base):
     if not config.exists(base + [network, 'subnet']):
         continue
 
     for subnet in config.list_nodes(base + [network, 'subnet']):
         subnet_interface = find_subnet_interface(subnet)
 
         if subnet_interface:
             config.set(base + [network, 'subnet', subnet, 'interface'], value=subnet_interface)
 
 try:
     with open(file_name, 'w') as f:
         f.write(config.to_string())
 except OSError as e:
     print("Failed to save the modified config: {}".format(e))
     exit(1)