diff --git a/src/test/java/org/onap/clamp/clds/it/CldsServiceIT.java b/src/test/java/org/onap/clamp/clds/it/CldsServiceIT.java
new file mode 100644
index 0000000..9613119
--- /dev/null
+++ b/src/test/java/org/onap/clamp/clds/it/CldsServiceIT.java
@@ -0,0 +1,106 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.it;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.InputStream;
+import java.security.Principal;
+import java.util.Properties;
+
+import javax.ws.rs.core.SecurityContext;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.model.CldsInfo;
+import org.onap.clamp.clds.service.CldsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+/**
+ * Test HTTP and HTTPS settings + redirection of HTTP to HTTPS.
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
+@TestPropertySource(locations = "classpath:application-no-camunda.properties")
+public class CldsServiceIT extends AbstractIT {
+
+    @Autowired
+    CldsService cldsService;
+
+    @Test
+    public void testCldsInfoNotAuthorized() throws Exception {
+        SecurityContext securityContext = Mockito.mock(SecurityContext.class);
+        Principal p = Mockito.mock(Principal.class);
+        Mockito.when(p.getName()).thenReturn("admin");
+
+        Mockito.when(securityContext.getUserPrincipal()).thenReturn(p);
+        cldsService.setSecurityContext(securityContext);
+
+        CldsInfo cldsInfo = cldsService.getCldsInfo();
+        assertFalse(cldsInfo.isPermissionReadCl());
+        assertFalse(cldsInfo.isPermissionReadTemplate());
+        assertFalse(cldsInfo.isPermissionUpdateCl());
+        assertFalse(cldsInfo.isPermissionUpdateTemplate());
+    }
+
+    @Test
+    public void testCldsInfoAuthorized() throws Exception {
+
+        SecurityContext securityContext = Mockito.mock(SecurityContext.class);
+        Principal p = Mockito.mock(Principal.class);
+        Mockito.when(p.getName()).thenReturn("admin");
+
+        Mockito.when(securityContext.getUserPrincipal()).thenReturn(p);
+        Mockito.when(securityContext.isUserInRole("permission-type-cl|dev|read")).thenReturn(true);
+        Mockito.when(securityContext.isUserInRole("permission-type-cl|dev|update")).thenReturn(true);
+        Mockito.when(securityContext.isUserInRole("permission-type-template|dev|read")).thenReturn(true);
+        Mockito.when(securityContext.isUserInRole("permission-type-template|dev|update")).thenReturn(true);
+
+        cldsService.setSecurityContext(securityContext);
+
+        CldsInfo cldsInfo = cldsService.getCldsInfo();
+        assertTrue(cldsInfo.isPermissionReadCl());
+        assertTrue(cldsInfo.isPermissionReadTemplate());
+        assertTrue(cldsInfo.isPermissionUpdateCl());
+        assertTrue(cldsInfo.isPermissionUpdateTemplate());
+
+        Properties prop = new Properties();
+        // InputStream in =
+        // CldsInfo.class.getResourceAsStream("clds-version.properties");
+        InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("clds-version.properties");
+        prop.load(in);
+        in.close();
+
+        assertEquals(cldsInfo.getCldsVersion(), prop.getProperty("clds.version"));
+        assertEquals(cldsInfo.getUserName(), "admin");
+    }
+}
diff --git a/src/test/java/org/onap/clamp/clds/model/CldsModelTest.java b/src/test/java/org/onap/clamp/clds/model/CldsModelTest.java
index 461b3ae..0333bdb 100644
--- a/src/test/java/org/onap/clamp/clds/model/CldsModelTest.java
+++ b/src/test/java/org/onap/clamp/clds/model/CldsModelTest.java
@@ -24,6 +24,7 @@
 package org.onap.clamp.clds.model;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
 
 import javax.ws.rs.BadRequestException;
 
@@ -45,10 +46,177 @@
         utilCreateUsingControlName("", "c42aceb-2350-11e6-8131-fa163ea8d2da");
     }
 
+    @Test(expected = IllegalArgumentException.class)
+    public void testValidateActionEmptyEvent() {
+        CldsModel cldsModel = new CldsModel();
+        cldsModel.validateAction(CldsEvent.ACTION_CREATE);
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testValidateActionNotExist() {
+        CldsModel cldsModel = new CldsModel();
+        cldsModel.validateAction("unknown");
+    }
+
+    @Test
+    public void testValidateActionFromCreate() {
+        CldsModel cldsModel = new CldsModel();
+        cldsModel.getEvent().setActionCd(CldsEvent.ACTION_CREATE);
+        cldsModel.validateAction(CldsEvent.ACTION_SUBMIT);
+        cldsModel.validateAction(CldsEvent.ACTION_TEST);
+
+        try {
+            cldsModel.validateAction(CldsEvent.ACTION_DEPLOY);
+            fail("Exception should have been sent");
+        } catch (IllegalArgumentException e) {
+
+        }
+    }
+
+    @Test
+    public void testValidateActionFromSubmitOrReSubmit() {
+        CldsModel cldsModel = new CldsModel();
+        cldsModel.getEvent().setActionCd(CldsEvent.ACTION_SUBMIT);
+        cldsModel.validateAction(CldsEvent.ACTION_RESUBMIT);
+        try {
+            cldsModel.validateAction(CldsEvent.ACTION_DEPLOY);
+            fail("Exception should have been sent");
+        } catch (IllegalArgumentException e) {
+
+        }
+
+        cldsModel.getEvent().setActionCd(CldsEvent.ACTION_RESUBMIT);
+        cldsModel.validateAction(CldsEvent.ACTION_RESUBMIT);
+        try {
+            cldsModel.validateAction(CldsEvent.ACTION_DEPLOY);
+            fail("Exception should have been sent");
+        } catch (IllegalArgumentException e) {
+
+        }
+    }
+
+    @Test
+    public void testValidateActionFromDistribute() {
+        CldsModel cldsModel = new CldsModel();
+        cldsModel.getEvent().setActionCd(CldsEvent.ACTION_DISTRIBUTE);
+        cldsModel.validateAction(CldsEvent.ACTION_RESUBMIT);
+        cldsModel.validateAction(CldsEvent.ACTION_DEPLOY);
+
+        try {
+            cldsModel.validateAction(CldsEvent.ACTION_CREATE);
+            fail("Exception should have been sent");
+        } catch (IllegalArgumentException e) {
+
+        }
+    }
+
+    @Test
+    public void testValidateActionFromUndeploy() {
+        CldsModel cldsModel = new CldsModel();
+        cldsModel.getEvent().setActionCd(CldsEvent.ACTION_UNDEPLOY);
+        cldsModel.validateAction(CldsEvent.ACTION_UPDATE);
+        cldsModel.validateAction(CldsEvent.ACTION_DEPLOY);
+        cldsModel.validateAction(CldsEvent.ACTION_RESUBMIT);
+
+        try {
+            cldsModel.validateAction(CldsEvent.ACTION_CREATE);
+            fail("Exception should have been sent");
+        } catch (IllegalArgumentException e) {
+
+        }
+    }
+
+    @Test
+    public void testValidateActionFromDeploy() {
+        CldsModel cldsModel = new CldsModel();
+        cldsModel.getEvent().setActionCd(CldsEvent.ACTION_DEPLOY);
+        cldsModel.validateAction(CldsEvent.ACTION_DEPLOY);
+        cldsModel.validateAction(CldsEvent.ACTION_UNDEPLOY);
+        cldsModel.validateAction(CldsEvent.ACTION_UPDATE);
+        cldsModel.validateAction(CldsEvent.ACTION_STOP);
+
+        try {
+            cldsModel.validateAction(CldsEvent.ACTION_CREATE);
+            fail("Exception should have been sent");
+        } catch (IllegalArgumentException e) {
+
+        }
+    }
+
+    @Test
+    public void testValidateActionFromRestartOrUpdate() {
+        CldsModel cldsModel = new CldsModel();
+        cldsModel.getEvent().setActionCd(CldsEvent.ACTION_RESTART);
+        cldsModel.validateAction(CldsEvent.ACTION_DEPLOY);
+        cldsModel.validateAction(CldsEvent.ACTION_UPDATE);
+        cldsModel.validateAction(CldsEvent.ACTION_STOP);
+        cldsModel.validateAction(CldsEvent.ACTION_UNDEPLOY);
+
+        try {
+            cldsModel.validateAction(CldsEvent.ACTION_CREATE);
+            fail("Exception should have been sent");
+        } catch (IllegalArgumentException e) {
+
+        }
+
+        cldsModel.getEvent().setActionCd(CldsEvent.ACTION_UPDATE);
+        cldsModel.validateAction(CldsEvent.ACTION_DEPLOY);
+        cldsModel.validateAction(CldsEvent.ACTION_UPDATE);
+        cldsModel.validateAction(CldsEvent.ACTION_STOP);
+        cldsModel.validateAction(CldsEvent.ACTION_UNDEPLOY);
+
+        try {
+            cldsModel.validateAction(CldsEvent.ACTION_CREATE);
+            fail("Exception should have been sent");
+        } catch (IllegalArgumentException e) {
+
+        }
+
+    }
+
+    @Test
+    public void testValidateActionFromDelete() {
+        CldsModel cldsModel = new CldsModel();
+        cldsModel.getEvent().setActionCd(CldsEvent.ACTION_DELETE);
+        cldsModel.validateAction(CldsEvent.ACTION_SUBMIT);
+
+        try {
+            cldsModel.validateAction(CldsEvent.ACTION_CREATE);
+            fail("Exception should have been sent");
+        } catch (IllegalArgumentException e) {
+
+        }
+
+        cldsModel.getEvent().setActionCd(CldsEvent.ACTION_DELETE);
+        cldsModel.getEvent().setActionStateCd(CldsEvent.ACTION_STATE_SENT);
+
+        try {
+            cldsModel.validateAction(CldsEvent.ACTION_SUBMIT);
+            fail("Exception should have been sent");
+        } catch (IllegalArgumentException e) {
+
+        }
+    }
+
+    @Test
+    public void testValidateActionFromStop() {
+        CldsModel cldsModel = new CldsModel();
+        cldsModel.getEvent().setActionCd(CldsEvent.ACTION_STOP);
+        cldsModel.validateAction(CldsEvent.ACTION_UPDATE);
+        cldsModel.validateAction(CldsEvent.ACTION_RESTART);
+        cldsModel.validateAction(CldsEvent.ACTION_UNDEPLOY);
+
+        try {
+            cldsModel.validateAction(CldsEvent.ACTION_CREATE);
+            fail("Exception should have been sent");
+        } catch (IllegalArgumentException e) {
+
+        }
+    }
+
     /**
      * Utility Method to create model from controlname and uuid.
      */
-
     public void utilCreateUsingControlName(String controlNamePrefix, String controlNameUuid) {
         CldsModel model = CldsModel.createUsingControlName(controlNamePrefix + controlNameUuid);
         assertEquals(controlNamePrefix, model.getControlNamePrefix());
diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
index 02e27ea..efeae00 100644
--- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
+++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
@@ -32,6 +32,7 @@
 
 import org.junit.Before;
 import org.junit.Test;
+import org.onap.clamp.clds.model.CldsModel;
 import org.onap.clamp.clds.util.ResourceFileUtil;
 
 /**
@@ -85,4 +86,12 @@
         assertEquals("policy1", holmes.getOperationalPolicy());
         assertEquals("blabla", holmes.getCorrelationLogic());
     }
+
+    @Test
+    public void testGetVf() throws IOException {
+        CldsModel cldsModel = new CldsModel();
+        cldsModel.setPropText(
+                ResourceFileUtil.getResourceAsString("example/model-properties/modelBpmnPropWithGlobal.json"));
+        assertEquals("f5213e3a-9191-4362-93b5-b67f8d770e44", ModelProperties.getVf(cldsModel));
+    }
 }
\ No newline at end of file
diff --git a/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json b/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json
new file mode 100644
index 0000000..5abb28a
--- /dev/null
+++ b/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json
@@ -0,0 +1,192 @@
+{
+	"collector": {
+		"topicPublishes": {
+			"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP",
+			"GFP-IP-AIC-SNMP-TRAPS": "GFP-IP-AIC-SNMP-TRAPS",
+			"AIC-SNMP-TRAPS": "AIC-SNMP-TRAPS"
+		}
+	},
+	"string_match": {
+		"topicPublishes": {
+			"DCAE-CL-EVENT": "DCAE-CL-EVENT"
+		},
+		"aaiMatchingFields": {
+			"cloud-region.identity-url": "cloud-region.identity-url",
+			"complex.city": "complex.city",
+			"complex.physical-location-id": "complex.physical-location-id",
+			"complex.state": "complex.state",
+			"generic-vnf.service-id": "generic-vnf.service-id",
+			"generic-vnf.vnf-name": "generic-vnf.vnf-name",
+			"generic-vnf.vnf-type": "generic-vnf.vnf-type",
+			"tenant.tenant-id": "tenant.tenant-id",
+			"vserver.in-maint": "vserver.in-maint",
+			"vserver.is-closed-loop-disabled": "vserver.is-closed-loop-disabled",
+			"vserver.l-interface.interface-name": "vserver.l-interface.interface-name",
+			"vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address": "vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address",
+			"vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address": "vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address",
+			"vserver.l-interface.network-name": "vserver.l-interface.network-name",
+			"vserver.prov-status": "vserver.prov-status",
+			"vserver.selflink": "vserver.selflink",
+			"vserver.vserver-id": "vserver.vserver-id",
+			"vserver.vserver-name": "vserver.vserver-name"
+		},
+		"aaiSendFields": {
+			"cloud-region.identity-url": "cloud-region.identity-url",
+			"complex.city": "complex.city",
+			"complex.physical-location-id": "complex.physical-location-id",
+			"complex.state": "complex.state",
+			"generic-vnf.service-id": "generic-vnf.service-id",
+			"generic-vnf.vnf-name": "generic-vnf.vnf-name",
+			"generic-vnf.vnf-type": "generic-vnf.vnf-type",
+			"tenant.tenant-id": "tenant.tenant-id",
+			"vserver.in-maint": "vserver.in-maint",
+			"vserver.is-closed-loop-disabled": "vserver.is-closed-loop-disabled",
+			"vserver.l-interface.interface-name": "vserver.l-interface.interface-name",
+			"vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address": "vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address",
+			"vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address": "vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address",
+			"vserver.l-interface.network-name": "vserver.l-interface.network-name",
+			"vserver.prov-status": "vserver.prov-status",
+			"vserver.selflink": "vserver.selflink",
+			"vserver.vserver-id": "vserver.vserver-id",
+			"vserver.vserver-name": "vserver.vserver-name"
+		},
+		"eventSourceType": {
+			"f5BigIP": "f5BigIP",
+			"vSBG_Alarms": "vSBG_Alarms",
+			"vCTS_Alarms": "vCTS_Alarms"
+		},
+		"eventSeverity": {
+			"NORMAL": "NORMAL",
+			"not-NORMAL": "not-NORMAL",
+			"OK": "OK",
+			"WARNING": "WARNING",
+			"MINOR": "MINOR",
+			"MAJOR": "MAJOR",
+			"CRITICAL": "CRITICAL"
+		},
+		"timeWindow": 0,
+		"ageLimit": 1600,
+		"outputEventName": {
+			"": "",
+			"ONSET": "ONSET",
+			"ABATED": "ABATED"
+		},
+		"createClosedLoopEventId": {
+			"Initial": "Initial",
+			"Close": "Close"
+		}
+	},
+	"tca": {
+		"tname": "New_Set",
+		"tcaInt": "1",
+		"tcaVio": "1",
+		"tcaSev": {
+			"NORMAL": "NORMAL",
+			"CRITICAL": "CRITICAL",
+			"MAJOR": "MAJOR",
+			"MINOR": "MINOR",
+			"WARNING": "WARNING"
+		},
+		"fieldPath": {
+			"FIELDPATH_test_1": "FIELDPATH_test_1",
+			"FIELDPATH_test_2": "FIELDPATH_test_2"
+		},
+		"operator": {
+			">": "GREATER",
+			"=": "EQUAL",
+			"<": "LESS"
+		},
+		"opsPolicy": {
+			"POLICY_test_X": "POLICY_test_X",
+			"POLICY_test_Y": "POLICY_test_Y"
+		}
+	},
+	"global": [
+		{
+			"name": "actionSet",
+			"value": [
+				"vnfRecipe"
+			]
+		},
+		{
+			"name": "location",
+			"value": [
+				"SNDGCA64",
+				"ALPRGAED"
+			]
+		},
+		{
+			"name": "vf",
+			"value": [
+				"f5213e3a-9191-4362-93b5-b67f8d770e44"
+			]
+		},
+		{
+			"name": "location",
+			"value": [
+				"SNDGCA64",
+				"ALPRGAED",
+				"LSLEILAA",
+				"MDTWNJC1"
+			]
+		}
+	],
+	"policy": {
+		"pname": "0",
+		"timeout": 345,
+		"vnfRecipe": {
+			"": "",
+			"restart": "Restart",
+			"rebuild": "Rebuild",
+			"migrate": "Migrate",
+			"healthCheck": "Health Check",
+			"evacuate": "Evacuate"
+		},
+		"enbRecipe": {
+			"": "",
+			"reset": "Reset"
+		},
+		"maxRetries": "3",
+		"retryTimeLimit": 180,
+		"resource": {
+			"vCTS": "vCTS",
+			"v3CDB": "v3CDB",
+			"vUDR": "vUDR",
+			"vCOM": "vCOM",
+			"vRAR": "vRAR",
+			"vLCS": "vLCS",
+			"vUDR-BE": "vUDR-BE",
+			"vDBE": "vDBE"
+		},
+		"parentPolicyConditions": {
+			"Failure_Retries": "Failure: Max Retries Exceeded",
+			"Failure_Timeout": "Failure: Time Limit Exceeded",
+			"Failure_Guard": "Failure: Guard",
+			"Failure_Exception": "Failure: Exception",
+			"Failure": "Failure: Other",
+			"Success": "Success"
+		}
+	},
+	"shared": {
+		"byService": {
+			"": {
+				"vf": {
+					"": ""
+				},
+				"location": {
+					"": ""
+				},
+				"alarmCondition": {
+					"": ""
+				}
+			}
+		},
+		"byVf": {
+			"": {
+				"vfc": {
+					"": ""
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
