diff --git a/apps/config/src/main/java/org/onosproject/config/ResourceIdParser.java b/apps/config/src/main/java/org/onosproject/config/ResourceIdParser.java
index 802e682..6bcdecc 100755
--- a/apps/config/src/main/java/org/onosproject/config/ResourceIdParser.java
+++ b/apps/config/src/main/java/org/onosproject/config/ResourceIdParser.java
@@ -17,6 +17,7 @@
 
 import java.util.Iterator;
 
+import java.util.LinkedList;
 import java.util.List;
 
 import org.onosproject.yang.model.KeyLeaf;
@@ -46,12 +47,6 @@
 
     }
 
-    public static ResourceId getParent(ResourceId path) {
-        int last = path.nodeKeys().size();
-        path.nodeKeys().remove(last - 1);
-        return path;
-    }
-
     public static NodeKey getInstanceKey(ResourceId path) {
         int last = path.nodeKeys().size();
         NodeKey ret = path.nodeKeys().get(last - 1);
@@ -92,7 +87,6 @@
         return ret;
     }
 
-
     public static String appendMultiInstKey(String path, String leaf) {
         return (path + leaf.substring(leaf.indexOf(KEY_SEP)));
     }
@@ -161,7 +155,14 @@
         if (path == null) {
             return bldr.toString();
         }
-        List<NodeKey> nodeKeyList = path.nodeKeys();
+        List<NodeKey> nodeKeyList = new LinkedList<>();
+        Iterator<NodeKey> itr = path.nodeKeys().iterator();
+        while (itr.hasNext()) {
+            nodeKeyList.add(itr.next());
+        }
+        if (nodeKeyList.get(0).schemaId().name().compareTo("/") == 0) {
+            nodeKeyList.remove(0);
+        }
         for (NodeKey key : nodeKeyList) {
             bldr.append(EL_SEP);
             if (key instanceof LeafListKey) {
