diff --git a/tools/cfgupgrade b/tools/cfgupgrade
index 81dce1dd2ce6378e09b1b9bcef6353f6acc05d08..c753e03bc5c173fb3314573f984977d01fbd26f5 100755
--- a/tools/cfgupgrade
+++ b/tools/cfgupgrade
@@ -94,6 +94,18 @@ def CheckHostname(path):
                   " the master node", ssconf_master_node, hostname)
   return False
 
+def UpgradeNetworks(config_data):
+  networks = config_data.get("networks", None)
+  if not networks:
+    config_data["networks"] = {}
+
+
+def UpgradeGroups(config_data):
+  for group in config_data["nodegroups"].values():
+    networks = group.get("networks", None)
+    if not networks:
+      group["networks"] = {}
+
 
 def main():
   """Main program.
@@ -237,6 +249,9 @@ def main():
     if not options.dry_run:
       utils.RemoveFile(options.WATCHER_STATEFILE)
 
+  UpgradeNetworks(config_data)
+  UpgradeGroups(config_data)
+
   try:
     logging.info("Writing configuration file to %s", options.CONFIG_DATA_PATH)
     utils.WriteFile(file_name=options.CONFIG_DATA_PATH,