diff --git a/VERSION b/VERSION
index 95d3ab1..962fc0d 100755
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.12.10-dev5
\ No newline at end of file
+2.12.10-dev6
diff --git a/internal/pkg/avcfg/omci_ani_config.go b/internal/pkg/avcfg/omci_ani_config.go
index e141efa..bbcc41a 100755
--- a/internal/pkg/avcfg/omci_ani_config.go
+++ b/internal/pkg/avcfg/omci_ani_config.go
@@ -349,10 +349,13 @@
 			logger.Errorw(ctx, "No valid OnuDevice - aborting", log.Fields{"device-id": oFsm.deviceID})
 			return
 		}
+		// Access critical state with lock
+		oFsm.pUniTechProf.mutexTPState.RLock()
 		tcontInstID, tcontAlreadyExist, err := oFsm.pOnuDeviceEntry.AllocateFreeTcont(ctx, oFsm.pUniTechProf.mapPonAniConfig[oFsm.uniTpKey].tcontParams.allocID)
 		if err != nil {
 			logger.Errorw(ctx, "No TCont instances found", log.Fields{"device-id": oFsm.deviceID, "err": err})
 			//reset the state machine to enable usage on subsequent requests
+			oFsm.pUniTechProf.mutexTPState.RUnlock()
 			_ = aPAFsm.PFsm.Event(aniEvReset)
 			return
 		}
@@ -363,8 +366,6 @@
 			"tcontAlreadyExist": tcontAlreadyExist,
 			"device-id":         oFsm.deviceID})
 
-		// Access critical state with lock
-		oFsm.pUniTechProf.mutexTPState.RLock()
 		oFsm.alloc0ID = oFsm.pUniTechProf.mapPonAniConfig[oFsm.uniTpKey].tcontParams.allocID
 		mapGemPortParams := oFsm.pUniTechProf.mapPonAniConfig[oFsm.uniTpKey].mapGemPortParams
 		oFsm.pUniTechProf.mutexTPState.RUnlock()
@@ -1049,8 +1050,16 @@
 func (oFsm *UniPonAniConfigFsm) enterRemoving1pMapper(ctx context.Context, e *fsm.Event) {
 	logger.Info(ctx, "UniPonAniConfigFsm - start deleting the .1pMapper", log.Fields{
 		"device-id": oFsm.deviceID, "uni-id": oFsm.pOnuUniPort.UniID})
-	mapGemPortParams := oFsm.pUniTechProf.mapPonAniConfig[oFsm.uniTpKey].mapGemPortParams
+	var mapGemPortParams map[uint16]*gemPortParamStruct
 	unicastGemCount := 0
+	oFsm.pUniTechProf.mutexTPState.RLock()
+	if _, ok := oFsm.pUniTechProf.mapPonAniConfig[oFsm.uniTpKey]; ok {
+		mapGemPortParams = oFsm.pUniTechProf.mapPonAniConfig[oFsm.uniTpKey].mapGemPortParams
+	} else {
+		logger.Warnw(ctx, "GemPortParams not found in mapPonAniConfig", log.Fields{"device-id": oFsm.deviceID,
+			"uni-id": oFsm.pOnuUniPort.UniID})
+	}
+	oFsm.pUniTechProf.mutexTPState.RUnlock()
 	for _, gemEntry := range mapGemPortParams {
 		if !gemEntry.isMulticast {
 			unicastGemCount++
@@ -1201,29 +1210,36 @@
 		// case <-ctx.Done():
 		// 	logger.Info("MibSync Msg", log.Fields{"Message handling canceled via context for device-id": oFsm.deviceID})
 		// 	break loop
-		message, ok := <-oFsm.PAdaptFsm.CommChan
-		if !ok {
-			logger.Warn(ctx, "UniPonAniConfigFsm Rx Msg - could not read from channel", log.Fields{"device-id": oFsm.deviceID})
-			// but then we have to ensure a restart of the FSM as well - as exceptional procedure
-			_ = oFsm.PAdaptFsm.PFsm.Event(aniEvReset)
-			break loop
-		}
-		logger.Debugw(ctx, "UniPonAniConfigFsm Rx Msg", log.Fields{"device-id": oFsm.deviceID})
-
-		switch message.Type {
-		case cmn.TestMsg:
-			msg, _ := message.Data.(cmn.TestMessage)
-			if msg.TestMessageVal == cmn.AbortMessageProcessing {
-				logger.Infow(ctx, "UniPonAniConfigFsm abort ProcessMsg", log.Fields{"for device-id": oFsm.deviceID})
+		select {
+		case message, ok := <-oFsm.PAdaptFsm.CommChan:
+			if !ok {
+				logger.Warn(ctx, "UniPonAniConfigFsm Rx Msg - could not read from channel", log.Fields{"device-id": oFsm.deviceID})
+				// but then we have to ensure a restart of the FSM as well - as exceptional procedure
+				_ = oFsm.PAdaptFsm.PFsm.Event(aniEvReset)
 				break loop
 			}
-			logger.Warnw(ctx, "UniPonAniConfigFsm unknown TestMessage", log.Fields{"device-id": oFsm.deviceID, "MessageVal": msg.TestMessageVal})
-		case cmn.OMCI:
-			msg, _ := message.Data.(cmn.OmciMessage)
-			oFsm.handleOmciAniConfigMessage(ctx, msg)
-		default:
-			logger.Warn(ctx, "UniPonAniConfigFsm Rx unknown message", log.Fields{"device-id": oFsm.deviceID,
-				"message.Type": message.Type})
+			logger.Debugw(ctx, "UniPonAniConfigFsm Rx Msg", log.Fields{"device-id": oFsm.deviceID})
+
+			switch message.Type {
+			case cmn.TestMsg:
+				msg, _ := message.Data.(cmn.TestMessage)
+				if msg.TestMessageVal == cmn.AbortMessageProcessing {
+					logger.Infow(ctx, "UniPonAniConfigFsm abort ProcessMsg", log.Fields{"for device-id": oFsm.deviceID})
+					break loop
+				}
+				logger.Warnw(ctx, "UniPonAniConfigFsm unknown TestMessage", log.Fields{"device-id": oFsm.deviceID, "MessageVal": msg.TestMessageVal})
+			case cmn.OMCI:
+				msg, _ := message.Data.(cmn.OmciMessage)
+				oFsm.handleOmciAniConfigMessage(ctx, msg)
+			default:
+				logger.Warn(ctx, "UniPonAniConfigFsm Rx unknown message", log.Fields{"device-id": oFsm.deviceID,
+					"message.Type": message.Type})
+			}
+		case _, ok := <-oFsm.pDeviceHandler.GetDeviceDeleteCommChan(ctx):
+			if !ok {
+				logger.Warnw(ctx, "Device deletion channel closed", log.Fields{"device-id": oFsm.deviceID})
+			}
+			break loop
 		}
 
 	}
@@ -1302,6 +1318,7 @@
 		case "TCont":
 			//If this is for TCONT creation(requestEventOffset=0) and this is the first allocation of TCONT(so noone else is using the same TCONT)
 			//We should revert DB
+			oFsm.pUniTechProf.mutexTPState.RLock()
 			if oFsm.requestEventOffset == 0 && !oFsm.tcontSetBefore && oFsm.pUniTechProf.mapPonAniConfig[oFsm.uniTpKey] != nil {
 				logger.Debugw(ctx, "UniPonAniConfigFsm TCONT creation failed on device. Freeing alloc id", log.Fields{"device-id": oFsm.deviceID,
 					"alloc-id": oFsm.pUniTechProf.mapPonAniConfig[oFsm.uniTpKey].tcontParams.allocID, "uni-tp": oFsm.uniTpKey})
@@ -1312,6 +1329,7 @@
 						log.Fields{"ME name": oFsm.pLastTxMeInstance.GetName(), "device-id": oFsm.deviceID})
 				}
 			}
+			oFsm.pUniTechProf.mutexTPState.RUnlock()
 		default:
 			logger.Warnw(ctx, "Unsupported ME name received with error!",
 				log.Fields{"ME name": oFsm.pLastTxMeInstance.GetName(), "result": msgObj.Result, "device-id": oFsm.deviceID})
diff --git a/internal/pkg/avcfg/onu_uni_tp.go b/internal/pkg/avcfg/onu_uni_tp.go
index 19f8453..4f51b1a 100755
--- a/internal/pkg/avcfg/onu_uni_tp.go
+++ b/internal/pkg/avcfg/onu_uni_tp.go
@@ -773,6 +773,7 @@
 func (onuTP *OnuUniTechProf) IsTechProfileConfigCleared(ctx context.Context, uniID uint8, tpID uint8) bool {
 	uniTPKey := uniTP{uniID: uniID, tpID: tpID}
 	logger.Debugw(ctx, "IsTechProfileConfigCleared", log.Fields{"device-id": onuTP.deviceID})
+	onuTP.mutexTPState.RLock()
 	if onuTP.mapPonAniConfig[uniTPKey] != nil {
 		mapGemPortParams := onuTP.mapPonAniConfig[uniTPKey].mapGemPortParams
 		unicastGemCount := 0
@@ -782,6 +783,7 @@
 			}
 		}
 		if unicastGemCount == 0 || onuTP.mapPonAniConfig[uniTPKey].tcontParams.allocID == 0 {
+			onuTP.mutexTPState.RUnlock()
 			logger.Debugw(ctx, "clearing-ani-side-config", log.Fields{
 				"device-id": onuTP.deviceID, "uniTpKey": uniTPKey})
 			onuTP.clearAniSideConfig(ctx, uniID, tpID)
@@ -792,6 +794,7 @@
 			return true
 		}
 	}
+	onuTP.mutexTPState.RUnlock()
 	return false
 }
 
