diff --git a/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFSwitch.java b/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFSwitch.java
index 1fbd561..127531a 100644
--- a/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFSwitch.java
+++ b/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFSwitch.java
@@ -501,7 +501,7 @@
 
     private OFPortStatsEntry portStatsEntry(PortStatistics portStatistic) {
         OFPortStatsEntry ofPortStatsEntry = FACTORY.buildPortStatsEntry()
-                .setPortNo(OFPort.of(portStatistic.port()))
+                .setPortNo(OFPort.of((int) portStatistic.portNumber().toLong()))
                 .setTxBytes(U64.of(portStatistic.bytesSent()))
                 .setTxPackets(U64.of(portStatistic.packetsSent()))
                 .setTxDropped(U64.of(portStatistic.packetsTxDropped()))
diff --git a/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java b/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java
index e46def2..fccec73 100644
--- a/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java
+++ b/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java
@@ -92,11 +92,6 @@
     }
 
     @Override
-    public int port() {
-        return (int) this.portNumber.toLong();
-    }
-
-    @Override
     public PortNumber portNumber() {
         return this.portNumber;
     }
@@ -199,20 +194,6 @@
         /**
          * Sets port number.
          *
-         * @param port port number
-         * @return builder object
-         * @deprecated ONOS 1.12 Magpie
-         */
-        @Deprecated
-        public Builder setPort(int port) {
-            this.portNumber = PortNumber.portNumber(port);
-
-            return this;
-        }
-
-        /**
-         * Sets port number.
-         *
          * @param portNumber port number
          * @return builder object
          */
diff --git a/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java b/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java
index f78768e..3dd00fb 100644
--- a/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java
+++ b/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java
@@ -30,15 +30,6 @@
      * Returns the port number.
      *
      * @return port number
-     * @deprecated ONOS 1.12 Magpie please use portNumber()
-     */
-    @Deprecated
-    int  port();
-
-    /**
-     * Returns the port number.
-     *
-     * @return port number
      */
     PortNumber portNumber();
 
diff --git a/core/api/src/test/java/org/onosproject/net/device/DefaultPortStatisticsTest.java b/core/api/src/test/java/org/onosproject/net/device/DefaultPortStatisticsTest.java
index 996958f..98ff5a7 100644
--- a/core/api/src/test/java/org/onosproject/net/device/DefaultPortStatisticsTest.java
+++ b/core/api/src/test/java/org/onosproject/net/device/DefaultPortStatisticsTest.java
@@ -23,6 +23,7 @@
 import org.onosproject.net.NetTestTools;
 
 import com.google.common.testing.EqualsTester;
+import org.onosproject.net.PortNumber;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
@@ -45,7 +46,7 @@
             .setPacketsRxErrors(8)
             .setPacketsTxDropped(9)
             .setPacketsTxErrors(10)
-            .setPort(80)
+            .setPort(PortNumber.portNumber(80))
             .setDeviceId(NetTestTools.did("1"))
             .build();
 
@@ -60,7 +61,7 @@
             .setPacketsRxErrors(8)
             .setPacketsTxDropped(9)
             .setPacketsTxErrors(11)
-            .setPort(80)
+            .setPort(PortNumber.portNumber(80))
             .setDeviceId(NetTestTools.did("1"))
             .build();
 
@@ -84,7 +85,7 @@
         assertThat(stats1.packetsRxErrors(), is(8L));
         assertThat(stats1.packetsTxDropped(), is(9L));
         assertThat(stats1.packetsTxErrors(), is(10L));
-        assertThat(stats1.port(), is(80));
+        assertThat(stats1.portNumber().toLong(), is(80L));
     }
 
     /**
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/PortStatisticsCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/PortStatisticsCodec.java
index 19b12c0..07c4464 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/PortStatisticsCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/PortStatisticsCodec.java
@@ -32,7 +32,7 @@
         checkNotNull(entry, "Port Statistics cannot be null");
 
         final ObjectNode result = context.mapper().createObjectNode()
-                .put("port", entry.port())
+                .put("port", entry.portNumber().toLong())
                 .put("packetsReceived", entry.packetsReceived())
                 .put("packetsSent", entry.packetsSent())
                 .put("bytesReceived", entry.bytesReceived())
diff --git a/core/common/src/test/java/org/onosproject/store/trivial/SimpleDeviceStore.java b/core/common/src/test/java/org/onosproject/store/trivial/SimpleDeviceStore.java
index ec4d916..97d6e7b 100644
--- a/core/common/src/test/java/org/onosproject/store/trivial/SimpleDeviceStore.java
+++ b/core/common/src/test/java/org/onosproject/store/trivial/SimpleDeviceStore.java
@@ -447,7 +447,7 @@
 
         if (prvStatsMap != null) {
             for (PortStatistics newStats : newStatsCollection) {
-                PortNumber port = PortNumber.portNumber(newStats.port());
+                PortNumber port = newStats.portNumber();
                 PortStatistics prvStats = prvStatsMap.get(port);
                 DefaultPortStatistics.Builder builder = DefaultPortStatistics.builder();
                 PortStatistics deltaStats = builder.build();
@@ -459,7 +459,7 @@
             }
         } else {
             for (PortStatistics newStats : newStatsCollection) {
-                PortNumber port = PortNumber.portNumber(newStats.port());
+                PortNumber port = newStats.portNumber();
                 newStatsMap.put(port, newStats);
             }
         }
@@ -480,7 +480,7 @@
         }
         DefaultPortStatistics.Builder builder = DefaultPortStatistics.builder();
         DefaultPortStatistics deltaStats = builder.setDeviceId(deviceId)
-                .setPort(newStats.port())
+                .setPort(newStats.portNumber())
                 .setPacketsReceived(newStats.packetsReceived() - prvStats.packetsReceived())
                 .setPacketsSent(newStats.packetsSent() - prvStats.packetsSent())
                 .setBytesReceived(newStats.bytesReceived() - prvStats.bytesReceived())
diff --git a/core/net/src/main/java/org/onosproject/net/statistic/impl/PortStatisticsManager.java b/core/net/src/main/java/org/onosproject/net/statistic/impl/PortStatisticsManager.java
index da41750..fa7df86 100644
--- a/core/net/src/main/java/org/onosproject/net/statistic/impl/PortStatisticsManager.java
+++ b/core/net/src/main/java/org/onosproject/net/statistic/impl/PortStatisticsManager.java
@@ -35,7 +35,6 @@
 import java.util.Map;
 import java.util.stream.Collectors;
 
-import static org.onosproject.net.PortNumber.portNumber;
 import static org.onosproject.net.device.DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED;
 import static org.onosproject.net.device.DeviceEvent.Type.DEVICE_REMOVED;
 import static org.onosproject.net.device.DeviceEvent.Type.PORT_STATS_UPDATED;
@@ -140,7 +139,7 @@
 
     // Updates the port stats for the specified port
     private void updatePortData(DeviceId deviceId, PortStatistics stats) {
-        ConnectPoint cp = new ConnectPoint(deviceId, portNumber(stats.port()));
+        ConnectPoint cp = new ConnectPoint(deviceId, stats.portNumber());
         DataPoint c = current.get(cp);
 
         // Create a new data point and make it the current one
diff --git a/core/protobuf/models/src/main/java/org/onosproject/incubator/protobuf/models/net/device/PortProtoTranslator.java b/core/protobuf/models/src/main/java/org/onosproject/incubator/protobuf/models/net/device/PortProtoTranslator.java
index ff39987..ceeea6f 100644
--- a/core/protobuf/models/src/main/java/org/onosproject/incubator/protobuf/models/net/device/PortProtoTranslator.java
+++ b/core/protobuf/models/src/main/java/org/onosproject/incubator/protobuf/models/net/device/PortProtoTranslator.java
@@ -140,7 +140,7 @@
     public static PortStatistics translate(PortStatisticsProto portStatistics) {
         // TODO implement adding missing fields
         return DefaultPortStatistics.builder()
-                .setPort(portStatistics.getPort())
+                .setPort(PortNumber.portNumber(portStatistics.getPort()))
                 .setPacketsReceived(portStatistics.getPacketsReceived())
                 .setPacketsSent(portStatistics.getPacketsSent())
                 .build();
@@ -155,7 +155,7 @@
     public static PortStatisticsProto translate(PortStatistics portStatistics) {
         // TODO implement adding missing fields
         return PortStatisticsProto.newBuilder()
-                .setPort(portStatistics.port())
+                .setPort((int) portStatistics.portNumber().toLong())
                 .setPacketsReceived(portStatistics.packetsReceived())
                 .setPacketsSent(portStatistics.packetsSent())
                 .build();
diff --git a/core/store/dist/src/main/java/org/onosproject/store/device/impl/ECDeviceStore.java b/core/store/dist/src/main/java/org/onosproject/store/device/impl/ECDeviceStore.java
index 178bdcf..f20ea4b 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/device/impl/ECDeviceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/device/impl/ECDeviceStore.java
@@ -534,7 +534,7 @@
 
         if (prvStatsMap != null) {
             for (PortStatistics newStats : newStatsCollection) {
-                PortNumber port = PortNumber.portNumber(newStats.port());
+                PortNumber port = newStats.portNumber();
                 PortStatistics prvStats = prvStatsMap.get(port);
                 DefaultPortStatistics.Builder builder = DefaultPortStatistics.builder();
                 PortStatistics deltaStats = builder.build();
@@ -546,7 +546,7 @@
             }
         } else {
             for (PortStatistics newStats : newStatsCollection) {
-                PortNumber port = PortNumber.portNumber(newStats.port());
+                PortNumber port = newStats.portNumber();
                 newStatsMap.put(port, newStats);
             }
         }
@@ -576,7 +576,7 @@
         }
         DefaultPortStatistics.Builder builder = DefaultPortStatistics.builder();
         DefaultPortStatistics deltaStats = builder.setDeviceId(deviceId)
-                .setPort(newStats.port())
+                .setPort(newStats.portNumber())
                 .setPacketsReceived(newStats.packetsReceived() - prvStats.packetsReceived())
                 .setPacketsSent(newStats.packetsSent() - prvStats.packetsSent())
                 .setBytesReceived(newStats.bytesReceived() - prvStats.bytesReceived())
diff --git a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
index 32a9be6..be94e3d 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
@@ -901,7 +901,7 @@
 
         if (prvStatsMap != null) {
             for (PortStatistics newStats : newStatsCollection) {
-                PortNumber port = PortNumber.portNumber(newStats.port());
+                PortNumber port = newStats.portNumber();
                 PortStatistics prvStats = prvStatsMap.get(port);
                 DefaultPortStatistics.Builder builder = DefaultPortStatistics.builder();
                 PortStatistics deltaStats = builder.build();
@@ -913,7 +913,7 @@
             }
         } else {
             for (PortStatistics newStats : newStatsCollection) {
-                PortNumber port = PortNumber.portNumber(newStats.port());
+                PortNumber port = newStats.portNumber();
                 newStatsMap.put(port, newStats);
             }
         }
@@ -943,7 +943,7 @@
         }
         DefaultPortStatistics.Builder builder = DefaultPortStatistics.builder();
         DefaultPortStatistics deltaStats = builder.setDeviceId(deviceId)
-                .setPort(newStats.port())
+                .setPort(newStats.portNumber())
                 .setPacketsReceived(newStats.packetsReceived() - prvStats.packetsReceived())
                 .setPacketsSent(newStats.packetsSent() - prvStats.packetsSent())
                 .setBytesReceived(newStats.bytesReceived() - prvStats.bytesReceived())
diff --git a/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/CiscoNxosPortStatistics.java b/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/CiscoNxosPortStatistics.java
index c42b784..b2e6ad8 100644
--- a/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/CiscoNxosPortStatistics.java
+++ b/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/CiscoNxosPortStatistics.java
@@ -109,7 +109,7 @@
             long packetsTxErrors = deviceInterface.get(ETH_OUTERR1).asLong();
 
             DefaultPortStatistics.Builder builder = DefaultPortStatistics.builder();
-            defaultPortStatistics = builder.setPort((int) portNumber.toLong())
+            defaultPortStatistics = builder.setPort(portNumber)
                     .setPacketsReceived(packetsReceived)
                     .setPacketsSent(packetsSent)
                     .setBytesReceived(bytesReceived)
diff --git a/drivers/huawei/src/main/java/org/onosproject/drivers/huawei/HuaweiXmlParser.java b/drivers/huawei/src/main/java/org/onosproject/drivers/huawei/HuaweiXmlParser.java
index fba0f75..159d180 100644
--- a/drivers/huawei/src/main/java/org/onosproject/drivers/huawei/HuaweiXmlParser.java
+++ b/drivers/huawei/src/main/java/org/onosproject/drivers/huawei/HuaweiXmlParser.java
@@ -23,6 +23,7 @@
 import org.dom4j.Element;
 import org.onosproject.net.DefaultAnnotations;
 import org.onosproject.net.DeviceId;
+import org.onosproject.net.PortNumber;
 import org.onosproject.net.device.DefaultPortDescription;
 import org.onosproject.net.device.DefaultPortStatistics;
 import org.onosproject.net.device.PortDescription;
@@ -261,7 +262,7 @@
                                                           .getText());
 
             return builder.setDeviceId(id)
-                    .setPort(port)
+                    .setPort(PortNumber.portNumber(port))
                     .setPacketsReceived(packetReceived)
                     .setPacketsSent(packetSent)
                     .setBytesReceived(bytesReceived)
diff --git a/drivers/server/src/main/java/org/onosproject/drivers/server/ServerDevicesDiscovery.java b/drivers/server/src/main/java/org/onosproject/drivers/server/ServerDevicesDiscovery.java
index 3ff7f05..eedb403 100644
--- a/drivers/server/src/main/java/org/onosproject/drivers/server/ServerDevicesDiscovery.java
+++ b/drivers/server/src/main/java/org/onosproject/drivers/server/ServerDevicesDiscovery.java
@@ -848,7 +848,7 @@
             DefaultPortStatistics.Builder nicBuilder = DefaultPortStatistics.builder();
 
             nicBuilder.setDeviceId(deviceId)
-                    .setPort((int) portNumber)
+                    .setPort(PortNumber.portNumber(portNumber))
                     .setPacketsReceived(rxCount)
                     .setPacketsSent(txCount)
                     .setBytesReceived(rxBytes)
diff --git a/drivers/server/src/main/java/org/onosproject/drivers/server/impl/stats/DefaultMonitoringStatistics.java b/drivers/server/src/main/java/org/onosproject/drivers/server/impl/stats/DefaultMonitoringStatistics.java
index 5c1ba99..c05687f 100644
--- a/drivers/server/src/main/java/org/onosproject/drivers/server/impl/stats/DefaultMonitoringStatistics.java
+++ b/drivers/server/src/main/java/org/onosproject/drivers/server/impl/stats/DefaultMonitoringStatistics.java
@@ -109,7 +109,7 @@
     public PortStatistics nicStatistics(int nicId) {
         checkArgument(nicId >= 0, "NIC ID must be a non-negative integer");
         for (PortStatistics ns : this.nicStatistics) {
-            if (ns.port() == nicId) {
+            if (ns.portNumber().toLong() == nicId) {
                 return ns;
             }
         }
diff --git a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
index f849467..95c4f47 100644
--- a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
+++ b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
@@ -750,7 +750,7 @@
                 }
                 DefaultPortStatistics.Builder builder = DefaultPortStatistics.builder();
                 DefaultPortStatistics stat = builder.setDeviceId(deviceId)
-                        .setPort(entry.getPortNo().getPortNumber())
+                        .setPort(PortNumber.portNumber(entry.getPortNo().getPortNumber()))
                         .setPacketsReceived(entry.getRxPackets().getValue())
                         .setPacketsSent(entry.getTxPackets().getValue())
                         .setBytesReceived(entry.getRxBytes().getValue())
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 e0af5c9..311d44f 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.port())
+            row.cell(ID, stat.portNumber().toLong())
                 .cell(PKT_RX, stat.packetsReceived())
                 .cell(PKT_TX, stat.packetsSent())
                 .cell(BYTES_RX, stat.bytesReceived())
