diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java
index 94e02db..e4d4b93 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java
@@ -80,8 +80,10 @@
             resultBuilder.setProtocol(protocol);
         }
 
-        int priority = (json.get(PRIORITY)).asInt();
-        resultBuilder.setPriority(priority);
+        if (json.get(PRIORITY) != null && !(json.get(PRIORITY)).asText().equals("null")) {
+            int priority = (json.get(PRIORITY)).asInt();
+            resultBuilder.setPriority(priority);
+        }
 
         int minSrcPortRange = (json.get(MIN_SRC_PORT_RANGE)).asInt();
         resultBuilder.setMinSrcPortRange(minSrcPortRange);
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/ServiceFunctionCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/ServiceFunctionCodec.java
new file mode 100644
index 0000000..f847b10
--- /dev/null
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/ServiceFunctionCodec.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.vtnweb.web;
+
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import org.onosproject.codec.CodecContext;
+import org.onosproject.codec.JsonCodec;
+import org.onosproject.vtnrsc.ServiceFunctionGroup;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+/**
+ * Service function JSON codec.
+ */
+public final class ServiceFunctionCodec extends JsonCodec<ServiceFunctionGroup> {
+
+    private static final String NAME = "name";
+    private static final String DESCRIPTION = "description";
+    private static final String PORT_PAIR_LOAD = "port_pair_load";
+    @Override
+    public ObjectNode encode(ServiceFunctionGroup serviceFunction, CodecContext context) {
+        checkNotNull(serviceFunction, "service cannot be null");
+        ObjectNode result = context.mapper().createObjectNode()
+                .put(NAME, serviceFunction.name())
+                .put(DESCRIPTION, serviceFunction.description())
+                .put(PORT_PAIR_LOAD, serviceFunction.portPairLoadMap().toString());
+        return result;
+    }
+}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VtnCodecRegistrator.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VtnCodecRegistrator.java
index 3330c25..84ac4a8 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VtnCodecRegistrator.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VtnCodecRegistrator.java
@@ -25,6 +25,7 @@
 import org.onosproject.vtnrsc.PortChain;
 import org.onosproject.vtnrsc.PortPair;
 import org.onosproject.vtnrsc.PortPairGroup;
+import org.onosproject.vtnrsc.ServiceFunctionGroup;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -45,7 +46,7 @@
         codecService.registerCodec(PortPairGroup.class, new PortPairGroupCodec());
         codecService.registerCodec(FlowClassifier.class, new FlowClassifierCodec());
         codecService.registerCodec(PortChain.class, new PortChainCodec());
-
+        codecService.registerCodec(ServiceFunctionGroup.class, new ServiceFunctionCodec());
         log.info("Started");
     }
 
