diff --git a/internal/pkg/avcfg/onu_uni_tp.go b/internal/pkg/avcfg/onu_uni_tp.go
index 442d0a2..c37e00c 100755
--- a/internal/pkg/avcfg/onu_uni_tp.go
+++ b/internal/pkg/avcfg/onu_uni_tp.go
@@ -619,11 +619,7 @@
 				//if the FSM is not valid, also TP related remove data should not be valid:
 				// remove GemPort from config DB
 				//ensure write protection for access to mapPonAniConfig
-				onuTP.mutexTPState.Lock()
-				delete(onuTP.mapPonAniConfig[uniTPKey].mapGemPortParams, onuTP.mapRemoveGemEntry[uniTPKey].removeGemID)
-				// remove the removeEntry
-				delete(onuTP.mapRemoveGemEntry, uniTPKey)
-				onuTP.mutexTPState.Unlock()
+				onuTP.deleteGemPortParams(ctx, uniTPKey)
 				return
 			}
 			if _, ok := onuTP.PAniConfigFsm[uniTPKey]; !ok {
@@ -636,22 +632,14 @@
 				//if the FSM is not valid, also TP related remove data should not be valid:
 				// remove GemPort from config DB
 				//ensure write protection for access to mapPonAniConfig
-				onuTP.mutexTPState.Lock()
-				delete(onuTP.mapPonAniConfig[uniTPKey].mapGemPortParams, onuTP.mapRemoveGemEntry[uniTPKey].removeGemID)
-				// remove the removeEntry
-				delete(onuTP.mapRemoveGemEntry, uniTPKey)
-				onuTP.mutexTPState.Unlock()
+				onuTP.deleteGemPortParams(ctx, uniTPKey)
 				return
 			}
 			if onuTP.getProfileResetting(uniTPKey) {
 				logger.Debugw(ctx, "aborting GemRemoval on FSM, reset requested in parallel", log.Fields{
 					"device-id": onuTP.deviceID, "uni-id": aUniID, "tp-id": aTpID})
 				//ensure write protection for access to mapPonAniConfig
-				onuTP.mutexTPState.Lock()
-				delete(onuTP.mapPonAniConfig[uniTPKey].mapGemPortParams, onuTP.mapRemoveGemEntry[uniTPKey].removeGemID)
-				// remove the removeEntry
-				delete(onuTP.mapRemoveGemEntry, uniTPKey)
-				onuTP.mutexTPState.Unlock()
+				onuTP.deleteGemPortParams(ctx, uniTPKey)
 				return
 			}
 			// initiate OMCI GemPort related removal
@@ -691,11 +679,7 @@
 		//ensure write protection for access to mapPonAniConfig
 		logger.Debugw(ctx, "UniPonAniConfigFsm removing gem from config data and clearing ani FSM", log.Fields{
 			"device-id": onuTP.deviceID, "gem-id": onuTP.mapRemoveGemEntry[uniTPKey].removeGemID, "uniTPKey": uniTPKey})
-		onuTP.mutexTPState.Lock()
-		delete(onuTP.mapPonAniConfig[uniTPKey].mapGemPortParams, onuTP.mapRemoveGemEntry[uniTPKey].removeGemID)
-		// remove the removeEntry
-		delete(onuTP.mapRemoveGemEntry, uniTPKey)
-		onuTP.mutexTPState.Unlock()
+		onuTP.deleteGemPortParams(ctx, uniTPKey)
 	} else { //if CResourceTcont == aResource {
 		logger.Debugw(ctx, "reset TCont with AllocId", log.Fields{
 			"device-id": onuTP.deviceID, "uni-id": aUniID, "path": aPathString, "allocId": aEntryID})
@@ -854,6 +838,21 @@
 	return onuTP.runAniConfigFsm(ctx, aniEvStart, aProcessingStep, aUniID, aTpID)
 }
 
+// deleteGemPortParams removes GemPort from config DB
+func (onuTP *OnuUniTechProf) deleteGemPortParams(ctx context.Context, uniTPKey uniTP) {
+	//ensure write protection for access to mapPonAniConfig
+	onuTP.mutexTPState.Lock()
+	if _, ok := onuTP.mapPonAniConfig[uniTPKey]; ok {
+		delete(onuTP.mapPonAniConfig[uniTPKey].mapGemPortParams, onuTP.mapRemoveGemEntry[uniTPKey].removeGemID)
+	} else {
+		logger.Warnw(ctx, "GemPort removal - GemPort not found in mapPonAniConfig",
+			log.Fields{"device-id": onuTP.deviceID, "uni-id": uniTPKey.uniID, "tp-id": uniTPKey.tpID})
+	}
+	// remove from the removGemeEntry
+	delete(onuTP.mapRemoveGemEntry, uniTPKey)
+	onuTP.mutexTPState.Unlock()
+}
+
 // runAniConfigFsm starts the AniConfig FSM to transfer the OMCI related commands for  ANI side configuration
 func (onuTP *OnuUniTechProf) runAniConfigFsm(ctx context.Context, aEvent string, aProcessingStep uint8, aUniID uint8, aTpID uint8) error {
 	/*  Uni related ANI config procedure -
