diff --git a/cps-service/src/main/java/org/onap/cps/api/CpsDataService.java b/cps-service/src/main/java/org/onap/cps/api/CpsDataService.java
index 6036f92..2583e99 100644
--- a/cps-service/src/main/java/org/onap/cps/api/CpsDataService.java
+++ b/cps-service/src/main/java/org/onap/cps/api/CpsDataService.java
@@ -118,4 +118,17 @@
      * @param listNodeXpath   list node xpath
      */
     void deleteListNodeData(@NonNull String dataspaceName, @NonNull String anchorName, @NonNull String listNodeXpath);
+
+    /**
+     * Updates leaves of DataNode for given dataspace and anchor using xpath,
+     * along with the leaves of each Child Data Node which already exists.
+     * This method will throw an exception if data node update or any descendant update does not exist.
+     *
+     * @param dataspaceName dataspace name
+     * @param anchorName anchor name
+     * @param parentNodeXpath xpath
+     * @param dataNodeUpdatesAsJson json data representing data node updates
+     */
+    void updateNodeLeavesAndExistingDescendantLeaves(String dataspaceName, String anchorName, String parentNodeXpath,
+                                                     String dataNodeUpdatesAsJson);
 }
diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpsDataServiceImpl.java b/cps-service/src/main/java/org/onap/cps/api/impl/CpsDataServiceImpl.java
index 5e6e1a2..b45645b 100755
--- a/cps-service/src/main/java/org/onap/cps/api/impl/CpsDataServiceImpl.java
+++ b/cps-service/src/main/java/org/onap/cps/api/impl/CpsDataServiceImpl.java
@@ -98,6 +98,18 @@
     }
 
     @Override
+    public void updateNodeLeavesAndExistingDescendantLeaves(final String dataspaceName, final String anchorName,
+                                                            final String parentNodeXpath,
+                                                            final String dataNodeUpdatesAsJson) {
+        final Collection<DataNode> dataNodeUpdates =
+            buildDataNodeCollectionFromJson(dataspaceName, anchorName, parentNodeXpath, dataNodeUpdatesAsJson);
+        for (final DataNode dataNodeUpdate : dataNodeUpdates) {
+            processDataNodeUpdate(dataspaceName, anchorName, dataNodeUpdate);
+        }
+        notificationService.processDataUpdatedEvent(dataspaceName, anchorName);
+    }
+
+    @Override
     public void replaceNodeTree(final String dataspaceName, final String anchorName, final String parentNodeXpath,
         final String jsonData) {
         final var dataNode = buildDataNodeFromJson(dataspaceName, anchorName, parentNodeXpath, jsonData);
@@ -160,4 +172,17 @@
     private SchemaContext getSchemaContext(final String dataspaceName, final String schemaSetName) {
         return yangTextSchemaSourceSetCache.get(dataspaceName, schemaSetName).getSchemaContext();
     }
+
+    private void processDataNodeUpdate(final String dataspaceName, final String anchorName,
+                                       final DataNode dataNodeUpdate) {
+        if (dataNodeUpdate == null) {
+            return;
+        }
+        cpsDataPersistenceService.updateDataLeaves(dataspaceName, anchorName, dataNodeUpdate.getXpath(),
+            dataNodeUpdate.getLeaves());
+        final Collection<DataNode> childDataNodeUpdates = dataNodeUpdate.getChildDataNodes();
+        for (final DataNode childDataNodeUpdate : childDataNodeUpdates) {
+            processDataNodeUpdate(dataspaceName, anchorName, childDataNodeUpdate);
+        }
+    }
 }
diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsDataServiceImplSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsDataServiceImplSpec.groovy
index 1220397..97eac5a 100644
--- a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsDataServiceImplSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsDataServiceImplSpec.groovy
@@ -28,7 +28,6 @@
 import org.onap.cps.notification.NotificationService
 import org.onap.cps.spi.CpsDataPersistenceService
 import org.onap.cps.spi.FetchDescendantsOption
-import org.onap.cps.spi.exceptions.CpsPathException
 import org.onap.cps.spi.exceptions.DataValidationException
 import org.onap.cps.spi.model.Anchor
 import org.onap.cps.spi.model.DataNodeBuilder
@@ -148,10 +147,23 @@
             thrown(DataValidationException)
         where: 'following parameters were used'
             scenario          | jsonData
-            'multiple leaves' | '{"code": "01","name": "some-name"}'
+            'multiple expectedLeaves' | '{"code": "01","name": "some-name"}'
             'one leaf'        | '{"name": "some-name"}'
     }
 
+    def 'Update cm-handle properties' () {
+        given: 'a dmi registry model'
+            setupSchemaSetMocks('dmi-registry.yang')
+        and: 'the expected json string'
+            def jsonData = '{"cm-handles":[{"id":"cmHandle001", "additional-properties":[{"name":"P1"}]}]}'
+        when: 'update data method is invoked with json data and parent node xpath'
+            objectUnderTest.updateNodeLeavesAndExistingDescendantLeaves(dataspaceName, anchorName, '/dmi-registry', jsonData)
+        then: 'the persistence service method is invoked with correct parameters'
+            1 * mockCpsDataPersistenceService.updateDataLeaves(dataspaceName, anchorName, "/dmi-registry/cm-handles[@id='cmHandle001']", ['id': 'cmHandle001'])
+        and: 'the data updated event is sent to the notification service'
+            1 * mockNotificationService.processDataUpdatedEvent(dataspaceName, anchorName)
+    }
+
     def 'Replace data node: #scenario.'() {
         given: 'schema set for given anchor and dataspace references test-tree model'
             setupSchemaSetMocks('test-tree.yang')
diff --git a/cps-service/src/test/resources/dmi-registry.yang b/cps-service/src/test/resources/dmi-registry.yang
new file mode 100644
index 0000000..3c2d893
--- /dev/null
+++ b/cps-service/src/test/resources/dmi-registry.yang
@@ -0,0 +1,42 @@
+module dmi-registry {
+
+  yang-version 1.1;
+
+  namespace "org:onap:cps:ncmp";
+
+  prefix dmi-reg;
+
+  revision "2021-05-20" {
+    description
+    "Initial Version";
+  }
+
+  container dmi-registry {
+
+    list cm-handles {
+
+      key "id";
+
+      leaf id {
+        type string;
+      }
+
+      leaf dmi-service-name {
+        type string;
+      }
+
+      list additional-properties {
+
+        key "name";
+
+        leaf name {
+          type string;
+        }
+
+        leaf value {
+          type string;
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
