diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java
index 10874f0..4faa58b 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java
@@ -345,12 +345,30 @@
                 }
                 curTraversal = PARENT;
                 traverseToParent(curNode);
-                curNode = curNode.getParent();
+                curNode = getParentSchemaNode(curNode);
             }
         }
     }
 
     /**
+     * Returns parent schema node of current node.
+     *
+     * @param curNode current schema node
+     * @return parent schema node
+     */
+    private YangNode getParentSchemaNode(YangNode curNode) {
+        if (curNode instanceof YangAugment) {
+            /*
+             * If curNode is augment, either next augment or augmented node
+             * has to be processed. So traversal type is changed to parent,
+             * but node is not changed.
+             */
+            return curNode;
+        }
+        return curNode.getParent();
+    }
+
+    /**
      * Processes root YANG node and adds it as a child to the YDT
      * extended builder which is created earlier.
      */
@@ -372,7 +390,8 @@
      * @param curNode current YANG node
      */
     private void traverseToParent(YangNode curNode) {
-        if (curNode instanceof YangCase || curNode instanceof YangChoice) {
+        if (curNode instanceof YangCase || curNode instanceof YangChoice
+                || curNode instanceof YangAugment) {
             return;
         }
         extBuilder.traverseToParentWithoutValidation();
