diff --git a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vFW_vNF_Artifact.vtl b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vFW_vNF_Artifact.vtl
index 0faf09c..f7947ef 100644
--- a/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vFW_vNF_Artifact.vtl
+++ b/components/model-catalog/blueprint-model/service-blueprint/vFW/Templates/vFW_vNF_Artifact.vtl
@@ -30,7 +30,7 @@
     },
     {
       "param-name": "onap_private_subnet_id",
-      "param-value": "${onap_private_net_id}_sub"
+      "param-value": "${onap_private_subnet_id}"
     }
   ],
   "capability-data": [
diff --git a/ms/controllerblueprints/modules/service/src/main/java/org/onap/ccsdk/apps/controllerblueprints/service/rs/ModelTypeRest.java b/ms/controllerblueprints/modules/service/src/main/java/org/onap/ccsdk/apps/controllerblueprints/service/rs/ModelTypeRest.java
index 988cad0..0f485a0 100644
--- a/ms/controllerblueprints/modules/service/src/main/java/org/onap/ccsdk/apps/controllerblueprints/service/rs/ModelTypeRest.java
+++ b/ms/controllerblueprints/modules/service/src/main/java/org/onap/ccsdk/apps/controllerblueprints/service/rs/ModelTypeRest.java
@@ -44,18 +44,18 @@
     }
 
     @GetMapping(path = "/{name}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public ModelType getModelTypeByName(@PathVariable(value = "name") String name) throws BluePrintException {
+    public ModelType getModelTypeByName(@PathVariable(value = "name") String name) {
         return modelTypeService.getModelTypeByName(name);
     }
 
     @GetMapping(path = "/search/{tags}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public List<ModelType> searchModelTypes(@PathVariable(value = "tags") String tags) throws BluePrintException {
+    public List<ModelType> searchModelTypes(@PathVariable(value = "tags") String tags) {
         return modelTypeService.searchModelTypes(tags);
     }
 
     @GetMapping(path = "/by-definition/{definitionType}", produces = MediaType.APPLICATION_JSON_VALUE)
     public @ResponseBody
-    List<ModelType> getModelTypeByDefinitionType(@PathVariable(value = "definitionType") String definitionType) throws BluePrintException {
+    List<ModelType> getModelTypeByDefinitionType(@PathVariable(value = "definitionType") String definitionType) {
         return modelTypeService.getModelTypeByDefinitionType(definitionType);
     }
 
@@ -66,7 +66,7 @@
     }
 
     @DeleteMapping(path = "/{name}")
-    public void deleteModelTypeByName(@PathVariable(value = "name") String name) throws BluePrintException {
+    public void deleteModelTypeByName(@PathVariable(value = "name") String name) {
         modelTypeService.deleteByModelName(name);
     }
 }
diff --git a/ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlangtagapi/core/model/AssignVlanTagResponseTest.java b/ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlangtagapi/core/model/AssignVlanTagResponseTest.java
index bbcebba..30f817e 100644
--- a/ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlangtagapi/core/model/AssignVlanTagResponseTest.java
+++ b/ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlangtagapi/core/model/AssignVlanTagResponseTest.java
@@ -62,5 +62,12 @@
         assertTrue((Integer)assignVlanTagResponse.hashCode() instanceof Integer);
     }
     
+    @Test
+    public void testErrorMessage()
+    {
+    	assignVlanTagResponse.errorMessage("test error message");
+    	assertEquals("test error message",assignVlanTagResponse.getErrorMessage());
+    }
+    
    
 }
diff --git a/ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlangtagapi/core/model/UnassignVlanTagRequestInputTest.java b/ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlangtagapi/core/model/UnassignVlanTagRequestInputTest.java
index 6081d0b..99498d6 100644
--- a/ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlangtagapi/core/model/UnassignVlanTagRequestInputTest.java
+++ b/ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlangtagapi/core/model/UnassignVlanTagRequestInputTest.java
@@ -64,4 +64,12 @@
         
     }
     
+    @Test
+    public void testVlanTagKey()
+    {
+    	unassignVlanTagRequestInput.vlanTagKey("testVlanTagKey");
+        assertEquals("testVlanTagKey",unassignVlanTagRequestInput.getVlanTagKey());
+        
+    }
+    
 }
diff --git a/ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlantagapi/core/extinf/pm/model/ElementsTest.java b/ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlantagapi/core/extinf/pm/model/ElementsTest.java
new file mode 100644
index 0000000..6d534ff
--- /dev/null
+++ b/ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlantagapi/core/extinf/pm/model/ElementsTest.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright © 2018 IBM.
+ *
+ * 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.onap.ccsdk.apps.ms.vlantagapi.core.extinf.pm.model;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class ElementsTest {
+	private Elements elements;
+
+	@Before
+	public void setUp() {
+		elements = new Elements();
+	}
+
+	@Test
+	public void testGetSetRecycleVlantagRange() {
+		elements.setRecycleVlantagRange("recycleVlantagRange");
+		assertEquals("recycleVlantagRange", elements.getRecycleVlantagRange());
+	}
+
+	@Test
+	public void testGetSetOverwrite() {
+		elements.setOverwrite("overwrite");
+		assertEquals("overwrite", elements.getOverwrite());
+	}
+
+	@Test
+	public void testGetSetElementVlanRole() {
+		elements.setElementVlanRole("elementVlanRole");
+		assertEquals("elementVlanRole", elements.getElementVlanRole());
+	}
+
+	@Test
+	public void testToString() {
+		assertTrue(elements.toString() instanceof String);
+	}
+}
