diff --git a/core/common/src/main/java/org/onosproject/codec/impl/DecodeCriterionCodecHelper.java b/core/common/src/main/java/org/onosproject/codec/impl/DecodeCriterionCodecHelper.java
index 9516ed3..cf4cfa2 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/DecodeCriterionCodecHelper.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/DecodeCriterionCodecHelper.java
@@ -666,9 +666,18 @@
                                                                     CriterionCodec.PI_MATCH_LOW_VALUE +
                                                                             MISSING_MEMBER_MESSAGE).asText(), null),
                                     HexString.fromHexString(nullIsIllegal(node.get(CriterionCodec.PI_MATCH_HIGH_VALUE),
-                                                                    CriterionCodec.PI_MATCH_HIGH_VALUE +
-                                                                            MISSING_MEMBER_MESSAGE).asText(), null)
-                                    );
+                                                                     CriterionCodec.PI_MATCH_HIGH_VALUE +
+                                                                             MISSING_MEMBER_MESSAGE).asText(), null));
+                            break;
+                        case OPTIONAL:
+                            builder.matchOptional(
+                                    PiMatchFieldId.of(
+                                            nullIsIllegal(node.get(CriterionCodec.PI_MATCH_FIELD_ID),
+                                                          CriterionCodec.PI_MATCH_FIELD_ID +
+                                                                  MISSING_MEMBER_MESSAGE).asText()),
+                                    HexString.fromHexString(nullIsIllegal(node.get(CriterionCodec.PI_MATCH_VALUE),
+                                                                    CriterionCodec.PI_MATCH_VALUE +
+                                                                            MISSING_MEMBER_MESSAGE).asText(), null));
                             break;
                         default:
                             throw new IllegalArgumentException("Type " + type + " is unsupported");
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodecHelper.java b/core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodecHelper.java
index c99e353..03cab28 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodecHelper.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodecHelper.java
@@ -56,6 +56,7 @@
 import org.onosproject.net.pi.runtime.PiExactFieldMatch;
 import org.onosproject.net.pi.runtime.PiFieldMatch;
 import org.onosproject.net.pi.runtime.PiLpmFieldMatch;
+import org.onosproject.net.pi.runtime.PiOptionalFieldMatch;
 import org.onosproject.net.pi.runtime.PiRangeFieldMatch;
 import org.onosproject.net.pi.runtime.PiTernaryFieldMatch;
 import org.onosproject.store.serializers.KryoNamespaces;
@@ -555,6 +556,17 @@
         return matchRangeNode;
     }
 
+    private ObjectNode parsePiMatchOptional(PiOptionalFieldMatch optionalFieldMatch) {
+
+        ObjectNode optionalExactNode = context.mapper().createObjectNode();
+        optionalExactNode.put(CriterionCodec.PI_MATCH_FIELD_ID, optionalFieldMatch.fieldId().id());
+        optionalExactNode.put(CriterionCodec.PI_MATCH_TYPE, PiMatchType.OPTIONAL.name().toLowerCase());
+        optionalExactNode.put(CriterionCodec.PI_MATCH_VALUE,
+                           HexString.toHexString(optionalFieldMatch.value().asArray(),
+                                                 null));
+        return optionalExactNode;
+    }
+
     private class FormatProtocolIndependent implements CriterionTypeFormatter {
         @Override
         public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
@@ -574,6 +586,9 @@
                     case RANGE:
                         matchNodes.add(parsePiMatchRange((PiRangeFieldMatch) fieldMatch));
                         break;
+                    case OPTIONAL:
+                        matchNodes.add(parsePiMatchOptional((PiOptionalFieldMatch) fieldMatch));
+                        break;
                     default:
                         throw new IllegalArgumentException("Type " + fieldMatch.type().name() + " is unsupported");
                 }
