diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/AppConfigHandler.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/AppConfigHandler.java
index 034ddfe..38d8aac 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/AppConfigHandler.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/AppConfigHandler.java
@@ -128,9 +128,11 @@
         SegmentRoutingAppConfig config =
                 srManager.cfgService.getConfig(srManager.appId, SegmentRoutingAppConfig.class);
         populateVRouter(deviceId, getMacAddresses(config));
-        config.blackholeIPs().forEach(ipPrefix -> {
-            srManager.routingRulePopulator.populateDefaultRouteBlackhole(deviceId, ipPrefix);
-        });
+        if (config != null) {
+            config.blackholeIPs().forEach(ipPrefix -> {
+                srManager.routingRulePopulator.populateDefaultRouteBlackhole(deviceId, ipPrefix);
+            });
+        }
     }
 
     private void populateVRouter(DeviceId deviceId, Set<MacAddress> pendingAdd) {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/config/SegmentRoutingAppConfig.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/config/SegmentRoutingAppConfig.java
index 9741f78..de6ffb9 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/config/SegmentRoutingAppConfig.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/config/SegmentRoutingAppConfig.java
@@ -24,6 +24,8 @@
 import org.onosproject.core.ApplicationId;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.config.Config;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.Set;
 
@@ -33,6 +35,9 @@
  * App configuration object for Segment Routing.
  */
 public class SegmentRoutingAppConfig extends Config<ApplicationId> {
+
+    private static Logger log = LoggerFactory.getLogger(SegmentRoutingAppConfig.class);
+
     private static final String VROUTER_MACS = "vRouterMacs";
     private static final String SUPPRESS_SUBNET = "suppressSubnet";
     private static final String SUPPRESS_HOST_BY_PORT = "suppressHostByPort";
@@ -55,7 +60,7 @@
      * Gets ips to blackhole from the config.
      *
      * @return Set of ips to blackhole, empty is not specified,
-     *         or null if not valid
+     * or null if not valid
      */
     public Set<IpPrefix> blackholeIPs() {
         if (!object.has(BLACKHOLE_IPS)) {
@@ -68,16 +73,14 @@
             IpPrefix address;
 
             String addrStr = jsonNode.asText(null);
-            if (addrStr == null) {
-                return null;
+            if (addrStr != null) {
+                try {
+                    address = IpPrefix.valueOf(addrStr);
+                    builder.add(address);
+                } catch (IllegalArgumentException e) {
+                    log.debug("Not adding {}", jsonNode, e);
+                }
             }
-            try {
-                address = IpPrefix.valueOf(addrStr);
-            } catch (IllegalArgumentException e) {
-                return null;
-            }
-
-            builder.add(address);
         }
         return builder.build();
     }
