diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/PortViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/PortViewMessageHandler.java
index 311d44f..92a051c 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/PortViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/PortViewMessageHandler.java
@@ -131,7 +131,7 @@
         }
 
         private void populateRow(TableModel.Row row, PortStatistics stat) {
-            row.cell(ID, stat.portNumber().toLong())
+            row.cell(ID, stat.portNumber())
                 .cell(PKT_RX, stat.packetsReceived())
                 .cell(PKT_TX, stat.packetsSent())
                 .cell(BYTES_RX, stat.bytesReceived())
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java
index 02bc1ff..776ea58 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java
@@ -81,7 +81,7 @@
 import static java.util.concurrent.Executors.newSingleThreadExecutor;
 import static org.onlab.util.Tools.groupedThreads;
 import static org.onosproject.cluster.ClusterEvent.Type.INSTANCE_ADDED;
-import static org.onosproject.net.ConnectPoint.deviceConnectPoint;
+import static org.onosproject.net.ConnectPoint.fromString;
 import static org.onosproject.net.DeviceId.deviceId;
 import static org.onosproject.net.HostId.hostId;
 import static org.onosproject.net.device.DeviceEvent.Type.DEVICE_ADDED;
@@ -394,7 +394,7 @@
                 if (isEdgeLink) {
                     HostId hid = hostId(srcId);
                     String cpstr = tgtId + SLASH + string(payload, TARGET_PORT);
-                    ConnectPoint cp = deviceConnectPoint(cpstr);
+                    ConnectPoint cp = fromString(cpstr);
 
                     pp = edgeLinkDetails(hid, cp);
                     overlayCache.currentOverlay().modifyEdgeLinkDetails(pp, hid, cp);
@@ -402,8 +402,8 @@
                 } else {
                     String cpAstr = srcId + SLASH + string(payload, SOURCE_PORT);
                     String cpBstr = tgtId + SLASH + string(payload, TARGET_PORT);
-                    ConnectPoint cpA = deviceConnectPoint(cpAstr);
-                    ConnectPoint cpB = deviceConnectPoint(cpBstr);
+                    ConnectPoint cpA = fromString(cpAstr);
+                    ConnectPoint cpB = fromString(cpBstr);
 
                     pp = infraLinkDetails(cpA, cpB);
                     overlayCache.currentOverlay().modifyInfraLinkDetails(pp, cpA, cpB);
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
index ff52584..3bd4985 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
@@ -377,7 +377,7 @@
     private ObjectNode hostConnect(HostLocation location) {
         return objectNode()
                 .put("device", location.deviceId().toString())
-                .put("port", location.port().toLong());
+                .put("port", location.port().toString());
     }
 
     // Encodes the specified list of labels a JSON array.
@@ -639,7 +639,7 @@
         pp.addProp(LPL_A_TYPE, lion.getSafe(LPL_A_TYPE), lion.getSafe(DEVICE))
                 .addProp(LPL_A_ID, lion.getSafe(LPL_A_ID), did.toString())
                 .addProp(LPL_A_FRIENDLY, lion.getSafe(LPL_A_FRIENDLY), friendlyDevice(did))
-                .addProp(LPL_A_PORT, lion.getSafe(LPL_A_PORT), cp.port().toLong())
+                .addProp(LPL_A_PORT, lion.getSafe(LPL_A_PORT), cp.port().toString())
                 .addSeparator();
     }
 
@@ -649,7 +649,7 @@
         pp.addProp(LPL_B_TYPE, lion.getSafe(LPL_B_TYPE), lion.getSafe(DEVICE))
                 .addProp(LPL_B_ID, lion.getSafe(LPL_B_ID), did.toString())
                 .addProp(LPL_B_FRIENDLY, lion.getSafe(LPL_B_FRIENDLY), friendlyDevice(did))
-                .addProp(LPL_B_PORT, lion.getSafe(LPL_B_PORT), cp.port().toLong())
+                .addProp(LPL_B_PORT, lion.getSafe(LPL_B_PORT), cp.port().toString())
                 .addSeparator();
     }
 
