diff --git a/core/common/src/main/java/org/onosproject/codec/impl/FilteringObjectiveCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/FilteringObjectiveCodec.java
index 4cbfffa..3818728 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/FilteringObjectiveCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/FilteringObjectiveCodec.java
@@ -53,10 +53,6 @@
             " member is required in FilteringObjective";
     private static final String NOT_NULL_MESSAGE =
             "FilteringObjective cannot be null";
-    private static final String INVALID_TYPE_MESSAGE =
-            "The requested type {} is not defined in FilteringObjective.";
-    private static final String INVALID_OP_MESSAGE =
-            "The requested operation {} is not defined for FilteringObjective.";
 
     public static final String REST_APP_ID = "org.onosproject.rest";
 
@@ -133,8 +129,8 @@
                 builder.deny();
                 break;
             default:
-                log.warn(INVALID_TYPE_MESSAGE, typeStr);
-                return null;
+                throw new IllegalArgumentException("The requested type " + typeStr +
+                " is not defined for FilteringObjective.");
         }
 
         // decode key
@@ -163,7 +159,7 @@
 
         // decode operation
         String opStr = nullIsIllegal(json.get(OPERATION), OPERATION + MISSING_MEMBER_MESSAGE).asText();
-        FilteringObjective filteringObjective;
+        FilteringObjective filteringObjective = null;
 
         switch (opStr) {
             case "ADD":
@@ -173,8 +169,10 @@
                 filteringObjective = builder.remove();
                 break;
             default:
-                log.warn(INVALID_OP_MESSAGE, opStr);
-                return null;
+                throw new IllegalArgumentException("The requested operation " + opStr +
+                " is not defined for FilteringObjective.");
+
+
         }
 
         return filteringObjective;
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/ForwardingObjectiveCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/ForwardingObjectiveCodec.java
index d053790..8ae2b0b 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/ForwardingObjectiveCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/ForwardingObjectiveCodec.java
@@ -50,10 +50,6 @@
             " member is required in ForwardingObjective";
     private static final String NOT_NULL_MESSAGE =
             "ForwardingObjective cannot be null";
-    private static final String INVALID_FLAG_MESSAGE =
-            "The requested flag {} is not defined in ForwardingObjective.";
-    private static final String INVALID_OP_MESSAGE =
-            "The requested operation {} is not defined for FilteringObjective.";
 
     public static final String REST_APP_ID = "org.onosproject.rest";
 
@@ -129,8 +125,8 @@
                 builder.withFlag(ForwardingObjective.Flag.VERSATILE);
                 break;
             default:
-                log.warn(INVALID_FLAG_MESSAGE, flagStr);
-                return null;
+                throw new IllegalArgumentException("The requested flag " + flagStr +
+                " is not defined for FilteringObjective.");
         }
 
         // decode selector
@@ -155,7 +151,7 @@
 
         // decode operation
         String opStr = nullIsIllegal(json.get(OPERATION), OPERATION + MISSING_MEMBER_MESSAGE).asText();
-        ForwardingObjective forwardingObjective;
+        ForwardingObjective forwardingObjective = null;
 
         switch (opStr) {
             case "ADD":
@@ -165,8 +161,8 @@
                 forwardingObjective = builder.remove();
                 break;
             default:
-                log.warn(INVALID_OP_MESSAGE, opStr);
-                return null;
+                throw new IllegalArgumentException("The requested operation " + opStr +
+                " is not defined for FilteringObjective.");
         }
 
         return forwardingObjective;
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/NextObjectiveCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/NextObjectiveCodec.java
index cd75ae7..75c61f4 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/NextObjectiveCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/NextObjectiveCodec.java
@@ -53,10 +53,6 @@
             " member is required in NextObjective";
     private static final String NOT_NULL_MESSAGE =
             "NextObjective cannot be null";
-    private static final String INVALID_TYPE_MESSAGE =
-            "The requested flag {} is not defined in NextObjective.";
-    private static final String INVALID_OP_MESSAGE =
-            "The requested operation {} is not defined for NextObjective.";
 
     public static final String REST_APP_ID = "org.onosproject.rest";
 
@@ -141,8 +137,8 @@
                 builder.withType(NextObjective.Type.SIMPLE);
                 break;
             default:
-                log.warn(INVALID_TYPE_MESSAGE, typeStr);
-                return null;
+                throw new IllegalArgumentException("The requested type " + typeStr +
+                " is not defined for FilteringObjective.");
         }
 
         // decode treatments
@@ -174,8 +170,8 @@
                 nextObjective = builder.remove();
                 break;
             default:
-                log.warn(INVALID_OP_MESSAGE, opStr);
-                return null;
+                throw new IllegalArgumentException("The requested operation " + opStr +
+                " is not defined for FilteringObjective.");
         }
 
         return nextObjective;
diff --git a/web/api/src/main/resources/definitions/NextObjective.json b/web/api/src/main/resources/definitions/NextObjective.json
index adbcfc7..f2c90d5 100644
--- a/web/api/src/main/resources/definitions/NextObjective.json
+++ b/web/api/src/main/resources/definitions/NextObjective.json
@@ -3,6 +3,7 @@
   "title": "nextObjective",
   "required": [
     "type",
+    "id",
     "priority",
     "timeout",
     "isPermanent",
@@ -16,6 +17,11 @@
       "type": "string",
       "example": "HASHED"
     },
+    "id": {
+       "type": "integer",
+       "format": "int64",
+       "example": 1
+    },
     "priority": {
       "type": "integer",
       "format": "int64",
@@ -308,4 +314,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}
