diff --git a/VERSION b/VERSION
index b6e9f71..181df10 100755
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.0.3-dev244
+2.0.3-dev245
diff --git a/internal/pkg/common/defines.go b/internal/pkg/common/defines.go
index 8f47cb0..e0e44db 100755
--- a/internal/pkg/common/defines.go
+++ b/internal/pkg/common/defines.go
@@ -332,3 +332,8 @@
 	OnugSerialNumberLen  = 8
 	OmciMacAddressLen    = 6
 )
+
+///////////////////////////////////////////////////////////
+
+// CBasePathOnuKVStore - kv store path of ONU specific data
+const CBasePathOnuKVStore = "%s/openonu"
diff --git a/internal/pkg/core/openonu.go b/internal/pkg/core/openonu.go
index 83ed30f..230b7c5 100755
--- a/internal/pkg/core/openonu.go
+++ b/internal/pkg/core/openonu.go
@@ -24,6 +24,7 @@
 	"sync"
 	"time"
 
+	"github.com/opencord/voltha-lib-go/v7/pkg/db"
 	vgrpc "github.com/opencord/voltha-lib-go/v7/pkg/grpc"
 
 	conf "github.com/opencord/voltha-lib-go/v7/pkg/config"
@@ -44,10 +45,13 @@
 
 	cmn "github.com/opencord/voltha-openonu-adapter-go/internal/pkg/common"
 	"github.com/opencord/voltha-openonu-adapter-go/internal/pkg/config"
+	pmmgr "github.com/opencord/voltha-openonu-adapter-go/internal/pkg/pmmgr"
 	"github.com/opencord/voltha-openonu-adapter-go/internal/pkg/swupg"
 	uniprt "github.com/opencord/voltha-openonu-adapter-go/internal/pkg/uniprt"
 )
 
+var onuKvStorePathPrefixes = []string{cmn.CBasePathOnuKVStore, pmmgr.CPmKvStorePrefixBase}
+
 //OpenONUAC structure holds the ONU core information
 type OpenONUAC struct {
 	deviceHandlers              map[string]*deviceHandler
@@ -314,27 +318,23 @@
 	if handler := oo.getDeviceHandler(ctx, device.Id, false); handler != nil {
 		var errorsList []error
 
+		handler.StopReconciling(ctx, false)
+
 		handler.mutexDeletionInProgressFlag.Lock()
 		handler.deletionInProgress = true
 		handler.mutexDeletionInProgressFlag.Unlock()
 
+		if err := handler.resetFsms(ctx, true); err != nil {
+			errorsList = append(errorsList, err)
+		}
 		if err := handler.deleteDevicePersistencyData(ctx); err != nil {
 			errorsList = append(errorsList, err)
 		}
-
-		// Stop PM, Alarm and Self Test event handler routines
-		if handler.GetCollectorIsRunning() {
-			handler.stopCollector <- true
-			logger.Debugw(ctx, "sent stop signal to metric collector routine", log.Fields{"device-id": device.Id})
-
-		}
-		if handler.GetAlarmManagerIsRunning(ctx) {
-			handler.stopAlarmManager <- true
-			logger.Debugw(ctx, "sent stop signal to alarm manager", log.Fields{"device-id": device.Id})
-		}
-		if handler.pSelfTestHdlr.GetSelfTestHandlerIsRunning() {
-			handler.pSelfTestHdlr.StopSelfTestModule <- true
-			logger.Debugw(ctx, "sent stop signal to self test handler module", log.Fields{"device-id": device.Id})
+		// Clear PM data on the KV store
+		if handler.pOnuMetricsMgr != nil {
+			if err := handler.pOnuMetricsMgr.ClearAllPmData(ctx); err != nil {
+				errorsList = append(errorsList, err)
+			}
 		}
 		for _, uni := range handler.uniEntityMap {
 			if handler.GetFlowMonitoringIsRunning(uni.UniID) {
@@ -342,24 +342,39 @@
 				logger.Debugw(ctx, "sent stop signal to self flow monitoring routine", log.Fields{"device-id": device.Id})
 			}
 		}
-
-		// Clear PM data on the KV store
-		if handler.pOnuMetricsMgr != nil {
-			if err := handler.pOnuMetricsMgr.ClearAllPmData(ctx); err != nil {
-				errorsList = append(errorsList, err)
-			}
-		}
-
 		//don't leave any garbage - even in error case
 		oo.deleteDeviceHandlerToMap(handler)
+
 		if len(errorsList) > 0 {
 			logger.Errorw(ctx, "one-or-more-error-during-device-delete", log.Fields{"device-id": device.Id})
 			return nil, fmt.Errorf("one-or-more-error-during-device-delete, errors:%v", errorsList)
 		}
 		return &empty.Empty{}, nil
 	}
-	logger.Warnw(ctx, "no handler found for device-deletion", log.Fields{"device-id": device.Id})
-	return nil, fmt.Errorf(fmt.Sprintf("handler-not-found-%s", device.Id))
+	logger.Infow(ctx, "no handler found for device-deletion - trying to delete remaining data in the kv-store ", log.Fields{"device-id": device.Id})
+
+	// delete ONU specific avcfg and pm data in kv store
+	for i := range onuKvStorePathPrefixes {
+		baseKvStorePath := fmt.Sprintf(onuKvStorePathPrefixes[i], oo.cm.Backend.PathPrefix)
+		logger.Debugw(ctx, "SetKVStoreBackend", log.Fields{"IpTarget": oo.KVStoreAddress, "BasePathKvStore": baseKvStorePath})
+		kvbackend := &db.Backend{
+			Client:     oo.kvClient,
+			StoreType:  oo.KVStoreType,
+			Address:    oo.KVStoreAddress,
+			Timeout:    oo.KVStoreTimeout,
+			PathPrefix: baseKvStorePath}
+
+		if kvbackend == nil {
+			logger.Errorw(ctx, "Can't access onuKVStore - no backend connection to service", log.Fields{"service": baseKvStorePath, "device-id": device.Id})
+			return nil, fmt.Errorf("can-not-access-onuKVStore-no-backend-connection-to-service")
+		}
+		err := kvbackend.Delete(ctx, device.Id)
+		if err != nil {
+			logger.Errorw(ctx, "unable to delete in KVstore", log.Fields{"service": baseKvStorePath, "device-id": device.Id, "err": err})
+			return nil, fmt.Errorf("unable-to-delete-in-KVstore")
+		}
+	}
+	return &empty.Empty{}, nil
 }
 
 //UpdateFlowsIncrementally updates (add/remove) the flows on a given device
diff --git a/internal/pkg/mib/onu_device_entry.go b/internal/pkg/mib/onu_device_entry.go
index c35377f..61e852d 100755
--- a/internal/pkg/mib/onu_device_entry.go
+++ b/internal/pkg/mib/onu_device_entry.go
@@ -116,7 +116,6 @@
 	// NOTE that this hardcoded to service/voltha as the MIB template is shared across stacks
 	cBasePathMibTemplateKvStore = "service/voltha/omci_mibs/go_templates"
 	cSuffixMibTemplateKvStore   = "%s/%s/%s"
-	cBasePathOnuKVStore         = "%s/openonu"
 )
 
 const cEmptyMacAddrString = "000000000000"
@@ -394,7 +393,7 @@
 	}
 
 	onuDeviceEntry.onuKVStorePath = onuDeviceEntry.deviceID
-	baseKvStorePath := fmt.Sprintf(cBasePathOnuKVStore, dh.GetBackendPathPrefix())
+	baseKvStorePath := fmt.Sprintf(cmn.CBasePathOnuKVStore, dh.GetBackendPathPrefix())
 	onuDeviceEntry.onuKVStore = onuDeviceEntry.baseDeviceHandler.SetBackend(ctx, baseKvStorePath)
 	if onuDeviceEntry.onuKVStore == nil {
 		logger.Errorw(ctx, "Can't access onuKVStore - no backend connection to service",
diff --git a/internal/pkg/pmmgr/onu_metrics_manager.go b/internal/pkg/pmmgr/onu_metrics_manager.go
index a71beed..f78e52b 100755
--- a/internal/pkg/pmmgr/onu_metrics_manager.go
+++ b/internal/pkg/pmmgr/onu_metrics_manager.go
@@ -255,9 +255,12 @@
 	GemPortHistoryFrequency = L2PmCollectionInterval
 )
 
+// CPmKvStorePrefixBase - kv store base path of ONU specific PM data
+const CPmKvStorePrefixBase = cmn.CBasePathOnuKVStore + "/pm-data" // <some-base-path>/openonu/pm-data
+
 // KV Store related constants
 const (
-	cPmKvStorePrefix    = "%s/openonu/pm-data/%s" // <some-base-path>/openonu/pm-data/<onu-device-id>
+	cPmKvStorePrefix    = CPmKvStorePrefixBase + "/%s" // <some-base-path>/openonu/pm-data/<onu-device-id>
 	cPmAdd              = "add"
 	cPmAdded            = "added"
 	cPmRemove           = "remove"
