diff --git a/VERSION b/VERSION
index 404df31..562510f 100755
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.12.22
+2.12.23
diff --git a/internal/pkg/avcfg/omci_ani_config.go b/internal/pkg/avcfg/omci_ani_config.go
index e438a71..acf5e08 100755
--- a/internal/pkg/avcfg/omci_ani_config.go
+++ b/internal/pkg/avcfg/omci_ani_config.go
@@ -42,6 +42,7 @@
 const (
 	// events of config PON ANI port FSM
 	aniEvStart             = "aniEvStart"
+	aniEvPrepareConfig     = "aniEvPrepareConfig"
 	aniEvStartConfig       = "aniEvStartConfig"
 	aniEvRxDot1pmapCResp   = "aniEvRxDot1pmapCResp"
 	aniEvRxMbpcdResp       = "aniEvRxMbpcdResp"
@@ -71,6 +72,7 @@
 	// states of config PON ANI port FSM
 	aniStDisabled            = "aniStDisabled"
 	aniStStarting            = "aniStStarting"
+	aniStPrepareConfig       = "aniStPrepareConfig"
 	aniStCreatingDot1PMapper = "aniStCreatingDot1PMapper"
 	aniStCreatingMBPCD       = "aniStCreatingMBPCD"
 	aniStSettingTconts       = "aniStSettingTconts"
@@ -195,7 +197,8 @@
 			{Name: aniEvStart, Src: []string{aniStDisabled}, Dst: aniStStarting},
 
 			//Note: .1p-Mapper and MBPCD might also have multi instances (per T-Cont) - by now only one 1 T-Cont considered!
-			{Name: aniEvStartConfig, Src: []string{aniStStarting}, Dst: aniStCreatingDot1PMapper},
+			{Name: aniEvPrepareConfig, Src: []string{aniStStarting}, Dst: aniStPrepareConfig},
+			{Name: aniEvStartConfig, Src: []string{aniStPrepareConfig}, Dst: aniStCreatingDot1PMapper},
 			{Name: aniEvRxDot1pmapCResp, Src: []string{aniStCreatingDot1PMapper}, Dst: aniStCreatingMBPCD},
 			{Name: aniEvRxMbpcdResp, Src: []string{aniStCreatingMBPCD}, Dst: aniStSettingTconts},
 			{Name: aniEvRxTcontsResp, Src: []string{aniStSettingTconts}, Dst: aniStCreatingGemNCTPs},
@@ -229,18 +232,19 @@
 				aniStCreatingGemNCTPs, aniStCreatingGemIWs, aniStSettingPQs}, Dst: aniStStarting},
 
 			// exceptional treatment for all states except aniStResetting
-			{Name: aniEvReset, Src: []string{aniStStarting, aniStCreatingDot1PMapper, aniStCreatingMBPCD,
+			{Name: aniEvReset, Src: []string{aniStStarting, aniStPrepareConfig, aniStCreatingDot1PMapper, aniStCreatingMBPCD,
 				aniStSettingTconts, aniStCreatingGemNCTPs, aniStCreatingGemIWs, aniStSettingPQs, aniStSettingDot1PMapper,
 				aniStConfigDone, aniStRemovingGemIW, aniStWaitingFlowRem, aniStRemovingGemNCTP, aniStRemovingTD,
 				aniStResetTcont, aniStRemDot1PMapper, aniStRemAniBPCD, aniStRemoveDone}, Dst: aniStResetting},
 			// the only way to get to resource-cleared disabled state again is via "resseting"
 			{Name: aniEvRestart, Src: []string{aniStResetting}, Dst: aniStDisabled},
-			{Name: aniEvSkipOmciConfig, Src: []string{aniStStarting}, Dst: aniStConfigDone},
+			{Name: aniEvSkipOmciConfig, Src: []string{aniStStarting, aniStPrepareConfig}, Dst: aniStConfigDone},
 		},
 
 		fsm.Callbacks{
 			"enter_state":                         func(e *fsm.Event) { instFsm.PAdaptFsm.LogFsmStateChange(ctx, e) },
 			("enter_" + aniStStarting):            func(e *fsm.Event) { instFsm.enterConfigStartingState(ctx, e) },
+			("enter_" + aniStPrepareConfig):       func(e *fsm.Event) { instFsm.prepareAndEnterConfigState(ctx, e) },
 			("enter_" + aniStCreatingDot1PMapper): func(e *fsm.Event) { instFsm.enterCreatingDot1PMapper(ctx, e) },
 			("enter_" + aniStCreatingMBPCD):       func(e *fsm.Event) { instFsm.enterCreatingMBPCD(ctx, e) },
 			("enter_" + aniStSettingTconts):       func(e *fsm.Event) { instFsm.enterSettingTconts(ctx, e) },
@@ -309,11 +313,9 @@
 	PAdaptFsm := oFsm.PAdaptFsm
 	if PAdaptFsm != nil {
 		// obviously calling some FSM event here directly does not work - so trying to decouple it ...
-		go func(aPAFsm *cmn.AdapterFsm) {
-			if aPAFsm.PFsm != nil {
-				_ = oFsm.PAdaptFsm.PFsm.Event(aniEvReset)
-			}
-		}(PAdaptFsm)
+		if PAdaptFsm.PFsm != nil {
+			_ = PAdaptFsm.PFsm.Event(aniEvReset)
+		}
 	}
 
 	// possible access conflicts on internal data by next needed data clearance
@@ -325,9 +327,11 @@
 	oFsm.pUniTechProf.clearAniSideConfig(ctx, oFsm.pOnuUniPort.UniID, oFsm.techProfileID)
 }
 
-// nolint: gocyclo
-// TODO:visit here for refactoring for gocyclo
-func (oFsm *UniPonAniConfigFsm) prepareAndEnterConfigState(ctx context.Context, aPAFsm *cmn.AdapterFsm) {
+//nolint:gocyclo
+func (oFsm *UniPonAniConfigFsm) prepareAndEnterConfigState(ctx context.Context, _ *fsm.Event) {
+	logger.Info(ctx, "UniPonAniConfigFsm prepareAndEnterConfigState start", log.Fields{
+		"device-id": oFsm.deviceID})
+	aPAFsm := oFsm.PAdaptFsm
 	if aPAFsm != nil && aPAFsm.PFsm != nil {
 		var err error
 		oFsm.mapperSP0ID, err = cmn.GenerateIeeMaperServiceProfileEID(uint16(oFsm.pOnuUniPort.MacBpNo), uint16(oFsm.techProfileID))
@@ -480,11 +484,29 @@
 			}
 		}
 		if !oFsm.pDeviceHandler.IsSkipOnuConfigReconciling() {
-			_ = aPAFsm.PFsm.Event(aniEvStartConfig)
+			//let the state machine run forward from here directly
+			if oFsm.PAdaptFsm != nil {
+				go func(aPAFsm *cmn.AdapterFsm) {
+					if aPAFsm != nil && aPAFsm.PFsm != nil {
+						_ = aPAFsm.PFsm.Event(aniEvStartConfig)
+					}
+				}(oFsm.PAdaptFsm)
+
+			}
 		} else {
 			logger.Debugw(ctx, "reconciling - skip omci-config of ANI side ", log.Fields{"device-id": oFsm.deviceID})
-			_ = aPAFsm.PFsm.Event(aniEvSkipOmciConfig)
+			//let the state machine run forward from here directly
+			if oFsm.PAdaptFsm != nil {
+				go func(aPAFsm *cmn.AdapterFsm) {
+					if aPAFsm != nil && aPAFsm.PFsm != nil {
+						_ = aPAFsm.PFsm.Event(aniEvSkipOmciConfig)
+					}
+				}(oFsm.PAdaptFsm)
+
+			}
 		}
+		logger.Info(ctx, "UniPonAniConfigFsm prepareAndEnterConfigState end", log.Fields{
+			"device-id": oFsm.deviceID})
 	}
 }
 
@@ -518,7 +540,11 @@
 	pConfigAniStateAFsm := oFsm.PAdaptFsm
 	if pConfigAniStateAFsm != nil {
 		// obviously calling some FSM event here directly does not work - so trying to decouple it ...
-		go oFsm.prepareAndEnterConfigState(ctx, pConfigAniStateAFsm)
+		go func(aPAFsm *cmn.AdapterFsm) {
+			if aPAFsm != nil && aPAFsm.PFsm != nil {
+				_ = aPAFsm.PFsm.Event(aniEvPrepareConfig)
+			}
+		}(pConfigAniStateAFsm)
 
 	}
 }
diff --git a/internal/pkg/devdb/onu_device_db.go b/internal/pkg/devdb/onu_device_db.go
index f8e99cb..d299789 100755
--- a/internal/pkg/devdb/onu_device_db.go
+++ b/internal/pkg/devdb/onu_device_db.go
@@ -145,12 +145,13 @@
 // GetMe returns an ME instance from internal ONU DB
 func (OnuDeviceDB *OnuDeviceDB) GetMe(meClassID me.ClassID, meEntityID uint16) me.AttributeValueMap {
 	OnuDeviceDB.CommonMeDb.MeDbLock.RLock()
-	defer OnuDeviceDB.CommonMeDb.MeDbLock.RUnlock()
 
 	// Check in the common MeDb
 	if meAttributes, present := OnuDeviceDB.CommonMeDb.MeDb[meClassID][meEntityID]; present {
+		OnuDeviceDB.CommonMeDb.MeDbLock.RUnlock()
 		return meAttributes
 	}
+	OnuDeviceDB.CommonMeDb.MeDbLock.RUnlock()
 
 	OnuDeviceDB.OnuSpecificMeDbLock.RLock()
 	defer OnuDeviceDB.OnuSpecificMeDbLock.RUnlock()
@@ -298,9 +299,10 @@
 // DeleteMe deletes an ME instance from internal ONU DB
 func (OnuDeviceDB *OnuDeviceDB) DeleteMe(meClassID me.ClassID, meEntityID uint16) {
 	OnuDeviceDB.CommonMeDb.MeDbLock.Lock()
-	defer OnuDeviceDB.CommonMeDb.MeDbLock.Unlock()
+
 	meDb := OnuDeviceDB.CommonMeDb.MeDb
 	delete(meDb[meClassID], meEntityID)
+	OnuDeviceDB.CommonMeDb.MeDbLock.Unlock()
 
 	OnuDeviceDB.OnuSpecificMeDbLock.Lock()
 	defer OnuDeviceDB.OnuSpecificMeDbLock.Unlock()
diff --git a/internal/pkg/mib/mib_sync.go b/internal/pkg/mib/mib_sync.go
index 1481c61..036a694 100755
--- a/internal/pkg/mib/mib_sync.go
+++ b/internal/pkg/mib/mib_sync.go
@@ -818,7 +818,6 @@
 		oo.lastTxParamStruct.lastTxMessageType = omci.MibUploadNextRequestType
 		oo.mutexLastTxParamStruct.Unlock()
 	} else {
-		oo.pOnuDB.LogMeDb(ctx)
 		err := oo.createAndPersistMibTemplate(ctx)
 		if err != nil {
 			logger.Errorw(ctx, "MibSync - MibTemplate - Failed to create and persist the mib template", log.Fields{"error": err, "device-id": oo.deviceID})
