diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/behaviour/AbstractOdtnTerminalDeviceDriver.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/behaviour/AbstractOdtnTerminalDeviceDriver.java
index 420770a..74f0f3b 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/behaviour/AbstractOdtnTerminalDeviceDriver.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/behaviour/AbstractOdtnTerminalDeviceDriver.java
@@ -85,7 +85,7 @@
                 .map(NetconfDevice::getSession)
                 .ifPresent(session -> {
                     try {
-                        session.rpc(toCharSequence(doc, false).toString()).join();
+                        session.rpc(toCharSequence(doc).toString()).join();
                     } catch (NetconfException e) {
                         log.error("Exception thrown", e);
                     }
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/behaviour/InfineraTransceiver.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/behaviour/InfineraTransceiver.java
index e2517a4..9248dd4 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/behaviour/InfineraTransceiver.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/behaviour/InfineraTransceiver.java
@@ -29,7 +29,7 @@
 import org.onosproject.odtn.utils.openconfig.OpenConfigLogicalChannelAssignmentsHandler;
 import org.onosproject.odtn.utils.openconfig.OpenConfigLogicalChannelsHandler;
 import org.onosproject.odtn.utils.openconfig.OpenConfigTerminalDeviceHandler;
-import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20161222.openconfigterminaldevice.terminallogicalchanassignmentconfig.AssignmentTypeEnum;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanassignmentconfig.AssignmentTypeEnum;
 
 import org.slf4j.Logger;
 
@@ -86,12 +86,12 @@
 
         // add <channel><index>"clientName"</index></channel>
         OpenConfigChannelHandler channel =
-            new OpenConfigChannelHandler(clientName, logicalChannels);
+            new OpenConfigChannelHandler(Integer.parseInt(clientName), logicalChannels);
 
         // add <config><index>"clientName"</index></config>
         OpenConfigConfigOfChannelHandler configOfChannel =
             new OpenConfigConfigOfChannelHandler(channel);
-        configOfChannel.addIndex(clientName);
+        configOfChannel.addIndex(Integer.parseInt(clientName));
 
         // add <logical-channel-assignments xc:operation="merge/delete">
         OpenConfigLogicalChannelAssignmentsHandler logicalChannelAssignments =
@@ -104,7 +104,7 @@
 
         // add <assignment><index>"clientName"</index></assignment>
         OpenConfigAssignmentHandler assignment =
-            new OpenConfigAssignmentHandler(clientName, logicalChannelAssignments);
+            new OpenConfigAssignmentHandler(Integer.parseInt(clientName), logicalChannelAssignments);
 
         // add <config><assignment-type>LOGICAL_CHANNEL</assignment-type>
         //             <logical-channel>"lineName"</logical-channel>
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigAssignmentHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigAssignmentHandler.java
index c608038..a2d6de0 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigAssignmentHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigAssignmentHandler.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.odtn.utils.openconfig;
 
-import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20161222.openconfigterminaldevice.terminallogicalchanassignmenttop.logicalchannelassignments.DefaultAssignment;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanassignmenttop.logicalchannelassignments.DefaultAssignment;
 
 import org.onosproject.yang.model.KeyLeaf;
 
@@ -36,7 +36,7 @@
      * @param parent OpenConfigLogicalChannelAssignmentsHandler of
      *               parent OPENCONFIG(logical-channel-assignments)
      */
-    public OpenConfigAssignmentHandler(String keyValue,
+    public OpenConfigAssignmentHandler(Integer keyValue,
                                        OpenConfigLogicalChannelAssignmentsHandler parent) {
         modelObject = new DefaultAssignment();
         modelObject.index(keyValue);
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigChannelHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigChannelHandler.java
index 3ab6d8e..4412b9a 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigChannelHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigChannelHandler.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.odtn.utils.openconfig;
 
-import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20161222.openconfigterminaldevice.terminallogicalchanneltop.logicalchannels.DefaultChannel;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanneltop.logicalchannels.DefaultChannel;
 
 import org.onosproject.yang.model.KeyLeaf;
 
@@ -35,7 +35,7 @@
      * @param keyValue String of target OPENCONFIG's key
      * @param parent OpenConfigLogicalChannelsHandler of parent OPENCONFIG(logical-channels)
      */
-    public OpenConfigChannelHandler(String keyValue, OpenConfigLogicalChannelsHandler parent) {
+    public OpenConfigChannelHandler(Integer keyValue, OpenConfigLogicalChannelsHandler parent) {
         modelObject = new DefaultChannel();
         modelObject.index(keyValue);
         setResourceId(OPENCONFIG_NAME, NAME_SPACE,
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentHandler.java
index 4cb2b18..34691a3 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentHandler.java
@@ -15,8 +15,8 @@
  */
 package org.onosproject.odtn.utils.openconfig;
 
-import org.onosproject.yang.gen.v1.openconfigplatform.rev20161222.openconfigplatform.platformcomponenttop.components.DefaultComponent;
-import org.onosproject.yang.gen.v1.openconfigplatformtransceiver.rev20170708.openconfigplatformtransceiver.components.component.DefaultAugmentedOcPlatformComponent;
+import org.onosproject.yang.gen.v1.openconfigplatform.rev20180603.openconfigplatform.platformcomponenttop.components.DefaultComponent;
+import org.onosproject.yang.gen.v1.openconfigplatformtransceiver.rev20180515.openconfigplatformtransceiver.components.component.DefaultAugmentedOcPlatformComponent;
 
 import org.onosproject.yang.model.KeyLeaf;
 
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentsHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentsHandler.java
index 1dc568c..536837b 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentsHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentsHandler.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.odtn.utils.openconfig;
 
-import org.onosproject.yang.gen.v1.openconfigplatform.rev20161222.openconfigplatform.platformcomponenttop.DefaultComponents;
+import org.onosproject.yang.gen.v1.openconfigplatform.rev20180603.openconfigplatform.platformcomponenttop.DefaultComponents;
 import org.onosproject.yang.model.ModelObject;
 import org.onosproject.yang.model.ResourceId;
 import org.onosproject.yang.runtime.AnnotatedNodeInfo;
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfAssignmentHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfAssignmentHandler.java
index 7c7ade2..df54b7a 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfAssignmentHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfAssignmentHandler.java
@@ -15,8 +15,8 @@
  */
 package org.onosproject.odtn.utils.openconfig;
 
-import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20161222.openconfigterminaldevice.terminallogicalchanassignmentconfig.AssignmentTypeEnum;
-import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20161222.openconfigterminaldevice.terminallogicalchanassignmenttop.logicalchannelassignments.assignment.DefaultConfig;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanassignmentconfig.AssignmentTypeEnum;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanassignmenttop.logicalchannelassignments.assignment.DefaultConfig;
 
 import java.math.BigDecimal;
 
@@ -43,6 +43,17 @@
     }
 
     /**
+     * Add child OPENCONFIG(index).
+     *
+     * @param index Long to be set for modelObject
+     * @return OpenConfigConfigOfAssignmentHandler of target OPENCONFIG
+     */
+    public OpenConfigConfigOfAssignmentHandler addIndex(Long index) {
+        modelObject.index(index);
+        return this;
+    }
+
+    /**
      * Add child OPENCONFIG(assignment-type).
      *
      * @param assignmentType AssignmentTypeEnum to be set for modelObject
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfChannelHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfChannelHandler.java
index f422121..9fcb9e5 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfChannelHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfChannelHandler.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.odtn.utils.openconfig;
 
-import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20161222.openconfigterminaldevice.terminallogicalchanneltop.logicalchannels.channel.DefaultConfig;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanneltop.logicalchannels.channel.DefaultConfig;
 
 /**
  * Utility class to deal with OPENCONFIG Channel/Config ModelObject & Annotation.
@@ -45,7 +45,7 @@
      * @param index String to be set for modelObject
      * @return OpenConfigConfigOfChannelHandler of target OPENCONFIG
      */
-    public OpenConfigConfigOfChannelHandler addIndex(String index) {
+    public OpenConfigConfigOfChannelHandler addIndex(Integer index) {
         modelObject.index(index);
         return this;
     }
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfComponentHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfComponentHandler.java
index 09eb63e..617158e 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfComponentHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfComponentHandler.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.odtn.utils.openconfig;
 
-import org.onosproject.yang.gen.v1.openconfigplatform.rev20161222.openconfigplatform.platformcomponenttop.components.component.DefaultConfig;
+import org.onosproject.yang.gen.v1.openconfigplatform.rev20180603.openconfigplatform.platformcomponenttop.components.component.DefaultConfig;
 
 /**
  * Utility class to deal with OPENCONFIG Componet/Config ModelObject & Annotation.
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfTransceiverHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfTransceiverHandler.java
index 8a271fd..acf4117 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfTransceiverHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfTransceiverHandler.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.odtn.utils.openconfig;
 
-import org.onosproject.yang.gen.v1.openconfigplatformtransceiver.rev20170708.openconfigplatformtransceiver.porttransceivertop.transceiver.DefaultConfig;
+import org.onosproject.yang.gen.v1.openconfigplatformtransceiver.rev20180515.openconfigplatformtransceiver.porttransceivertop.transceiver.DefaultConfig;
 
 /**
  * Utility class to deal with OPENCONFIG Transceiver/Config ModelObject & Annotation.
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelAssignmentsHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelAssignmentsHandler.java
index 5432b8f..1360093 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelAssignmentsHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelAssignmentsHandler.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.odtn.utils.openconfig;
 
-import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20161222.openconfigterminaldevice.terminallogicalchanassignmenttop.DefaultLogicalChannelAssignments;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanassignmenttop.DefaultLogicalChannelAssignments;
 
 /**
  * Utility class to deal with OPENCONFIG LogicalChannelAssignments ModelObject & Annotation.
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelsHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelsHandler.java
index 7e3eb32..ff8dad8 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelsHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelsHandler.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.odtn.utils.openconfig;
 
-import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20161222.openconfigterminaldevice.terminallogicalchanneltop.DefaultLogicalChannels;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanneltop.DefaultLogicalChannels;
 
 /**
  * Utility class to deal with OPENCONFIG LogicalChannels ModelObject & Annotation.
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigTerminalDeviceHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigTerminalDeviceHandler.java
index 728a596..ded7d34 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigTerminalDeviceHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigTerminalDeviceHandler.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.odtn.utils.openconfig;
 
-import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20161222.openconfigterminaldevice.terminaldevicetop.DefaultTerminalDevice;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminaldevicetop.DefaultTerminalDevice;
 
 import org.onosproject.yang.model.ModelObject;
 import org.onosproject.yang.model.ResourceId;
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigTransceiverHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigTransceiverHandler.java
index 562cb25..e8a99cc 100755
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigTransceiverHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/openconfig/OpenConfigTransceiverHandler.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.odtn.utils.openconfig;
 
-import org.onosproject.yang.gen.v1.openconfigplatformtransceiver.rev20170708.openconfigplatformtransceiver.porttransceivertop.DefaultTransceiver;
+import org.onosproject.yang.gen.v1.openconfigplatformtransceiver.rev20180515.openconfigplatformtransceiver.porttransceivertop.DefaultTransceiver;
 
 /**
  * Utility class to deal with OPENCONFIG Transceiver ModelObject & Annotation.
