diff --git a/providers/netcfghost/src/main/java/org/onosproject/provider/netcfghost/NetworkConfigHostProvider.java b/providers/netcfghost/src/main/java/org/onosproject/provider/netcfghost/NetworkConfigHostProvider.java
index fefecab..42278d3 100644
--- a/providers/netcfghost/src/main/java/org/onosproject/provider/netcfghost/NetworkConfigHostProvider.java
+++ b/providers/netcfghost/src/main/java/org/onosproject/provider/netcfghost/NetworkConfigHostProvider.java
@@ -172,15 +172,19 @@
             HostId hostId = (HostId) event.subject();
             MacAddress mac = hostId.mac();
             VlanId vlan = hostId.vlanId();
-            BasicHostConfig hostConfig =
-                    networkConfigRegistry.getConfig(hostId, BasicHostConfig.class);
+            BasicHostConfig hostConfig = networkConfigRegistry.getConfig(hostId, BasicHostConfig.class);
             Set<IpAddress> ipAddresses = null;
             Set<HostLocation> locations = null;
 
             // Note: There will be no config presented in the CONFIG_REMOVE case
             if (hostConfig != null) {
                 ipAddresses = hostConfig.ipAddresses();
-                locations = hostConfig.locations().stream()
+                locations = hostConfig.locations();
+                if (locations == null || locations.size() < 1) {
+                    log.debug("Ignore network config event without host locations {}", event);
+                    return;
+                }
+                locations = locations.stream()
                         .map(hostLocation -> new HostLocation(hostLocation, System.currentTimeMillis()))
                         .collect(Collectors.toSet());
             }
