diff --git a/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/impl/ScalableGatewayManager.java b/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/impl/ScalableGatewayManager.java
index 8b75335..383684e 100644
--- a/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/impl/ScalableGatewayManager.java
+++ b/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/impl/ScalableGatewayManager.java
@@ -50,6 +50,7 @@
 import org.onosproject.scalablegateway.api.ScalableGatewayService;
 
 import java.util.List;
+import java.util.Optional;
 
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.ConsistentMap;
@@ -128,7 +129,6 @@
         deviceService.addListener(internalDeviceListener);
 
         selectGroupHandler = new SelectGroupHandler(groupService, deviceService, driverService, appId);
-        readConfiguration();
 
         gatewayNodeMap = storageService.<DeviceId, GatewayNode>consistentMapBuilder()
                 .withSerializer(Serializer.using(GATEWAYNODE_SERIALIZER.build()))
@@ -165,13 +165,17 @@
     }
 
     private PortNumber findPortNumFromPortName(DeviceId gatewayDeviceId, String name) {
-        Port port = deviceService.getPorts(gatewayDeviceId)
+        Optional<Port> port = deviceService.getPorts(gatewayDeviceId)
                 .stream()
                 .filter(p -> p.annotations().value(PORT_NAME).equals(name))
-                .iterator()
-                .next();
-        return checkNotNull(port, PORT_CAN_NOT_BE_NULL).number();
+                .findFirst();
 
+        if (!port.isPresent()) {
+            log.error("Cannot find port {} in gateway device {}", name, gatewayDeviceId);
+            return null;
+        }
+
+        return port.get().number();
     }
 
     @Override
