diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index 87a7410..f1005e6 100755
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -61,6 +61,13 @@
 )
 
 const (
+	// dummy constant - irregular value for ConnState - used to avoiding setting this state in the updateDeviceState()
+	// should better be defined in voltha protobuf or best solution would be to define an interface to just set the OperState
+	// as long as such is not available by the libraries - use this workaround
+	connectStatusINVALID = 255 // as long as not used as key in voltha.ConnectStatus_Types_name
+)
+
+const (
 	// events of Device FSM
 	devEvDeviceInit       = "devEvDeviceInit"
 	devEvGrpcConnected    = "devEvGrpcConnected"
@@ -361,7 +368,7 @@
 	dh.pOnuTP.LockTpProcMutex()
 	defer dh.pOnuTP.UnlockTpProcMutex()
 
-	if techProfMsg.UniId > 255 {
+	if techProfMsg.UniId >= platform.MaxUnisPerOnu {
 		return fmt.Errorf(fmt.Sprintf("received UniId value exceeds range: %d, device-id: %s",
 			techProfMsg.UniId, dh.DeviceID))
 	}
@@ -748,11 +755,12 @@
 				dh.runUniLockFsm(ctx, true)
 			}
 		} else {
-			logger.Debugw(ctx, "DeviceStateUpdate upon disable", log.Fields{"ConnectStatus": voltha.ConnectStatus_REACHABLE,
+			logger.Debugw(ctx, "DeviceStateUpdate upon disable", log.Fields{
 				"OperStatus": voltha.OperStatus_UNKNOWN, "device-id": dh.DeviceID})
+			// disable device should have no impact on ConnStatus
 			if err := dh.updateDeviceStateInCore(ctx, &ca.DeviceStateFilter{
 				DeviceId:   dh.DeviceID,
-				ConnStatus: voltha.ConnectStatus_REACHABLE,
+				ConnStatus: connectStatusINVALID, //use some dummy value to prevent modification of the ConnStatus
 				OperStatus: voltha.OperStatus_UNKNOWN,
 			}); err != nil {
 				//TODO with VOL-3045/VOL-3046: return the error and stop further processing
@@ -1101,11 +1109,12 @@
 	//transfer the possibly modified logical uni port state
 	dh.DisableUniPortStateUpdate(ctx)
 
-	logger.Debugw(ctx, "call DeviceStateUpdate upon reboot", log.Fields{"ConnectStatus": voltha.ConnectStatus_REACHABLE,
+	logger.Debugw(ctx, "call DeviceStateUpdate upon reboot", log.Fields{
 		"OperStatus": voltha.OperStatus_DISCOVERED, "device-id": dh.DeviceID})
+	// do not set the ConnStatus here as it may conflict with the parallel setting from ONU down indication (updateInterface())
 	if err := dh.updateDeviceStateInCore(ctx, &ca.DeviceStateFilter{
 		DeviceId:   dh.DeviceID,
-		ConnStatus: voltha.ConnectStatus_REACHABLE,
+		ConnStatus: connectStatusINVALID, //use some dummy value to prevent modification of the ConnStatus
 		OperStatus: voltha.OperStatus_DISCOVERED,
 	}); err != nil {
 		//TODO with VOL-3045/VOL-3046: return the error and stop further processing
@@ -1986,8 +1995,7 @@
 		_ = dh.deleteDevicePersistencyData(ctx) //ignore possible errors here and continue, hope is that data is synchronized with new ONU-Up
 
 		//deviceEntry stop without omciCC reset here, regarding the OMCI_CC still valid for this ONU
-		// - in contrary to disableDevice - compare with processUniDisableStateDoneEvent
-		//stop the device entry which resets the attached omciCC
+		//stop the device entry to allow for all system event transfers again
 		pDevEntry := dh.GetOnuDeviceEntry(ctx, false)
 		if pDevEntry == nil {
 			logger.Errorw(ctx, "No valid OnuDevice -aborting", log.Fields{"device-id": dh.DeviceID})
@@ -2294,12 +2302,13 @@
 }
 
 func (dh *deviceHandler) processUniDisableStateDoneEvent(ctx context.Context, devEvent cmn.OnuDeviceEvent) {
-	logger.Debugw(ctx, "DeviceStateUpdate upon disable", log.Fields{"ConnectStatus": voltha.ConnectStatus_REACHABLE,
+	logger.Debugw(ctx, "DeviceStateUpdate upon disable", log.Fields{
 		"OperStatus": voltha.OperStatus_UNKNOWN, "device-id": dh.DeviceID})
 
+	// disable device should have no impact on ConnStatus
 	if err := dh.updateDeviceStateInCore(ctx, &ca.DeviceStateFilter{
 		DeviceId:   dh.DeviceID,
-		ConnStatus: voltha.ConnectStatus_REACHABLE,
+		ConnStatus: connectStatusINVALID, //use some dummy value to prevent modification of the ConnStatus
 		OperStatus: voltha.OperStatus_UNKNOWN,
 	}); err != nil {
 		//TODO with VOL-3045/VOL-3046: return the error and stop further processing
@@ -2366,6 +2375,7 @@
 		"OperStatus": voltha.OperStatus_FAILED, "device-id": dh.DeviceID})
 	if err := dh.updateDeviceStateInCore(ctx, &ca.DeviceStateFilter{
 		DeviceId:   dh.DeviceID,
+		ConnStatus: connectStatusINVALID, //use some dummy value to prevent modification of the ConnStatus
 		OperStatus: voltha.OperStatus_FAILED,
 	}); err != nil {
 		logger.Errorw(ctx, "error-updating-device-state", log.Fields{"device-id": dh.DeviceID, "error": err})
