diff --git a/apps/routing/src/main/java/org/onosproject/routing/config/impl/Configuration.java b/apps/routing/src/main/java/org/onosproject/routing/config/impl/Configuration.java
index 4520690..c58bc1b 100644
--- a/apps/routing/src/main/java/org/onosproject/routing/config/impl/Configuration.java
+++ b/apps/routing/src/main/java/org/onosproject/routing/config/impl/Configuration.java
@@ -32,8 +32,8 @@
 public class Configuration {
     // We call the BGP routers in our SDN network the BGP speakers, and call
     // the BGP routers outside our SDN network the BGP peers.
-    private List<BgpSpeaker> bgpSpeakers;
-    private List<BgpPeer> peers;
+    private List<BgpSpeaker> bgpSpeakers = Collections.emptyList();
+    private List<BgpPeer> peers = Collections.emptyList();
     private MacAddress virtualGatewayMacAddress;
 
     // All IP prefixes from the configuration are local
diff --git a/apps/routing/src/main/java/org/onosproject/routing/config/impl/RoutingConfigurationImpl.java b/apps/routing/src/main/java/org/onosproject/routing/config/impl/RoutingConfigurationImpl.java
index 0a6f9d4..19c3f70 100644
--- a/apps/routing/src/main/java/org/onosproject/routing/config/impl/RoutingConfigurationImpl.java
+++ b/apps/routing/src/main/java/org/onosproject/routing/config/impl/RoutingConfigurationImpl.java
@@ -195,13 +195,16 @@
         }
 
         BgpConfig bgpConfig = configService.getConfig(routerAppId, BgpConfig.class);
-
-        return bgpConfig.bgpSpeakers().stream()
-                .flatMap(speaker -> speaker.peers().stream())
-                .map(peer -> interfaceService.getMatchingInterface(peer))
-                .filter(intf -> intf != null)
-                .map(intf -> intf.connectPoint())
-                .collect(Collectors.toSet());
+        if (bgpConfig == null) {
+            return Collections.emptySet();
+        } else {
+            return bgpConfig.bgpSpeakers().stream()
+                    .flatMap(speaker -> speaker.peers().stream())
+                    .map(peer -> interfaceService.getMatchingInterface(peer))
+                    .filter(intf -> intf != null)
+                    .map(intf -> intf.connectPoint())
+                    .collect(Collectors.toSet());
+        }
     }
 
     @Override
