diff --git a/adaptercore/device_handler.go b/adaptercore/device_handler.go
index 2e19d7c..a97a37d 100644
--- a/adaptercore/device_handler.go
+++ b/adaptercore/device_handler.go
@@ -1073,20 +1073,21 @@
 	dh.lockDevice.Lock()
 	dh.adminState = "down"
 	dh.lockDevice.Unlock()
-	if _, err := dh.Client.DisableOlt(context.Background(), new(oop.Empty)); err != nil {
-		if e, ok := status.FromError(err); ok && e.Code() == codes.Internal {
-			log.Errorw("failed-to-disable-olt ", log.Fields{"err": err})
-			dh.lockDevice.Lock()
-			dh.adminState = "up"
-			dh.lockDevice.Unlock()
-			return err
+	if dh.Client != nil {
+		if _, err := dh.Client.DisableOlt(context.Background(), new(oop.Empty)); err != nil {
+			if e, ok := status.FromError(err); ok && e.Code() == codes.Internal {
+				log.Errorw("failed-to-disable-olt ", log.Fields{"err": err, "deviceID": device.Id})
+				dh.lockDevice.Lock()
+				dh.adminState = "up"
+				dh.lockDevice.Unlock()
+				return err
+			}
 		}
-
 	}
-	log.Debug("olt-disabled")
-	dh.lockDevice.Lock()
+	log.Debugw("olt-disabled", log.Fields{"deviceID": device.Id})
 	/* Discovered ONUs entries need to be cleared , since on device disable the child devices goes to
-	   UNREACHABLE state which needs to be configured again*/
+	UNREACHABLE state which needs to be configured again*/
+	dh.lockDevice.Lock()
 	dh.discOnus = make(map[string]bool)
 	dh.onus = make(map[string]*OnuDevice)
 	dh.lockDevice.Unlock()
@@ -1203,6 +1204,9 @@
 func (dh *DeviceHandler) clearNNIData() error {
 	nniUniID := -1
 	nniOnuID := -1
+	if dh.resourceMgr == nil {
+		return fmt.Errorf("no resource manager for deviceID %s", dh.deviceID)
+	}
 	flowIDs := dh.resourceMgr.GetCurrentFlowIDsForOnu(uint32(dh.nniIntfID), uint32(nniOnuID), uint32(nniUniID))
 	log.Debugw("Current flow ids for nni", log.Fields{"flow-ids": flowIDs})
 	for _, flowID := range flowIDs {
@@ -1236,20 +1240,22 @@
 	   This clears up flow data and also resource map data for various
 	   other pon resources like alloc_id and gemport_id
 	*/
-	for _, onu := range dh.onus {
-		if err := dh.clearUNIData(onu); err != nil {
-			log.Debugw("Failed to clear data for onu", log.Fields{"onu-device": onu})
+	if dh.resourceMgr != nil {
+		for _, onu := range dh.onus {
+			if err := dh.clearUNIData(onu); err != nil {
+				log.Debugw("Failed to clear data for onu", log.Fields{"onu-device": onu})
+			}
 		}
-	}
-	/* Clear the flows from KV store associated with NNI port.
-	   There are mostly trap rules from NNI port (like LLDP)
-	*/
-	if err := dh.clearNNIData(); err != nil {
-		log.Debugw("Failed to clear data for NNI port", log.Fields{"device-id": dh.deviceID})
-	}
+		/* Clear the flows from KV store associated with NNI port.
+		   There are mostly trap rules from NNI port (like LLDP)
+		*/
+		if err := dh.clearNNIData(); err != nil {
+			log.Debugw("Failed to clear data for NNI port", log.Fields{"deviceID": dh.deviceID})
+		}
 
-	/* Clear the resource pool for each PON port in the background */
-	go dh.resourceMgr.Delete()
+		/* Clear the resource pool for each PON port in the background */
+		go dh.resourceMgr.Delete()
+	}
 
 	/*Delete ONU map for the device*/
 	for onu := range dh.onus {
@@ -1259,9 +1265,11 @@
 	// Stop the Stats collector
 	dh.stopCollector <- true
 	//Reset the state
-	if _, err := dh.Client.Reboot(context.Background(), new(oop.Empty)); err != nil {
-		log.Errorw("Failed-to-reboot-olt ", log.Fields{"err": err})
-		return err
+	if dh.Client != nil {
+		if _, err := dh.Client.Reboot(context.Background(), new(oop.Empty)); err != nil {
+			log.Errorw("Failed-to-reboot-olt ", log.Fields{"deviceID": dh.deviceID, "err": err})
+			return err
+		}
 	}
 	cloned := proto.Clone(device).(*voltha.Device)
 	cloned.OperStatus = voltha.OperStatus_UNKNOWN
@@ -1276,7 +1284,7 @@
 //RebootDevice reboots the given device
 func (dh *DeviceHandler) RebootDevice(device *voltha.Device) error {
 	if _, err := dh.Client.Reboot(context.Background(), new(oop.Empty)); err != nil {
-		log.Errorw("Failed to reboot olt ", log.Fields{"err": err})
+		log.Errorw("Failed to reboot olt ", log.Fields{"deviceID": dh.deviceID, "err": err})
 		return err
 	}
 
