diff --git a/cli/src/main/java/org/onosproject/cli/net/TunnelQueryCommand.java b/cli/src/main/java/org/onosproject/cli/net/TunnelQueryCommand.java
index 6a4da17..c60337c 100644
--- a/cli/src/main/java/org/onosproject/cli/net/TunnelQueryCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/TunnelQueryCommand.java
@@ -87,8 +87,8 @@
                 dstPoint = IpTunnelEndPoint.ipTunnelPoint(IpAddress
                         .valueOf(dst));
             } else if ("VLAN".equals(type)) {
-                String[] srcArray = src.split("-");
-                String[] dstArray = dst.split("-");
+                String[] srcArray = src.split("/");
+                String[] dstArray = dst.split("/");
                 srcPoint = new DefaultOpticalTunnelEndPoint(
                                                             producerName,
                                                             Optional.of(DeviceId
@@ -112,8 +112,8 @@
                                                                     .logicId(0),
                                                             true);
             } else if ("ODUK".equals(type)) {
-                String[] srcArray = src.split("-");
-                String[] dstArray = dst.split("-");
+                String[] srcArray = src.split("/");
+                String[] dstArray = dst.split("/");
                 srcPoint = new DefaultOpticalTunnelEndPoint(
                                                             producerName,
                                                             Optional.of(DeviceId
@@ -137,8 +137,8 @@
                                                                     .logicId(0),
                                                             true);
             } else if ("OCH".equals(type)) {
-                String[] srcArray = src.split("-");
-                String[] dstArray = dst.split("-");
+                String[] srcArray = src.split("/");
+                String[] dstArray = dst.split("/");
                 srcPoint = new DefaultOpticalTunnelEndPoint(
                                                             producerName,
                                                             Optional.of(DeviceId
@@ -194,7 +194,7 @@
         }
         if (tunnelSet != null) {
             for (Tunnel tunnel : tunnelSet) {
-                print(FMT, tunnel.tunnelId(), tunnel.src().toString(), tunnel.dst().toString(),
+                print(FMT, tunnel.tunnelId().id(), tunnel.src().toString(), tunnel.dst().toString(),
                       tunnel.type(), tunnel.state(), tunnel.providerId(),
                       tunnel.tunnelName(), tunnel.groupId(),
                       showPath(tunnel.path()),
