diff --git a/src/migration-scripts/policy/1-to-2 b/src/migration-scripts/policy/1-to-2
index c70490ce9..c7a983bba 100755
--- a/src/migration-scripts/policy/1-to-2
+++ b/src/migration-scripts/policy/1-to-2
@@ -1,86 +1,86 @@
 #!/usr/bin/env python3
 #
 # Copyright (C) 2022 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/>.
 
 # T4170: rename "policy ipv6-route" to "policy route6" to match common
 #        IPv4/IPv6 schema
 # T4178: Update tcp flags to use multi value node
 
 from sys import argv
 from sys import exit
 
 from vyos.configtree import ConfigTree
 
 if len(argv) < 2:
     print("Must specify file name!")
     exit(1)
 
 file_name = argv[1]
 
 with open(file_name, 'r') as f:
     config_file = f.read()
 
-base = ['policy', 'ipv6-route']
+base = ['policy']
 config = ConfigTree(config_file)
 
 if not config.exists(base):
     # Nothing to do
     exit(0)
 
-config.rename(base, 'route6')
-config.set_tag(['policy', 'route6'])
+if config.exists(base + ['ipv6-route']):
+    config.rename(base + ['ipv6-route'],'route6')
+    config.set_tag(['policy', 'route6'])
 
 for route in ['route', 'route6']:
-    route_path = ['policy', route]
-    if config.exists(route_path):
-        for name in config.list_nodes(route_path):
-            if config.exists(route_path + [name, 'rule']):
-                for rule in config.list_nodes(route_path + [name, 'rule']):
-                    rule_tcp_flags = route_path + [name, 'rule', rule, 'tcp', 'flags']
+    if config.exists(base + [route]):
+        for name in config.list_nodes(base + [route]):
+            if config.exists(base + [route, name, 'rule']):
+                for rule in config.list_nodes(base + [route, name, 'rule']):
+                    rule_tcp_flags = base + [route, name, 'rule', rule, 'tcp', 'flags']
 
                     if config.exists(rule_tcp_flags):
                         tmp = config.return_value(rule_tcp_flags)
                         config.delete(rule_tcp_flags)
                         for flag in tmp.split(","):
                             for flag in tmp.split(","):
                                 if flag[0] == '!':
                                     config.set(rule_tcp_flags + ['not', flag[1:].lower()])
                                 else:
                                     config.set(rule_tcp_flags + [flag.lower()])
 
 if config.exists(['interfaces']):
     def if_policy_rename(config, path):
         if config.exists(path + ['policy', 'ipv6-route']):
             config.rename(path + ['policy', 'ipv6-route'], 'route6')
 
     for if_type in config.list_nodes(['interfaces']):
         for ifname in config.list_nodes(['interfaces', if_type]):
             if_path = ['interfaces', if_type, ifname]
             if_policy_rename(config, if_path)
 
         for vif_type in ['vif', 'vif-s']:
             if config.exists(if_path + [vif_type]):
                 for vifname in config.list_nodes(if_path + [vif_type]):
                     if_policy_rename(config, if_path + [vif_type, vifname])
 
                     if config.exists(if_path + [vif_type, vifname, 'vif-c']):
                         for vifcname in config.list_nodes(if_path + [vif_type, vifname, 'vif-c']):
                             if_policy_rename(config, if_path + [vif_type, vifname, 'vif-c', vifcname])
 try:
     with open(file_name, 'w') as f:
         f.write(config.to_string())
 except OSError as e:
     print(f'Failed to save the modified config: {e}')
     exit(1)