diff --git a/VERSION b/VERSION
index 5deb43e..549faf4 100755
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.2.0-dev267
+2.2.0-dev268
diff --git a/internal/pkg/core/openonu.go b/internal/pkg/core/openonu.go
index 44bfae0..c5edad8 100755
--- a/internal/pkg/core/openonu.go
+++ b/internal/pkg/core/openonu.go
@@ -1084,28 +1084,43 @@
 
 func (oo *OpenONUAC) forceDeleteDeviceKvData(ctx context.Context, aDeviceID string) error {
 	logger.Debugw(ctx, "force deletion of ONU device specific data in kv store", log.Fields{"device-id": aDeviceID})
-
+	var errorsList []error
+	// delete onu persitent data
 	for i := range onuKvStorePathPrefixes {
 		baseKvStorePath := fmt.Sprintf(onuKvStorePathPrefixes[i], oo.cm.Backend.PathPrefix)
 		logger.Debugw(ctx, "SetKVStoreBackend", log.Fields{"IpTarget": oo.KVStoreAddress, "BasePathKvStore": baseKvStorePath,
 			"device-id": aDeviceID})
-		kvbackend := &db.Backend{
+		onuKvbackend := &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": aDeviceID})
-			return fmt.Errorf("can-not-access-onuKVStore-no-backend-connection-to-service")
+			PathPrefix: baseKvStorePath,
 		}
-		err := kvbackend.DeleteWithPrefix(ctx, aDeviceID)
+		err := onuKvbackend.DeleteWithPrefix(ctx, aDeviceID)
 		if err != nil {
 			logger.Errorw(ctx, "unable to delete in KVstore", log.Fields{"service": baseKvStorePath, "device-id": aDeviceID, "err": err})
-			return fmt.Errorf("unable-to-delete-in-KVstore")
+			// continue to delete kv data, but accumulate any errors
+			errorsList = append(errorsList, err)
 		}
 	}
+	// delete pm data
+	pmKvbackend := &db.Backend{
+		Client:     oo.kvClient,
+		StoreType:  oo.KVStoreType,
+		Address:    oo.KVStoreAddress,
+		Timeout:    oo.KVStoreTimeout,
+		PathPrefix: fmt.Sprintf(pmmgr.CPmKvStorePrefixBase, oo.cm.Backend.PathPrefix),
+	}
+	err := pmKvbackend.DeleteWithPrefix(ctx, aDeviceID)
+	if err != nil {
+		logger.Errorw(ctx, "unable to delete PM in KVstore", log.Fields{"path": pmmgr.CPmKvStorePrefixBase + aDeviceID, "device-id": aDeviceID, "err": err})
+		// accumulate any errors
+		errorsList = append(errorsList, err)
+	}
+	if len(errorsList) > 0 {
+		return fmt.Errorf("one or more error deleting kv data, error: %v", errorsList)
+	}
 	return nil
 }
 
