diff --git a/core/net/src/main/java/org/onosproject/net/pi/impl/PiGroupTranslatorImpl.java b/core/net/src/main/java/org/onosproject/net/pi/impl/PiGroupTranslatorImpl.java
index ea7ae50..70d2dde 100644
--- a/core/net/src/main/java/org/onosproject/net/pi/impl/PiGroupTranslatorImpl.java
+++ b/core/net/src/main/java/org/onosproject/net/pi/impl/PiGroupTranslatorImpl.java
@@ -16,9 +16,11 @@
 
 package org.onosproject.net.pi.impl;
 
+import com.google.common.collect.Sets;
 import org.onosproject.net.Device;
 import org.onosproject.net.group.Group;
 import org.onosproject.net.group.GroupBucket;
+import org.onosproject.net.group.GroupDescription;
 import org.onosproject.net.pi.model.PiPipeconf;
 import org.onosproject.net.pi.model.PiPipelineInterpreter;
 import org.onosproject.net.pi.runtime.PiAction;
@@ -31,6 +33,7 @@
 import org.onosproject.net.pi.service.PiTranslationException;
 
 import java.nio.ByteBuffer;
+import java.util.Set;
 
 import static java.lang.String.format;
 import static org.onosproject.net.pi.impl.PiFlowRuleTranslatorImpl.translateTreatment;
@@ -42,6 +45,11 @@
  */
 final class PiGroupTranslatorImpl {
 
+    private static final Set<GroupDescription.Type> SUPPORTED_GROUP_TYPES =
+            Sets.immutableEnumSet(
+                    GroupDescription.Type.SELECT,
+                    GroupDescription.Type.INDIRECT);
+
     private PiGroupTranslatorImpl() {
         // Hides constructor.
     }
@@ -57,13 +65,18 @@
      */
     static PiActionGroup translate(Group group, PiPipeconf pipeconf, Device device) throws PiTranslationException {
 
+        if (!SUPPORTED_GROUP_TYPES.contains(group.type())) {
+            throw new PiTranslationException(format(
+                    "group type %s not supported", group.type()));
+        }
+
         final PiPipelineInterpreter interpreter = getInterpreterOrNull(device, pipeconf);
 
         final PiActionGroup.Builder piActionGroupBuilder = PiActionGroup.builder()
                 .withId(PiActionGroupId.of(group.id().id()));
 
         if (!(group.appCookie() instanceof PiGroupKey)) {
-            throw new PiTranslationException("Group app cookie is not PI (class should be PiGroupKey)");
+            throw new PiTranslationException("group app cookie is not PI (class should be PiGroupKey)");
         }
         final PiGroupKey groupKey = (PiGroupKey) group.appCookie();
 
