diff --git a/compiler/plugin/maven/src/test/java/org/onosproject/yang/compiler/plugin/maven/AugmentTranslatorTest.java b/compiler/plugin/maven/src/test/java/org/onosproject/yang/compiler/plugin/maven/AugmentTranslatorTest.java
index 225b0c5..b178dba 100644
--- a/compiler/plugin/maven/src/test/java/org/onosproject/yang/compiler/plugin/maven/AugmentTranslatorTest.java
+++ b/compiler/plugin/maven/src/test/java/org/onosproject/yang/compiler/plugin/maven/AugmentTranslatorTest.java
@@ -624,4 +624,28 @@
         YangPluginConfig.compileCode(COMP);
         deleteDirectory(DIR);
     }
+
+    @Test
+    public void processMultipleAugment() throws IOException,
+            ParserException, MojoExecutionException {
+
+        deleteDirectory(DIR);
+        String dir = "src/test/resources/multipleaugment";
+
+        Set<Path> paths = new HashSet<>();
+        for (String file : getYangFiles(dir)) {
+            paths.add(Paths.get(file));
+        }
+
+        utilManager.createYangFileInfoSet(paths);
+        utilManager.parseYangFileInfoSet();
+        utilManager.createYangNodeSet();
+        utilManager.resolveDependenciesUsingLinker();
+
+        YangPluginConfig yangPluginConfig = new YangPluginConfig();
+        yangPluginConfig.setCodeGenDir(DIR);
+        utilManager.translateToJava(yangPluginConfig);
+        YangPluginConfig.compileCode(COMP);
+        deleteDirectory(DIR);
+    }
 }
diff --git a/compiler/plugin/maven/src/test/resources/multipleaugment/ietf-network-test@2018-02-26.yang b/compiler/plugin/maven/src/test/resources/multipleaugment/ietf-network-test@2018-02-26.yang
new file mode 100644
index 0000000..287e23a
--- /dev/null
+++ b/compiler/plugin/maven/src/test/resources/multipleaugment/ietf-network-test@2018-02-26.yang
@@ -0,0 +1,23 @@
+module ietf-network-test {
+  yang-version 1.1;
+  namespace "urn:ietf:params:xml:ns:yang:ietf-network-test";
+  prefix nw;
+
+  revision 2018-02-26 {
+  }
+
+  container networks {
+    list network {
+      key "network-id";
+      leaf network-id {
+        type string;
+      }
+      list node {
+        key "node-id";
+        leaf node-id {
+          type string;
+        }
+      }
+    }
+  }
+}
diff --git a/compiler/plugin/maven/src/test/resources/multipleaugment/ietf-otn-topology-test@2017-10-30.yang b/compiler/plugin/maven/src/test/resources/multipleaugment/ietf-otn-topology-test@2017-10-30.yang
new file mode 100644
index 0000000..092719e
--- /dev/null
+++ b/compiler/plugin/maven/src/test/resources/multipleaugment/ietf-otn-topology-test@2017-10-30.yang
@@ -0,0 +1,26 @@
+module ietf-otn-topology-test {
+  yang-version 1.1;
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-otn-topology-test";
+  prefix "otntopo";
+
+  import ietf-network-test {
+    prefix "nw";
+  }
+
+  import ietf-te-topology-test {
+    prefix "tet";
+  }
+
+  revision 2017-10-30 {
+  }
+
+  augment "/nw:networks/nw:network/nw:node/tet:te/"
+          + "tet:te-node-attributes/tet:connectivity-matrices/"
+          + "tet:connectivity-matrix/tet:path-constraints/"
+          + "tet:te-bandwidth/tet:technology" {
+    leaf sample {
+        type string;
+    }
+  }
+}
diff --git a/compiler/plugin/maven/src/test/resources/multipleaugment/ietf-te-topology-test@2018-02-21.yang b/compiler/plugin/maven/src/test/resources/multipleaugment/ietf-te-topology-test@2018-02-21.yang
new file mode 100644
index 0000000..55eab72
--- /dev/null
+++ b/compiler/plugin/maven/src/test/resources/multipleaugment/ietf-te-topology-test@2018-02-21.yang
@@ -0,0 +1,75 @@
+module ietf-te-topology-test {
+  yang-version 1.1;
+  namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology-test";
+
+  prefix "tet";
+
+  import ietf-te-types-test {
+    prefix "te-types";
+  }
+
+  import ietf-network-test {
+    prefix "nw";
+  }
+
+
+  revision "2018-02-21" {
+  }
+
+  grouping connectivity-matrix-entry-path-attributes {
+    uses te-types:generic-path-constraints;
+  } // connectivity-matrix-entry-path-attributes
+
+
+  grouping te-node-augment {
+    uses te-node-config;
+  } // te-node-augment
+
+  grouping te-node-config {
+    uses te-node-config-attributes;
+  } // te-node-config
+
+  grouping te-node-config-attributes {
+    container te-node-attributes {
+      uses te-node-connectivity-matrices;
+    } // te-node-attributes
+  } // te-node-config-attributes
+
+  grouping te-node-connectivity-matrices {
+    container connectivity-matrices {
+      uses connectivity-matrix-entry-path-attributes;
+      list connectivity-matrix {
+        key "id";
+        leaf id {
+          type uint32;
+        }
+      } // connectivity-matrix
+    } // connectivity-matrices
+  } // te-node-connectivity-matrices
+
+  grouping te-node-connectivity-matrix-attributes {
+    uses connectivity-matrix-entry-path-attributes;
+  } // te-node-connectivity-matrix-attributes
+
+
+  /*
+   * Data nodes  */
+  augment "/nw:networks/nw:network/nw:node" {
+    leaf te-node-id {
+      type string;
+      description
+        "The identifier of a node in the TE topology.
+         A node is specific to a topology to which it belongs.";
+    }
+    container te {
+      uses te-node-augment;
+    } // te
+  }
+
+  augment
+    "/nw:networks/nw:network/nw:node/te/te-node-attributes/"
+    + "connectivity-matrices/connectivity-matrix" {
+    uses te-node-connectivity-matrix-attributes;
+  }
+
+}
diff --git a/compiler/plugin/maven/src/test/resources/multipleaugment/ietf-te-types-test@2018-03-05.yang b/compiler/plugin/maven/src/test/resources/multipleaugment/ietf-te-types-test@2018-03-05.yang
new file mode 100644
index 0000000..4f32ac2
--- /dev/null
+++ b/compiler/plugin/maven/src/test/resources/multipleaugment/ietf-te-types-test@2018-03-05.yang
@@ -0,0 +1,32 @@
+module ietf-te-types-test {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-te-types-test";
+
+  /* Replace with IANA when assigned */
+  prefix "te-types";
+
+  revision "2018-03-05" {
+  }
+
+  grouping te-bandwidth {
+    container te-bandwidth {
+      choice technology {
+        case generic {
+          leaf generic {
+            type string;
+          }
+        }
+      }
+    }
+  }
+
+  grouping common-constraints_config {
+    uses te-types:te-bandwidth;
+  }
+
+  grouping generic-path-constraints {
+    container path-constraints {
+      uses common-constraints_config;
+    }
+  }
+}
