diff --git a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
index 1720e2e..7e513e0 100644
--- a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
+++ b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
@@ -306,7 +306,7 @@
                 log.debug("Netconf device {} removed from Netconf subController", deviceId);
             } else {
                 log.warn("Netconf device {} does not exist in the store, " +
-                         "it may already have been removed", deviceId);
+                                 "it may already have been removed", deviceId);
             }
         }
     }
@@ -351,13 +351,13 @@
     }
 
     private void checkAndUpdateDevice(DeviceId deviceId, DeviceDescription deviceDescription) {
-        if (deviceService.getDevice(deviceId) == null) {
+        Device device = deviceService.getDevice(deviceId);
+        if (device == null) {
             log.warn("Device {} has not been added to store, " +
                              "maybe due to a problem in connectivity", deviceId);
         } else {
             boolean isReachable = isReachable(deviceId);
             if (isReachable && !deviceService.isAvailable(deviceId)) {
-                Device device = deviceService.getDevice(deviceId);
                 if (device.is(DeviceDescriptionDiscovery.class)) {
                     if (mastershipService.isLocalMaster(deviceId)) {
                         DeviceDescriptionDiscovery deviceDescriptionDiscovery =
@@ -381,16 +381,29 @@
                 } else {
                     log.warn("No DeviceDescriptionDiscovery behaviour for device {} " +
                                      "using DefaultDeviceDescription", deviceId);
-                            providerService.deviceConnected(
-                                    deviceId, new DefaultDeviceDescription(
+                    providerService.deviceConnected(
+                            deviceId, new DefaultDeviceDescription(
                                     deviceDescription, true, deviceDescription.annotations()));
                 }
             } else if (!isReachable && deviceService.isAvailable(deviceId)) {
                 providerService.deviceDisconnected(deviceId);
+            } else if (isReachable && deviceService.isAvailable(deviceId)) {
+                updatePortStatistics(device);
             }
         }
     }
 
+    private void updatePortStatistics(Device device) {
+        if (device.is(PortStatisticsDiscovery.class)) {
+            PortStatisticsDiscovery d = device.as(PortStatisticsDiscovery.class);
+            providerService.updatePortStatistics(device.id(),
+                                                 d.discoverPortStatistics());
+        } else {
+            log.warn("No port statistics getter behaviour for device {}",
+                     device.id());
+        }
+    }
+
     private boolean descriptionEquals(Device device, DeviceDescription updatedDeviceDescription) {
         return Objects.equal(device.id().uri(), updatedDeviceDescription.deviceUri())
                 && Objects.equal(device.type(), updatedDeviceDescription.type())
@@ -482,15 +495,7 @@
         }
 
         // Port statistics discovery
-        if (device.is(PortStatisticsDiscovery.class)) {
-            PortStatisticsDiscovery d =
-                    device.as(PortStatisticsDiscovery.class);
-            providerService.updatePortStatistics(deviceId,
-                                                 d.discoverPortStatistics());
-        } else {
-            log.warn("No port statistics getter behaviour for device {}",
-                     deviceId);
-        }
+        updatePortStatistics(device);
     }
 
     /**
