diff --git a/core/api/src/main/java/org/onosproject/net/pi/runtime/PiMulticastGroupEntry.java b/core/api/src/main/java/org/onosproject/net/pi/runtime/PiMulticastGroupEntry.java
index 5f68e40..6a848ac 100644
--- a/core/api/src/main/java/org/onosproject/net/pi/runtime/PiMulticastGroupEntry.java
+++ b/core/api/src/main/java/org/onosproject/net/pi/runtime/PiMulticastGroupEntry.java
@@ -34,10 +34,10 @@
 @Beta
 public final class PiMulticastGroupEntry implements PiPreEntry {
 
-    private final long groupId;
+    private final int groupId;
     private final Set<PiPreReplica> replicas;
 
-    private PiMulticastGroupEntry(long groupId, Set<PiPreReplica> replicas) {
+    private PiMulticastGroupEntry(int groupId, Set<PiPreReplica> replicas) {
         this.groupId = groupId;
         this.replicas = replicas;
     }
@@ -48,7 +48,7 @@
      *
      * @return group entry ID
      */
-    public long groupId() {
+    public int groupId() {
         return groupId;
     }
 
@@ -111,7 +111,7 @@
      */
     public static final class Builder {
 
-        private Long groupId;
+        private Integer groupId;
         private ImmutableSet.Builder<PiPreReplica> replicaSetBuilder = ImmutableSet.builder();
 
         private Builder() {
@@ -124,7 +124,7 @@
          * @param groupId group ID
          * @return this
          */
-        public Builder withGroupId(long groupId) {
+        public Builder withGroupId(int groupId) {
             this.groupId = groupId;
             return this;
         }
diff --git a/core/api/src/main/java/org/onosproject/net/pi/runtime/PiPreReplica.java b/core/api/src/main/java/org/onosproject/net/pi/runtime/PiPreReplica.java
index ea7003d..b661d27 100644
--- a/core/api/src/main/java/org/onosproject/net/pi/runtime/PiPreReplica.java
+++ b/core/api/src/main/java/org/onosproject/net/pi/runtime/PiPreReplica.java
@@ -32,7 +32,7 @@
 public class PiPreReplica {
 
     private final PortNumber egressPort;
-    private final long instanceId;
+    private final int instanceId;
 
     /**
      * Returns a new PRE packet replica for the given egress port and instance
@@ -41,7 +41,7 @@
      * @param egressPort egress port
      * @param instanceId instance ID
      */
-    public PiPreReplica(PortNumber egressPort, long instanceId) {
+    public PiPreReplica(PortNumber egressPort, int instanceId) {
         this.egressPort = checkNotNull(egressPort);
         this.instanceId = instanceId;
     }
@@ -60,7 +60,7 @@
      *
      * @return instance ID
      */
-    public long instanceId() {
+    public int instanceId() {
         return instanceId;
     }
 
diff --git a/core/api/src/test/java/org/onosproject/net/pi/runtime/PiMulticastGroupEntryTest.java b/core/api/src/test/java/org/onosproject/net/pi/runtime/PiMulticastGroupEntryTest.java
index 7c060ef..049a902 100644
--- a/core/api/src/test/java/org/onosproject/net/pi/runtime/PiMulticastGroupEntryTest.java
+++ b/core/api/src/test/java/org/onosproject/net/pi/runtime/PiMulticastGroupEntryTest.java
@@ -28,10 +28,10 @@
  * Tests for {@link PiMulticastGroupEntry}.
  */
 public class PiMulticastGroupEntryTest {
-    private final long groupId1 = 1;
-    private final long groupId2 = 2;
+    private final int groupId1 = 1;
+    private final int groupId2 = 2;
 
-    private final long instanceId1 = 1;
+    private final int instanceId1 = 1;
 
     private final PortNumber port1 = PortNumber.portNumber(1);
     private final PortNumber port2 = PortNumber.portNumber(2);
diff --git a/core/api/src/test/java/org/onosproject/net/pi/runtime/PiPreReplicaTest.java b/core/api/src/test/java/org/onosproject/net/pi/runtime/PiPreReplicaTest.java
index 85ea36e..ef6e7d8 100644
--- a/core/api/src/test/java/org/onosproject/net/pi/runtime/PiPreReplicaTest.java
+++ b/core/api/src/test/java/org/onosproject/net/pi/runtime/PiPreReplicaTest.java
@@ -28,8 +28,8 @@
  */
 public class PiPreReplicaTest {
 
-    private final long instanceId1 = 1;
-    private final long instanceId2 = 2;
+    private final int instanceId1 = 1;
+    private final int instanceId2 = 2;
     private final PortNumber port1 = PortNumber.portNumber(1);
     private final PortNumber port2 = PortNumber.portNumber(2);
 
