Merge "Add SO Catalog DB tables related to WFD"
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/beans/VnfRollback.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/beans/VnfRollback.java
index bb8aa92..8da4df2 100644
--- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/beans/VnfRollback.java
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/beans/VnfRollback.java
@@ -7,9 +7,9 @@
  * 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.
@@ -34,6 +34,7 @@
 	private String vnfId;
 	private String tenantId;
 	private String cloudSiteId;
+	private String cloudOwner;
 	private boolean tenantCreated = false;
 	private boolean vnfCreated = false;
 	private MsoRequest msoRequest;
@@ -51,10 +52,11 @@
 
 	/**
 	 * For backwards compatibility... orchestration mode defaults to HEAT
-	 * 
+	 *
 	 * @param vnfId
 	 * @param tenantId
 	 * @param cloudSiteId
+	 * @param cloudOwner
 	 * @param tenantCreated
 	 * @param vnfCreated
 	 * @param msoRequest
@@ -63,7 +65,7 @@
 	 * @param requestType
 	 * @param modelCustomizationUuid
 	 */
-	public VnfRollback(String vnfId, String tenantId, String cloudSiteId,
+	public VnfRollback(String vnfId, String tenantId, String cloudOwner, String cloudSiteId,
 			boolean tenantCreated, boolean vnfCreated,
 			MsoRequest msoRequest,
 			String volumeGroupName, String volumeGroupId, String requestType, String modelCustomizationUuid) {
@@ -71,6 +73,7 @@
 		this.vnfId = vnfId;
 		this.tenantId = tenantId;
 		this.cloudSiteId = cloudSiteId;
+		this.cloudOwner = cloudOwner;
 		this.tenantCreated = tenantCreated;
 		this.vnfCreated = vnfCreated;
 		this.msoRequest = msoRequest;
@@ -82,10 +85,11 @@
 
 	/**
 	 * For backwards compatibility... orchestration mode defaults to HEAT
-	 * 
+	 *
 	 * @param vnfId
 	 * @param tenantId
 	 * @param cloudSiteId
+	 * @param cloudOwner
 	 * @param tenantCreated
 	 * @param vnfCreated
 	 * @param msoRequest
@@ -94,7 +98,7 @@
 	 * @param requestType
 	 * @param modelCustomizationUuid
 	 */
-	public VnfRollback(String vnfId, String tenantId, String cloudSiteId,
+	public VnfRollback(String vnfId, String tenantId, String cloudOwner, String cloudSiteId,
 			boolean tenantCreated, boolean vnfCreated,
 			MsoRequest msoRequest, String volumeGroupName, String volumeGroupId,
 			String requestType, String modelCustomizationUuid, String orchestrationMode) {
@@ -102,6 +106,7 @@
 		this.vnfId = vnfId;
 		this.tenantId = tenantId;
 		this.cloudSiteId = cloudSiteId;
+		this.cloudOwner = cloudOwner;
 		this.tenantCreated = tenantCreated;
 		this.vnfCreated = vnfCreated;
 		this.msoRequest = msoRequest;
@@ -131,6 +136,12 @@
 	public void setCloudSiteId(String cloudId) {
 		this.cloudSiteId = cloudId;
 	}
+    public String getCloudOwner() {
+        return cloudOwner;
+    }
+	public void setCloudOwner(String cloudOwner) {
+        this.cloudOwner = cloudOwner;
+    }
 	public boolean getTenantCreated() {
 		return tenantCreated;
 	}
@@ -207,7 +218,7 @@
 	}
 	@Override
     public String toString() {
-		return "VnfRollback: cloud=" + cloudSiteId + ", tenant=" + tenantId +
+		return "VnfRollback: cloud=" + cloudSiteId + ", cloudOwner=" + cloudOwner + ", tenant=" + tenantId +
 				", vnf=" + vnfId + ", tenantCreated=" + tenantCreated +
 				", vnfCreated=" + vnfCreated + ", requestType = " + requestType
 				+ ", modelCustomizationUuid=" + this.modelCustomizationUuid
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java
index 60088fc..b6c98ad 100644
--- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java
@@ -114,10 +114,10 @@
 
     @Autowired
     private MsoTenantUtilsFactory tenantUtilsFactory;
-    
+
     @Autowired
     private KeystoneV3Authentication keystoneV3Authentication;
-    
+
     private static final Logger logger = LoggerFactory.getLogger(MsoHeatUtils.class);
 
     // Properties names and variables (with default values)
@@ -135,6 +135,7 @@
      * this method does not include environment, files, or heatFiles
      */
     public StackInfo createStack (String cloudSiteId,
+                                  String cloudOwner,
                                   String tenantId,
                                   String stackName,
                                   String heatTemplate,
@@ -143,6 +144,7 @@
                                   int timeoutMinutes) throws MsoException {
         // Just call the new method with the environment & files variable set to null
         return this.createStack (cloudSiteId,
+                                 cloudOwner,
                                  tenantId,
                                  stackName,
                                  heatTemplate,
@@ -157,6 +159,7 @@
 
     // This method has environment, but not files or heatFiles
     public StackInfo createStack (String cloudSiteId,
+                                  String cloudOwner,
                                   String tenantId,
                                   String stackName,
                                   String heatTemplate,
@@ -166,6 +169,7 @@
                                   String environment) throws MsoException {
         // Just call the new method with the files/heatFiles variables set to null
         return this.createStack (cloudSiteId,
+                                 cloudOwner,
                                  tenantId,
                                  stackName,
                                  heatTemplate,
@@ -180,6 +184,7 @@
 
     // This method has environment and files, but not heatFiles.
     public StackInfo createStack (String cloudSiteId,
+                                  String cloudOwner,
                                   String tenantId,
                                   String stackName,
                                   String heatTemplate,
@@ -189,6 +194,7 @@
                                   String environment,
                                   Map <String, Object> files) throws MsoException {
         return this.createStack (cloudSiteId,
+                                 cloudOwner,
                                  tenantId,
                                  stackName,
                                  heatTemplate,
@@ -203,6 +209,7 @@
 
     // This method has environment, files, heatfiles
     public StackInfo createStack (String cloudSiteId,
+                                  String cloudOwner,
                                   String tenantId,
                                   String stackName,
                                   String heatTemplate,
@@ -213,6 +220,7 @@
                                   Map <String, Object> files,
                                   Map <String, Object> heatFiles) throws MsoException {
         return this.createStack (cloudSiteId,
+                                 cloudOwner,
                                  tenantId,
                                  stackName,
                                  heatTemplate,
@@ -251,6 +259,7 @@
      * stack. We must combine them before we add them to the stack if they're both non-null.
      *
      * @param cloudSiteId The cloud (may be a region) in which to create the stack.
+     * @param cloudOwner the cloud owner of the cloud site in which to create the stack
      * @param tenantId The Openstack ID of the tenant in which to create the Stack
      * @param stackName The name of the stack to create
      * @param heatTemplate The Heat template
@@ -267,6 +276,7 @@
 
     @SuppressWarnings("unchecked")
     public StackInfo createStack (String cloudSiteId,
+                                  String cloudOwner,
                                   String tenantId,
                                   String stackName,
                                   String heatTemplate,
@@ -309,7 +319,7 @@
             request.header ("X-Auth-Key", CryptoUtils.decryptCloudConfigPassword(cloudIdentity.getMsoPass ()));
             heatStack = executeAndRecordOpenstackRequest (request);
         } catch (OpenStackResponseException e) {
-            if (e.getStatus () == 409) {                
+            if (e.getStatus () == 409) {
                 MsoStackAlreadyExists me = new MsoStackAlreadyExists (stackName, tenantId, cloudSiteId);
                 me.addContext (CREATE_STACK);
                 throw me;
@@ -317,9 +327,9 @@
                 logger.debug("ERROR STATUS = {},\n{}\n{}", e.getStatus(), e.getMessage(), e.getLocalizedMessage());
                 throw heatExceptionToMsoException (e, CREATE_STACK);
             }
-        } catch (OpenStackConnectException e) {          
+        } catch (OpenStackConnectException e) {
             throw heatExceptionToMsoException (e, CREATE_STACK);
-        } catch (RuntimeException e) {           
+        } catch (RuntimeException e) {
             throw runtimeExceptionToMsoException (e, CREATE_STACK);
         }
 
@@ -327,7 +337,7 @@
         // Otherwise, simple query by name returns a 302 redirect.
         // NOTE: This is specific to the v1 Orchestration API.
         String canonicalName = stackName + "/" + heatStack.getId ();
-       
+
         if (pollForCompletion) {
             heatStack = pollStackForCompletion(cloudSiteId, tenantId, stackName, timeoutMinutes, backout, heatClient,
 					heatStack, canonicalName);
@@ -360,7 +370,7 @@
 		            logger.debug("an error occurred trying to print out the current outputs of the stack", e);
 		        }
 
-		        if ("CREATE_IN_PROGRESS".equals (heatStack.getStackStatus ())) {                       
+		        if ("CREATE_IN_PROGRESS".equals (heatStack.getStackStatus ())) {
 		            if (pollTimeout <= 0) {
                     logger.error("{} Cloud site: {} Tenant: {} Stack: {} Stack status: {} {} Create stack timeout",
                         MessageEnum.RA_CREATE_STACK_TIMEOUT, cloudSiteId, tenantId, stackName,
@@ -544,11 +554,12 @@
      *
      * @param tenantId The Openstack ID of the tenant in which to query
      * @param cloudSiteId The cloud identifier (may be a region) in which to query
+     * @param cloudOwner the cloud owner of the cloud site in which to query
      * @param stackName The name of the stack to query (may be simple or canonical)
      * @return A StackInfo object
      * @throws MsoOpenstackException Thrown if the Openstack API call returns an exception.
      */
-    public StackInfo queryStack (String cloudSiteId, String tenantId, String stackName) throws MsoException {
+    public StackInfo queryStack (String cloudSiteId, String cloudOwner, String tenantId, String stackName) throws MsoException {
         logger.debug ("Query HEAT stack: {} in tenant {}", stackName, tenantId);
 
         // Obtain the cloud site information where we will create the stack
@@ -602,6 +613,7 @@
      * all or partially deleted, so the resulting stack must be considered invalid.
      *
      * @param tenantId The Openstack ID of the tenant in which to perform the delete
+     * @param cloudOwner the cloud owner of the cloud site in  which to delete the stack
      * @param cloudSiteId The cloud identifier (may be a region) from which to delete the stack.
      * @param stackName The name/id of the stack to delete. May be simple or canonical
      * @param pollForCompletion Indicator that polling should be handled in Java vs. in the client
@@ -610,6 +622,7 @@
      * @throws MsoCloudSiteNotFound
      */
     public StackInfo deleteStack (String tenantId,
+                                  String cloudOwner,
                                   String cloudSiteId,
                                   String stackName,
                                   boolean pollForCompletion) throws MsoException {
@@ -886,14 +899,14 @@
 	        if (ServerType.KEYSTONE.equals(cloudIdentity.getIdentityServerType())) {
 		        Keystone keystoneTenantClient = new Keystone (keystoneUrl);
 		        Access access = null;
-	        
+
 	        	Authentication credentials = authenticationMethodFactory.getAuthenticationFor(cloudIdentity);
-	
+
 	        	OpenStackRequest <Access> request = keystoneTenantClient.tokens ()
 	                       .authenticate (credentials).withTenantId (tenantId);
-	
+
 	            access = executeAndRecordOpenstackRequest (request);
-	        
+
 		        try {
 		        	// Isolate trying to printout the region IDs
 		        	try {
@@ -998,10 +1011,10 @@
     }
 
 
-	public Map<String, Object> queryStackForOutputs(String cloudSiteId,
+	public Map<String, Object> queryStackForOutputs(String cloudSiteId, String cloudOwner,
 			String tenantId, String stackName) throws MsoException {
       logger.debug("MsoHeatUtils.queryStackForOutputs)");
-      StackInfo heatStack = this.queryStack(cloudSiteId, tenantId, stackName);
+      StackInfo heatStack = this.queryStack(cloudSiteId, cloudOwner, tenantId, stackName);
 		if (heatStack == null || heatStack.getStatus() == HeatStatus.NOTFOUND) {
 			return null;
 		}
@@ -1180,7 +1193,7 @@
 		sb.append("[END]");
 		return sb;
 	}
- 
+
 
 	public void copyBaseOutputsToInputs(Map<String, Object> inputs,
 			Map<String, Object> otherStackOutputs, List<String> paramNames, Map<String, String> aliases) {
@@ -1509,6 +1522,7 @@
     	throws VduException
     {
     	String cloudSiteId = cloudInfo.getCloudSiteId();
+    	String cloudOwner = cloudInfo.getCloudOwner();
     	String tenantId = cloudInfo.getTenantId();
 
     	// Translate the VDU ModelInformation structure to that which is needed for
@@ -1534,6 +1548,7 @@
 
     	try {
     	    StackInfo stackInfo = createStack (cloudSiteId,
+    	            cloudOwner,
                     tenantId,
                     instanceName,
                     heatTemplate,
@@ -1562,11 +1577,12 @@
     	throws VduException
     {
     	String cloudSiteId = cloudInfo.getCloudSiteId();
+    	String cloudOwner = cloudInfo.getCloudOwner();
     	String tenantId = cloudInfo.getTenantId();
 
     	try {
     		// Query the Cloudify Deployment object and  populate a VduInstance
-    		StackInfo stackInfo = queryStack (cloudSiteId, tenantId, instanceId);
+    		StackInfo stackInfo = queryStack (cloudSiteId, cloudOwner, tenantId, instanceId);
 
         	return stackInfoToVduInstance(stackInfo);
     	}
@@ -1584,11 +1600,12 @@
     	throws VduException
     {
     	String cloudSiteId = cloudInfo.getCloudSiteId();
+    	String cloudOwner = cloudInfo.getCloudOwner();
     	String tenantId = cloudInfo.getTenantId();
 
     	try {
     		// Delete the Heat stack
-    		StackInfo stackInfo = deleteStack (tenantId, cloudSiteId, instanceId, true);
+    		StackInfo stackInfo = deleteStack (tenantId, cloudOwner, cloudSiteId, instanceId, true);
 
     		// Populate a VduInstance based on the deleted Cloudify Deployment object
         	VduInstance vduInstance = stackInfoToVduInstance(stackInfo);
@@ -1686,7 +1703,7 @@
 
     	return vduStatus;
     }
-    
+
 	public Resources queryStackResources(String cloudSiteId, String tenantId, String stackName) throws MsoException {
 		CloudSite cloudSite = cloudConfig.getCloudSite(cloudSiteId)
 				.orElseThrow(() -> new MsoCloudSiteNotFound(cloudSiteId));
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtilsWithUpdate.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtilsWithUpdate.java
index d93ce9e..c378be7 100644
--- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtilsWithUpdate.java
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtilsWithUpdate.java
@@ -10,9 +10,9 @@
  * 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.
@@ -68,6 +68,7 @@
      */
 
     public StackInfo updateStack (String cloudSiteId,
+                                  String cloudOwner,
                                   String tenantId,
                                   String stackName,
                                   String heatTemplate,
@@ -77,6 +78,7 @@
         // Keeping this method to allow compatibility with no environment or files variable sent. In this case,
         // simply return the new method with the environment variable set to null.
         return this.updateStack (cloudSiteId,
+                                 cloudOwner,
                                  tenantId,
                                  stackName,
                                  heatTemplate,
@@ -89,6 +91,7 @@
     }
 
     public StackInfo updateStack (String cloudSiteId,
+                                  String cloudOwner,
                                   String tenantId,
                                   String stackName,
                                   String heatTemplate,
@@ -99,6 +102,7 @@
         // Keeping this method to allow compatibility with no environment variable sent. In this case,
         // simply return the new method with the files variable set to null.
         return this.updateStack (cloudSiteId,
+                                 cloudOwner,
                                  tenantId,
                                  stackName,
                                  heatTemplate,
@@ -111,6 +115,7 @@
     }
 
     public StackInfo updateStack (String cloudSiteId,
+                                  String cloudOwner,
                                   String tenantId,
                                   String stackName,
                                   String heatTemplate,
@@ -120,6 +125,7 @@
                                   String environment,
                                   Map <String, Object> files) throws MsoException {
         return this.updateStack (cloudSiteId,
+                                 cloudOwner,
                                  tenantId,
                                  stackName,
                                  heatTemplate,
@@ -165,6 +171,7 @@
      */
 
     public StackInfo updateStack (String cloudSiteId,
+                                  String cloudOwner,
                                   String tenantId,
                                   String stackName,
                                   String heatTemplate,
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
index a939f79..01120d5 100644
--- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
@@ -112,7 +112,8 @@
      * The nested templates and get_file entries both end up being added to the "files" on the
      * stack. We must combine them before we add them to the stack if they're both non-null.
      *
-     * @param cloudSiteId The cloud (may be a region) in which to create the stack.
+     * @param cloudSiteId The cloud (may be a region) in which to create the stack
+     * @param cloudOwner the cloud owner of the cloud site in which to create the stack
      * @param tenantId The Openstack ID of the tenant in which to create the Stack
      * @param stackName The name of the stack to create
      * @param heatTemplate The Heat template
@@ -130,6 +131,7 @@
     @SuppressWarnings("unchecked")
     @Override
     public StackInfo createStack (String cloudSiteId,
+                                  String cloudOwner,
                                   String tenantId,
                                   String stackName,
                                   String heatTemplate,
@@ -190,7 +192,7 @@
             logger.debug(String.format("Multicloud Request is: %s", multicloudRequest.toString()));
         }
 
-        String multicloudEndpoint = getMulticloudEndpoint(cloudSiteId, null);
+        String multicloudEndpoint = getMulticloudEndpoint(cloudSiteId, cloudOwner, null);
         RestClient multicloudClient = getMulticloudClient(multicloudEndpoint);
 
         if (multicloudClient == null) {
@@ -213,7 +215,7 @@
             if (logger.isDebugEnabled()) {
                 logger.debug("Multicloud Create Response Body: {}", multicloudResponseBody);
             }
-            return getStackStatus(cloudSiteId, tenantId, canonicalName, pollForCompletion, timeoutMinutes, backout);
+            return getStackStatus(cloudSiteId, cloudOwner, tenantId, canonicalName, pollForCompletion, timeoutMinutes, backout);
         }
         StringBuilder stackErrorStatusReason = new StringBuilder(response.getStatusInfo().getReasonPhrase());
         if (null != multicloudResponseBody) {
@@ -225,10 +227,10 @@
     }
 
     @Override
-    public Map<String, Object> queryStackForOutputs(String cloudSiteId,
+    public Map<String, Object> queryStackForOutputs(String cloudSiteId, String cloudOwner,
                                                            String tenantId, String stackName) throws MsoException {
         logger.debug("MsoHeatUtils.queryStackForOutputs)");
-        StackInfo heatStack = this.queryStack(cloudSiteId, tenantId, stackName);
+        StackInfo heatStack = this.queryStack(cloudSiteId, cloudOwner, tenantId, stackName);
         if (heatStack == null || heatStack.getStatus() == HeatStatus.NOTFOUND) {
             return null;
         }
@@ -242,12 +244,13 @@
      *
      * @param tenantId The Openstack ID of the tenant in which to query
      * @param cloudSiteId The cloud identifier (may be a region) in which to query
+     * @param cloudOwner cloud owner of the cloud site in which to query
      * @param stackId The ID of the stack to query
      * @return A StackInfo object
      * @throws MsoOpenstackException Thrown if the Openstack API call returns an exception.
      */
     @Override
-    public StackInfo queryStack (String cloudSiteId, String tenantId, String instanceId) throws MsoException {
+    public StackInfo queryStack (String cloudSiteId, String cloudOwner, String tenantId, String instanceId) throws MsoException {
         if (logger.isDebugEnabled()) {
             logger.debug (String.format("Query multicloud HEAT stack: %s in tenant %s", instanceId, tenantId));
         }
@@ -265,7 +268,7 @@
         StackInfo returnInfo = new StackInfo();
         returnInfo.setName(stackName);
 
-        String multicloudEndpoint = getMulticloudEndpoint(cloudSiteId, stackId);
+        String multicloudEndpoint = getMulticloudEndpoint(cloudSiteId, cloudOwner, stackId);
         RestClient multicloudClient = getMulticloudClient(multicloudEndpoint);
 
         if (multicloudClient != null) {
@@ -295,7 +298,7 @@
         return returnInfo;
     }
 
-    public StackInfo deleteStack (String cloudSiteId, String tenantId, String instanceId) throws MsoException {
+    public StackInfo deleteStack (String cloudSiteId, String cloudOwner, String tenantId, String instanceId) throws MsoException {
         if (logger.isDebugEnabled()) {
             logger.debug (String.format("Delete multicloud HEAT stack: %s in tenant %s", instanceId, tenantId));
         }
@@ -314,7 +317,7 @@
         returnInfo.setName(stackName);
         Response response = null;
 
-        String multicloudEndpoint = getMulticloudEndpoint(cloudSiteId, stackId);
+        String multicloudEndpoint = getMulticloudEndpoint(cloudSiteId, cloudOwner, stackId);
         RestClient multicloudClient = getMulticloudClient(multicloudEndpoint);
 
         if (multicloudClient != null) {
@@ -327,7 +330,7 @@
                 returnInfo.setStatus(HeatStatus.NOTFOUND);
                 returnInfo.setStatusMessage(response.getStatusInfo().getReasonPhrase());
             } else if (response.getStatus() == Response.Status.NO_CONTENT.getStatusCode()) {
-                return getStackStatus(cloudSiteId, tenantId, instanceId);
+                return getStackStatus(cloudSiteId, cloudOwner, tenantId, instanceId);
             } else {
                 returnInfo.setStatus(HeatStatus.FAILED);
                 returnInfo.setStatusMessage(response.getStatusInfo().getReasonPhrase());
@@ -355,11 +358,11 @@
         return HeatStatus.UNKNOWN;
     }
 
-    private StackInfo getStackStatus(String cloudSiteId, String tenantId, String instanceId) throws MsoException {
-        return getStackStatus(cloudSiteId, tenantId, instanceId, false, 0, false);
+    private StackInfo getStackStatus(String cloudSiteId, String cloudOwner, String tenantId, String instanceId) throws MsoException {
+        return getStackStatus(cloudSiteId, cloudOwner, tenantId, instanceId, false, 0, false);
     }
 
-    private StackInfo getStackStatus(String cloudSiteId, String tenantId, String instanceId, boolean pollForCompletion, int timeoutMinutes, boolean backout) throws MsoException {
+    private StackInfo getStackStatus(String cloudSiteId, String cloudOwner, String tenantId, String instanceId, boolean pollForCompletion, int timeoutMinutes, boolean backout) throws MsoException {
         StackInfo stackInfo = new StackInfo();
 
         // If client has requested a final response, poll for stack completion
@@ -379,7 +382,7 @@
 
             while (true) {
                 try {
-                    stackInfo = queryStack(cloudSiteId, tenantId, instanceId);
+                    stackInfo = queryStack(cloudSiteId, cloudOwner, tenantId, instanceId);
                     logger.debug (stackInfo.getStatus() + " (" + instanceId + ")");
 
                     if (HeatStatus.BUILDING.equals(stackInfo.getStatus())) {
@@ -388,7 +391,7 @@
                         if (pollTimeout <= 0) {
                             // Note that this should not occur, since there is a timeout specified
                             // in the Openstack (multicloud?) call.
-                            logger.error(String.format("%s %s %s %s %s %s %s %d %s", MessageEnum.RA_CREATE_STACK_TIMEOUT.toString(), cloudSiteId, tenantId, instanceId, stackInfo.getStatus(), "", "", ErrorCode.AvailabilityError.getValue(), "Create stack timeout"));
+                            logger.error(String.format("%s %s %s %s %s %s %s %s %d %s", MessageEnum.RA_CREATE_STACK_TIMEOUT.toString(), cloudOwner, cloudSiteId, tenantId, instanceId, stackInfo.getStatus(), "", "", ErrorCode.AvailabilityError.getValue(), "Create stack timeout"));
                             createTimedOut = true;
                             break;
                         }
@@ -410,17 +413,17 @@
                     } else {
                         try {
                             logger.debug("Create Stack error - unable to query for stack status - attempting to delete stack: " + instanceId + " - This will likely fail and/or we won't be able to query to see if delete worked");
-                            StackInfo deleteInfo = deleteStack(cloudSiteId, tenantId, instanceId);
+                            StackInfo deleteInfo = deleteStack(cloudSiteId, cloudOwner, tenantId, instanceId);
                             // this may be a waste of time - if we just got an exception trying to query the stack - we'll just
                             // get another one, n'est-ce pas?
                             boolean deleted = false;
                             while (!deleted) {
                                 try {
-                                    StackInfo queryInfo = queryStack(cloudSiteId, tenantId, instanceId);
+                                    StackInfo queryInfo = queryStack(cloudSiteId, cloudOwner, tenantId, instanceId);
                                     logger.debug("Deleting " + instanceId + ", status: " + queryInfo.getStatus());
                                     if (HeatStatus.DELETING.equals(queryInfo.getStatus())) {
                                         if (deletePollTimeout <= 0) {
-                                            logger.error(String.format("%s %s %s %s %s %s %s %d %s", MessageEnum.RA_CREATE_STACK_TIMEOUT.toString(), cloudSiteId, tenantId, instanceId,
+                                            logger.error(String.format("%s %s %s %s %s %s %s %s %d %s", MessageEnum.RA_CREATE_STACK_TIMEOUT.toString(), cloudOwner, cloudSiteId, tenantId, instanceId,
                                                     queryInfo.getStatus(), "", "", ErrorCode.AvailabilityError.getValue(),
                                                     "Rollback: DELETE stack timeout"));
                                             break;
@@ -466,15 +469,15 @@
                     try {
                         logger.debug("Create Stack errored - attempting to DELETE stack: " + instanceId);
                         logger.debug("deletePollInterval=" + deletePollInterval + ", deletePollTimeout=" + deletePollTimeout);
-                        StackInfo deleteInfo = deleteStack(cloudSiteId, tenantId, instanceId);
+                        StackInfo deleteInfo = deleteStack(cloudSiteId, cloudOwner, tenantId, instanceId);
                         boolean deleted = false;
                         while (!deleted) {
                             try {
-                                StackInfo queryInfo = queryStack(cloudSiteId, tenantId, instanceId);
+                                StackInfo queryInfo = queryStack(cloudSiteId, cloudOwner, tenantId, instanceId);
                                 logger.debug("Deleting " + instanceId + ", status: " + queryInfo.getStatus());
                                 if (HeatStatus.DELETING.equals(queryInfo.getStatus())) {
                                     if (deletePollTimeout <= 0) {
-                                        logger.error(String.format("%s %s %s %s %s %s %s %d %s", MessageEnum.RA_CREATE_STACK_TIMEOUT.toString(), cloudSiteId, tenantId, instanceId,
+                                        logger.error(String.format("%s %s %s %s %s %s %s %s %d %s", MessageEnum.RA_CREATE_STACK_TIMEOUT.toString(), cloudOwner, cloudSiteId, tenantId, instanceId,
                                                 queryInfo.getStatus(), "", "", ErrorCode.AvailabilityError.getValue(),
                                                 "Rollback: DELETE stack timeout"));
                                         break;
@@ -520,7 +523,7 @@
             }
         } else {
             // Get initial status, since it will have been null after the create.
-            stackInfo = queryStack(cloudSiteId, tenantId, instanceId);
+            stackInfo = queryStack(cloudSiteId, cloudOwner, tenantId, instanceId);
             logger.debug("Multicloud stack query status is: " + stackInfo.getStatus());
         }
         return stackInfo;
@@ -580,7 +583,7 @@
         return null;
     }
 
-    private String getMulticloudEndpoint(String cloudSiteId, String workloadId) throws MsoCloudSiteNotFound {
+    private String getMulticloudEndpoint(String cloudSiteId, String cloudOwner, String workloadId) throws MsoCloudSiteNotFound {
 
         CloudSite cloudSite = cloudConfig.getCloudSite(cloudSiteId).orElseThrow(() -> new MsoCloudSiteNotFound(cloudSiteId));
         String endpoint = cloudSite.getIdentityService().getIdentityUrl();
@@ -645,6 +648,7 @@
         throws VduException
     {
         String cloudSiteId = cloudInfo.getCloudSiteId();
+        String cloudOwner = cloudInfo.getCloudOwner();
         String tenantId = cloudInfo.getTenantId();
 
         // Translate the VDU ModelInformation structure to that which is needed for
@@ -670,6 +674,7 @@
 
         try {
             StackInfo stackInfo = createStack (cloudSiteId,
+                    cloudOwner,
                     tenantId,
                     instanceName,
                     heatTemplate,
@@ -697,11 +702,12 @@
         throws VduException
     {
         String cloudSiteId = cloudInfo.getCloudSiteId();
+        String cloudOwner = cloudInfo.getCloudOwner();
         String tenantId = cloudInfo.getTenantId();
 
         try {
             // Query the Cloudify Deployment object and  populate a VduInstance
-            StackInfo stackInfo = queryStack (cloudSiteId, tenantId, instanceId);
+            StackInfo stackInfo = queryStack (cloudSiteId, cloudOwner, tenantId, instanceId);
 
             return stackInfoToVduInstance(stackInfo);
         }
@@ -719,11 +725,12 @@
         throws VduException
     {
         String cloudSiteId = cloudInfo.getCloudSiteId();
+        String cloudOwner = cloudInfo.getCloudOwner();
         String tenantId = cloudInfo.getTenantId();
 
         try {
             // Delete the Multicloud stack
-            StackInfo stackInfo = deleteStack (cloudSiteId, tenantId, instanceId);
+            StackInfo stackInfo = deleteStack (cloudSiteId, cloudOwner, tenantId, instanceId);
 
             // Populate a VduInstance based on the deleted Cloudify Deployment object
             VduInstance vduInstance = stackInfoToVduInstance(stackInfo);
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoNeutronUtils.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoNeutronUtils.java
index 22ce6d9..93460ff 100644
--- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoNeutronUtils.java
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoNeutronUtils.java
@@ -23,21 +23,11 @@
 package org.onap.so.openstack.utils;
 
 
-import com.woorea.openstack.base.client.OpenStackBaseException;
-import com.woorea.openstack.base.client.OpenStackConnectException;
-import com.woorea.openstack.base.client.OpenStackRequest;
-import com.woorea.openstack.base.client.OpenStackResponseException;
-import com.woorea.openstack.keystone.Keystone;
-import com.woorea.openstack.keystone.model.Access;
-import com.woorea.openstack.keystone.model.Authentication;
-import com.woorea.openstack.keystone.utils.KeystoneUtils;
-import com.woorea.openstack.quantum.Quantum;
-import com.woorea.openstack.quantum.model.Network;
-import com.woorea.openstack.quantum.model.Networks;
-import com.woorea.openstack.quantum.model.Segment;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;
+import java.util.Optional;
+
 import org.onap.so.cloud.CloudConfig;
 import org.onap.so.cloud.authentication.AuthenticationMethodFactory;
 import org.onap.so.cloud.authentication.KeystoneAuthHolder;
@@ -62,6 +52,20 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import com.woorea.openstack.base.client.OpenStackBaseException;
+import com.woorea.openstack.base.client.OpenStackConnectException;
+import com.woorea.openstack.base.client.OpenStackRequest;
+import com.woorea.openstack.base.client.OpenStackResponseException;
+import com.woorea.openstack.keystone.Keystone;
+import com.woorea.openstack.keystone.model.Access;
+import com.woorea.openstack.keystone.model.Authentication;
+import com.woorea.openstack.keystone.utils.KeystoneUtils;
+import com.woorea.openstack.quantum.Quantum;
+import com.woorea.openstack.quantum.model.Network;
+import com.woorea.openstack.quantum.model.Networks;
+import com.woorea.openstack.quantum.model.Port;
+import com.woorea.openstack.quantum.model.Segment;
+
 @Component
 public class MsoNeutronUtils extends MsoCommonUtils
 {
@@ -211,6 +215,24 @@
 			throw me;
 		}
 	}
+    
+    public Optional<Port> getNeutronPort(String neutronPortId, String tenantId, String cloudSiteId)
+	{
+		try {
+			  CloudSite cloudSite = cloudConfig.getCloudSite(cloudSiteId).orElseThrow(
+		                () -> new MsoCloudSiteNotFound(cloudSiteId));
+				Quantum neutronClient = getNeutronClient (cloudSite, tenantId);
+			Port port = findPortById (neutronClient, neutronPortId);
+			if (port == null) {				
+				return Optional.empty();
+			}
+			return Optional.of(port);
+		}
+		catch (RuntimeException | MsoException e) {
+			logger.error("Error retrieving neutron port", e);
+			return Optional.empty();
+		}
+	}
 
 	/**
 	 * Delete the specified Network (by ID) in the given cloud.
@@ -488,6 +510,29 @@
 			}
 		}
 	}
+	
+	
+	private Port findPortById (Quantum neutronClient, String neutronPortId)
+	{
+		if (neutronPortId == null) {
+            return null;
+        }
+
+		try {
+			OpenStackRequest<Port> request = neutronClient.ports().show(neutronPortId);
+			Port port = executeAndRecordOpenstackRequest(request);
+			return port;
+		}
+		catch (OpenStackResponseException e) {
+			if (e.getStatus() == 404) {
+				return null;
+			} else {
+				logger.error("{} {} Openstack Error, GET Neutron Port By ID ({}): ", MessageEnum.RA_CONNECTION_EXCEPTION,
+					ErrorCode.DataError.getValue(), neutronPortId, e);
+				throw e;
+			}
+		}
+	}
 
 	/*
 	 * Find a network (or query its existence) by its Name.  This method avoids an
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/beans/VnfRollbackTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/beans/VnfRollbackTest.java
index 163f141..444a9a8 100644
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/beans/VnfRollbackTest.java
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/beans/VnfRollbackTest.java
@@ -33,6 +33,7 @@
 	
 	private String vnfId = "testVnfId";
 	private String tenantId = "testTenantId";
+	private String cloudOwner = "testCloudOwner";
 	private String cloudSiteId = "testCloudSiteId";
 	private boolean tenantCreated = true;
 	private boolean vnfCreated = true;
@@ -42,16 +43,17 @@
 	private String requestType = "testRequestType";
 	private String modelCustomizationUuid = "testModelCustimizationUuid";
 	private String orchestrationMode = "testOrchestrationMode";
-	private static final String VNF_ROLLBACK_STRING = "VnfRollback: cloud=testCloudSiteId, tenant=testTenantId, vnf=testVnfId, "
+	private static final String VNF_ROLLBACK_STRING = "VnfRollback: cloud=testCloudSiteId, cloudOwner=testCloudOwner, tenant=testTenantId, vnf=testVnfId, "
 			+ "tenantCreated=true, vnfCreated=true, requestType = testRequestType, modelCustomizationUuid=testModelCustimizationUuid, mode=testOrchestrationMode";
 	
 	@Test
 	public void VnfRollbackInstantiationTest() {
-		vnfRollback = new VnfRollback(vnfId, tenantId, cloudSiteId, tenantCreated, vnfCreated,
+		vnfRollback = new VnfRollback(vnfId, tenantId, cloudOwner, cloudSiteId, tenantCreated, vnfCreated,
 				msoRequest, volumeGroupName, volumeGroupId, requestType, modelCustomizationUuid);
 		
 		assertEquals(vnfId, vnfRollback.getVnfId());
 		assertEquals(tenantId, vnfRollback.getTenantId());
+		assertEquals(cloudOwner, vnfRollback.getCloudOwner());
 		assertEquals(cloudSiteId, vnfRollback.getCloudSiteId());
 		assertEquals(tenantCreated, vnfRollback.getTenantCreated());
 		assertEquals(vnfCreated, vnfRollback.getVnfCreated());
@@ -64,11 +66,12 @@
 	
 	@Test
 	public void VnfRollbackInstantiationOrchestrationModeTest() {
-		vnfRollback = new VnfRollback(vnfId, tenantId, cloudSiteId, tenantCreated, vnfCreated,
+		vnfRollback = new VnfRollback(vnfId, tenantId, cloudOwner, cloudSiteId, tenantCreated, vnfCreated,
 				msoRequest, volumeGroupName, volumeGroupId, requestType, modelCustomizationUuid, orchestrationMode);
 		
 		assertEquals(vnfId, vnfRollback.getVnfId());
 		assertEquals(tenantId, vnfRollback.getTenantId());
+		assertEquals(cloudOwner, vnfRollback.getCloudOwner());
 		assertEquals(cloudSiteId, vnfRollback.getCloudSiteId());
 		assertEquals(tenantCreated, vnfRollback.getTenantCreated());
 		assertEquals(vnfCreated, vnfRollback.getVnfCreated());
@@ -82,7 +85,7 @@
 	
 	@Test
 	public void toStringTest() {
-		vnfRollback = new VnfRollback(vnfId, tenantId, cloudSiteId, tenantCreated, vnfCreated,
+		vnfRollback = new VnfRollback(vnfId, tenantId, cloudOwner, cloudSiteId, tenantCreated, vnfCreated,
 				msoRequest, volumeGroupName, volumeGroupId, requestType, modelCustomizationUuid, orchestrationMode);
 		
 		assertEquals(VNF_ROLLBACK_STRING, vnfRollback.toString());
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java
index f9fc928..888d376 100644
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java
@@ -229,7 +229,7 @@
         StubOpenStack.mockOpenStackResponseAccess(wireMockPort);
         StubOpenStack.mockOpenStackPostStack_200("OpenstackResponse_Stack_Created.json");
         StubOpenStack.mockOpenStackGet("TEST-stack/stackId");
-        StackInfo stackInfo = heatUtils.createStack(cloudSite.getId(), "tenantId", "TEST-stack",
+        StackInfo stackInfo = heatUtils.createStack(cloudSite.getId(), "CloudOwner", "tenantId", "TEST-stack",
             "TEST-heat", new HashMap<>(), false, 1, "TEST-env",
             new HashMap<>(), new HashMap<>(), false);
         assertNotNull(stackInfo);
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsWithUpdateTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsWithUpdateTest.java
index b735e73..5691d9c 100644
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsWithUpdateTest.java
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsWithUpdateTest.java
@@ -67,6 +67,7 @@
 	@InjectMocks
 	private MsoHeatUtilsWithUpdate heatUtils;
 	
+    private String cloudOwner;
 	private String cloudSiteId;
 	private String tenantId;
 	private String stackName;
@@ -79,6 +80,7 @@
 	public void before() {
 		MockitoAnnotations.initMocks(this);
 		
+        cloudOwner = "cloudOwner";
 		cloudSiteId = "cloudSiteId";
 		tenantId = "tenantId";
 		stackName = "stackName";
@@ -104,7 +106,7 @@
 		doReturn("0").when(environment).getProperty(isA(String.class), isA(String.class));
 		doReturn(updateStack).when(heatUtils).queryHeatStack(isA(Heat.class), isA(String.class));
 		
-		StackInfo actualStackInfo = heatUtils.updateStack(cloudSiteId, tenantId, stackName, 
+		StackInfo actualStackInfo = heatUtils.updateStack(cloudSiteId, cloudOwner, tenantId, stackName, 
 				heatTemplate, stackInputs, pollForCompletion, timeoutMinutes);
 		
 		assertThat(actualStackInfo, sameBeanAs(expectedStackInfo));
@@ -129,7 +131,7 @@
 		doReturn("0").when(environment).getProperty(isA(String.class), isA(String.class));
 		doReturn(updateStack).when(heatUtils).queryHeatStack(isA(Heat.class), isA(String.class));
 		
-		StackInfo actualStackInfo = heatUtils.updateStack(cloudSiteId, tenantId, stackName, 
+		StackInfo actualStackInfo = heatUtils.updateStack(cloudSiteId, cloudOwner, tenantId, stackName, 
 				heatTemplate, stackInputs, pollForCompletion, timeoutMinutes, environmentString);
 		
 		assertThat(actualStackInfo, sameBeanAs(expectedStackInfo));
@@ -155,7 +157,7 @@
 		doReturn("0").when(environment).getProperty(isA(String.class), isA(String.class));
 		doReturn(updateStack).when(heatUtils).queryHeatStack(isA(Heat.class), isA(String.class));
 		
-		StackInfo actualStackInfo = heatUtils.updateStack(cloudSiteId, tenantId, stackName, 
+		StackInfo actualStackInfo = heatUtils.updateStack(cloudSiteId, cloudOwner, tenantId, stackName, 
 				heatTemplate, stackInputs, pollForCompletion, timeoutMinutes , environmentString, files);
 		
 		assertThat(actualStackInfo, sameBeanAs(expectedStackInfo));
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java
index fcb651e..b999b49 100644
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java
@@ -64,7 +64,7 @@
             .willReturn(aResponse().withHeader("Content-Type", "application/json")
                 .withBody(CREATE_STACK_RESPONSE)
                 .withStatus(HttpStatus.SC_CREATED)));
-        StackInfo result = multicloudUtils.createStack("MTN13", "TEST-tenant", "TEST-stack",
+        StackInfo result = multicloudUtils.createStack("MTN13", "CloudOwner", "TEST-tenant", "TEST-stack",
             "TEST-heat", new HashMap<>(), false, 200, "TEST-env",
             new HashMap<>(), new HashMap<>());
         assertNotNull(result);
@@ -79,7 +79,7 @@
             cloudSite.setIdentityService(new CloudIdentity());
             when(cloudConfigMock.getCloudSite("MTN13")).
                 thenReturn(Optional.of(cloudSite));
-            multicloudUtilsMock.createStack("MTN13", "TEST-tenant", "TEST-stack",
+            multicloudUtilsMock.createStack("MTN13", "CloudOwner", "TEST-tenant", "TEST-stack",
                 "TEST-heat", new HashMap<>(), false, 200, "TEST-env",
                 new HashMap<>(), new HashMap<>());
         } catch (MsoException e) {
@@ -95,7 +95,7 @@
             stubFor(post(urlPathEqualTo("/v2.0"))
                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
                     .withStatus(HttpStatus.SC_BAD_REQUEST)));
-            multicloudUtils.createStack("MTN13", "TEST-tenant", "TEST-stack",
+            multicloudUtils.createStack("MTN13", "CloudOwner", "TEST-tenant", "TEST-stack",
                 "TEST-heat", new HashMap<>(), false, 200, "TEST-env",
                 new HashMap<>(), new HashMap<>());
         } catch (MsoException e) {
@@ -110,7 +110,7 @@
         stubFor(post(urlPathEqualTo("/v2.0"))
             .willReturn(aResponse().withHeader("Content-Type", "application/json")
                 .withStatus(HttpStatus.SC_CREATED)));
-        StackInfo result = multicloudUtils.createStack("MTN13", "TEST-tenant", "TEST-stack",
+        StackInfo result = multicloudUtils.createStack("MTN13", "CloudOwner", "TEST-tenant", "TEST-stack",
             "TEST-heat", new HashMap<>(), false, 200, "TEST-env",
             new HashMap<>(), new HashMap<>());
         assertNotNull(result);
diff --git a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vdu/CloudInfo.java b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vdu/CloudInfo.java
index a56a692..f7db785 100644
--- a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vdu/CloudInfo.java
+++ b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vdu/CloudInfo.java
@@ -7,9 +7,9 @@
  * 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.
@@ -22,36 +22,44 @@
 
 /**
  * Cloud information structure for deploying/managing a VDU.  Includes the cloud site
- * as well as tenant information within the site.  Currently this is defined as a 
+ * as well as tenant information within the site.  Currently this is defined as a
  * cloud site ID. which would map to a CloudConfig entry.
  * Perhaps the CloudConfig entry itself should be provided, instead of requiring each
  * plug-in to query it.
- * 
+ *
  * The meaning of 'tenant' may differ by cloud provider, but every cloud supports some
  * sort of tenant partitioning.
- * 
+ *
  */
 public class CloudInfo {
-	
+
 	private String cloudSiteId;
-	private String tenantId;  	
+	private String cloudOwner;
+	private String tenantId;
 	private String tenantName;//bpmn query and pass
-	
+
 	public CloudInfo() {
 	}
-	
-	public CloudInfo (String cloudSiteId, String tenantId, String tenantName) {
+
+	public CloudInfo (String cloudSiteId, String cloudOwner, String tenantId, String tenantName) {
 		this.cloudSiteId = cloudSiteId;
+		this.cloudOwner = cloudOwner;
 		this.tenantId = tenantId;
 		this.tenantName = tenantName;
 	}
-	
+
 	public String getCloudSiteId() {
 		return cloudSiteId;
 	}
 	public void setCloudSiteId(String cloudSiteId) {
 		this.cloudSiteId = cloudSiteId;
 	}
+    public String getCloudOwner() {
+        return cloudOwner;
+    }
+    public void setCloudOwner(String cloudOwner) {
+        this.cloudOwner = cloudOwner;
+    }
 	public String getTenantId() {
 		return tenantId;
 	}
@@ -64,6 +72,6 @@
 	public void setTenantName(String tenantName) {
 		this.tenantName = tenantName;
 	}
-	
-	
+
+
 }
\ No newline at end of file
diff --git a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/CreateVfModuleRequest.java b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/CreateVfModuleRequest.java
index a136ff7..80e0a95 100644
--- a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/CreateVfModuleRequest.java
+++ b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/CreateVfModuleRequest.java
@@ -43,6 +43,7 @@
 @XmlAccessorType(XmlAccessType.FIELD)
 public class CreateVfModuleRequest extends VfRequestCommon {
 	private String cloudSiteId;
+	private String cloudOwner;
 	private String tenantId;
 
 	private String vnfId;
@@ -75,6 +76,14 @@
 		this.cloudSiteId = cloudSiteId;
 	}
 
+	public String getCloudOwner() {
+		return cloudOwner;
+	}
+
+	public void setCloudOwner(String cloudOwner) {
+		this.cloudOwner = cloudOwner;
+	}
+
 	public String getTenantId() {
 		return tenantId;
 	}
diff --git a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/CreateVolumeGroupRequest.java b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/CreateVolumeGroupRequest.java
index d402004..a1443f5 100644
--- a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/CreateVolumeGroupRequest.java
+++ b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/CreateVolumeGroupRequest.java
@@ -39,6 +39,7 @@
 @XmlAccessorType(XmlAccessType.FIELD)
 public class CreateVolumeGroupRequest extends VfRequestCommon {
 	private String cloudSiteId;
+	private String cloudOwner;
 	private String tenantId;
 	private String volumeGroupName;
 	private String volumeGroupId;
@@ -65,6 +66,14 @@
 		this.cloudSiteId = cloudSiteId;
 	}
 
+	public String getCloudOwner() {
+		return cloudOwner;
+	}
+
+	public void setCloudOwner(String cloudOwner) {
+		this.cloudOwner = cloudOwner;
+	}
+
 	public String getTenantId() {
 		return tenantId;
 	}
diff --git a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/DeleteVfModuleRequest.java b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/DeleteVfModuleRequest.java
index 6ce9b2f..d9825dd 100644
--- a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/DeleteVfModuleRequest.java
+++ b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/DeleteVfModuleRequest.java
@@ -37,6 +37,7 @@
 	 */
 	private static final long serialVersionUID = -8504083539107392561L;
 	private String cloudSiteId;
+	private String cloudOwner;
 	private String tenantId;
 	private String vnfId;
 	private String vfModuleId;
@@ -56,6 +57,14 @@
 		this.cloudSiteId = cloudSiteId;
 	}
 
+	public String getCloudOwner() {
+		return cloudOwner;
+	}
+
+	public void setCloudOwner(String cloudOwner) {
+		this.cloudOwner = cloudOwner;
+	}
+
 	public String getTenantId() {
 		return tenantId;
 	}
diff --git a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/DeleteVolumeGroupRequest.java b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/DeleteVolumeGroupRequest.java
index d17c5dd..aba53a4 100644
--- a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/DeleteVolumeGroupRequest.java
+++ b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/DeleteVolumeGroupRequest.java
@@ -7,9 +7,9 @@
  * 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.
@@ -32,6 +32,7 @@
 @XmlRootElement(name = "deleteVolumeGroupRequest")
 public class DeleteVolumeGroupRequest extends VfRequestCommon {
 	private String cloudSiteId;
+	private String cloudOwner;
 	private String tenantId;
 	private String volumeGroupId;
 	private String volumeGroupStackId;
@@ -49,6 +50,14 @@
 		this.cloudSiteId = cloudSiteId;
 	}
 
+    public String getCloudOwner() {
+        return cloudOwner;
+    }
+
+    public void setCloudOwner(String cloudOwner) {
+        this.cloudOwner = cloudOwner;
+    }
+
 	public String getTenantId() {
 		return tenantId;
 	}
@@ -80,7 +89,7 @@
 	public void setMsoRequest(MsoRequest msoRequest) {
 		this.msoRequest = msoRequest;
 	}
-	
+
 	@Override
 	public String toString() {
 		return new ToStringBuilder(this).appendSuper(super.toString()).append("cloudSiteId", cloudSiteId)
diff --git a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/UpdateVfModuleRequest.java b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/UpdateVfModuleRequest.java
index bac9eae..a02dc1f 100644
--- a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/UpdateVfModuleRequest.java
+++ b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/UpdateVfModuleRequest.java
@@ -7,9 +7,9 @@
  * 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.
@@ -40,6 +40,7 @@
 public class UpdateVfModuleRequest extends VfRequestCommon {
 
 	private String cloudSiteId;
+	private String cloudOwner;
 	private String tenantId;
 
 	private String vnfId;
@@ -62,7 +63,7 @@
 	private String requestType;
 	private Boolean failIfExists;
 	private Boolean backout;
-	
+
 	@XmlJavaTypeAdapter(MapAdapter.class)
 	private Map<String,Object> vfModuleParams = new HashMap<>();
 	private MsoRequest msoRequest = new MsoRequest();
@@ -75,6 +76,14 @@
 		this.cloudSiteId = cloudSiteId;
 	}
 
+    public String getCloudOwner() {
+        return cloudOwner;
+    }
+
+    public void setCloudOwner(String cloudOwner) {
+        this.cloudOwner = cloudOwner;
+    }
+
 	public String getTenantId() {
 		return tenantId;
 	}
diff --git a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/UpdateVolumeGroupRequest.java b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/UpdateVolumeGroupRequest.java
index d3b685a..e7c8171 100644
--- a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/UpdateVolumeGroupRequest.java
+++ b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/UpdateVolumeGroupRequest.java
@@ -7,9 +7,9 @@
  * 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.
@@ -39,6 +39,7 @@
 @XmlAccessorType(XmlAccessType.FIELD)
 public class UpdateVolumeGroupRequest extends VfRequestCommon {
 	private String cloudSiteId;
+	private String cloudOwner;
 	private String tenantId;
 	private String volumeGroupId;
 	private String volumeGroupStackId;
@@ -62,6 +63,14 @@
 		this.cloudSiteId = cloudSiteId;
 	}
 
+    public String getCloudOwner() {
+        return cloudOwner;
+    }
+
+    public void setCloudOwner(String cloudOwner) {
+        this.cloudOwner = cloudOwner;
+    }
+
 	public String getTenantId() {
 		return tenantId;
 	}
diff --git a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/VfModuleRollback.java b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/VfModuleRollback.java
index 0e716e5..a6a9886 100644
--- a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/VfModuleRollback.java
+++ b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/VfModuleRollback.java
@@ -7,9 +7,9 @@
  * 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.
@@ -36,6 +36,7 @@
 	private String vfModuleStackId;
 	private boolean vfModuleCreated = false;
 	private String tenantId;
+	private String cloudOwner;
 	private String cloudSiteId;
 	private MsoRequest msoRequest;
 	private String messageId;
@@ -51,6 +52,7 @@
 		this.vfModuleStackId = vfModuleStackId;
 		this.vfModuleCreated = vrb.getVnfCreated();
 		this.tenantId = vrb.getTenantId();
+		this.cloudOwner = vrb.getCloudOwner();
 		this.cloudSiteId = vrb.getCloudSiteId();
 		this.msoRequest = vrb.getMsoRequest();
 		this.messageId = messageId;
@@ -59,6 +61,7 @@
 
 	public VfModuleRollback(String vnfId, String vfModuleId,
 			String vfModuleStackId, boolean vfModuleCreated, String tenantId,
+			String cloudOwner,
 			String cloudSiteId,
 			MsoRequest msoRequest,
 			String messageId) {
@@ -68,6 +71,7 @@
 		this.vfModuleStackId = vfModuleStackId;
 		this.vfModuleCreated = vfModuleCreated;
 		this.tenantId = tenantId;
+		this.cloudOwner = cloudOwner;
 		this.cloudSiteId = cloudSiteId;
 		this.msoRequest = msoRequest;
 		this.messageId = messageId;
@@ -109,6 +113,12 @@
 	public void setCloudSiteId(String cloudSiteId) {
 		this.cloudSiteId = cloudSiteId;
 	}
+    public String getCloudOwner() {
+        return cloudOwner;
+    }
+    public void setCloudOwner(String cloudOwner) {
+        this.cloudOwner = cloudOwner;
+    }
 	public MsoRequest getMsoRequest() {
 		return msoRequest;
 	}
diff --git a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/VolumeGroupRollback.java b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/VolumeGroupRollback.java
index 2795ba0..ea7ce58 100644
--- a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/VolumeGroupRollback.java
+++ b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/VolumeGroupRollback.java
@@ -7,9 +7,9 @@
  * 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.
@@ -34,6 +34,7 @@
 //	“volumeGroupId”: “<A&AI_ VOLUME_GROUP_ID>”,
 //	“volumeGroupStackId”: “<VOLUME_GROUP _STACK_ID>”,
 //	 “tenantId”: “<TENANT_ID>”,
+//  "cloudOwnerId"" "<CLOUD_OWNER>",
 //	“cloudSiteId”: “<CLOUD_CLLI>”,
 //	“volumeGroupCreated”: TRUE|FALSE,
 //	“msoRequest”: {
@@ -45,6 +46,7 @@
 	private String volumeGroupId;
 	private String volumeGroupStackId;
 	private String tenantId;
+	private String cloudOwnerId;
 	private String cloudSiteId;
 	private boolean volumeGroupCreated = false;
 	private MsoRequest msoRequest;
@@ -58,6 +60,7 @@
 		this.volumeGroupId      = vrb.getVolumeGroupId();
 		this.volumeGroupStackId = volumeGroupStackId;
 		this.tenantId           = vrb.getTenantId();
+		this.cloudOwnerId       = vrb.getCloudOwnerId();
 		this.cloudSiteId        = vrb.getCloudSiteId();
 		this.volumeGroupCreated = vrb.isVolumeGroupCreated();
 		this.msoRequest         = vrb.getMsoRequest();
@@ -69,6 +72,7 @@
 			String volumeGroupStackId,
 			boolean volumeGroupCreated,
 			String tenantId,
+			String cloudOwnerId,
 			String cloudSiteId,
 			MsoRequest msoRequest,
 			String messageId)
@@ -78,6 +82,7 @@
 		this.volumeGroupStackId = volumeGroupStackId;
 		this.volumeGroupCreated = volumeGroupCreated;
 		this.tenantId = tenantId;
+		this.cloudOwnerId = cloudOwnerId;
 		this.cloudSiteId = cloudSiteId;
 		this.msoRequest = msoRequest;
 		this.messageId = messageId;
@@ -107,7 +112,12 @@
 	public void setCloudSiteId(String cloudSiteId) {
 		this.cloudSiteId = cloudSiteId;
 	}
-	public boolean isVolumeGroupCreated() {
+	public String getCloudOwnerId() {
+	    return cloudOwnerId;
+	}
+	public void setCloudOwnerId(String cloudOwnerId) {
+	    this.cloudOwnerId = cloudOwnerId;
+	}public boolean isVolumeGroupCreated() {
 		return volumeGroupCreated;
 	}
 	public void setVolumeGroupCreated(boolean volumeGroupCreated) {
diff --git a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/openstack/beans/VnfRollback.java b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/openstack/beans/VnfRollback.java
index ba7f653..1c7164a 100644
--- a/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/openstack/beans/VnfRollback.java
+++ b/adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/openstack/beans/VnfRollback.java
@@ -7,9 +7,9 @@
  * 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.
@@ -31,6 +31,7 @@
 public class VnfRollback {
 	private String vnfId;
 	private String tenantId;
+	private String cloudOwner;
 	private String cloudSiteId;
 	private boolean tenantCreated = false;
 	private boolean vnfCreated = false;
@@ -49,9 +50,10 @@
 
 	/**
 	 * For backwards compatibility... orchestration mode defaults to HEAT
-	 * 
+	 *
 	 * @param vnfId
 	 * @param tenantId
+	 * @param cloudOwner
 	 * @param cloudSiteId
 	 * @param tenantCreated
 	 * @param vnfCreated
@@ -61,13 +63,14 @@
 	 * @param requestType
 	 * @param modelCustomizationUuid
 	 */
-	public VnfRollback(String vnfId, String tenantId, String cloudSiteId,
+	public VnfRollback(String vnfId, String tenantId, String cloudOwner, String cloudSiteId,
 			boolean tenantCreated, boolean vnfCreated,
 			MsoRequest msoRequest,
 			String volumeGroupName, String volumeGroupId, String requestType, String modelCustomizationUuid) {
 		super();
 		this.vnfId = vnfId;
 		this.tenantId = tenantId;
+		this.cloudOwner = cloudOwner;
 		this.cloudSiteId = cloudSiteId;
 		this.tenantCreated = tenantCreated;
 		this.vnfCreated = vnfCreated;
@@ -79,9 +82,10 @@
 	}
 
 	/**
-	 * 
+	 *
 	 * @param vnfId
 	 * @param tenantId
+	 * @param cloudOwner
 	 * @param cloudSiteId
 	 * @param tenantCreated
 	 * @param vnfCreated
@@ -91,13 +95,14 @@
 	 * @param requestType
 	 * @param modelCustomizationUuid
 	 */
-	public VnfRollback(String vnfId, String tenantId, String cloudSiteId,
+	public VnfRollback(String vnfId, String tenantId, String cloudOwner, String cloudSiteId,
 			boolean tenantCreated, boolean vnfCreated,
 			MsoRequest msoRequest, String volumeGroupName, String volumeGroupId,
 			String requestType, String modelCustomizationUuid, String orchestrationMode) {
 		super();
 		this.vnfId = vnfId;
 		this.tenantId = tenantId;
+		this.cloudOwner = cloudOwner;
 		this.cloudSiteId = cloudSiteId;
 		this.tenantCreated = tenantCreated;
 		this.vnfCreated = vnfCreated;
@@ -128,6 +133,12 @@
 	public void setCloudSiteId(String cloudId) {
 		this.cloudSiteId = cloudId;
 	}
+    public String getCloudOwner() {
+        return cloudOwner;
+    }
+    public void setCloudOwner(String cloudOwner) {
+        this.cloudOwner = cloudOwner;
+    }
 	public boolean getTenantCreated() {
 		return tenantCreated;
 	}
@@ -204,7 +215,7 @@
 	}
 	@Override
     public String toString() {
-		return "VnfRollback: cloud=" + cloudSiteId + ", tenant=" + tenantId +
+		return "VnfRollback: owner=" + cloudOwner + ", cloud=" + cloudSiteId + ", tenant=" + tenantId +
 				", vnf=" + vnfId + ", tenantCreated=" + tenantCreated +
 				", vnfCreated=" + vnfCreated + ", requestType = " + requestType
 				+ ", modelCustomizationUuid=" + this.modelCustomizationUuid
diff --git a/adapters/mso-adapters-rest-interface/src/test/resources/createVfModuleRequest-with-params.xml b/adapters/mso-adapters-rest-interface/src/test/resources/createVfModuleRequest-with-params.xml
index 76ba369..1ff24a5 100644
--- a/adapters/mso-adapters-rest-interface/src/test/resources/createVfModuleRequest-with-params.xml
+++ b/adapters/mso-adapters-rest-interface/src/test/resources/createVfModuleRequest-with-params.xml
@@ -1,5 +1,6 @@
 <createVfModuleRequest>
 	<cloudSiteId>RegionOne</cloudSiteId>
+	<cloudOwner>CloudOwner</cloudOwner>
 	<tenantId>09d8566ea45e43aa974cf447ed591d77</tenantId>
 	<vnfId>8daea639-82b9-4da6-aec9-5054f006a82d</vnfId>
 	<vnfName>vcpe_vnf_vcpe_infra_201903101808</vnfName>
@@ -203,4 +204,4 @@
 	</msoRequest>
 	<messageId>11c8ec20-a1f8-4aa2-926f-e55d67a30f8b-1552241542248</messageId>
 	<notificationUrl>http://so-bpmn-infra.onap:8081/mso/WorkflowMessage/VNFAResponse/11c8ec20-a1f8-4aa2-926f-e55d67a30f8b-1552241542248</notificationUrl>
-</createVfModuleRequest>
\ No newline at end of file
+</createVfModuleRequest>
diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V5.6__Fix_CVNFC_Customization.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V5.6__Fix_CVNFC_Customization.sql
new file mode 100644
index 0000000..f09c736
--- /dev/null
+++ b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V5.6__Fix_CVNFC_Customization.sql
@@ -0,0 +1,23 @@
+use catalogdb;
+
+DROP TABLE vnf_vfmodule_cvnfc_configuration_customization;
+
+CREATE TABLE IF NOT EXISTS vnf_vfmodule_cvnfc_configuration_customization (
+  `ID` INT(11) NOT NULL AUTO_INCREMENT, 
+  `MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, 
+  `MODEL_INSTANCE_NAME` VARCHAR(200) NOT NULL, 
+  `CONFIGURATION_TYPE` VARCHAR(200) NULL, 
+  `CONFIGURATION_ROLE` VARCHAR(200) NULL, 
+  `CONFIGURATION_FUNCTION` VARCHAR(200) NULL, 
+  `POLICY_NAME` VARCHAR(200) NULL, 
+  `CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
+  `CONFIGURATION_MODEL_UUID` VARCHAR(200) NOT NULL,
+  `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) DEFAULT NULL,
+  `VF_MODULE_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) DEFAULT NULL, 
+  `CVNFC_CUSTOMIZATION_ID` INT(11) DEFAULT NULL,
+  PRIMARY KEY (`ID`), 
+  INDEX `fk_vnf_vfmodule_cvnfc_config_cust__configuration_idx` (`CONFIGURATION_MODEL_UUID` ASC), 
+ 
+  CONSTRAINT `fk_vnf_vfmod_cvnfc_config_cust__configuration_resource` FOREIGN KEY (`CONFIGURATION_MODEL_UUID`) 
+  REFERENCES `configuration` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE = INNODB AUTO_INCREMENT = 20654 DEFAULT CHARACTER SET = LATIN1;
\ No newline at end of file
diff --git a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/CvnfcCatalogDbQueryTest.java b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/CvnfcCatalogDbQueryTest.java
index 89f4824..898e8ea 100644
--- a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/CvnfcCatalogDbQueryTest.java
+++ b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/CvnfcCatalogDbQueryTest.java
@@ -89,7 +89,7 @@
 		CvnfcCustomization found = foundCvnfcCustomization.get(0);
 		
 		CvnfcCustomization templateCvnfcCustomization = new CvnfcCustomization();
-		BeanUtils.copyProperties(found, templateCvnfcCustomization, "vnfVfmoduleCvnfcConfigurationCustomization");
+		BeanUtils.copyProperties(found, templateCvnfcCustomization, "vnfVfmoduleCvnfcConfigurationCustomization", "vfModuleCustomization", "vnfcCustomization", "vnfResourceCustomization");
 		
         assertThat(cvnfcCustomization, sameBeanAs(templateCvnfcCustomization)
         		.ignoring("id")
@@ -99,86 +99,23 @@
 	}
 	
 	@Test
-	public void getLinkedVnfVfmoduleCvnfcConfigurationCustomizationTest() {
+	public void cVnfcByCustomizationUUID_Test() {
 		
-    	CvnfcCustomization cvnfcCustomization = setUpCvnfcCustomization("0c042562-2bac-11e9-b210-d663bd873d93");
-    	
-    	VnfcCustomization vnfcCustomization = setUpVnfcCustomization();
-    	vnfcCustomization.setModelCustomizationUUID("d95d704a-9ff2-11e8-98d0-529269fb1459");
-    	cvnfcCustomization.setVnfcCustomization(vnfcCustomization);
-    	
-		ConfigurationResource configurationResource = new ConfigurationResource();
-		configurationResource.setToscaNodeType("FabricConfiguration");
-		configurationResource.setModelInvariantUUID("modelInvariantUUID");
-		configurationResource.setModelUUID("modelUUID");
-		configurationResource.setModelName("modelName");
-		configurationResource.setModelVersion("modelVersion");
-		configurationResource.setDescription("description");
-		configurationResource.setToscaNodeType("toscaNodeTypeFC");
-		
-		VnfResource vnfResource = new VnfResource();
-		vnfResource.setModelUUID("6f19c5fa-2b19-11e9-b210-d663bd873d93");
-		vnfResource.setModelVersion("modelVersion");
-		vnfResource.setOrchestrationMode("orchestrationMode");
-		
-		VfModule vfModule = new VfModule();
-		vfModule.setModelUUID("98aa2a6e-2b18-11e9-b210-d663bd873d93");
-		vfModule.setModelInvariantUUID("9fe57860-2b18-11e9-b210-d663bd873d93");
-		vfModule.setIsBase(true);
-		vfModule.setModelName("modelName");
-		vfModule.setModelVersion("modelVersion");
-		vfModule.setVnfResources(vnfResource);
-		
-    	VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
-    	vfModuleCustomization.setModelCustomizationUUID("bdbf984a-2b16-11e9-b210-d663bd873d93");
-    	vfModuleCustomization.setVfModule(vfModule);
-    	cvnfcCustomization.setVfModuleCustomization(vfModuleCustomization);
-    	
-    	VnfResourceCustomization vnfResourceCustomization = new VnfResourceCustomization();
-    	vnfResourceCustomization.setModelCustomizationUUID("6912dd02-2b16-11e9-b210-d663bd873d93"); 
-    	vnfResourceCustomization.setModelInstanceName("testModelInstanceName");
-    	vnfResourceCustomization.setVnfResources(vnfResource);
-    	cvnfcCustomization.setVnfResourceCustomization(vnfResourceCustomization);
-    	
-    	VnfVfmoduleCvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization = new VnfVfmoduleCvnfcConfigurationCustomization();
-    	vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationFunction("configurationFunction");
-    	vnfVfmoduleCvnfcConfigurationCustomization.setModelCustomizationUUID("64627fec-2b1b-11e9-b210-d663bd873d93");
-    	vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
-    	vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
-    	vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName");
-    	vnfVfmoduleCvnfcConfigurationCustomization.setVfModuleCustomization(vfModuleCustomization);
-    	vnfVfmoduleCvnfcConfigurationCustomization.setVnfResourceCustomization(vnfResourceCustomization);
-    	
-    	Set<VnfVfmoduleCvnfcConfigurationCustomization> vnfVfmoduleCvnfcConfigurationCustomizationSet = new HashSet<VnfVfmoduleCvnfcConfigurationCustomization>();
-    	vnfVfmoduleCvnfcConfigurationCustomizationSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
-    	cvnfcCustomization.setVnfVfmoduleCvnfcConfigurationCustomization(vnfVfmoduleCvnfcConfigurationCustomizationSet);
-    	
-    	vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
-    	
-    	cvnfcCustomizationRepository.save(cvnfcCustomization);
+    	CvnfcCustomization cvnfcCustomization = setUpCvnfcCustomization("dadc2c8c-2bab-11e9-b210-d663bd873d93");
    	
-		List<CvnfcCustomization> foundCvnfcCustomization = client.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("6912dd02-2b16-11e9-b210-d663bd873d93","bdbf984a-2b16-11e9-b210-d663bd873d93");
-		assertNotNull(foundCvnfcCustomization);
-		assertTrue(foundCvnfcCustomization.size() > 0);
-		CvnfcCustomization found = foundCvnfcCustomization.get(0);
-
-        Set<VnfVfmoduleCvnfcConfigurationCustomization>  vnfVfmoduleCvnfcConfigurationCustomizations =  found.getVnfVfmoduleCvnfcConfigurationCustomization();
-        if (vnfVfmoduleCvnfcConfigurationCustomizations.size() > 0){
-        	for(VnfVfmoduleCvnfcConfigurationCustomization customization : vnfVfmoduleCvnfcConfigurationCustomizations) {
-        		Assert.assertTrue(customization.getConfigurationResource().getToscaNodeType().equalsIgnoreCase("toscaNodeTypeFC"));
-        	}
-        } else {
-        	Assert.fail("No linked VnfVfmoduleCvnfcConfigurationCustomization found for CvnfcCustomization");
-        }
-        
-        VnfVfmoduleCvnfcConfigurationCustomization  vnfVfmoduleCvnfcConfigurationCustomizationFound = client.
-        		getVnfVfmoduleCvnfcConfigurationCustomizationByVnfCustomizationUuidAndVfModuleCustomizationUuidAndCvnfcCustomizationUuid(
-        							"6912dd02-2b16-11e9-b210-d663bd873d93", 
-        							"bdbf984a-2b16-11e9-b210-d663bd873d93", 
-        							"0c042562-2bac-11e9-b210-d663bd873d93");
-        assertNotNull(vnfVfmoduleCvnfcConfigurationCustomizationFound);
-        System.out.println(vnfVfmoduleCvnfcConfigurationCustomizationFound.getModelCustomizationUUID());
+		CvnfcCustomization found = client.getCvnfcCustomizationByCustomizationUUID("dadc2c8c-2bab-11e9-b210-d663bd873d93");
+		assertNotNull(found);
+		
+		CvnfcCustomization templateCvnfcCustomization = new CvnfcCustomization();
+		BeanUtils.copyProperties(found, templateCvnfcCustomization, "vnfVfmoduleCvnfcConfigurationCustomization", "vfModuleCustomization", "vnfcCustomization", "vnfResourceCustomization");
+		
+        assertThat(cvnfcCustomization, sameBeanAs(templateCvnfcCustomization)
+        		.ignoring("id")
+        		.ignoring("created")
+        		.ignoring("vnfVfmoduleCvnfcConfigurationCustomization")
+        		.ignoring("vnfResourceCusteModelCustomizationUUID"));
 	}
+
 	
     protected CvnfcCustomization setUpCvnfcCustomization(String id){
     	CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/HeatStackAudit.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/HeatStackAudit.java
index 19e3ab7..72dee07 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/HeatStackAudit.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/HeatStackAudit.java
@@ -34,6 +34,7 @@
 import org.onap.aai.domain.yang.LInterfaces;
 import org.onap.aai.domain.yang.Vserver;
 import org.onap.so.openstack.utils.MsoHeatUtils;
+import org.onap.so.openstack.utils.MsoNeutronUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -43,6 +44,7 @@
 import com.woorea.openstack.heat.model.Resource;
 import com.woorea.openstack.heat.model.Resources;
 import com.woorea.openstack.heat.model.Stack;
+import com.woorea.openstack.quantum.model.Port;
 
 @Component
 public class HeatStackAudit {
@@ -55,6 +57,9 @@
 	protected MsoHeatUtils heat;
 
 	@Autowired
+	protected MsoNeutronUtils neutron;
+
+	@Autowired
 	protected AuditVServer auditVservers;
 
 	public boolean auditHeatStackCreate(String cloudRegion, String cloudOwner, String tenantId, String heatStackName) {
@@ -82,8 +87,9 @@
 		if(novaResources.isEmpty())
 			return true;
 		else{
+			List<Optional<Port>> neutronPortDetails = retrieveNeutronPortDetails(resources,cloudRegion,tenantId);
 			List<Resource> resourceGroups = extractResourceGroups(resources);
-			Set<Vserver> vserversToAudit = createVserverSet(resources, novaResources);
+			Set<Vserver> vserversToAudit = createVserverSet(resources, novaResources,neutronPortDetails);
 			Set<Vserver> vserversWithSubInterfaces = processSubInterfaces(cloudRegion, tenantId, resourceGroups,
 				vserversToAudit);
 			if(isCreateAudit){
@@ -186,18 +192,16 @@
 							lInterface.getInterfaceId(),subinterfaceStack.getId());
 	}
 
-	protected Set<Vserver> createVserverSet(Resources resources, List<Resource> novaResources) {
+	protected Set<Vserver> createVserverSet(Resources resources, List<Resource> novaResources, List<Optional<Port>> neutronPortDetails) {
 		Set<Vserver> vserversToAudit = new HashSet<>();
 		for (Resource novaResource : novaResources) {
 			Vserver auditVserver = new Vserver();
 			auditVserver.setLInterfaces(new LInterfaces());
 			auditVserver.setVserverId(novaResource.getPhysicalResourceId());
-			Stream<Resource> filteredNeutronNetworks = resources.getList().stream()
-					.filter(resource -> resource.getRequiredBy().contains(novaResource.getLogicalResourceId()))
-					.filter(resource -> "OS::Neutron::Port".equals(resource.getType()));
-			filteredNeutronNetworks.forEach(network -> {
+			Stream<Port> filteredNeutronPorts = filterNeutronPorts(novaResource, neutronPortDetails);
+			filteredNeutronPorts.forEach(port -> {
 				LInterface lInterface = new LInterface();
-				lInterface.setInterfaceId(network.getPhysicalResourceId());
+				lInterface.setInterfaceId(port.getId());
 				auditVserver.getLInterfaces().getLInterface().add(lInterface);
 			});
 			vserversToAudit.add(auditVserver);
@@ -205,6 +209,31 @@
 		return vserversToAudit;
 	}
 
+	/**
+	 * @param novaResource Single openstack resource that is of type Nova
+	 * @param neutronPorts List of Neutron ports created within the stack
+	 * @return Filtered list of neutron ports taht relate to the nova server in openstack
+	 */
+	protected Stream<Port> filterNeutronPorts(Resource novaResource, List<Optional<Port>> neutronPorts) {
+		List<Port> filteredNeutronPorts = neutronPorts.stream().filter(Optional::isPresent).map(Optional::get)
+				.collect(Collectors.toList());
+		return filteredNeutronPorts.stream()
+				.filter(port -> port.getDeviceId().equalsIgnoreCase(novaResource.getPhysicalResourceId()));
+	}
+	
+	/**
+	 * @param resources Resource stream created by the stack in openstack
+	 * @param cloudSiteId Unique site id to identify which openstack we talk to
+	 * @param tenantId The tenant within the cloud we are talking to where resouces exist
+	 * @return List of optional neutron ports found within the cloud site and tenant
+	 */
+	protected List<Optional<Port>> retrieveNeutronPortDetails(Resources resources,String cloudSiteId,String tenantId){
+		return resources.getList().stream()	
+				.filter(resource -> "OS::Neutron::Port".equals(resource.getType()))
+				.map(resource -> neutron.getNeutronPort(resource.getPhysicalResourceId(),cloudSiteId,tenantId)).collect(Collectors.toList());
+
+	}
+
 	protected Optional<String> extractResourcePathFromHref(String href) {		
 		try {
 			Optional<String> stackPath = extractStackPathFromHref(href);
@@ -234,3 +263,4 @@
 	}
 	
 }
+
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/MsoNetworkAdapterImpl.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/MsoNetworkAdapterImpl.java
index 108a714..8053cd6 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/MsoNetworkAdapterImpl.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/MsoNetworkAdapterImpl.java
@@ -11,9 +11,9 @@
  * 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.
@@ -89,7 +89,7 @@
     private static final String CREATE_NETWORK_CONTEXT = "CreateNetwork";
     private static final String MSO_CONFIGURATION_ERROR = "MsoConfigurationError";
     private static final String NEUTRON_MODE = "NEUTRON";
-    
+
     private static final Logger logger = LoggerFactory.getLogger(MsoNetworkAdapterImpl.class);
 
     @Autowired
@@ -104,13 +104,13 @@
     private MsoHeatUtilsWithUpdate heatWithUpdate;
     @Autowired
     private MsoCommonUtils commonUtils;
-    
-    @Autowired 	
+
+    @Autowired
     private NetworkResourceCustomizationRepository  networkCustomRepo;
-    
+
     @Autowired
     private CollectionNetworkResourceCustomizationRepository collectionNetworkCustomRepo;
-    
+
     @Autowired
     private NetworkResourceRepository  networkResourceRepo;
     /**
@@ -406,7 +406,7 @@
                 StackInfo heatStack = null;
                 long queryNetworkStarttime = System.currentTimeMillis ();
                 try {
-                    heatStack = heat.queryStack (cloudSiteId, tenantId, networkName);
+                    heatStack = heat.queryStack (cloudSiteId, "CloudOwner", tenantId, networkName);
                 } catch (MsoException me) {
                     me.addContext (CREATE_NETWORK_CONTEXT);
                     logger.error("{} {} Create Network (heat): query network {} in {}/{}: ",
@@ -534,6 +534,7 @@
                 	if (backout == null)
                 		backout = true;
                     heatStack = heat.createStack (cloudSiteId,
+                                                  "CloudOwner",
                                                   tenantId,
                                                   networkName,
                                                   template,
@@ -592,7 +593,7 @@
 
                 logger.debug("Network {} successfully created via HEAT", networkName);
             }
-       
+
         return;
     }
 
@@ -736,7 +737,7 @@
 
 
 
-    
+
             NetworkResource networkResource = networkCheck(
                     startTime,
                     networkType,
@@ -807,7 +808,7 @@
                 StackInfo heatStack = null;
                 long queryStackStarttime = System.currentTimeMillis();
                 try {
-                    heatStack = heat.queryStack(cloudSiteId, tenantId, networkName);
+                    heatStack = heat.queryStack(cloudSiteId, "CloudOwner", tenantId, networkName);
                 } catch (MsoException me) {
                     me.addContext(UPDATE_NETWORK_CONTEXT);
                     logger.error("{} {} Exception - QueryStack query {} in {}/{} ", MessageEnum.RA_QUERY_NETWORK_EXC,
@@ -863,9 +864,9 @@
 
                 boolean aic3template = false;
                 String aic3nw = AIC3_NW;
-                
+
                 aic3nw = environment.getProperty(AIC3_NW_PROPERTY, AIC3_NW);
-                
+
                 if (template.contains(aic3nw))
                     aic3template = true;
 
@@ -934,6 +935,7 @@
                 long updateStackStarttime = System.currentTimeMillis();
                 try {
                     heatStack = heatWithUpdate.updateStack(cloudSiteId,
+                            "CloudOwner",
                             tenantId,
                             networkId,
                             template,
@@ -1076,7 +1078,7 @@
 
 				throw new NetworkException(error, MsoExceptionCategory.USERDATA);
 			}
-		
+
         return networkResource;
     }
 
@@ -1180,7 +1182,7 @@
         StackInfo heatStack = null;
         long queryStackStarttime = System.currentTimeMillis ();
         try {
-            heatStack = heat.queryStack (cloudSiteId, tenantId, networkNameOrId);
+            heatStack = heat.queryStack (cloudSiteId, "CloudOwner", tenantId, networkNameOrId);
         } catch (MsoException me) {
         	me.addContext ("QueryNetwork");
             logger.error("{} {} Exception - Query Network (heat): {} in {}/{} ", MessageEnum.RA_QUERY_NETWORK_EXC,
@@ -1290,7 +1292,7 @@
         // Will capture execution time for metrics
         long startTime = System.currentTimeMillis ();
 
-       
+
             if (commonUtils.isNullOrEmpty (cloudSiteId)
                             || commonUtils.isNullOrEmpty(tenantId)
                             || commonUtils.isNullOrEmpty(networkId)) {
@@ -1301,7 +1303,7 @@
 
             // Retrieve the Network Resource definition
             NetworkResource networkResource = null;
-            
+
         	if (commonUtils.isNullOrEmpty(modelCustomizationUuid)) {
         		if (!commonUtils.isNullOrEmpty(networkType)) {
         			networkResource = networkResourceRepo.findFirstByModelNameOrderByModelVersionDesc(networkType);
@@ -1312,7 +1314,7 @@
 					networkResource = nrc.getNetworkResource();
 				}
 			}
-        	
+
             String mode = "";
             if (networkResource != null) {
                 logger.debug("Got Network definition from Catalog: {}", networkResource.toString());
@@ -1342,10 +1344,10 @@
                     // The deleteStack function in MsoHeatUtils returns NOTFOUND if the stack was not found or if the stack was deleted.
                     //  So query first to report back if stack WAS deleted or just NOTOFUND
                 	StackInfo heatStack = null;
-                	heatStack = heat.queryStack(cloudSiteId, tenantId, networkId);
+                	heatStack = heat.queryStack(cloudSiteId, "CloudOwner", tenantId, networkId);
                 	if (heatStack != null && heatStack.getStatus() != HeatStatus.NOTFOUND)
                 	{
-                		heat.deleteStack (tenantId, cloudSiteId, networkId, true);
+                		heat.deleteStack (tenantId, "CloudOwner", cloudSiteId, networkId, true);
                 		networkDeleted.value = true;
                 	}
                 	else
@@ -1359,7 +1361,7 @@
                     throw new NetworkException (me);
                 }
             }
-       
+
 
         // On success, nothing is returned.
         return;
@@ -1398,7 +1400,7 @@
             // Retrieve the Network Resource definition
             NetworkResource networkResource = null;
         	if (commonUtils.isNullOrEmpty(modelCustomizationUuid)) {
-				networkResource = networkCustomRepo.findOneByNetworkType(networkType).getNetworkResource(); 
+				networkResource = networkCustomRepo.findOneByNetworkType(networkType).getNetworkResource();
 			} else {
 				networkResource = networkCustomRepo.findOneByModelCustomizationUUID(modelCustomizationUuid).getNetworkResource();
 			}
@@ -1431,7 +1433,7 @@
                     try {
                         // The deleteStack function in MsoHeatUtils returns success if the stack
                         // was not found. So don't bother to query first.
-                        heat.deleteStack (tenantId, cloudSiteId, networkId, true);
+                        heat.deleteStack (tenantId, "CloudOwner", cloudSiteId, networkId, true);
                     } catch (MsoException me) {
                         me.addContext ("RollbackNetwork");
                         logger.error("{} {} Exception - Rollback Network (heat): {} in {}/{} ",
@@ -1505,7 +1507,7 @@
             stackParams.put (VLANS, csl);
         }
         if (routeTargets != null) {
-			
+
             String rtGlobal = "";
             String rtImport = "";
             String rtExport = "";
@@ -1528,7 +1530,7 @@
                   logger.debug("Input RT:{}", rt);
             		String role = rt.getRouteTargetRole();
             		String rtValue = rt.getRouteTarget();
-            		
+
             		if ("IMPORT".equalsIgnoreCase(role))
             		{
             			sep = rtImport.isEmpty() ? "" : ",";
@@ -1547,7 +1549,7 @@
 
             	}
             }
-            
+
             if (!rtImport.isEmpty())
             {
             	stackParams.put ("route_targets_import", rtImport);
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/ValetClient.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/ValetClient.java
index 5645759..b8e5040 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/ValetClient.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/ValetClient.java
@@ -11,9 +11,9 @@
  * 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.
@@ -60,13 +60,13 @@
 
 	@Autowired
 	private Environment environment;
-	
+
 	private static final String VALET_BASE_URL = "org.onap.so.adapters.valet.base_url";
 	private static final String VALET_BASE_PATH = "org.onap.so.adapters.valet.base_path";
 	private static final String VALET_AUTH = "org.onap.so.adapters.valet.basic_auth";
 	private static final String REQ_ID_HEADER_NAME = "X-RequestID";
 	protected static final String NO_STATUS_RETURNED = "no status returned from Valet";
-	
+
 	private static final String DEFAULT_BASE_URL = "http://localhost:8080/";
 	private static final String DEFAULT_BASE_PATH = "api/valet/placement/v1";
 	private static final String DEFAULT_AUTH_STRING = "";
@@ -75,13 +75,13 @@
 	private static final String BODY=", body=";
 	@Autowired
 	private ObjectMapper mapper;
-	
+
 	protected String baseUrl;
 	protected String basePath;
 	protected String authString;
-	
-	/* 
-	 * Setup the properties needed from properties file. Each will fall to a default  
+
+	/*
+	 * Setup the properties needed from properties file. Each will fall to a default
 	 */
 	@PostConstruct
 	private void setupParams() {
@@ -93,11 +93,11 @@
         logger.debug("Error retrieving valet properties. {}", e.getMessage());
     }
 	}
-		
+
 	/*
-	 * This method will be invoked to send a Create request to Valet. 
+	 * This method will be invoked to send a Create request to Valet.
 	 */
-	public GenericValetResponse<ValetCreateResponse> callValetCreateRequest(String requestId, String regionId, String tenantId, String serviceInstanceId,
+	public GenericValetResponse<ValetCreateResponse> callValetCreateRequest(String requestId, String regionId, String ownerId, String tenantId, String serviceInstanceId,
 			String vnfId, String vnfName, String vfModuleId, String vfModuleName, String keystoneUrl, HeatRequest heatRequest) throws Exception {
 		ResponseEntity<ValetCreateResponse> response = null;
 		GenericValetResponse<ValetCreateResponse> gvr = null;
@@ -105,12 +105,12 @@
 		try {
 			UriBuilder builder = UriBuilder.fromPath(baseUrl).path(basePath).queryParam(REQUEST_ID, requestId);
 			URI uri = builder.build();
-			
-			ValetCreateRequest vcr = this.createValetCreateRequest(regionId, tenantId, serviceInstanceId, vnfId, vnfName, vfModuleId, vfModuleName, keystoneUrl, heatRequest);
+
+			ValetCreateRequest vcr = this.createValetCreateRequest(regionId, ownerId, tenantId, serviceInstanceId, vnfId, vnfName, vfModuleId, vfModuleName, keystoneUrl, heatRequest);
 			String body = mapper.writeValueAsString(vcr);
 			HttpHeaders headers = generateHeaders(requestId);
-			HttpEntity<String> entity = new HttpEntity<>(body, headers);				
-			
+			HttpEntity<String> entity = new HttpEntity<>(body, headers);
+
 			response = getRestTemplate().exchange(uri, HttpMethod.POST, entity, ValetCreateResponse.class);
 			gvr = this.getGVRFromResponse(response);
 		} catch (Exception e) {
@@ -119,17 +119,17 @@
 		}
 		return gvr;
 	}
-	
+
 	private RestTemplate getRestTemplate(){
 		RestTemplate restTemplate = new RestTemplate();
 		restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(new HttpComponentsClientHttpRequestFactory()));
 		return restTemplate;
 	}
-	
+
 	/*
-	 * This method will be invoked to send an Update request to Valet. 
+	 * This method will be invoked to send an Update request to Valet.
 	 */
-	public GenericValetResponse<ValetUpdateResponse> callValetUpdateRequest(String requestId, String regionId, String tenantId, String serviceInstanceId, 
+	public GenericValetResponse<ValetUpdateResponse> callValetUpdateRequest(String requestId, String regionId, String ownerId, String tenantId, String serviceInstanceId,
 			String vnfId, String vnfName, String vfModuleId, String vfModuleName, String keystoneUrl, HeatRequest heatRequest) throws Exception {
 		ResponseEntity<ValetUpdateResponse> response = null;
 		GenericValetResponse<ValetUpdateResponse> gvr = null;
@@ -137,13 +137,13 @@
 		try {
 			UriBuilder builder = UriBuilder.fromPath(baseUrl).path(basePath).queryParam(REQUEST_ID, requestId);
 			URI uri = builder.build();
-			
-			ValetUpdateRequest vur = this.createValetUpdateRequest(regionId, tenantId, serviceInstanceId, vnfId, vnfName, vfModuleId, vfModuleName, keystoneUrl, heatRequest);			
+
+			ValetUpdateRequest vur = this.createValetUpdateRequest(regionId, ownerId, tenantId, serviceInstanceId, vnfId, vnfName, vfModuleId, vfModuleName, keystoneUrl, heatRequest);
 			String body = mapper.writeValueAsString(vur);
-			HttpHeaders headers = generateHeaders(requestId);	
+			HttpHeaders headers = generateHeaders(requestId);
 			HttpEntity<String> entity = new HttpEntity<>(body, headers);
-		
-			
+
+
 			response = getRestTemplate().exchange(uri, HttpMethod.PUT, entity, ValetUpdateResponse.class);
 			gvr = this.getGVRFromResponse(response);
 		} catch (Exception e) {
@@ -152,25 +152,25 @@
 		}
 		return gvr;
 	}
-	
+
 	/*
 	 * This method will be invoked to send a Delete request to Valet.
 	 */
-	public GenericValetResponse<ValetDeleteResponse> callValetDeleteRequest(String requestId, String regionId, String tenantId, String vfModuleId, String vfModuleName) throws Exception {
+	public GenericValetResponse<ValetDeleteResponse> callValetDeleteRequest(String requestId, String regionId, String ownerId, String tenantId, String vfModuleId, String vfModuleName) throws Exception {
 		ResponseEntity<ValetDeleteResponse> response = null;
 		GenericValetResponse<ValetDeleteResponse> gvr = null;
 
 		try {
 			UriBuilder builder = UriBuilder.fromPath(baseUrl).path(basePath).queryParam(REQUEST_ID, requestId);
 			URI uri = builder.build();
-			
-			ValetDeleteRequest vdr = this.createValetDeleteRequest(regionId, tenantId, vfModuleId, vfModuleName);
-			
+
+			ValetDeleteRequest vdr = this.createValetDeleteRequest(regionId, ownerId, tenantId, vfModuleId, vfModuleName);
+
 			String body = mapper.writeValueAsString(vdr);
 			HttpHeaders headers = generateHeaders(requestId);
 			HttpEntity<String> entity = new HttpEntity<>(body, headers);
-			
-			
+
+
 			response = getRestTemplate().exchange(uri, HttpMethod.DELETE, entity, ValetDeleteResponse.class);
 			gvr = this.getGVRFromResponse(response);
 		} catch (Exception e) {
@@ -179,9 +179,9 @@
 		}
 		return gvr;
 	}
-	
+
 	/*
-	 * This method is called to invoke a Confirm request to Valet. 
+	 * This method is called to invoke a Confirm request to Valet.
 	 */
 	public GenericValetResponse<ValetConfirmResponse> callValetConfirmRequest(String requestId, String stackId) throws Exception {
 		ResponseEntity<ValetConfirmResponse> response = null;
@@ -190,9 +190,9 @@
 		try {
 			UriBuilder builder = UriBuilder.fromPath(this.baseUrl).path(this.basePath).path("{requestId}/confirm/");
 			URI uri = builder.build(requestId);
-			
+
 			ValetConfirmRequest vcr = this.createValetConfirmRequest(stackId);
-			
+
 			String body = mapper.writeValueAsString(vcr);
 			HttpHeaders headers = generateHeaders(requestId);
 			HttpEntity<String> entity = new HttpEntity<>(body, headers);
@@ -206,8 +206,8 @@
 		}
 		return gvr;
 	}
-	
-	/* 
+
+	/*
 	 * This method is called to invoke a Rollback request to Valet.
 	 */
 	public GenericValetResponse<ValetRollbackResponse> callValetRollbackRequest(String requestId, String stackId, Boolean suppressRollback, String errorMessage) throws Exception {
@@ -217,14 +217,14 @@
 		try {
 			UriBuilder builder = UriBuilder.fromPath(this.baseUrl).path(this.basePath).path("{requestId}/rollback/");
 			URI uri = builder.build(requestId);
-			
+
 			ValetRollbackRequest vrr = this.createValetRollbackRequest(stackId, suppressRollback, errorMessage);
-		
+
 			String body = mapper.writeValueAsString(vrr);
 			HttpHeaders headers = generateHeaders(requestId);
 			HttpEntity<String> entity = new HttpEntity<>(body, headers);
-			
-			
+
+
 			response = getRestTemplate().exchange(uri, HttpMethod.PUT, entity, ValetRollbackResponse.class);
 			gvr = this.getGVRFromResponse(response);
 		} catch (Exception e) {
@@ -233,68 +233,71 @@
 		}
 		return gvr;
 	}
-	
+
 	/*
 	 * This method is to construct the ValetCreateRequest pojo
 	 */
-	private ValetCreateRequest createValetCreateRequest(String regionId, String tenantId, String serviceInstanceId,
+	private ValetCreateRequest createValetCreateRequest(String regionId, String ownerId, String tenantId, String serviceInstanceId,
 			String vnfId, String vnfName, String vfModuleId, String vfModuleName, String keystoneUrl, HeatRequest heatRequest) {
 		ValetCreateRequest vcr = new ValetCreateRequest();
 		vcr.setHeatRequest(heatRequest);
 		vcr.setKeystoneUrl(keystoneUrl);
 		vcr.setRegionId(regionId);
+		vcr.setOwnerId(ownerId);
 		vcr.setServiceInstanceId(serviceInstanceId);
 		vcr.setTenantId(tenantId);
 		vcr.setVfModuleId(vfModuleId);
 		vcr.setVfModuleName(vfModuleName);
 		vcr.setVnfId(vnfId);
 		vcr.setVnfName(vnfName);
-		
+
 		return vcr;
 	}
-	
+
 	/*
 	 * This method is to construct the ValetUpdateRequest pojo
 	 */
-	private ValetUpdateRequest createValetUpdateRequest(String regionId, String tenantId, String serviceInstanceId,
+	private ValetUpdateRequest createValetUpdateRequest(String regionId, String ownerId, String tenantId, String serviceInstanceId,
 			String vnfId, String vnfName, String vfModuleId, String vfModuleName, String keystoneUrl, HeatRequest heatRequest) {
 		ValetUpdateRequest vur = new ValetUpdateRequest();
 		vur.setHeatRequest(heatRequest);
 		vur.setKeystoneUrl(keystoneUrl);
 		vur.setRegionId(regionId == null ? "" : regionId);
+		vur.setOwnerId(ownerId == null ? "" : ownerId);
 		vur.setServiceInstanceId(serviceInstanceId == null ? "" : serviceInstanceId);
 		vur.setTenantId(tenantId == null ? "" : tenantId);
 		vur.setVfModuleId(vfModuleId == null ? "" : vfModuleId);
 		vur.setVfModuleName(vfModuleName == null ? "" : vfModuleName);
 		vur.setVnfId(vnfId == null ? "" : vnfId);
 		vur.setVnfName(vnfName == null ? "" : vnfName);
-		
+
 		return vur;
 	}
-	
+
 	/*
 	 * This method is to construct the ValetDeleteRequest pojo
 	 */
-	private ValetDeleteRequest createValetDeleteRequest(String regionId, String tenantId, String vfModuleId, String vfModuleName) {
+	private ValetDeleteRequest createValetDeleteRequest(String regionId, String ownerId, String tenantId, String vfModuleId, String vfModuleName) {
 		ValetDeleteRequest vdr = new ValetDeleteRequest();
 		vdr.setRegionId(regionId == null ? "" : regionId);
+		vdr.setOwnerId(ownerId == null ? "" : ownerId);
 		vdr.setTenantId(tenantId == null ? "" : tenantId);
 		vdr.setVfModuleId(vfModuleId == null ? "" : vfModuleId);
 		vdr.setVfModuleName(vfModuleName == null ? "" : vfModuleName);
-		
+
 		return vdr;
 	}
-	
+
 	/*
 	 * This method is to construct the ValetDeleteRequest pojo
 	 */
 	private ValetConfirmRequest createValetConfirmRequest(String stackId) {
 		ValetConfirmRequest vcr = new ValetConfirmRequest();
 		vcr.setStackId(stackId);
-		
+
 		return vcr;
 	}
-	
+
 	/*
 	 * This method is to construct the ValetRollbackRequest pojo
 	 */
@@ -303,10 +306,10 @@
 		vrr.setStackId(stackId);
 		vrr.setSuppressRollback(suppressRollback);
 		vrr.setErrorMessage(errorMessage);
-		
+
 		return vrr;
 	}
-	
+
 	private HttpHeaders generateHeaders(String requestId) {
 		HttpHeaders headers = new HttpHeaders();
 		headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
@@ -314,16 +317,16 @@
 			headers.add("Authorization",  "Basic " + this.authString);
 		}
 		headers.add(ValetClient.REQ_ID_HEADER_NAME, requestId);
-		
+
 		return headers;
 	}
-	
+
 	private <T> GenericValetResponse<T> getGVRFromResponse(ResponseEntity<T> response) {
 		GenericValetResponse<T> gvr = null;
 		if (response != null) {
 			T responseObj = response.getBody();
 			gvr = new GenericValetResponse<>(response.getStatusCodeValue(), ValetClient.NO_STATUS_RETURNED, responseObj);
-			
+
 		} else {
 			gvr = new GenericValetResponse<>(-1, ValetClient.NO_STATUS_RETURNED, null);
 		}
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/beans/ValetCreateRequest.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/beans/ValetCreateRequest.java
index d692416..cb92ecd 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/beans/ValetCreateRequest.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/beans/ValetCreateRequest.java
@@ -7,9 +7,9 @@
  * 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.
@@ -30,9 +30,11 @@
  */
 public class ValetCreateRequest implements Serializable {
 	private static final long serialVersionUID = 768026109321305392L;
-	
+
 	@JsonProperty("region_id")
 	private String regionId;
+	@JsonProperty("owner_id")
+	private String ownerId;
 	@JsonProperty("tenant_id")
 	private String tenantId;
 	@JsonProperty("service_instance_id")
@@ -49,17 +51,23 @@
 	private String keystoneUrl;
 	@JsonProperty("heat_request")
 	private HeatRequest heatRequest;
-	
+
 	public ValetCreateRequest() {
 		super();
 	}
-	
+
 	public String getRegionId() {
 		return this.regionId;
 	}
 	public void setRegionId(String regionId) {
 		this.regionId = regionId;
 	}
+    public String getOwnerId() {
+        return this.ownerId;
+    }
+    public void setOwnerId(String ownerId) {
+        this.ownerId = ownerId;
+    }
 	public String getTenantId() {
 		return this.tenantId;
 	}
@@ -108,10 +116,10 @@
 	public void setHeatRequest(HeatRequest heatRequest) {
 		this.heatRequest = heatRequest;
 	}
-	
+
 	@Override
 	public int hashCode() {
-		return Objects.hash(regionId, tenantId, serviceInstanceId, vnfId, vnfName, vfModuleId, vfModuleName, keystoneUrl, heatRequest);
+		return Objects.hash(regionId, ownerId, tenantId, serviceInstanceId, vnfId, vnfName, vfModuleId, vfModuleName, keystoneUrl, heatRequest);
 	}
 	@Override
 	public boolean equals(Object o) {
@@ -121,7 +129,8 @@
 			return false;
 		}
 		ValetCreateRequest vcr = (ValetCreateRequest) o;
-		return Objects.equals(regionId, vcr.regionId) 
+		return Objects.equals(regionId, vcr.regionId)
+		        && Objects.equals(ownerId, vcr.ownerId)
 				&& Objects.equals(tenantId, vcr.tenantId)
 				&& Objects.equals(serviceInstanceId, vcr.serviceInstanceId)
 				&& Objects.equals(vnfId, vcr.vnfId)
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/beans/ValetDeleteRequest.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/beans/ValetDeleteRequest.java
index 7bd5855..75d7df1 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/beans/ValetDeleteRequest.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/beans/ValetDeleteRequest.java
@@ -7,9 +7,9 @@
  * 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.
@@ -30,22 +30,30 @@
  */
 public class ValetDeleteRequest implements Serializable {
 	private static final long serialVersionUID = 768026109321305392L;
-	
+
 	@JsonProperty("region_id")
 	private String regionId;
+	@JsonProperty("owner_id")
+	private String ownerId;
 	@JsonProperty("tenant_id")
 	private String tenantId;
 	@JsonProperty("vf_module_id")
 	private String vfModuleId;
 	@JsonProperty("vf_module_name")
 	private String vfModuleName;
-	
+
 	public String getRegionId() {
 		return this.regionId;
 	}
 	public void setRegionId(String regionId) {
 		this.regionId = regionId;
 	}
+    public String getOwnerId() {
+        return this.ownerId;
+    }
+    public void setOwnerId(String ownerId) {
+        this.ownerId = ownerId;
+    }
 	public String getTenantId() {
 		return this.tenantId;
 	}
@@ -66,7 +74,7 @@
 	}
 	@Override
 	public int hashCode() {
-		return Objects.hash(regionId, tenantId, vfModuleId, vfModuleName);
+		return Objects.hash(regionId, ownerId, tenantId, vfModuleId, vfModuleName);
 	}
 	@Override
 	public boolean equals(Object o) {
@@ -76,7 +84,8 @@
 			return false;
 		}
 		ValetDeleteRequest vdr = (ValetDeleteRequest) o;
-		return Objects.equals(regionId, vdr.regionId) 
+		return Objects.equals(regionId, vdr.regionId)
+		        && Objects.equals(ownerId, vdr.ownerId)
 				&& Objects.equals(tenantId, vdr.tenantId)
 				&& Objects.equals(vfModuleId, vdr.vfModuleId)
 				&& Objects.equals(vfModuleName, vdr.vfModuleName);
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/beans/ValetUpdateRequest.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/beans/ValetUpdateRequest.java
index 360c07b..2d39dd1 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/beans/ValetUpdateRequest.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/valet/beans/ValetUpdateRequest.java
@@ -7,9 +7,9 @@
  * 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.
@@ -33,6 +33,8 @@
 
 	@JsonProperty("region_id")
 	private String regionId;
+	@JsonProperty("owner)_id")
+	private String ownerId;
 	@JsonProperty("tenant_id")
 	private String tenantId;
 	@JsonProperty("service_instance_id")
@@ -49,17 +51,23 @@
 	private String keystoneUrl;
 	@JsonProperty("heat_request")
 	private HeatRequest heatRequest;
-	
+
 	public ValetUpdateRequest() {
 		super();
 	}
-	
+
 	public String getRegionId() {
 		return this.regionId;
 	}
 	public void setRegionId(String regionId) {
 		this.regionId = regionId;
 	}
+    public String getOwnerId() {
+        return this.ownerId;
+    }
+    public void setOwnerId(String ownerId) {
+        this.ownerId = ownerId;
+    }
 	public String getTenantId() {
 		return this.tenantId;
 	}
@@ -110,7 +118,7 @@
 	}
 	@Override
 	public int hashCode() {
-		return Objects.hash(regionId, tenantId, serviceInstanceId, vnfId, vnfName, vfModuleId, vfModuleName, keystoneUrl, heatRequest);
+		return Objects.hash(regionId, ownerId, tenantId, serviceInstanceId, vnfId, vnfName, vfModuleId, vfModuleName, keystoneUrl, heatRequest);
 
 	}
 	@Override
@@ -121,9 +129,10 @@
 			return false;
 		}
 		ValetUpdateRequest vur = (ValetUpdateRequest) o;
-		return Objects.equals(regionId, vur.regionId) 
+		return Objects.equals(regionId, vur.regionId)
+				&& Objects.equals(ownerId, vur.ownerId)
 				&& Objects.equals(tenantId, vur.tenantId)
-				&& Objects.equals(serviceInstanceId, vur.serviceInstanceId)
+                && Objects.equals(serviceInstanceId, vur.serviceInstanceId)
 				&& Objects.equals(vnfId, vur.vnfId)
 				&& Objects.equals(vnfName, vur.vnfName)
 				&& Objects.equals(vfModuleId, vur.vfModuleId)
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapter.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapter.java
index c54b067..aafcb1c 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapter.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapter.java
@@ -44,6 +44,7 @@
 	 */
 	@WebMethod
 	public void createVnf (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
+                            @WebParam(name="cloudOwner") @XmlElement(required=false) String cloudOwner,
 							@WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 							@WebParam(name="vnfType") @XmlElement(required=true) String vnfType,
 							@WebParam(name="vnfVersion") @XmlElement(required=false) String vnfVersion,
@@ -62,6 +63,7 @@
 
 	@WebMethod
 	public void updateVnf (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
+                            @WebParam(name="cloudOwner") @XmlElement(required=false) String cloudOwner,
 							@WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 							@WebParam(name="vnfType") @XmlElement(required=true) String vnfType,
 							@WebParam(name="vnfVersion") @XmlElement(required=false) String vnfVersion,
@@ -76,6 +78,7 @@
 
 	@WebMethod
 	public void queryVnf (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
+                            @WebParam(name="cloudOwner") @XmlElement(required=false) String cloudOwner,
 							@WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 							@WebParam(name="vnfName") @XmlElement(required=true) String vnfName,
 							@WebParam(name="request") MsoRequest msoRequest,
@@ -87,6 +90,7 @@
 
 	@WebMethod
 	public void deleteVnf (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
+                            @WebParam(name="cloudOwner") @XmlElement(required=false) String cloudOwner,
 							@WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 							@WebParam(name="vnfName") @XmlElement(required=true) String vnfName,
 							@WebParam(name="request") MsoRequest msoRequest)
@@ -99,6 +103,7 @@
 
 	@WebMethod
 	public void createVfModule (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
+	                        @WebParam(name="cloudOwner") @XmlElement(required=false) String cloudOwner,
 							@WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 							@WebParam(name="vnfType") @XmlElement(required=true) String vnfType,
 							@WebParam(name="vnfVersion") @XmlElement(required=false) String vnfVersion,
@@ -121,6 +126,7 @@
 
 	@WebMethod
 	public void deleteVfModule (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
+	                        @WebParam(name="cloudOwner") @XmlElement(required=false) String cloudOwner,
 							@WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 							@WebParam(name="vfName") @XmlElement(required=true) String vfName,
 							@WebParam(name="request") MsoRequest msoRequest,
@@ -129,6 +135,7 @@
 
 	@WebMethod
 	public void updateVfModule (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
+	                        @WebParam(name="cloudOwner") @XmlElement(required=false) String cloudOwner,
 							@WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 							@WebParam(name="vnfType") @XmlElement(required=true) String vnfType,
 							@WebParam(name="vnfVersion") @XmlElement(required=false) String vnfVersion,
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterAsync.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterAsync.java
index 6f61f02..70afb1c 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterAsync.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterAsync.java
@@ -7,9 +7,9 @@
  * 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.
@@ -47,7 +47,8 @@
 	@WebMethod
 	@Oneway
 	public void createVnfA (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
-							@WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
+	                        @WebParam(name="cloudOwner") @XmlElement(required=false) String cloudOwner,
+	                        @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 							@WebParam(name="vnfType") @XmlElement(required=true) String vnfType,
 							@WebParam(name="vnfVersion") @XmlElement(required=false) String vnfVersion,
 							@WebParam(name="vnfName") @XmlElement(required=true) String vnfName,
@@ -60,10 +61,11 @@
 							@WebParam(name="messageId") @XmlElement(required=true) String messageId,
 							@WebParam(name="request") MsoRequest msoRequest,
 							@WebParam(name="notificationUrl") @XmlElement(required=true) String notificationUrl );
-	
+
 	@WebMethod
 	@Oneway
 	public void updateVnfA (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
+	                        @WebParam(name="cloudOwner") @XmlElement(required=false) String cloudOwner,
 							@WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 							@WebParam(name="vnfType") @XmlElement(required=true) String vnfType,
 							@WebParam(name="vnfVersion") @XmlElement(required=false) String vnfVersion,
@@ -74,10 +76,11 @@
 							@WebParam(name="messageId") @XmlElement(required=true) String messageId,
 							@WebParam(name="request") MsoRequest msoRequest,
 							@WebParam(name="notificationUrl") @XmlElement(required=true) String notificationUrl );
-							
+
 	@WebMethod
 	@Oneway
 	public void queryVnfA (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
+	                        @WebParam(name="cloudOwner") @XmlElement(required=false) String cloudOwner,
 							@WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 							@WebParam(name="vnfName") @XmlElement(required=true) String vnfName,
 							@WebParam(name="messageId") @XmlElement(required=true) String messageId,
@@ -87,6 +90,7 @@
 	@WebMethod
 	@Oneway
 	public void deleteVnfA (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
+	                        @WebParam(name="cloudOwner") @XmlElement(required=false) String cloudOwner,
 							@WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 							@WebParam(name="vnfName") @XmlElement(required=true) String vnfName,
 							@WebParam(name="messageId") @XmlElement(required=true) String messageId,
@@ -99,7 +103,7 @@
 						@WebParam(name="messageId") @XmlElement(required=true) String messageId,
 						@WebParam(name="notificationUrl") @XmlElement(required=true) String notificationUrl );
 
-	
+
 	@WebMethod
 	public void healthCheckA ();
 }
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterAsyncImpl.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterAsyncImpl.java
index fce14c7..5e42fa5 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterAsyncImpl.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterAsyncImpl.java
@@ -10,9 +10,9 @@
  * 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.
@@ -63,10 +63,10 @@
 
     private static final String BPEL_AUTH_PROP = "org.onap.so.adapters.vnf.bpelauth";
     private static final String ENCRYPTION_KEY_PROP = "org.onap.so.adapters.network.encryptionKey";
-    
+
     @Autowired
     private Environment environment;
-    
+
     @Autowired
     private MsoVnfAdapterImpl vnfImpl;
 
@@ -108,6 +108,7 @@
      * and translating the response to an asynchronous notification.
      *
      * @param cloudSiteId CLLI code of the cloud site in which to create the VNF
+     * @param cloudOwner cloud owner of the cloud site in which to create the VNF
      * @param tenantId Openstack tenant identifier
      * @param vnfType VNF type key, should match a VNF definition in catalog DB
      * @param vnfName Name to be assigned to the new VNF
@@ -119,6 +120,7 @@
      */
     @Override
     public void createVnfA (String cloudSiteId,
+                            String cloudOwner,
                             String tenantId,
                             String vnfType,
                             String vnfVersion,
@@ -143,6 +145,7 @@
 
         try {
             vnfAdapter.createVnf (cloudSiteId,
+                                  cloudOwner,
                                   tenantId,
                                   vnfType,
                                   vnfVersion,
@@ -203,6 +206,7 @@
 
     @Override
     public void updateVnfA (String cloudSiteId,
+                            String cloudOwner,
                             String tenantId,
                             String vnfType,
                             String vnfVersion,
@@ -225,7 +229,7 @@
         Holder <VnfRollback> vnfRollback = new Holder <> ();
 
         try {
-            vnfAdapter.updateVnf (cloudSiteId, tenantId, vnfType,vnfVersion, vnfName, requestType, volumeGroupHeatStackId, inputs, msoRequest, outputs, vnfRollback);
+            vnfAdapter.updateVnf (cloudSiteId, cloudOwner, tenantId, vnfType,vnfVersion, vnfName, requestType, volumeGroupHeatStackId, inputs, msoRequest, outputs, vnfRollback);
         } catch (VnfException e) {
             logger.error("{} {} Exception sending updateVnf notification ", MessageEnum.RA_UPDATE_VNF_ERR,
                 ErrorCode.BusinessProcesssError.getValue(), e);
@@ -277,6 +281,7 @@
      * ID, its status, and the set of outputs (from when the stack was created).
      *
      * @param cloudSiteId CLLI code of the cloud site in which to query
+     * @param cloudOwner cloud owner of cloud site in which to query
      * @param tenantId Openstack tenant identifier
      * @param vnfName VNF Name or Openstack ID
      * @param msoRequest Request tracking information for logs
@@ -284,6 +289,7 @@
      */
     @Override
     public void queryVnfA (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfName,
                            String messageId,
@@ -303,7 +309,7 @@
         Holder <Map <String, String>> outputs = new Holder <> ();
 
         try {
-            vnfAdapter.queryVnf (cloudSiteId, tenantId, vnfName, msoRequest, vnfExists, vnfId, status, outputs);
+            vnfAdapter.queryVnf (cloudSiteId, cloudOwner, tenantId, vnfName, msoRequest, vnfExists, vnfId, status, outputs);
         } catch (VnfException e) {
             logger.error("{} {} Exception sending queryVnfA notification ", MessageEnum.RA_QUERY_VNF_ERR,
                 ErrorCode.BusinessProcesssError.getValue(), e);
@@ -363,6 +369,7 @@
      * The method has no outputs.
      *
      * @param cloudSiteId CLLI code of the cloud site in which to delete
+     * @param cloudOwner cloud owner of cloud site in which to delete
      * @param tenantId Openstack tenant identifier
      * @param vnfName VNF Name or Openstack ID
      * @param msoRequest Request tracking information for logs
@@ -370,6 +377,7 @@
      */
     @Override
     public void deleteVnfA (String cloudSiteId,
+                            String cloudOwner,
                             String tenantId,
                             String vnfName,
                             String messageId,
@@ -383,7 +391,7 @@
         MsoVnfAdapter vnfAdapter = vnfImpl;
 
         try {
-            vnfAdapter.deleteVnf (cloudSiteId, tenantId, vnfName, msoRequest);
+            vnfAdapter.deleteVnf (cloudSiteId, cloudOwner, tenantId, vnfName, msoRequest);
         } catch (VnfException e) {
             logger.error("{} {} Exception sending deleteVnfA notification ", MessageEnum.RA_DELETE_VNF_ERR,
                 ErrorCode.BusinessProcesssError.getValue(), e);
@@ -630,7 +638,7 @@
 
         return notifyPort;
     }
-    
+
     public String getEncryptedProperty(String key, String defaultValue, String encryptionKey) {
     	try {
 			return CryptoUtils.decrypt(this.environment.getProperty(key), this.environment.getProperty(encryptionKey));
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterImpl.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterImpl.java
index af09e5a..0563d6c 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterImpl.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterImpl.java
@@ -164,6 +164,7 @@
      * orchestrator fails on a subsequent operation.
      *
      * @param cloudSiteId CLLI code of the cloud site in which to create the VNF
+     * @param cloudOwner cloud owner of the cloud region in which to create the VNF
      * @param tenantId Openstack tenant identifier
      * @param vnfType VNF type key, should match a VNF definition in catalog DB
      * @param vnfVersion VNF version key, should match a VNF definition in catalog DB
@@ -178,6 +179,7 @@
      */
     @Override
     public void createVnf (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfType,
                            String vnfVersion,
@@ -211,6 +213,7 @@
 				logger.debug("ERROR trying to parse the volumeGroupHeatStackId " + volumeGroupHeatStackId,e);
 			}
 			this.createVfModule(cloudSiteId,
+			        cloudOwner,
 					tenantId,
 					vnfType,
 					vnfVersion,
@@ -239,11 +242,12 @@
     		newRequestTypeSb.append(requestType);
             }
 		this.createVfModule(cloudSiteId,
-                                               tenantId,
+                cloudOwner,
+                tenantId,
 				vnfType,
 				vnfVersion,
 				genericVnfId,
-                                               vnfName,
+                vnfName,
                 vfModuleId,
 				newRequestTypeSb.toString(),
 				vfVolGroupHeatStackId,
@@ -263,6 +267,7 @@
 
     @Override
     public void updateVnf(String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfType,
                            String vnfVersion,
@@ -294,6 +299,7 @@
      */
     @Override
     public void queryVnf (String cloudSiteId,
+                          String cloudOwner,
                           String tenantId,
                           String vnfName,
                           MsoRequest msoRequest,
@@ -310,12 +316,12 @@
         StackInfo heatStack = null;
         long subStartTime = System.currentTimeMillis ();
         try {
-            heatStack = heat.queryStack (cloudSiteId, tenantId, vnfName);
+            heatStack = heat.queryStack (cloudSiteId, cloudOwner, tenantId, vnfName);
         } catch (MsoException me) {
             me.addContext ("QueryVNF");
             // Failed to query the Stack due to an openstack exception.
             // Convert to a generic VnfException
-            String error = "Query VNF: " + vnfName + " in " + cloudSiteId + "/" + tenantId + ": " + me;
+            String error = "Query VNF: " + vnfName + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
             logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vnfName, cloudSiteId,
                 tenantId, "OpenStack", "QueryVNF", ErrorCode.DataError.getValue(), "Exception - queryStack",
                 me);
@@ -351,12 +357,14 @@
      * The method has no outputs.
      *
      * @param cloudSiteId CLLI code of the cloud site in which to delete
+     * @param cloudOwner cloud owner of the cloud region in which to delete
      * @param tenantId Openstack tenant identifier
      * @param vnfName VNF Name or Openstack ID
      * @param msoRequest Request tracking information for logs
      */
     @Override
     public void deleteVnf (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfName,
                            MsoRequest msoRequest) throws VnfException {
@@ -371,13 +379,13 @@
         // could be thrown.
         long subStartTime = System.currentTimeMillis ();
         try {
-            heat.deleteStack (tenantId, cloudSiteId, vnfName, true);
+            heat.deleteStack (tenantId, cloudOwner, cloudSiteId, vnfName, true);
         } catch (MsoException me) {
             me.addContext ("DeleteVNF");
             // Failed to query the Stack due to an openstack exception.
             // Convert to a generic VnfException
-            String error = "Delete VNF: " + vnfName + " in " + cloudSiteId + "/" + tenantId + ": " + me;
-            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vnfName, cloudSiteId,
+            String error = "Delete VNF: " + vnfName + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
+            logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vnfName, cloudOwner, cloudSiteId,
                 tenantId, "OpenStack", "DeleteVNF", ErrorCode.DataError.getValue(), "Exception - DeleteVNF",
                 me);
             logger.debug(error);
@@ -405,23 +413,24 @@
 
         // Get the elements of the VnfRollback object for easier access
         String cloudSiteId = rollback.getCloudSiteId ();
+        String cloudOwner = rollback.getCloudOwner ();
         String tenantId = rollback.getTenantId ();
         String vnfId = rollback.getVnfId ();
 
-        logger.debug("Rolling Back VNF {} in {}", vnfId, cloudSiteId + "/" + tenantId);
+        logger.debug("Rolling Back VNF {} in {}", vnfId, cloudOwner + "/" + cloudSiteId + "/" + tenantId);
 
         // Use the MsoHeatUtils to delete the stack. Set the polling flag to true.
         // The possible outcomes of deleteStack are a StackInfo object with status
         // of NOTFOUND (on success) or FAILED (on error). Also, MsoOpenstackException
         // could be thrown.
         try {
-            heat.deleteStack (tenantId, cloudSiteId, vnfId, true);
+            heat.deleteStack (tenantId, cloudOwner, cloudSiteId, vnfId, true);
         } catch (MsoException me) {
             // Failed to rollback the Stack due to an openstack exception.
             // Convert to a generic VnfException
             me.addContext ("RollbackVNF");
-            String error = "Rollback VNF: " + vnfId + " in " + cloudSiteId + "/" + tenantId + ": " + me;
-            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vnfId, cloudSiteId,
+            String error = "Rollback VNF: " + vnfId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
+            logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vnfId, cloudOwner, cloudSiteId,
                 tenantId, "OpenStack", "DeleteStack", ErrorCode.DataError.getValue(),
                 "Exception - DeleteStack", me);
             logger.debug(error);
@@ -563,6 +572,7 @@
 
     @Override
     public void createVfModule(String cloudSiteId,
+            String cloudOwner,
             String tenantId,
             String vnfType,
             String vnfVersion,
@@ -632,6 +642,7 @@
         // Build a default rollback object (no actions performed)
         VnfRollback vfRollback = new VnfRollback();
         vfRollback.setCloudSiteId(cloudSiteId);
+        vfRollback.setCloudOwner(cloudOwner);
         vfRollback.setTenantId(tenantId);
         vfRollback.setMsoRequest(msoRequest);
         vfRollback.setRequestType(requestTypeString);
@@ -648,10 +659,10 @@
         StackInfo heatStack = null;
         long subStartTime1 = System.currentTimeMillis ();
         try {
-            heatStack = heat.queryStack (cloudSiteId, tenantId, vfModuleName);
+            heatStack = heat.queryStack (cloudSiteId, cloudOwner, tenantId, vfModuleName);
         } catch (MsoException me) {
-            String error = "Create VF Module: Query " + vfModuleName + " in " + cloudSiteId + "/" + tenantId + ": " + me ;
-            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName, cloudSiteId,
+            String error = "Create VF Module: Query " + vfModuleName + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me ;
+            logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName, cloudOwner, cloudSiteId,
                 tenantId, "OpenStack", "queryStack", ErrorCode.DataError.getValue(), "Exception - queryStack",
                 me);
             logger.debug(error);
@@ -666,43 +677,43 @@
         	HeatStatus status = heatStack.getStatus();
         	if (status == HeatStatus.INIT || status == HeatStatus.BUILDING || status == HeatStatus.DELETING || status == HeatStatus.UPDATING) {
         		// fail - it's in progress - return meaningful error
-                String error = "Create VF: Stack " + vfModuleName + " already exists and has status " + status.toString() + " in " + cloudSiteId + "/" + tenantId + "; please wait for it to complete, or fix manually.";
-              logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                  cloudSiteId, tenantId, "OpenStack", "queryStack", ErrorCode.DataError.getValue(),
+                String error = "Create VF: Stack " + vfModuleName + " already exists and has status " + status.toString() + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + "; please wait for it to complete, or fix manually.";
+              logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                  cloudOwner, cloudSiteId, tenantId, "OpenStack", "queryStack", ErrorCode.DataError.getValue(),
                   "Stack " + vfModuleName + " already exists");
               logger.debug(error);
-                throw new VnfAlreadyExists (vfModuleName, cloudSiteId, tenantId, heatStack.getCanonicalName ());
+                throw new VnfAlreadyExists (vfModuleName, cloudOwner, cloudSiteId, tenantId, heatStack.getCanonicalName ());
         	}
         	if (status == HeatStatus.FAILED) {
         		// fail - it exists and is in a FAILED state
-              String error = "Create VF: Stack " + vfModuleName + " already exists and is in FAILED state in " + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
-              logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                  cloudSiteId, tenantId, "OpenStack", "queryStack", ErrorCode.DataError.getValue(),
+              String error = "Create VF: Stack " + vfModuleName + " already exists and is in FAILED state in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
+              logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                  cloudOwner, cloudSiteId, tenantId, "OpenStack", "queryStack", ErrorCode.DataError.getValue(),
                   "Stack " + vfModuleName + " already exists and is " + "in FAILED state");
               logger.debug(error);
-                throw new VnfAlreadyExists (vfModuleName, cloudSiteId, tenantId, heatStack.getCanonicalName ());
+                throw new VnfAlreadyExists (vfModuleName, cloudOwner, cloudSiteId, tenantId, heatStack.getCanonicalName ());
         	}
         	if (status == HeatStatus.UNKNOWN || status == HeatStatus.UPDATED) {
         		// fail - it exists and is in a FAILED state
               String error =
                   "Create VF: Stack " + vfModuleName + " already exists and has status " + status.toString() + " in "
-                      + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
-              logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                  cloudSiteId, tenantId, "OpenStack", "queryStack", ErrorCode.DataError.getValue(),
+                      + cloudOwner + "/" + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
+              logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                  cloudOwner, cloudSiteId, tenantId, "OpenStack", "queryStack", ErrorCode.DataError.getValue(),
                   "Stack " + vfModuleName + " already exists and is " + "in UPDATED or UNKNOWN state");
               logger.debug(error);
-              throw new VnfAlreadyExists(vfModuleName, cloudSiteId, tenantId, heatStack.getCanonicalName());
+              throw new VnfAlreadyExists(vfModuleName, cloudOwner, cloudSiteId, tenantId, heatStack.getCanonicalName());
           }
         	if (status == HeatStatus.CREATED) {
         		// fail - it exists
         		if (failIfExists != null && failIfExists) {
                 String error =
-                    "Create VF: Stack " + vfModuleName + " already exists in " + cloudSiteId + "/" + tenantId;
-                logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                    cloudSiteId, tenantId, "OpenStack", "queryStack", ErrorCode.DataError.getValue(),
+                    "Create VF: Stack " + vfModuleName + " already exists in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId;
+                logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                    cloudOwner, cloudSiteId, tenantId, "OpenStack", "queryStack", ErrorCode.DataError.getValue(),
                     "Stack " + vfModuleName + " already exists");
                 logger.debug(error);
-                throw new VnfAlreadyExists(vfModuleName, cloudSiteId, tenantId, heatStack.getCanonicalName());
+                throw new VnfAlreadyExists(vfModuleName, cloudOwner, cloudSiteId, tenantId, heatStack.getCanonicalName());
             } else {
         			logger.debug ("Found Existing stack, status={}", heatStack.getStatus ());
         			// Populate the outputs from the existing stack.
@@ -722,22 +733,22 @@
         if (nestedStackId != null) {
         	try {
         		logger.debug("Querying for nestedStackId = {}", nestedStackId);
-        		nestedHeatStack = heat.queryStack(cloudSiteId, tenantId, nestedStackId);
+        		nestedHeatStack = heat.queryStack(cloudSiteId, cloudOwner, tenantId, nestedStackId);
         	} catch (MsoException me) {
         	    // Failed to query the Stack due to an openstack exception.
         	    // Convert to a generic VnfException
         	    me.addContext ("CreateVFModule");
-        	    String error = "Create VFModule: Attached heatStack ID Query " + nestedStackId + " in " + cloudSiteId + "/" + tenantId + ": " + me ;
-              logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName, cloudSiteId,
+        	    String error = "Create VFModule: Attached heatStack ID Query " + nestedStackId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me ;
+              logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName, cloudOwner, cloudSiteId,
                       tenantId, "OpenStack", "queryStack", ErrorCode.BusinessProcesssError.getValue(),
                       "MsoException trying to query nested stack", me);
               logger.debug("ERROR trying to query nested stack= {}", error);
         	    throw new VnfException (me);
         	}
         	if (nestedHeatStack == null || nestedHeatStack.getStatus() == HeatStatus.NOTFOUND) {
-        	    String error = "Create VFModule: Attached heatStack ID DOES NOT EXIST " + nestedStackId + " in " + cloudSiteId + "/" + tenantId + " USER ERROR"  ;
-              logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName,
-                  cloudSiteId, tenantId, error, "OpenStack", "queryStack",
+        	    String error = "Create VFModule: Attached heatStack ID DOES NOT EXIST " + nestedStackId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + " USER ERROR"  ;
+              logger.error("{} {} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName,
+                  cloudOwner, cloudSiteId, tenantId, error, "OpenStack", "queryStack",
                   ErrorCode.BusinessProcesssError.getValue(),
                   "Create VFModule: Attached heatStack ID " + "DOES NOT EXIST");
               logger.debug(error);
@@ -755,23 +766,23 @@
         if (nestedBaseStackId != null) {
         	try {
         		logger.debug("Querying for nestedBaseStackId = {}", nestedBaseStackId);
-        		nestedBaseHeatStack = heat.queryStack(cloudSiteId, tenantId, nestedBaseStackId);
+        		nestedBaseHeatStack = heat.queryStack(cloudSiteId, cloudOwner, tenantId, nestedBaseStackId);
         	} catch (MsoException me) {
         	    // Failed to query the Stack due to an openstack exception.
         	    // Convert to a generic VnfException
         	    me.addContext ("CreateVFModule");
-        	    String error = "Create VFModule: Attached baseHeatStack ID Query " + nestedBaseStackId + " in " + cloudSiteId + "/" + tenantId + ": " + me ;
+        	    String error = "Create VFModule: Attached baseHeatStack ID Query " + nestedBaseStackId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me ;
               logger
-                  .error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName, cloudSiteId,
+                  .error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName, cloudOwner, cloudSiteId,
                       tenantId, "OpenStack", "QueryStack", ErrorCode.BusinessProcesssError.getValue(),
                       "MsoException trying to query nested base stack", me);
               logger.debug("ERROR trying to query nested base stack= {}", error);
               throw new VnfException (me);
         	}
         	if (nestedBaseHeatStack == null || nestedBaseHeatStack.getStatus() == HeatStatus.NOTFOUND) {
-        	    String error = "Create VFModule: Attached base heatStack ID DOES NOT EXIST " + nestedBaseStackId + " in " + cloudSiteId + "/" + tenantId + " USER ERROR"  ;
-              logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName,
-                  cloudSiteId, tenantId, error, "OpenStack", "QueryStack",
+        	    String error = "Create VFModule: Attached base heatStack ID DOES NOT EXIST " + nestedBaseStackId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + " USER ERROR"  ;
+              logger.error("{} {} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName,
+                  cloudOwner, cloudSiteId, tenantId, error, "OpenStack", "QueryStack",
                   ErrorCode.BusinessProcesssError.getValue(),
                   "Create VFModule: Attached base heatStack ID DOES NOT EXIST");
               logger.debug("Exception occurred", error);
@@ -1170,7 +1181,7 @@
             boolean sendResponseToValet = false;
             if (isValetEnabled) {
 				Holder<Map<String, Object>> valetModifiedParamsHolder = new Holder<>();
-				sendResponseToValet = this.valetCreateRequest(cloudSiteId, tenantId, heatFilesObjects,
+				sendResponseToValet = this.valetCreateRequest(cloudSiteId, cloudOwner, tenantId, heatFilesObjects,
 						nestedTemplatesChecked, vfModuleName, backout, heatTemplate, newEnvironmentString, goldenInputs,
 						msoRequest, inputs, failRequestOnValetFailure, valetModifiedParamsHolder);
 				if (sendResponseToValet) {
@@ -1192,6 +1203,7 @@
                   logger.debug("heat is not null!!");
 
             		heatStack = heat.createStack (cloudSiteId,
+            		                          cloudOwner,
                                               tenantId,
                                               vfModuleName,
                                               template,
@@ -1209,9 +1221,9 @@
             	}
             } catch (MsoException me) {
                 me.addContext ("CreateVFModule");
-                String error = "Create VF Module " + vfModuleType + " in " + cloudSiteId + "/" + tenantId + ": " + me;
+                String error = "Create VF Module " + vfModuleType + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
                 logger
-                    .error("{} {} {} {} {} {} {}", MessageEnum.RA_CREATE_VNF_ERR.toString(), vfModuleType, cloudSiteId,
+                    .error("{} {} {} {} {} {} {} {}", MessageEnum.RA_CREATE_VNF_ERR.toString(), vfModuleType, cloudOwner, cloudSiteId,
                         tenantId, "OpenStack", ErrorCode.DataError.getValue(), "MsoException - createStack",
                         me);
                 logger.debug(error);
@@ -1227,9 +1239,9 @@
                 }
                 throw new VnfException (me);
             } catch (NullPointerException npe) {
-                String error = "Create VFModule " + vfModuleType + " in " + cloudSiteId + "/" + tenantId + ": " + npe;
+                String error = "Create VFModule " + vfModuleType + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + npe;
                 logger
-                    .error("{} {} {} {} {} {} {}", MessageEnum.RA_CREATE_VNF_ERR.toString(), vfModuleType, cloudSiteId,
+                    .error("{} {} {} {} {} {} {} {}", MessageEnum.RA_CREATE_VNF_ERR.toString(), vfModuleType, cloudOwner, cloudSiteId,
                         tenantId, "OpenStack", ErrorCode.DataError.getValue(),
                         "NullPointerException - createStack", npe);
                 logger.debug(error);
@@ -1268,12 +1280,13 @@
 
     @Override
     public void deleteVfModule (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfName,
                            MsoRequest msoRequest,
                            Holder <Map <String, String>> outputs) throws VnfException {
 
-        logger.debug("Deleting VF {} in ", vnfName, cloudSiteId + "/" + tenantId);
+        logger.debug("Deleting VF {} in ", vnfName, cloudOwner + "/" + cloudSiteId + "/" + tenantId);
         // Will capture execution time for metrics
         long startTime = System.currentTimeMillis ();
 
@@ -1281,13 +1294,13 @@
         // so we'll need to query first
         Map<String, Object> stackOutputs = null;
         try {
-            stackOutputs = heat.queryStackForOutputs(cloudSiteId, tenantId, vnfName);
+            stackOutputs = heat.queryStackForOutputs(cloudSiteId, cloudOwner, tenantId, vnfName);
         } catch (MsoException me) {
             // Failed to query the Stack due to an openstack exception.
             // Convert to a generic VnfException
             me.addContext ("DeleteVFModule");
-            String error = "Delete VFModule: Query to get outputs: " + vnfName + " in " + cloudSiteId + "/" + tenantId + ": " + me;
-            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vnfName, cloudSiteId,
+            String error = "Delete VFModule: Query to get outputs: " + vnfName + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
+            logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vnfName, cloudOwner, cloudSiteId,
                 tenantId, "OpenStack", "QueryStack", ErrorCode.DataError.getValue(), "Exception - QueryStack",
                 me);
             logger.debug(error);
@@ -1301,7 +1314,7 @@
         logger.debug("isValetEnabled={}, failRequestsOnValetFailure={}", isValetEnabled, failRequestOnValetFailure);
         boolean valetDeleteRequestSucceeded = false;
         if (isValetEnabled) {
-        	valetDeleteRequestSucceeded = this.valetDeleteRequest(cloudSiteId, tenantId, vnfName, msoRequest, failRequestOnValetFailure);
+        	valetDeleteRequestSucceeded = this.valetDeleteRequest(cloudSiteId, cloudOwner, tenantId, vnfName, msoRequest, failRequestOnValetFailure);
         }
 
         // Use the MsoHeatUtils to delete the stack. Set the polling flag to true.
@@ -1310,13 +1323,13 @@
         // could be thrown.
         long subStartTime = System.currentTimeMillis ();
         try {
-            heat.deleteStack (tenantId, cloudSiteId, vnfName, true);
+            heat.deleteStack (tenantId, cloudOwner, cloudSiteId, vnfName, true);
         } catch (MsoException me) {
             me.addContext ("DeleteVNF");
             // Failed to query the Stack due to an openstack exception.
             // Convert to a generic VnfException
-            String error = "Delete VF: " + vnfName + " in " + cloudSiteId + "/" + tenantId + ": " + me;
-            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vnfName, cloudSiteId,
+            String error = "Delete VF: " + vnfName + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
+            logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vnfName, cloudOwner, cloudSiteId,
                 tenantId, "OpenStack", "DeleteStack", ErrorCode.DataError.getValue(),
                 "Exception - deleteStack", me);
             logger.debug(error);
@@ -1350,6 +1363,7 @@
 
     @Override
     public void updateVfModule (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfType,
                            String vnfVersion,
@@ -1370,7 +1384,8 @@
 
     	StringBuilder sbInit = new StringBuilder();
     	sbInit.append("updateVfModule: \n");
-    	sbInit.append("cloudSiteId=" + cloudSiteId + "\n");
+    	sbInit.append("cloudOwner=" + cloudOwner + "\n");
+        sbInit.append("cloudSiteId=" + cloudSiteId + "\n");
     	sbInit.append("tenantId=" + tenantId + "\n");
     	sbInit.append("vnfType=" + vnfType + "\n");
     	sbInit.append("vnfVersion=" + vnfVersion + "\n");
@@ -1425,7 +1440,7 @@
         	vfModuleName = this.getVfModuleNameFromModuleStackId(vfModuleStackId);
         }
 
-        logger.debug ("Updating VFModule: " + vfModuleName + " of type " + vfModuleType + "in " + cloudSiteId + "/" + tenantId);
+        logger.debug ("Updating VFModule: " + vfModuleName + " of type " + vfModuleType + "in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId);
         logger.debug("requestTypeString = " + requestTypeString + ", nestedVolumeStackId = " + nestedStackId + ", nestedBaseStackId = " + nestedBaseStackId);
 
         // Will capture execution time for metrics
@@ -1434,6 +1449,7 @@
         // Build a default rollback object (no actions performed)
         VnfRollback vfRollback = new VnfRollback ();
         vfRollback.setCloudSiteId (cloudSiteId);
+        vfRollback.setCloudOwner (cloudOwner);
         vfRollback.setTenantId (tenantId);
         vfRollback.setMsoRequest (msoRequest);
         vfRollback.setRequestType(requestTypeString);
@@ -1447,13 +1463,13 @@
         long queryStackStarttime = System.currentTimeMillis ();
         logger.debug("UpdateVfModule - querying for {}", vfModuleName);
         try {
-            heatStack = heat.queryStack (cloudSiteId, tenantId, vfModuleName);
+            heatStack = heat.queryStack (cloudSiteId, cloudOwner, tenantId, vfModuleName);
         } catch (MsoException me) {
             // Failed to query the Stack due to an openstack exception.
             // Convert to a generic VnfException
             me.addContext ("UpdateVFModule");
-            String error = "Update VFModule: Query " + vfModuleName + " in " + cloudSiteId + "/" + tenantId + ": " + me;
-            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName, cloudSiteId,
+            String error = "Update VFModule: Query " + vfModuleName + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
+            logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName, cloudOwner, cloudSiteId,
                 tenantId, "OpenStack", "QueryStack", ErrorCode.DataError.getValue(), "Exception - QueryStack",
                 me);
             logger.debug(error);
@@ -1463,10 +1479,10 @@
         //TODO - do we need to check for the other status possibilities?
         if (heatStack == null || heatStack.getStatus () == HeatStatus.NOTFOUND) {
             // Not Found
-            String error = "Update VF: Stack " + vfModuleName + " does not exist in " + cloudSiteId + "/" + tenantId;
-            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_NOT_EXIST.toString(), vfModuleName, cloudSiteId,
+            String error = "Update VF: Stack " + vfModuleName + " does not exist in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId;
+            logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_NOT_EXIST.toString(), vfModuleName, cloudOwner, cloudSiteId,
                 tenantId, "OpenStack", "QueryStack", ErrorCode.DataError.getValue(), error);
-            throw new VnfNotFound (cloudSiteId, tenantId, vfModuleName);
+            throw new VnfNotFound (cloudSiteId, cloudOwner, tenantId, vfModuleName);
         } else {
             logger.debug("Found Existing stack, status={}", heatStack.getStatus());
             // Populate the outputs from the existing stack.
@@ -1481,21 +1497,21 @@
         if (nestedStackId != null) {
         	try {
         		logger.debug("Querying for nestedStackId = {}", nestedStackId);
-        		nestedHeatStack = heat.queryStack(cloudSiteId, tenantId, nestedStackId);
+        		nestedHeatStack = heat.queryStack(cloudSiteId, cloudOwner, tenantId, nestedStackId);
         	} catch (MsoException me) {
         	    // Failed to query the Stack due to an openstack exception.
         	    // Convert to a generic VnfException
         	    me.addContext ("UpdateVFModule");
-        	    String error = "Update VF: Attached heatStack ID Query " + nestedStackId + " in " + cloudSiteId + "/" + tenantId + ": " + me ;
-              logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vnfName, cloudSiteId,
+        	    String error = "Update VF: Attached heatStack ID Query " + nestedStackId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me ;
+              logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vnfName, cloudOwner, cloudSiteId,
                   tenantId, "OpenStack", "QueryStack", ErrorCode.DataError.getValue(), "Exception - " + error,
                   me);
               logger.debug("ERROR trying to query nested stack= {}", error);
               throw new VnfException (me);
         	}
         	if (nestedHeatStack == null || nestedHeatStack.getStatus() == HeatStatus.NOTFOUND) {
-        	    String error = "Update VFModule: Attached volume heatStack ID DOES NOT EXIST " + nestedStackId + " in " + cloudSiteId + "/" + tenantId + " USER ERROR"  ;
-              logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vnfName, cloudSiteId,
+        	    String error = "Update VFModule: Attached volume heatStack ID DOES NOT EXIST " + nestedStackId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + " USER ERROR"  ;
+              logger.error("{} {} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vnfName, cloudOwner, cloudSiteId,
                   tenantId, error, "OpenStack", "QueryStack", ErrorCode.DataError.getValue(), error);
               logger.debug(error);
         	    throw new VnfException (error, MsoExceptionCategory.USERDATA);
@@ -1512,23 +1528,23 @@
             long queryStackStarttime3 = System.currentTimeMillis ();
         	try {
         		logger.debug("Querying for nestedBaseStackId = {}", nestedBaseStackId);
-        		nestedBaseHeatStack = heat.queryStack(cloudSiteId, tenantId, nestedBaseStackId);
+        		nestedBaseHeatStack = heat.queryStack(cloudSiteId, cloudOwner, tenantId, nestedBaseStackId);
         	} catch (MsoException me) {
         	    // Failed to query the Stack due to an openstack exception.
         	    // Convert to a generic VnfException
         	    me.addContext ("UpdateVfModule");
-        	    String error = "Update VFModule: Attached baseHeatStack ID Query " + nestedBaseStackId + " in " + cloudSiteId + "/" + tenantId + ": " + me ;
+        	    String error = "Update VFModule: Attached baseHeatStack ID Query " + nestedBaseStackId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me ;
               logger
-                  .error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName, cloudSiteId,
+                  .error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName, cloudOwner, cloudSiteId,
                       tenantId, "OpenStack", "QueryStack", ErrorCode.DataError.getValue(),
                       "Exception - " + error, me);
               logger.debug("ERROR trying to query nested base stack= {}", error);
         	    throw new VnfException (me);
         	}
         	if (nestedBaseHeatStack == null || nestedBaseHeatStack.getStatus() == HeatStatus.NOTFOUND) {
-        	    String error = "Update VFModule: Attached base heatStack ID DOES NOT EXIST " + nestedBaseStackId + " in " + cloudSiteId + "/" + tenantId + " USER ERROR"  ;
-        	    logger.error ("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName,
-                  cloudSiteId, tenantId, error, "OpenStack",
+        	    String error = "Update VFModule: Attached base heatStack ID DOES NOT EXIST " + nestedBaseStackId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + " USER ERROR"  ;
+        	    logger.error ("{} {} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName,
+                  cloudOwner, cloudSiteId, tenantId, error, "OpenStack",
                   "QueryStack", ErrorCode.DataError.getValue(), error);
         	    logger.debug(error);
         	    throw new VnfException (error, MsoExceptionCategory.USERDATA);
@@ -1958,7 +1974,7 @@
 			if (parsedVfModuleName == null || parsedVfModuleName.isEmpty()) {
 				parsedVfModuleName = "unknown";
 			}
-				sendResponseToValet = this.valetUpdateRequest(cloudSiteId, tenantId, heatFilesObjects,
+				sendResponseToValet = this.valetUpdateRequest(cloudSiteId, cloudOwner, tenantId, heatFilesObjects,
 					nestedTemplatesChecked, parsedVfModuleName, false, heatTemplate, newEnvironmentString, (HashMap<String, Object>) goldenInputs,
 						msoRequest, inputs, failRequestOnValetFailure, valetModifiedParamsHolder);
 				if (sendResponseToValet) {
@@ -1973,6 +1989,7 @@
             try {
 				heatStack = heatU.updateStack(
 					cloudSiteId,
+					cloudOwner,
 					tenantId,
 					vfModuleName,
 					template,
@@ -1986,9 +2003,9 @@
 				);
             } catch (MsoException me) {
                 me.addContext ("UpdateVFModule");
-                String error = "Update VFModule " + vfModuleType + " in " + cloudSiteId + "/" + tenantId + ": " + me;
+                String error = "Update VFModule " + vfModuleType + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
                 logger
-                    .error("{} {} {} {} {} {} {}", MessageEnum.RA_UPDATE_VNF_ERR.toString(), vfModuleType, cloudSiteId,
+                    .error("{} {} {} {} {} {} {} {}", MessageEnum.RA_UPDATE_VNF_ERR.toString(), vfModuleType, cloudOwner, cloudSiteId,
                         tenantId, "OpenStack", ErrorCode.DataError.getValue(), "Exception - " + error, me);
                 if (isValetEnabled && sendResponseToValet) {
                 	logger.debug("valet is enabled, the orchestration failed - now sending rollback to valet");
@@ -2097,7 +2114,7 @@
     /*
      * Valet Create request
      */
-    private boolean valetCreateRequest(String cloudSiteId, String tenantId, Map<String, Object> heatFilesObjects, Map<String, Object> nestedTemplatesChecked,
+    private boolean valetCreateRequest(String cloudSiteId, String cloudOwner, String tenantId, Map<String, Object> heatFilesObjects, Map<String, Object> nestedTemplatesChecked,
     		String vfModuleName, boolean backout, HeatTemplate heatTemplate, String newEnvironmentString, Map<String, Object> goldenInputs,
     		MsoRequest msoRequest, Map<String, Object> inputs, boolean failRequestOnValetFailure, Holder<Map<String, Object>> valetModifiedParamsHolder) throws VnfException {
 		boolean valetSucceeded = false;
@@ -2109,7 +2126,7 @@
 			HeatRequest heatRequest = new HeatRequest(vfModuleName, backout, heatTemplate.getTimeoutMinutes(),
 					heatTemplate.getTemplateBody(), newEnvironmentString, files, goldenInputs);
 			GenericValetResponse<ValetCreateResponse> createReq = this.vci.callValetCreateRequest(msoRequest.getRequestId(),
-					cloudSiteId, tenantId, msoRequest.getServiceInstanceId(), (String)inputs.get("vnf_id"),
+					cloudSiteId, cloudOwner, tenantId, msoRequest.getServiceInstanceId(), (String)inputs.get("vnf_id"),
 					(String)inputs.get("vnf_name"), (String)inputs.get("vf_module_id"), (String)inputs.get("vf_module_name"), keystoneUrl,
 					heatRequest);
 			ValetCreateResponse vcr = createReq.getReturnObject();
@@ -2156,7 +2173,7 @@
      * Valet update request
      */
 
-	private boolean valetUpdateRequest(String cloudSiteId, String tenantId,
+	private boolean valetUpdateRequest(String cloudSiteId, String cloudOwnerId, String tenantId,
 			Map<String, Object> heatFilesObjects, Map<String, Object> nestedTemplatesChecked, String vfModuleName,
 			boolean backout, HeatTemplate heatTemplate, String newEnvironmentString,
 			Map<String, Object> goldenInputs, MsoRequest msoRequest, Map<String, Object> inputs,
@@ -2172,7 +2189,7 @@
 					heatTemplate.getTemplateBody(), newEnvironmentString, files, goldenInputs);
 			// vnf name is not sent to MSO on update requests - so we will set it to the vf module name for now
 			GenericValetResponse<ValetUpdateResponse> updateReq = this.vci.callValetUpdateRequest(msoRequest.getRequestId(),
-					cloudSiteId, tenantId, msoRequest.getServiceInstanceId(), (String)inputs.get("vnf_id"),
+					cloudSiteId, cloudOwnerId, tenantId, msoRequest.getServiceInstanceId(), (String)inputs.get("vnf_id"),
 					vfModuleName, (String)inputs.get("vf_module_id"), vfModuleName, keystoneUrl,
 					heatRequest);
 			ValetUpdateResponse vur = updateReq.getReturnObject();
@@ -2218,7 +2235,7 @@
 	/*
 	 * Valet delete request
 	 */
-	private boolean valetDeleteRequest(String cloudSiteId, String tenantId, String vnfName,
+	private boolean valetDeleteRequest(String cloudSiteId, String cloudOwnerId, String tenantId, String vnfName,
 			MsoRequest msoRequest, boolean failRequestOnValetFailure) {
 		boolean valetDeleteRequestSucceeded = false;
 		String valetErrorMessage = "more detail not available";
@@ -2233,7 +2250,7 @@
 				logger.error("An exception occurred trying to call MsoVnfAdapterImpl.valetDeleteRequest() method", e);
 			}
 			GenericValetResponse<ValetDeleteResponse> deleteReq = this.vci.callValetDeleteRequest(msoRequest.getRequestId(),
-					cloudSiteId, tenantId, vfModuleId, vfModuleName);
+					cloudSiteId, cloudOwnerId, tenantId, vfModuleId, vfModuleName);
 			ValetDeleteResponse vdr = deleteReq.getReturnObject();
 			if (vdr != null && deleteReq.getStatusCode() == 200) {
 				ValetStatus status = vdr.getStatus();
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfCloudifyAdapterImpl.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfCloudifyAdapterImpl.java
index b8be910..a07fff0 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfCloudifyAdapterImpl.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfCloudifyAdapterImpl.java
@@ -129,6 +129,7 @@
      */
     @Override
     public void createVnf (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfType,
                            String vnfVersion,
@@ -157,6 +158,7 @@
      */
     @Override
     public void updateVnf (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfType,
                            String vnfVersion,
@@ -188,6 +190,7 @@
      * The input "vnfName" will also be reflected back as its ID.
      *
      * @param cloudSiteId CLLI code of the cloud site in which to query
+     * @param cloudOwner cloud owner of the cloud site in which to query
      * @param tenantId Openstack tenant identifier - ignored for Cloudify
      * @param vnfName VNF Name (should match a deployment ID)
      * @param msoRequest Request tracking information for logs
@@ -197,6 +200,7 @@
      */
     @Override
     public void queryVnf (String cloudSiteId,
+                          String cloudOwner,
                           String tenantId,
                           String vnfName,
                           MsoRequest msoRequest,
@@ -226,9 +230,9 @@
           // Failed to query the Deployment due to a cloudify exception.
           // Convert to a generic VnfException
           me.addContext("QueryVNF");
-          String error = "Query VNF (Cloudify): " + vnfName + " in " + cloudSiteId + "/" + tenantId + ": " + me;
+          String error = "Query VNF (Cloudify): " + vnfName + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
           logger
-              .error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vnfName, cloudSiteId, tenantId,
+              .error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vnfName, cloudOwner, cloudSiteId, tenantId,
                   CLOUDIFY, "QueryVNF", ErrorCode.DataError.getValue(), "Exception - queryDeployment", me);
           logger.debug(error);
           throw new VnfException(me);
@@ -260,6 +264,7 @@
      */
     @Override
     public void deleteVnf (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfName,
                            MsoRequest msoRequest) throws VnfException {
@@ -294,10 +299,11 @@
 
         // Get the elements of the VnfRollback object for easier access
         String cloudSiteId = rollback.getCloudSiteId ();
+        String cloudOwner = rollback.getCloudOwner();
         String tenantId = rollback.getTenantId ();
         String vfModuleId = rollback.getVfModuleStackId ();
 
-        logger.debug("Rolling Back VF Module {} in {}", vfModuleId, cloudSiteId + "/" + tenantId);
+        logger.debug("Rolling Back VF Module {} in {}", vfModuleId, cloudOwner + "/" + cloudSiteId + "/" + tenantId);
 
     	DeploymentInfo deployment = null;
 
@@ -319,8 +325,8 @@
             // Failed to rollback the VNF due to a cloudify exception.
             // Convert to a generic VnfException
             me.addContext ("RollbackVNF");
-            String error = "Rollback VF Module: " + vfModuleId + " in " + cloudSiteId + "/" + tenantId + ": " + me;
-            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vfModuleId, cloudSiteId,
+            String error = "Rollback VF Module: " + vfModuleId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
+            logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vfModuleId, cloudOwner, cloudSiteId,
                 tenantId, CLOUDIFY, "DeleteDeployment", ErrorCode.DataError.getValue(),
                 "Exception - DeleteDeployment", me);
             logger.debug(error);
@@ -523,6 +529,7 @@
      * is successfully created but the orchestration fails on a subsequent step.
      *
      * @param cloudSiteId CLLI code of the cloud site in which to create the VNF
+     * @param cloudOwner cloud owner of the cloud site in which to create the VNF
      * @param tenantId Openstack tenant identifier
      * @param vfModuleType VF Module type key, should match a VNF definition in catalog DB.
      *        Deprecated - should use modelCustomizationUuid
@@ -548,6 +555,7 @@
      */
     @Override
     public void createVfModule(String cloudSiteId,
+            String cloudOwner,
             String tenantId,
             String vfModuleType,
             String vnfVersion,
@@ -612,6 +620,7 @@
         // Build a default rollback object (no actions performed)
         VnfRollback vfRollback = new VnfRollback();
         vfRollback.setCloudSiteId(cloudSiteId);
+        vfRollback.setCloudOwner(cloudOwner);
         vfRollback.setTenantId(tenantId);
         vfRollback.setMsoRequest(msoRequest);
         vfRollback.setRequestType(requestType);
@@ -693,7 +702,7 @@
         }
         catch (MsoException me) {
             // Failed to query the Deployment due to a cloudify exception.
-            String error = "Create VF Module: Query " + vfModuleName + " in " + cloudSiteId + "/" + tenantId + ": " + me ;
+            String error = "Create VF Module: Query " + vfModuleName + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me ;
             logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName, cloudSiteId,
                 tenantId, CLOUDIFY, "queryDeployment", ErrorCode.DataError.getValue(),
                 "Exception - queryDeployment", me);
@@ -713,12 +722,12 @@
         	if (status == DeploymentStatus.INSTALLED) {
         		// fail - it exists
         		if (failIfExists != null && failIfExists) {
-        			String error = "Create VF: Deployment " + vfModuleName + " already exists in " + cloudSiteId + "/" + tenantId;
-                logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                    cloudSiteId, tenantId, CLOUDIFY, "queryDeployment", ErrorCode.DataError.getValue(),
+        			String error = "Create VF: Deployment " + vfModuleName + " already exists in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId;
+                logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                    cloudOwner, cloudSiteId, tenantId, CLOUDIFY, "queryDeployment", ErrorCode.DataError.getValue(),
                     "Deployment " + vfModuleName + " already exists");
                 logger.debug(error);
-                throw new VnfAlreadyExists (vfModuleName, cloudSiteId, tenantId, cloudifyDeployment.getId());
+                throw new VnfAlreadyExists (vfModuleName, cloudSiteId, cloudOwner, tenantId, cloudifyDeployment.getId());
         		} else {
         			// Found existing deployment and client has not requested "failIfExists".
         			// Populate the outputs from the existing deployment.
@@ -731,41 +740,41 @@
         	// Check through various detailed error cases
         	if (status == DeploymentStatus.INSTALLING || status == DeploymentStatus.UNINSTALLING) {
         		// fail - it's in progress - return meaningful error
-              String error = "Create VF: Deployment " + vfModuleName + " already exists and has status " + status.toString() + " in " + cloudSiteId + "/" + tenantId + "; please wait for it to complete, or fix manually.";
-              logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                  cloudSiteId, tenantId, CLOUDIFY, "queryDeployment", ErrorCode.DataError.getValue(),
+              String error = "Create VF: Deployment " + vfModuleName + " already exists and has status " + status.toString() + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + "; please wait for it to complete, or fix manually.";
+              logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                  cloudOwner, cloudSiteId, tenantId, CLOUDIFY, "queryDeployment", ErrorCode.DataError.getValue(),
                   "Deployment " + vfModuleName + " already exists");
               logger.debug(error);
-                throw new VnfAlreadyExists (vfModuleName, cloudSiteId, tenantId, cloudifyDeployment.getId());
+                throw new VnfAlreadyExists (vfModuleName, cloudSiteId, cloudOwner, tenantId, cloudifyDeployment.getId());
         	}
         	else if (status == DeploymentStatus.FAILED) {
         		// fail - it exists and is in a FAILED state
-              String error = "Create VF: Deployment " + vfModuleName + " already exists and is in FAILED state in " + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
-              logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                  cloudSiteId, tenantId, CLOUDIFY, "queryDeployment", ErrorCode.DataError.getValue(),
+              String error = "Create VF: Deployment " + vfModuleName + " already exists and is in FAILED state in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
+              logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                  cloudOwner, cloudSiteId, tenantId, CLOUDIFY, "queryDeployment", ErrorCode.DataError.getValue(),
                   "Deployment " + vfModuleName + " already " + "exists and is in FAILED state");
               logger.debug(error);
-                throw new VnfAlreadyExists (vfModuleName, cloudSiteId, tenantId, cloudifyDeployment.getId());
+                throw new VnfAlreadyExists (vfModuleName, cloudSiteId, cloudOwner, tenantId, cloudifyDeployment.getId());
         	}
         	else if (status == DeploymentStatus.UNKNOWN || status == DeploymentStatus.CREATED) {
         		// fail - it exists and is in a UNKNOWN state
-              String error = "Create VF: Deployment " + vfModuleName + " already exists and has status " + status.toString() + " in " + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
-              logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                  cloudSiteId, tenantId, CLOUDIFY, "queryDeployment", ErrorCode.DataError.getValue(),
+              String error = "Create VF: Deployment " + vfModuleName + " already exists and has status " + status.toString() + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
+              logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                  cloudOwner, cloudSiteId, tenantId, CLOUDIFY, "queryDeployment", ErrorCode.DataError.getValue(),
                   "Deployment " + vfModuleName + " already " + "exists and is in " + status.toString() + " state");
               logger.debug(error);
-                throw new VnfAlreadyExists (vfModuleName, cloudSiteId, tenantId, cloudifyDeployment.getId());
+                throw new VnfAlreadyExists (vfModuleName, cloudSiteId, cloudOwner, tenantId, cloudifyDeployment.getId());
         	}
         	else {
         		// Unexpected, since all known status values have been tested for
               String error =
                   "Create VF: Deployment " + vfModuleName + " already exists with unexpected status " + status
-                      .toString() + " in " + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
-              logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                  cloudSiteId, tenantId, CLOUDIFY, "queryDeployment", ErrorCode.DataError.getValue(),
+                      .toString() + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
+              logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                  cloudOwner, cloudSiteId, tenantId, CLOUDIFY, "queryDeployment", ErrorCode.DataError.getValue(),
                   "Deployment " + vfModuleName + " already " + "exists and is in an unknown state");
               logger.debug(error);
-              throw new VnfAlreadyExists(vfModuleName, cloudSiteId, tenantId, cloudifyDeployment.getId());
+              throw new VnfAlreadyExists(vfModuleName, cloudSiteId, cloudOwner, tenantId, cloudifyDeployment.getId());
           }
         }
 
@@ -783,9 +792,9 @@
             }
             catch (MsoException me) {
                 // Failed to query the Volume GroupDeployment due to a cloudify exception.
-                String error = "Create VF Module: Query Volume Group " + volumeGroupId + " in " + cloudSiteId + "/" + tenantId + ": " + me ;
-                logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), volumeGroupId,
-                    cloudSiteId, tenantId, CLOUDIFY, "queryDeployment(volume)",
+                String error = "Create VF Module: Query Volume Group " + volumeGroupId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me ;
+                logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), volumeGroupId,
+                    cloudOwner, cloudSiteId, tenantId, CLOUDIFY, "queryDeployment(volume)",
                     ErrorCode.DataError.getValue(), "Exception - queryDeployment(volume)", me);
                 logger.debug(error);
                 // Convert to a generic VnfException
@@ -835,10 +844,10 @@
 	            catch (MsoException me) {
 	                // Failed to query the Volume GroupDeployment due to a cloudify exception.
                   String error =
-                      "Create VF Module: Query Base " + baseVfModuleId + " in " + cloudSiteId + "/" + tenantId + ": "
+                      "Create VF Module: Query Base " + baseVfModuleId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": "
                           + me;
-                  logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), baseVfModuleId,
-                      cloudSiteId, tenantId, CLOUDIFY, "queryDeployment(Base)",
+                  logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), baseVfModuleId,
+                      cloudOwner, cloudSiteId, tenantId, CLOUDIFY, "queryDeployment(Base)",
                       ErrorCode.DataError.getValue(), "Exception - queryDeployment(Base)", me);
                   logger.debug(error);
                   // Convert to a generic VnfException
@@ -1127,17 +1136,17 @@
 
             } catch (MsoException me) {
                 me.addContext ("CreateVFModule");
-                String error = "Create VF Module " + vfModuleType + " in " + cloudSiteId + "/" + tenantId + ": " + me;
+                String error = "Create VF Module " + vfModuleType + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
                 logger
-                    .error("{} {} {} {} {} {} {}", MessageEnum.RA_CREATE_VNF_ERR.toString(), vfModuleType, cloudSiteId,
+                    .error("{} {} {} {} {} {} {} {}", MessageEnum.RA_CREATE_VNF_ERR.toString(), vfModuleType, cloudOwner, cloudSiteId,
                         tenantId, CLOUDIFY, ErrorCode.DataError.getValue(), "MsoException - createDeployment",
                         me);
                 logger.debug(error);
                 throw new VnfException (me);
             } catch (NullPointerException npe) {
-                String error = "Create VFModule " + vfModuleType + " in " + cloudSiteId + "/" + tenantId + ": " + npe;
+                String error = "Create VFModule " + vfModuleType + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + npe;
                 logger
-                    .error("{} {} {} {} {} {} {}", MessageEnum.RA_CREATE_VNF_ERR.toString(), vfModuleType, cloudSiteId,
+                    .error("{} {} {} {} {} {} {} {}", MessageEnum.RA_CREATE_VNF_ERR.toString(), vfModuleType, cloudOwner, cloudSiteId,
                         tenantId, CLOUDIFY, ErrorCode.DataError.getValue(),
                         "NullPointerException - createDeployment", npe);
                 logger.debug(error);
@@ -1168,12 +1177,12 @@
     }
 
     public void deleteVfModule (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfName,
                            MsoRequest msoRequest,
                            Holder <Map <String, String>> outputs) throws VnfException {
-
-        logger.debug ("Deleting VF " + vnfName + " in " + cloudSiteId + "/" + tenantId);
+        logger.debug ("Deleting VF " + vnfName + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId);
         // Will capture execution time for metrics
         long startTime = System.currentTimeMillis ();
 
@@ -1185,8 +1194,8 @@
         } catch (MsoException me) {
             // Failed to query the deployment.  Convert to a generic VnfException
             me.addContext ("DeleteVFModule");
-            String error = "Delete VFModule: Query to get outputs: " + vnfName + " in " + cloudSiteId + "/" + tenantId + ": " + me;
-            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vnfName, cloudSiteId,
+            String error = "Delete VFModule: Query to get outputs: " + vnfName + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
+            logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vnfName, cloudOwner, cloudSiteId,
                 tenantId, CLOUDIFY, "QueryDeployment", ErrorCode.DataError.getValue(),
                 "Exception - QueryDeployment", me);
             logger.debug(error);
@@ -1205,8 +1214,8 @@
         } catch (MsoException me) {
             me.addContext("DeleteVfModule");
             // Convert to a generic VnfException
-            String error = "Delete VF: " + vnfName + " in " + cloudSiteId + "/" + tenantId + ": " + me;
-            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vnfName, cloudSiteId,
+            String error = "Delete VF: " + vnfName + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
+            logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vnfName, cloudOwner, cloudSiteId,
                 tenantId, "DeleteDeployment", "DeleteDeployment", ErrorCode.DataError.getValue(),
                 "Exception - DeleteDeployment: " + me.getMessage());
             logger.debug(error);
@@ -1220,6 +1229,7 @@
     // TODO:  Should Update be supported for Cloudify?  What would this look like?
     @Override
     public void updateVfModule (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfType,
                            String vnfVersion,
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImpl.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImpl.java
index 197777c..2b49290 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImpl.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImpl.java
@@ -153,6 +153,7 @@
      */
     @Override
     public void createVnf (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfType,
                            String vnfVersion,
@@ -181,6 +182,7 @@
      */
     @Override
     public void updateVnf (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfType,
                            String vnfVersion,
@@ -216,6 +218,7 @@
      */
     @Override
     public void queryVnf (String cloudSiteId,
+                          String cloudOwner,
                           String tenantId,
                           String vnfNameOrId,
                           MsoRequest msoRequest,
@@ -225,16 +228,16 @@
                           Holder <Map <String, String>> outputs)
         throws VnfException
     {
-        logger.debug("Querying VNF " + vnfNameOrId + " in " + cloudSiteId + "/" + tenantId);
+        logger.debug("Querying VNF " + vnfNameOrId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId);
 
         // Will capture execution time for metrics
         long startTime = System.currentTimeMillis ();
         long subStartTime = System.currentTimeMillis ();
 
     	VduInstance vduInstance = null;
-    	CloudInfo cloudInfo = new CloudInfo(cloudSiteId, tenantId, null);
+    	CloudInfo cloudInfo = new CloudInfo(cloudSiteId, cloudOwner, tenantId, null);
 
-        VduPlugin vduPlugin = getVduPlugin(cloudSiteId);
+        VduPlugin vduPlugin = getVduPlugin(cloudSiteId, cloudOwner);
 
     	try {
     		vduInstance = vduPlugin.queryVdu (cloudInfo, vnfNameOrId);
@@ -243,8 +246,8 @@
           // Failed to query the VDU due to a plugin exception.
           // Convert to a generic VnfException
           e.addContext("QueryVNF");
-          String error = "Query VNF (VDU): " + vnfNameOrId + " in " + cloudSiteId + "/" + tenantId + ": " + e;
-          logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vnfNameOrId, cloudSiteId,
+          String error = "Query VNF (VDU): " + vnfNameOrId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + e;
+          logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vnfNameOrId, cloudOwner, cloudSiteId,
               tenantId, "VDU", "QueryVNF", ErrorCode.DataError.getValue(), "Exception - queryVDU", e);
           logger.debug(error);
           throw new VnfException(e);
@@ -277,6 +280,7 @@
      */
     @Override
     public void deleteVnf (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfName,
                            MsoRequest msoRequest) throws VnfException {
@@ -311,17 +315,18 @@
 
         // Get the elements of the VnfRollback object for easier access
         String cloudSiteId = rollback.getCloudSiteId ();
+        String cloudOwner = rollback.getCloudOwner();
         String tenantId = rollback.getTenantId ();
-        CloudInfo cloudInfo = new CloudInfo (cloudSiteId, tenantId, null);
+        CloudInfo cloudInfo = new CloudInfo (cloudSiteId, cloudOwner, tenantId, null);
 
         String vfModuleId = rollback.getVfModuleStackId ();
 
-        logger.debug("Rolling Back VF Module " + vfModuleId + " in " + cloudSiteId + "/" + tenantId);
+        logger.debug("Rolling Back VF Module " + vfModuleId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId);
 
     	VduInstance vduInstance = null;
 
         // Use the VduPlugin to delete the VF Module.
-        VduPlugin vduPlugin = getVduPlugin(cloudSiteId);
+        VduPlugin vduPlugin = getVduPlugin(cloudSiteId, cloudOwner);
 
         long subStartTime = System.currentTimeMillis ();
         try {
@@ -334,8 +339,8 @@
             // Failed to rollback the VF Module due to a plugin exception.
             // Convert to a generic VnfException
             ve.addContext ("RollbackVFModule");
-            String error = "Rollback VF Module: " + vfModuleId + " in " + cloudSiteId + "/" + tenantId + ": " + ve;
-            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vfModuleId, cloudSiteId,
+            String error = "Rollback VF Module: " + vfModuleId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + ve;
+            logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vfModuleId, cloudOwner, cloudSiteId,
                 tenantId, "VDU", "DeleteVdu", ErrorCode.DataError.getValue(), "Exception - DeleteVdu", ve);
             logger.debug(error);
             throw new VnfException (ve);
@@ -565,6 +570,7 @@
      * is successfully created but the orchestration fails on a subsequent step.
      *
      * @param cloudSiteId CLLI code of the cloud site in which to create the VNF
+     * @param cloudOwner cloud owner of the cloud site in which to create the VNF
      * @param tenantId Openstack tenant identifier
      * @param vfModuleType VF Module type key, should match a VNF definition in catalog DB.
      *        Deprecated - should use modelCustomizationUuid
@@ -590,6 +596,7 @@
      */
     @Override
     public void createVfModule(String cloudSiteId,
+            String cloudOwner,
             String tenantId,
             String vfModuleType,
             String vnfVersion,
@@ -654,6 +661,7 @@
         // Build a default rollback object (no actions performed)
         VnfRollback vfRollback = new VnfRollback();
         vfRollback.setCloudSiteId(cloudSiteId);
+        vfRollback.setCloudOwner(cloudOwner);
         vfRollback.setTenantId(tenantId);
         vfRollback.setMsoRequest(msoRequest);
         vfRollback.setRequestType(requestType);
@@ -727,10 +735,10 @@
 
 
         VduInstance vduInstance = null;
-        CloudInfo cloudInfo = new CloudInfo (cloudSiteId, tenantId, null);
+        CloudInfo cloudInfo = new CloudInfo (cloudSiteId, cloudOwner, tenantId, null);
 
         // Use the VduPlugin.
-        VduPlugin vduPlugin = getVduPlugin(cloudSiteId);
+        VduPlugin vduPlugin = getVduPlugin(cloudSiteId, cloudOwner);
 
         // First, look up to see if the VF already exists, unless using multicloud adapter
 
@@ -741,9 +749,9 @@
             }
             catch (VduException me) {
                 // Failed to query the VDU due to a plugin exception.
-                String error = "Create VF Module: Query " + vfModuleName + " in " + cloudSiteId + "/" + tenantId + ": " + me ;
-                logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName,
-                    cloudSiteId, tenantId, "VDU", "queryVdu", ErrorCode.DataError.getValue(),
+                String error = "Create VF Module: Query " + vfModuleName + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me ;
+                logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleName,
+                    cloudOwner, cloudSiteId, tenantId, "VDU", "queryVdu", ErrorCode.DataError.getValue(),
                     "Exception - queryVdu", me);
                 logger.debug(error);
                 // Convert to a generic VnfException
@@ -761,12 +769,12 @@
                 if (failIfExists != null && failIfExists) {
                     // fail - it exists
                     String error =
-                        "Create VF: Deployment " + vfModuleName + " already exists in " + cloudSiteId + "/" + tenantId;
-                    logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                        cloudSiteId, tenantId, "VDU", "queryVdu", ErrorCode.DataError.getValue(),
+                        "Create VF: Deployment " + vfModuleName + " already exists in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId;
+                    logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                        cloudOwner, cloudSiteId, tenantId, "VDU", "queryVdu", ErrorCode.DataError.getValue(),
                         "VF Module " + vfModuleName + " already exists");
                     logger.debug(error);
-                    throw new VnfAlreadyExists(vfModuleName, cloudSiteId, tenantId, vduInstance.getVduInstanceId());
+                    throw new VnfAlreadyExists(vfModuleName, cloudSiteId, cloudOwner, tenantId, vduInstance.getVduInstanceId());
                 } else {
                     // Found existing deployment and client has not requested "failIfExists".
                     // Populate the outputs from the existing deployment.
@@ -782,42 +790,42 @@
                 // fail - it's in progress - return meaningful error
                 String error =
                     "Create VF: Deployment " + vfModuleName + " already exists and has status " + status.toString()
-                        + " in " + cloudSiteId + "/" + tenantId + "; please wait for it to complete, or fix manually.";
-                logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                    cloudSiteId, tenantId, "VDU", "queryVdu", ErrorCode.DataError.getValue(),
+                        + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + "; please wait for it to complete, or fix manually.";
+                logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                    cloudOwner, cloudSiteId, tenantId, "VDU", "queryVdu", ErrorCode.DataError.getValue(),
                     "VF Module " + vfModuleName + " already exists");
                 logger.debug(error);
-                throw new VnfAlreadyExists(vfModuleName, cloudSiteId, tenantId, vduInstance.getVduInstanceId());
+                throw new VnfAlreadyExists(vfModuleName, cloudSiteId, cloudOwner, tenantId, vduInstance.getVduInstanceId());
             } else if (status == VduStateType.FAILED) {
                 // fail - it exists and is in a FAILED state
                 String error =
-                    "Create VF: Deployment " + vfModuleName + " already exists and is in FAILED state in " + cloudSiteId
+                    "Create VF: Deployment " + vfModuleName + " already exists and is in FAILED state in " + cloudOwner + "/" + cloudSiteId
                         + "/" + tenantId + "; requires manual intervention.";
-                logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                    cloudSiteId, tenantId, "VDU", "queryVdu", ErrorCode.DataError.getValue(),
+                logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                    cloudOwner, cloudSiteId, tenantId, "VDU", "queryVdu", ErrorCode.DataError.getValue(),
                     "VF Module " + vfModuleName + " already exists and is in FAILED state");
                 logger.debug(error);
-                throw new VnfAlreadyExists(vfModuleName, cloudSiteId, tenantId, vduInstance.getVduInstanceId());
+                throw new VnfAlreadyExists(vfModuleName, cloudSiteId, cloudOwner, tenantId, vduInstance.getVduInstanceId());
             } else if (status == VduStateType.UNKNOWN) {
                 // fail - it exists and is in a UNKNOWN state
                 String error =
                     "Create VF: Deployment " + vfModuleName + " already exists and has status " + status.toString()
-                        + " in " + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
-                logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                    cloudSiteId, tenantId, "VDU", "queryVdu", ErrorCode.DataError.getValue(),
+                        + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
+                logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                    cloudOwner, cloudSiteId, tenantId, "VDU", "queryVdu", ErrorCode.DataError.getValue(),
                     "VF Module " + vfModuleName + " already exists and is in " + status.toString() + " state");
                 logger.debug(error);
-                throw new VnfAlreadyExists(vfModuleName, cloudSiteId, tenantId, vduInstance.getVduInstanceId());
+                throw new VnfAlreadyExists(vfModuleName, cloudSiteId, cloudOwner, tenantId, vduInstance.getVduInstanceId());
             } else {
                 // Unexpected, since all known status values have been tested for
                 String error =
                     "Create VF: Deployment " + vfModuleName + " already exists with unexpected status " + status
-                        .toString() + " in " + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
-                logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
-                    cloudSiteId, tenantId, "VDU", "queryVdu", ErrorCode.DataError.getValue(),
+                        .toString() + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + "; requires manual intervention.";
+                logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_VNF_ALREADY_EXIST.toString(), vfModuleName,
+                    cloudOwner, cloudSiteId, tenantId, "VDU", "queryVdu", ErrorCode.DataError.getValue(),
                     "VF Module " + vfModuleName + " already exists and is in an unknown state");
                 logger.debug(error);
-                throw new VnfAlreadyExists(vfModuleName, cloudSiteId, tenantId, vduInstance.getVduInstanceId());
+                throw new VnfAlreadyExists(vfModuleName, cloudSiteId, cloudOwner, tenantId, vduInstance.getVduInstanceId());
             }
         }
 
@@ -835,9 +843,9 @@
             }
             catch (VduException me) {
                 // Failed to query the Volume Group VDU due to a plugin exception.
-                String error = "Create VF Module: Query Volume Group " + volumeGroupId + " in " + cloudSiteId + "/" + tenantId + ": " + me ;
-                logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), volumeGroupId,
-                    cloudSiteId, tenantId, "VDU", "queryVdu(volume)", ErrorCode.DataError.getValue(),
+                String error = "Create VF Module: Query Volume Group " + volumeGroupId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me ;
+                logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), volumeGroupId,
+                    cloudOwner, cloudSiteId, tenantId, "VDU", "queryVdu(volume)", ErrorCode.DataError.getValue(),
                     "Exception - queryVdu(volume)", me);
                 logger.debug(error);
                 // Convert to a generic VnfException
@@ -846,9 +854,9 @@
             }
 
 	        if (volumeVdu == null || volumeVdu.getStatus().getState() == VduStateType.NOTFOUND) {
-        	    String error = "Create VFModule: Attached Volume Group DOES NOT EXIST " + volumeGroupId + " in " + cloudSiteId + "/" + tenantId + " USER ERROR"  ;
-              logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), volumeGroupId,
-                  cloudSiteId, tenantId, error, "VDU", "queryVdu(volume)",
+        	    String error = "Create VFModule: Attached Volume Group DOES NOT EXIST " + volumeGroupId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + " USER ERROR"  ;
+              logger.error("{} {} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), volumeGroupId,
+                  cloudOwner, cloudSiteId, tenantId, error, "VDU", "queryVdu(volume)",
                   ErrorCode.BusinessProcesssError.getValue(),
                   "Create VFModule: Attached Volume Group " + "DOES NOT EXIST");
               logger.debug(error);
@@ -885,9 +893,9 @@
 	            }
 	            catch (MsoException me) {
 	                // Failed to query the Base VF Module due to a Vdu Plugin exception.
-	                String error = "Create VF Module: Query Base " + baseVfModuleId + " in " + cloudSiteId + "/" + tenantId + ": " + me ;
-                  logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), baseVfModuleId,
-                      cloudSiteId, tenantId, "VDU", "queryVdu(Base)", ErrorCode.DataError.getValue(),
+	                String error = "Create VF Module: Query Base " + baseVfModuleId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me ;
+                  logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), baseVfModuleId,
+                      cloudOwner, cloudSiteId, tenantId, "VDU", "queryVdu(Base)", ErrorCode.DataError.getValue(),
                       "Exception - queryVdu(Base)", me);
                   logger.debug(error);
                   // Convert to a generic VnfException
@@ -897,10 +905,10 @@
 
                 if (baseVdu == null || baseVdu.getStatus().getState() == VduStateType.NOTFOUND) {
                     String error =
-                        "Create VFModule: Base Module DOES NOT EXIST " + baseVfModuleId + " in " + cloudSiteId + "/"
+                        "Create VFModule: Base Module DOES NOT EXIST " + baseVfModuleId + " in " + cloudOwner + "/" + cloudSiteId + "/"
                             + tenantId + " USER ERROR";
-                    logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), baseVfModuleId,
-                        cloudSiteId, tenantId, error, "VDU", "queryVdu(Base)",
+                    logger.error("{} {} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), baseVfModuleId,
+                        cloudOwner, cloudSiteId, tenantId, error, "VDU", "queryVdu(Base)",
                         ErrorCode.BusinessProcesssError.getValue(),
                         "Create VFModule: Base Module DOES NOT EXIST");
                     logger.debug(error);
@@ -1116,22 +1124,22 @@
         } catch (VduException me) {
             // Failed to instantiate the VDU.
             me.addContext("CreateVFModule");
-            String error = "Create VF Module " + vfModuleType + " in " + cloudSiteId + "/" + tenantId + ": " + me;
-            logger.error("{} {} {} {} {} {} {}", MessageEnum.RA_CREATE_VNF_ERR.toString(), vfModuleType, cloudSiteId,
+            String error = "Create VF Module " + vfModuleType + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
+            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_CREATE_VNF_ERR.toString(), vfModuleType, cloudOwner, cloudSiteId,
                 tenantId, "VDU", ErrorCode.DataError.getValue(), "MsoException - instantiateVdu", me);
             logger.debug(error);
             // Convert to a generic VnfException
             throw new VnfException(me);
         } catch (NullPointerException npe) {
-            String error = "Create VFModule " + vfModuleType + " in " + cloudSiteId + "/" + tenantId + ": " + npe;
-            logger.error("{} {} {} {} {} {} {}", MessageEnum.RA_CREATE_VNF_ERR.toString(), vfModuleType, cloudSiteId,
+            String error = "Create VFModule " + vfModuleType + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + npe;
+            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_CREATE_VNF_ERR.toString(), vfModuleType, cloudOwner, cloudSiteId,
                 tenantId, "VDU", ErrorCode.DataError.getValue(), "NullPointerException - instantiateVdu",
                 npe);
             logger.debug(error);
             logger.debug("NULL POINTER EXCEPTION at vduPlugin.instantiateVdu", npe);
             throw new VnfException("NullPointerException during instantiateVdu");
         } catch (Exception e) {
-            String error = "Create VFModule " + vfModuleType + " in " + cloudSiteId + "/" + tenantId + ": " + e;
+            String error = "Create VFModule " + vfModuleType + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + e;
             logger.debug("Unhandled exception at vduPlugin.instantiateVdu", e);
             logger.debug(error);
             throw new VnfException("Exception during instantiateVdu: " + e.getMessage());
@@ -1153,22 +1161,23 @@
 
 
     public void deleteVfModule (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vfModuleId,
                            MsoRequest msoRequest,
                            Holder <Map <String, String>> outputs) throws VnfException
     {
 
-        logger.debug("Deleting VF Module " + vfModuleId + " in " + cloudSiteId + "/" + tenantId);
+        logger.debug("Deleting VF Module " + vfModuleId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId);
         // Will capture execution time for metrics
         long startTime = System.currentTimeMillis ();
 
         // Capture the output parameters on a delete, so need to query first
     	VduInstance vduInstance = null;
-    	CloudInfo cloudInfo = new CloudInfo(cloudSiteId, tenantId, null);
+    	CloudInfo cloudInfo = new CloudInfo(cloudSiteId, cloudOwner, tenantId, null);
 
         // Use the VduPlugin.
-        VduPlugin vduPlugin = getVduPlugin(cloudSiteId);
+        VduPlugin vduPlugin = getVduPlugin(cloudSiteId, cloudOwner);
 
     	try {
     		vduInstance = vduPlugin.queryVdu (cloudInfo, vfModuleId);
@@ -1177,8 +1186,8 @@
           // Failed to query the VDU due to a plugin exception.
           // Convert to a generic VnfException
           e.addContext("QueryVFModule");
-          String error = "Query VfModule (VDU): " + vfModuleId + " in " + cloudSiteId + "/" + tenantId + ": " + e;
-          logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleId, cloudSiteId,
+          String error = "Query VfModule (VDU): " + vfModuleId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + e;
+          logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_QUERY_VNF_ERR.toString(), vfModuleId, cloudOwner, cloudSiteId,
               tenantId, "VDU", "QueryVFModule", ErrorCode.DataError.getValue(), "Exception - queryVDU", e);
           logger.debug(error);
           throw new VnfException(e);
@@ -1200,8 +1209,8 @@
         } catch (VduException me) {
             me.addContext ("DeleteVfModule");
             // Convert to a generic VnfException
-            String error = "Delete VF: " + vfModuleId + " in " + cloudSiteId + "/" + tenantId + ": " + me;
-            logger.error("{} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vfModuleId, cloudSiteId,
+            String error = "Delete VF: " + vfModuleId + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
+            logger.error("{} {} {} {} {} {} {} {} {}", MessageEnum.RA_DELETE_VNF_ERR.toString(), vfModuleId, cloudOwner, cloudSiteId,
                 tenantId, "VDU", "DeleteVdu", ErrorCode.DataError.getValue(),
                 "Exception - DeleteVdu: " + me.getMessage());
             logger.debug(error);
@@ -1215,6 +1224,7 @@
     // Update VF Module not yet implemented for generic VDU plug-in model.
     @Override
     public void updateVfModule (String cloudSiteId,
+                           String cloudOwner,
                            String tenantId,
                            String vnfType,
                            String vnfVersion,
@@ -1239,7 +1249,7 @@
      * defined for the target cloud.  Should really be looking at the VNF Model (ochestration_mode)
      * but we don't currently have access to that in Query and Delete cases.
      */
-    private VduPlugin getVduPlugin (String cloudSiteId) {
+    private VduPlugin getVduPlugin (String cloudSiteId, String cloudOwner) {
     	Optional<CloudSite> cloudSiteOp = cloudConfig.getCloudSite(cloudSiteId);
     	if (cloudSiteOp.isPresent()) {
     		CloudSite cloudSite = cloudSiteOp.get();
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRest.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRest.java
index 33055c2..d1a48a7 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRest.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRest.java
@@ -208,7 +208,7 @@
 				Holder<Map<String, String>> outputs = new Holder <> ();
 				if (cloudsite != null && !cloudsite.equals(TESTING_KEYWORD)) {
 					//vnfAdapter.deleteVnf (req.getCloudSiteId(), req.getTenantId(), req.getVfModuleStackId(), req.getMsoRequest());
-					vnfAdapter.deleteVfModule (req.getCloudSiteId(), req.getTenantId(), req.getVfModuleStackId(), req.getMsoRequest(), outputs);
+					vnfAdapter.deleteVfModule (req.getCloudSiteId(), req.getCloudOwner(), req.getTenantId(), req.getVfModuleStackId(), req.getMsoRequest(), outputs);
 				}
 				response = new DeleteVfModuleResponse(req.getVnfId(), req.getVfModuleId(), Boolean.TRUE, req.getMessageId(), outputs.value);
 			} catch (VnfException e) {
@@ -254,7 +254,9 @@
 		@PathParam("aaiVfModuleId") String aaiVfModuleId,
 		@ApiParam(value = "cloudSiteId", required = true)
 		@QueryParam("cloudSiteId") String cloudSiteId,
-		@ApiParam(value = "tenantId", required = true)
+		@ApiParam(value = "cloudOwner", required = true)
+        @QueryParam("cloudOwner") String cloudOwner,
+        @ApiParam(value = "tenantId", required = true)
 		@QueryParam("tenantId") String tenantId,
 		@ApiParam(value = "vfModuleName", required = true)
 		@QueryParam("vfModuleName") String vfModuleName, //RAA? Id in doc
@@ -276,7 +278,7 @@
 			Holder<String> vfModuleId = new Holder<>();
 			Holder<VnfStatus> status  = new Holder<>();
 			Holder<Map<String, String>> outputs = new Holder <> ();
-			vnfAdapter.queryVnf (cloudSiteId, tenantId, vfModuleName, msoRequest, vnfExists, vfModuleId, status, outputs);
+			vnfAdapter.queryVnf (cloudSiteId, cloudOwner, tenantId, vfModuleName, msoRequest, vnfExists, vfModuleId, status, outputs);
 			if (!vnfExists.value) {
 				logger.debug("vfModule not found");
 				respStatus = HttpStatus.SC_NOT_FOUND;
@@ -417,12 +419,13 @@
 				String completeVnfVfModuleType = req.getVnfType() + "::" + req.getVfModuleType();
 				logger.debug("completeVnfVfModuleType=" + completeVnfVfModuleType);
 				String cloudsite = req.getCloudSiteId();
+				String cloudOwner = req.getCloudOwner();
 				if (cloudsite != null && cloudsite.equals(TESTING_KEYWORD)) {
 					String tenant = req.getTenantId();
 					if (tenant != null && tenant.equals(TESTING_KEYWORD)) {
 						throw new VnfException("testing.");
 					}
-					vnfRollback.value = new VnfRollback(req.getVnfId(), tenant, cloudsite,
+					vnfRollback.value = new VnfRollback(req.getVnfId(), tenant, cloudOwner, cloudsite,
 							true, false, new MsoRequest("reqid", "svcid"),
 							req.getVolumeGroupId(), req.getVolumeGroupId(), req.getRequestType(), req.getModelCustomizationUuid());
 					vfModuleStackId.value = "479D3D8B-6360-47BC-AB75-21CC91981484";
@@ -443,6 +446,7 @@
 //						outputs,
 //						vnfRollback);
 					vnfAdapter.createVfModule(req.getCloudSiteId(),
+                        req.getCloudOwner(),
 						req.getTenantId(),
 						//req.getVnfType(),
 						completeVnfVfModuleType,
@@ -561,6 +565,7 @@
 				logger.debug("in updateVf - completeVnfVfModuleType=" + completeVnfVfModuleType);
 
 				vnfAdapter.updateVfModule (req.getCloudSiteId(),
+				        req.getCloudOwner(),
 						req.getTenantId(),
 						//req.getVnfType(),
 						completeVnfVfModuleType,
@@ -684,7 +689,7 @@
 			try {
 				VfModuleRollback vmr = req.getVfModuleRollback();
 				VnfRollback vrb = new VnfRollback(
-						vmr.getVfModuleStackId(), vmr.getTenantId(), vmr.getCloudSiteId(), true, true,
+						vmr.getVfModuleStackId(), vmr.getTenantId(), vmr.getCloudOwner(), vmr.getCloudSiteId(), true, true,
 						vmr.getMsoRequest(), null, null, null, null);
 				vnfAdapter.rollbackVnf (vrb);
 				response = new RollbackVfModuleResponse(Boolean.TRUE, req.getMessageId());
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRestV2.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRestV2.java
index 4696e43..41d350d 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRestV2.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRestV2.java
@@ -213,7 +213,7 @@
 					//vnfAdapter.deleteVnf (req.getCloudSiteId(), req.getTenantId(), req.getVfModuleStackId(), req.getMsoRequest());
 					// Support different Adapter Implementations
 					MsoVnfAdapter adapter = vnfAdapterRestUtils.getVnfAdapterImpl(mode, cloudsite);
-					adapter.deleteVfModule (req.getCloudSiteId(), req.getTenantId(), req.getVfModuleStackId(), req.getMsoRequest(), outputs);
+					adapter.deleteVfModule (req.getCloudSiteId(), req.getCloudOwner(), req.getTenantId(), req.getVfModuleStackId(), req.getMsoRequest(), outputs);
 				}
 				response = new DeleteVfModuleResponse(req.getVnfId(), req.getVfModuleId(), Boolean.TRUE, req.getMessageId(), outputs.value);
 			} catch (VnfException e) {
@@ -259,6 +259,8 @@
 		@PathParam("aaiVfModuleId") String aaiVfModuleId,
 		@ApiParam(value = "cloudSiteId", required = true)
 		@QueryParam("cloudSiteId") String cloudSiteId,
+		@ApiParam(value = "cloudOwner", required = true)
+		@QueryParam("cloudOwner") String cloudOwner,
 		@ApiParam(value = "tenantId", required = true)
 		@QueryParam("tenantId") String tenantId,
 		@ApiParam(value = "vfModuleName", required = true)
@@ -286,7 +288,7 @@
 
 			// Support different Adapter Implementations
 			MsoVnfAdapter adapter = vnfAdapterRestUtils.getVnfAdapterImpl(mode, cloudSiteId);
-			adapter.queryVnf (cloudSiteId, tenantId, vfModuleName, msoRequest, vnfExists, vfModuleId, status, outputs);
+			adapter.queryVnf (cloudSiteId, cloudOwner, tenantId, vfModuleName, msoRequest, vnfExists, vfModuleId, status, outputs);
 
 			if (!vnfExists.value) {
 				logger.debug("vfModule not found");
@@ -434,12 +436,13 @@
 				logger.debug("completeVnfVfModuleType=" + completeVnfVfModuleType);
 
 				String cloudsiteId = req.getCloudSiteId();
+				String cloudOwner = req.getCloudOwner();
 				if (cloudsiteId != null && cloudsiteId.equals(TESTING_KEYWORD)) {
 					String tenant = req.getTenantId();
 					if (tenant != null && tenant.equals(TESTING_KEYWORD)) {
 						throw new VnfException("testing.");
 					}
-					vnfRollback.value = new VnfRollback(req.getVnfId(), tenant, cloudsiteId,
+					vnfRollback.value = new VnfRollback(req.getVnfId(), tenant, cloudOwner, cloudsiteId,
 							true, false, new MsoRequest("reqid", "svcid"),
 							req.getVolumeGroupId(), req.getVolumeGroupId(), req.getRequestType(), req.getModelCustomizationUuid());
 					vfModuleStackId.value = "479D3D8B-6360-47BC-AB75-21CC91981484";
@@ -448,6 +451,7 @@
 					// Support different Adapter Implementations
 					MsoVnfAdapter adapter = vnfAdapterRestUtils.getVnfAdapterImpl(mode, cloudsiteId);
 					adapter.createVfModule(req.getCloudSiteId(),
+					    req.getCloudOwner(),
 						req.getTenantId(),
 						completeVnfVfModuleType,
 						req.getVnfVersion(),
@@ -572,6 +576,7 @@
 				// Support different Adapter Implementations
 				MsoVnfAdapter adapter = vnfAdapterRestUtils.getVnfAdapterImpl(mode, cloudsiteId);
 				adapter.updateVfModule (req.getCloudSiteId(),
+				        req.getCloudOwner(),
 						req.getTenantId(),
 						completeVnfVfModuleType,
 						req.getVnfVersion(),
@@ -693,7 +698,7 @@
 			try {
 				VfModuleRollback vmr = req.getVfModuleRollback();
 				VnfRollback vrb = new VnfRollback(
-						vmr.getVfModuleStackId(), vmr.getTenantId(), vmr.getCloudSiteId(), true, vmr.isVfModuleCreated(),
+						vmr.getVfModuleStackId(), vmr.getTenantId(), vmr.getCloudOwner(), vmr.getCloudSiteId(), true, vmr.isVfModuleCreated(),
 						vmr.getMsoRequest(), null, null, null, null);
 
 				// Support multiple adapter implementations
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VolumeAdapterRest.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VolumeAdapterRest.java
index bdc93f6..e7d7b56 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VolumeAdapterRest.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VolumeAdapterRest.java
@@ -195,6 +195,7 @@
 //							vnfRollback);
 					vnfAdapter.createVfModule(
 							req.getCloudSiteId(), //cloudSiteId,
+                            req.getCloudOwner(), //cloudOwner,
 							req.getTenantId(), //tenantId,
 							//req.getVnfType(), //vnfType,
 							completeVnfVfModuleType,
@@ -220,6 +221,7 @@
 						stackId.value,
 						true, 						// TODO boolean volumeGroupCreated, when would it be false?
 						req.getTenantId(),
+						req.getCloudOwner(),
 						req.getCloudSiteId(),
 						req.getMsoRequest(),
 						req.getMessageId());
@@ -325,7 +327,7 @@
         logger.debug("DeleteVNFVolumesTask start");
 			try {
 				if (!req.getCloudSiteId().equals(TESTING_KEYWORD)) {
-					vnfAdapter.deleteVnf(req.getCloudSiteId(), req.getTenantId(), req.getVolumeGroupStackId(), req.getMsoRequest());
+					vnfAdapter.deleteVnf(req.getCloudSiteId(), req.getCloudOwner(), req.getTenantId(), req.getVolumeGroupStackId(), req.getMsoRequest());
 				}
 				response = new DeleteVolumeGroupResponse(true, req.getMessageId());
 			} catch (VnfException e) {
@@ -423,7 +425,7 @@
 			try {
 				VolumeGroupRollback vgr = req.getVolumeGroupRollback();
 				VnfRollback vrb = new VnfRollback(
-						vgr.getVolumeGroupStackId(), vgr.getTenantId(), vgr.getCloudSiteId(), true, true,
+						vgr.getVolumeGroupStackId(), vgr.getTenantId(), vgr.getCloudOwnerId(), vgr.getCloudSiteId(), true, true,
 						vgr.getMsoRequest(), null, null, null, null);
 				vnfAdapter.rollbackVnf(vrb);
 				response = new RollbackVolumeGroupResponse(true, req.getMessageId());
@@ -542,6 +544,7 @@
 					//		outputs,
 					//		vnfRollback);
 					vnfAdapter.updateVfModule (req.getCloudSiteId(),
+					        req.getCloudOwner(),
 							req.getTenantId(),
 							//req.getVnfType(),
 							completeVnfVfModuleType,
@@ -587,6 +590,8 @@
 		@PathParam("aaiVolumeGroupId") String aaiVolumeGroupId,
 		@ApiParam(value = "cloudSiteId", required = true)
 		@QueryParam("cloudSiteId") String cloudSiteId,
+        @ApiParam(value = "cloudOwner", required = true)
+        @QueryParam("cloudOwner") String cloudOwner,
 		@ApiParam(value = "tenantId", required = true)
 		@QueryParam("tenantId") String tenantId,
 		@ApiParam(value = "volumeGroupStackId", required = true)
@@ -619,7 +624,7 @@
 				status.value = VnfStatus.ACTIVE;
 				outputs.value = testMap();
 			} else {
-				vnfAdapter.queryVnf(cloudSiteId, tenantId, volumeGroupStackId, msoRequest, vnfExists, vfModuleId, status, outputs);
+				vnfAdapter.queryVnf(cloudSiteId, cloudOwner, tenantId, volumeGroupStackId, msoRequest, vnfExists, vfModuleId, status, outputs);
 			}
     		if (!vnfExists.value) {
             logger.debug("VNFVolumes not found");
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VolumeAdapterRestV2.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VolumeAdapterRestV2.java
index f38f858..cbbfdf3 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VolumeAdapterRestV2.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VolumeAdapterRestV2.java
@@ -189,6 +189,7 @@
 					MsoVnfAdapter vnfAdapter = vnfAdapterRestUtils.getVnfAdapterImpl(mode, cloudsiteId);
 					vnfAdapter.createVfModule(
 							req.getCloudSiteId(), //cloudSiteId,
+							req.getCloudOwner(), //cloudOwner,
 							req.getTenantId(), //tenantId,
 							completeVnfVfModuleType, //vnfType,
 							req.getVnfVersion(), //vnfVersion,
@@ -214,6 +215,7 @@
 						stackId.value,
 						vnfRollback.value.getVnfCreated(),
 						req.getTenantId(),
+                        req.getCloudOwner(),
 						req.getCloudSiteId(),
 						req.getMsoRequest(),
 						req.getMessageId());
@@ -327,7 +329,7 @@
 				if (! cloudSiteId.equals(TESTING_KEYWORD)) {
 					// Support different Adapter Implementations
 					MsoVnfAdapter vnfAdapter = vnfAdapterRestUtils.getVnfAdapterImpl(mode, cloudSiteId);
-					vnfAdapter.deleteVnf(req.getCloudSiteId(), req.getTenantId(), req.getVolumeGroupStackId(), req.getMsoRequest());
+					vnfAdapter.deleteVnf(req.getCloudSiteId(), req.getCloudOwner(), req.getTenantId(), req.getVolumeGroupStackId(), req.getMsoRequest());
 				}
 				response = new DeleteVolumeGroupResponse(true, req.getMessageId());
 			} catch (VnfException e) {
@@ -425,7 +427,7 @@
 			try {
 				VolumeGroupRollback vgr = req.getVolumeGroupRollback();
 				VnfRollback vrb = new VnfRollback(
-						vgr.getVolumeGroupStackId(), vgr.getTenantId(), vgr.getCloudSiteId(), true, true,
+						vgr.getVolumeGroupStackId(), vgr.getTenantId(), vgr.getCloudOwnerId(), vgr.getCloudSiteId(), true, true,
 						vgr.getMsoRequest(), null, null, null, null);
 
 				// Support different Adapter Implementations
@@ -541,6 +543,7 @@
 					// Support different Adapter Implementations
 					MsoVnfAdapter vnfAdapter = vnfAdapterRestUtils.getVnfAdapterImpl(mode, req.getCloudSiteId());
 					vnfAdapter.updateVfModule (req.getCloudSiteId(),
+					        req.getCloudOwner(),
 							req.getTenantId(),
 							//req.getVnfType(),
 							completeVnfVfModuleType,
@@ -586,6 +589,8 @@
 		@PathParam("aaiVolumeGroupId") String aaiVolumeGroupId,
 		@ApiParam(value = "cloudSiteId", required = true)
 		@QueryParam("cloudSiteId") String cloudSiteId,
+		@ApiParam(value = "cloudOwner", required = true)
+		@QueryParam("cloudOwner") String cloudOwner,
 		@ApiParam(value = "tenantId", required = true)
 		@QueryParam("tenantId") String tenantId,
 		@ApiParam(value = "volumeGroupStackId", required = true)
@@ -622,7 +627,7 @@
 			} else {
 				// Support different Adapter Implementations
 				MsoVnfAdapter vnfAdapter = vnfAdapterRestUtils.getVnfAdapterImpl(mode, cloudSiteId);
-				vnfAdapter.queryVnf(cloudSiteId, tenantId, volumeGroupStackId, msoRequest, vnfExists, vfModuleId, status, outputs);
+				vnfAdapter.queryVnf(cloudSiteId, cloudOwner, tenantId, volumeGroupStackId, msoRequest, vnfExists, vfModuleId, status, outputs);
 			}
     		if (!vnfExists.value) {
             logger.debug("VNFVolumes not found");
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/exceptions/VnfAlreadyExists.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/exceptions/VnfAlreadyExists.java
index 2a7f33a..38283aa 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/exceptions/VnfAlreadyExists.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/exceptions/VnfAlreadyExists.java
@@ -36,7 +36,7 @@
 
 	private static final long serialVersionUID = 1L;
 
-	public VnfAlreadyExists (String name, String cloudId, String tenantId, String vnfId) {
-		super("Resource " + name + " already exists in cloud/tenant " + cloudId + "/" + tenantId + " with ID " + vnfId);
+	public VnfAlreadyExists (String name, String cloudId, String cloudOwner, String tenantId, String vnfId) {
+		super("Resource " + name + " already exists in owner/cloud/tenant " + cloudOwner + "/" + cloudId + "/" + tenantId + " with ID " + vnfId);
 	}
 }
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/exceptions/VnfNotFound.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/exceptions/VnfNotFound.java
index f3fa39c..18d6224 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/exceptions/VnfNotFound.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/exceptions/VnfNotFound.java
@@ -35,7 +35,7 @@
 
 	private static final long serialVersionUID = 1L;
 
-	public VnfNotFound (String cloudId, String tenantId, String vnfName) {
-		super("Resource " + vnfName + " not found in cloud/tenant " + cloudId + "/" + tenantId);
+	public VnfNotFound (String cloudId, String cloudOwner, String tenantId, String vnfName) {
+		super("Resource " + vnfName + " not found in owner/cloud/tenant " + cloudOwner + "/" + cloudId + "/" + tenantId);
 	}
 }
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/HeatStackAuditTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/HeatStackAuditTest.java
index 5eea46d..987e4cf 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/HeatStackAuditTest.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/HeatStackAuditTest.java
@@ -26,6 +26,7 @@
 import static org.mockito.Mockito.doReturn;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
@@ -42,6 +43,7 @@
 import org.onap.aai.domain.yang.LInterfaces;
 import org.onap.aai.domain.yang.Vserver;
 import org.onap.so.openstack.utils.MsoHeatUtils;
+import org.onap.so.openstack.utils.MsoNeutronUtils;
 import org.skyscreamer.jsonassert.JSONAssert;
 
 import com.fasterxml.jackson.databind.DeserializationFeature;
@@ -49,6 +51,7 @@
 import com.woorea.openstack.heat.model.Resource;
 import com.woorea.openstack.heat.model.Resources;
 import com.woorea.openstack.heat.model.Stack;
+import com.woorea.openstack.quantum.model.Port;
 
 
 @RunWith(MockitoJUnitRunner.Silent.class)
@@ -61,6 +64,9 @@
 	private MsoHeatUtils msoHeatUtilsMock;
 	
 	@Mock
+	private MsoNeutronUtils neutronUtilsMock;
+	
+	@Mock
 	private AuditVServer auditVserver;
 
 	private static final String cloudRegion = "cloudRegion";
@@ -72,10 +78,32 @@
 	
 	private ObjectMapper stackObjectMapper = new ObjectMapper().configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
 
+	private List<Optional<Port>> portList = new ArrayList<>();
+	
 	@Before
 	public void setup() throws Exception{		
 		resources= objectMapper.readValue(new File("src/test/resources/GetResources.json"), Resources.class);
+		Port neutronPort1 =stackObjectMapper.readValue(new File("src/test/resources/NeutronPort1.json"), Port.class);
+		doReturn(Optional.of(neutronPort1)).when(neutronUtilsMock).getNeutronPort("7ee06d9d-3d18-411c-9d3e-aec930f70413", cloudRegion,tenantId);
+		Port neutronPort2 = stackObjectMapper.readValue(new File("src/test/resources/NeutronPort2.json"), Port.class);
+		doReturn(Optional.of(neutronPort2)).when(neutronUtilsMock).getNeutronPort("27391d94-33af-474a-927d-d409249e8fd3", cloudRegion,tenantId);
+		Port neutronPort3 = stackObjectMapper.readValue(new File("src/test/resources/NeutronPort3.json"), Port.class);
+		doReturn(Optional.of(neutronPort3)).when(neutronUtilsMock).getNeutronPort("fdeedf37-c01e-4ab0-bdd6-8d5fc4913943", cloudRegion,tenantId);	
+		Port neutronPort4 = stackObjectMapper.readValue(new File("src/test/resources/NeutronPort4.json"), Port.class);
+		doReturn(Optional.of(neutronPort4)).when(neutronUtilsMock).getNeutronPort("8d93f63e-e972-48c7-ad98-b2122da47315", cloudRegion,tenantId);
+		Port neutronPort5 = stackObjectMapper.readValue(new File("src/test/resources/NeutronPort5.json"), Port.class);
+		doReturn(Optional.of(neutronPort5)).when(neutronUtilsMock).getNeutronPort("0594a2f2-7ea4-42eb-abc2-48ea49677fca", cloudRegion,tenantId);
+		Port neutronPort6 = stackObjectMapper.readValue(new File("src/test/resources/NeutronPort6.json"), Port.class);
+		doReturn(Optional.of(neutronPort6)).when(neutronUtilsMock).getNeutronPort("00bb8407-650e-48b5-b919-33b88d6f8fe3", cloudRegion,tenantId);
 		
+
+		portList.add(Optional.empty());
+		portList.add(Optional.of(neutronPort1));
+		portList.add(Optional.of(neutronPort2));
+		portList.add(Optional.of(neutronPort3));
+		portList.add(Optional.of(neutronPort4));
+		portList.add(Optional.of(neutronPort5));
+		portList.add(Optional.of(neutronPort6));
 	} 
 	
 	@Test
@@ -111,13 +139,13 @@
 		vServer1.setLInterfaces(vServer1Linterfaces);
 		
 		LInterface ssc_1_trusted_port_0 = new LInterface();
-		ssc_1_trusted_port_0.setInterfaceId("d2f51f82-0ec2-4581-bd1a-d2a82073e52b");
+		ssc_1_trusted_port_0.setInterfaceId("7ee06d9d-3d18-411c-9d3e-aec930f70413");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_trusted_port_0);
 		
 
 		
 		LInterface ssc_1_mgmt_port_1 = new LInterface();
-		ssc_1_mgmt_port_1.setInterfaceId("07f5b14c-147a-4d14-8c94-a9e94dbc097b");
+		ssc_1_mgmt_port_1.setInterfaceId("fdeedf37-c01e-4ab0-bdd6-8d5fc4913943");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_1);
 		
 		LInterface ssc_1_mgmt_port_0 = new LInterface();
@@ -187,7 +215,7 @@
 		Resources service1ResourceQuerySubInt3 = objectMapper.readValue(new File("src/test/resources/Service1SubInterface2Resources.json"), Resources.class);
 		doReturn(service1ResourceQuerySubInt3).when(msoHeatUtilsMock).executeHeatClientRequest("/stacks/tsbc0005vm002ssc001-ssc_1_subint_service1_port_0_subinterfaces-dtmxjmny7yjz-2-y3ndsavmsymv/bd0fc728-cbde-4301-a581-db56f494675c/resources", cloudRegion,tenantId, Resources.class);
 	
-		Set<Vserver> vServersToAudit = heatStackAudit.createVserverSet(resources, novaResources);
+		Set<Vserver> vServersToAudit = heatStackAudit.createVserverSet(resources, novaResources,portList);
 		Set<Vserver> vserversWithSubInterfaces = heatStackAudit.processSubInterfaces(cloudRegion,tenantId,resourceGroups, vServersToAudit);
 		
 		String actualValue = objectMapper.writeValueAsString(vserversWithSubInterfaces);
@@ -219,7 +247,7 @@
 		vServer1.setLInterfaces(vServer1Linterfaces);
 		
 		LInterface ssc_1_trusted_port_0 = new LInterface();
-		ssc_1_trusted_port_0.setInterfaceId("d2f51f82-0ec2-4581-bd1a-d2a82073e52b");
+		ssc_1_trusted_port_0.setInterfaceId("7ee06d9d-3d18-411c-9d3e-aec930f70413");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_trusted_port_0);
 		
 		LInterface ssc_1_service1_port_0 = new LInterface();
@@ -227,7 +255,7 @@
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_service1_port_0);
 		
 		LInterface ssc_1_mgmt_port_1 = new LInterface();
-		ssc_1_mgmt_port_1.setInterfaceId("07f5b14c-147a-4d14-8c94-a9e94dbc097b");
+		ssc_1_mgmt_port_1.setInterfaceId("fdeedf37-c01e-4ab0-bdd6-8d5fc4913943");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_1);
 		
 		LInterface ssc_1_mgmt_port_0 = new LInterface();
@@ -244,7 +272,7 @@
 		
 		expectedVservers.add(vServer1);
 	
-		Set<Vserver> actualVservers = heatStackAudit.createVserverSet(resources, novaResources);
+		Set<Vserver> actualVservers = heatStackAudit.createVserverSet(resources, novaResources,portList);
 		
 		assertThat(actualVservers, sameBeanAs(expectedVservers));
 	}
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/valet/ValetClientTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/valet/ValetClientTest.java
index 141be6b..8f6a182 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/valet/ValetClientTest.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/valet/ValetClientTest.java
@@ -61,7 +61,7 @@
 		
 		mockValetCreatePostResponse_200("requestId", mapper.writeValueAsString(vcr));
 		
-		GenericValetResponse<ValetCreateResponse> actual = client.callValetCreateRequest("requestId", "regionId", "tenantId", "serviceInstanceId", "vnfId", "vnfName", "vfModuleId", "vfModuleName", "keystoneUrl", null);
+		GenericValetResponse<ValetCreateResponse> actual = client.callValetCreateRequest("requestId", "regionId", "ownerId", "tenantId", "serviceInstanceId", "vnfId", "vnfName", "vfModuleId", "vfModuleName", "keystoneUrl", null);
 
 		assertThat(actual, sameBeanAs(expected));
 	}
@@ -73,7 +73,7 @@
 		
 		mockValetCreatePutResponse_200("requestId", mapper.writeValueAsString(vur));
 		
-		GenericValetResponse<ValetUpdateResponse> actual = client.callValetUpdateRequest("requestId", "regionId", "tenantId", "serviceInstanceId", "vnfId", "vnfName", "vfModuleId", "vfModuleName", "keystoneUrl", null);
+		GenericValetResponse<ValetUpdateResponse> actual = client.callValetUpdateRequest("requestId", "regionId", "ownerId", "tenantId", "serviceInstanceId", "vnfId", "vnfName", "vfModuleId", "vfModuleName", "keystoneUrl", null);
 
 		assertThat(actual, sameBeanAs(expected));
 	}
@@ -85,7 +85,7 @@
 		
 		mockValetDeleteDeleteResponse_200("requestId", mapper.writeValueAsString(vdr));
 		
-		GenericValetResponse<ValetDeleteResponse> actual = client.callValetDeleteRequest("requestId", "regionId", "tenantId", "vfModuleId", "vfModuleName");
+		GenericValetResponse<ValetDeleteResponse> actual = client.callValetDeleteRequest("requestId", "regionId", "ownerId", "tenantId", "vfModuleId", "vfModuleName");
 
 		assertThat(actual, sameBeanAs(expected));
 	}
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfAdapterAsyncImplTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfAdapterAsyncImplTest.java
index 3ebaea9..cbf252e 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfAdapterAsyncImplTest.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfAdapterAsyncImplTest.java
@@ -75,7 +75,7 @@
 
 		String vnfName = "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId";
 		String notificationUrl = "http://localhost:"+wireMockPort+"/notify/adapterNotify/updateVnfNotificationRequest";
-		instance.createVnfA("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+		instance.createVnfA("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
 				"volumeGroupHeatStackId|1", new HashMap<String, Object>(), Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, "messageId",
 				msoRequest, notificationUrl);
 
@@ -85,7 +85,7 @@
 	@Test
 	public void createVNFTest_Exception() throws Exception {
 		String notificationUrl = "http://localhost:"+wireMockPort+"/notify/adapterNotify/updateVnfNotificationRequest";
-		instance.createVnfA("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
+		instance.createVnfA("mdt1", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
 				"volumeGroupHeatStackId|1", new HashMap<String, Object>(), Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, "messageId",
 				null, notificationUrl);
 
@@ -105,7 +105,7 @@
 				(containing("messageId"))
 				.willReturn(aResponse().withStatus(HttpStatus.SC_OK)));
 		String notificationUrl = "http://localhost:"+wireMockPort+"/notify/adapterNotify/updateVnfNotificationRequest";
-		instance.updateVnfA("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
+		instance.updateVnfA("mdt1", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
 				"volumeGroupHeatStackId|1", map, "messageId", msoRequest,
 				notificationUrl);
 	}
@@ -122,7 +122,7 @@
 				(containing("messageId"))
 				.willReturn(aResponse().withStatus(HttpStatus.SC_OK)));
 		String notificationUrl = "http://localhost:"+wireMockPort+"/notify/adapterNotify/updateVnfNotificationRequest";
-		instance.updateVnfA("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
+		instance.updateVnfA("mdt1", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
 				"volumeGroupHeatStackId|1", map, "messageId", msoRequest,
 				notificationUrl);
 		verify(1,postRequestedFor(urlEqualTo("/notify/adapterNotify/updateVnfNotificationRequest")));
@@ -133,7 +133,7 @@
 		MsoRequest msoRequest = new MsoRequest();
 		msoRequest.setRequestId("12345");
 		msoRequest.setServiceInstanceId("12345");
-			instance.queryVnfA("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", "messageId", msoRequest,
+			instance.queryVnfA("mdt1", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", "messageId", msoRequest,
 					"http://org.onap.so/notify/adapterNotify/updateVnfNotificationRequest");
 	}
 
@@ -142,7 +142,7 @@
 		MsoRequest msoRequest = new MsoRequest();
 		msoRequest.setRequestId("12345");
 		msoRequest.setServiceInstanceId("12345");
-			instance.deleteVnfA("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", "messageId", msoRequest,
+			instance.deleteVnfA("mdt1", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", "messageId", msoRequest,
 					"http://org.onap.so/notify/adapterNotify/updateVnfNotificationRequest");
 	}
 
@@ -150,6 +150,7 @@
 	public void rollbackVnfTest() {
 		VnfRollback vnfRollBack = new VnfRollback();
 		vnfRollBack.setCloudSiteId("mdt1");
+		vnfRollBack.setCloudOwner("CloudOwner");
 		vnfRollBack.setTenantId("88a6ca3ee0394ade9403f075db23167e");
 		vnfRollBack.setVnfId("ff5256d1-5a33-55df-13ab-12abad84e7ff");
 			instance.rollbackVnfA(vnfRollBack, "messageId",
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfAdapterImplTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfAdapterImplTest.java
index be3b54e..0816bc5 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfAdapterImplTest.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfAdapterImplTest.java
@@ -106,7 +106,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.createVfModule("MTN13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+		instance.createVfModule("MTN13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
 				"volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
 				Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -126,7 +126,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+		instance.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
 				"volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
 				Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -146,7 +146,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+		instance.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
 				"volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
 				Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -166,7 +166,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+		instance.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
 				"volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
 				Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -183,7 +183,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+		instance.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
 				"volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
 				Boolean.TRUE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -197,7 +197,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+		instance.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
 				"volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
 				Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -213,7 +213,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+		instance.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
 				Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -232,7 +232,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+		instance.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
 				Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -252,7 +252,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+		instance.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
 				Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -270,7 +270,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+		instance.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
 				Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -302,7 +302,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+		instance.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
 				Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -339,7 +339,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "XVFMOD",
+		instance.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "XVFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", null, map,
 				Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -357,7 +357,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+		instance.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
 				Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -377,7 +377,7 @@
 
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.updateVfModule("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
+		instance.updateVfModule("mdt1", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
 				"volumeGroupHeatStackId|1", "baseVfHeatStackId", "vfModuleStackId",
 				"88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -390,7 +390,7 @@
 		mockOpenStackResponseAccess(wireMockPort);
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+		instance.updateVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
 				"88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -407,7 +407,7 @@
 						.withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+		instance.updateVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
 				"88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -424,7 +424,7 @@
 						.withStatus(HttpStatus.SC_NOT_FOUND)));
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+		instance.updateVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
 				"88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -440,7 +440,7 @@
 		mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_INTERNAL_SERVER_ERROR,"OpenstackResponse_Stack_Created_VfModule.json");
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+		instance.updateVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
 				"88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -456,7 +456,7 @@
 		mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_NOT_FOUND,"OpenstackResponse_Stack_Created_VfModule.json");
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+		instance.updateVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
 				"88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -472,7 +472,7 @@
 		mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+		instance.updateVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
 				"88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -491,7 +491,7 @@
 		vfModuleCustomization.getVfModule().getModuleHeatTemplate().setParameters(new HashSet<>());
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+		instance.updateVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
 				"88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -511,7 +511,7 @@
 		vfModuleCustomization.getVfModule().getModuleHeatTemplate().setParameters(new HashSet<>());
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
-		instance.updateVfModule("MTN13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+		instance.updateVfModule("MTN13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
 				"volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
 				"b4ea86b4-253f-11e7-93ae-92361f002671", map, msoRequest, new Holder<Map<String, String>>(),
 				new Holder<VnfRollback>());
@@ -523,12 +523,12 @@
 
 		Map<String, Object> outputs = new HashMap<>();
 		outputs.put("Key1", "value1");
-		when(heatUtils.queryStackForOutputs("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12")).thenReturn(outputs);
+		when(heatUtils.queryStackForOutputs("mdt1", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12")).thenReturn(outputs);
 
 		MsoVnfAdapterImpl instance = new MsoVnfAdapterImpl();
 		MsoRequest msoRequest = getMsoRequest();
 		try {
-			instance.deleteVfModule("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest,
+			instance.deleteVfModule("mdt1", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest,
 					new Holder<Map<String, String>>());
 		} catch (Exception e) {
 
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfCloudifyAdapterImplTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfCloudifyAdapterImplTest.java
index 4484390..fbb9a22 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfCloudifyAdapterImplTest.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfCloudifyAdapterImplTest.java
@@ -68,7 +68,7 @@
         msoRequest.setRequestId("12345");
         msoRequest.setServiceInstanceId("12345");
 
-        instance.queryVnf("siteid", "1234", "vfname",
+        instance.queryVnf("siteid", "CloudOwner", "1234", "vfname",
                 msoRequest, new Holder<>(), new Holder<>(), new Holder<>(),
                 new Holder<>());
     }
@@ -94,7 +94,7 @@
 				.withBodyFile("OpenstackResponse_Access.json")
 				.withStatus(HttpStatus.SC_OK)));
 		
-		instance.queryVnf("mtn13", "1234", "vfname",
+		instance.queryVnf("mtn13", "CloudOwner", "1234", "vfname",
 				msoRequest, new Holder<>(), new Holder<>(), new Holder<>(),
 				new Holder<>());
 	}
@@ -106,7 +106,7 @@
 		msoRequest.setRequestId("12345");
 		msoRequest.setServiceInstanceId("12345");
 
-		instance.deleteVfModule("mtn13", "1234", "vfname", msoRequest, new Holder<>());
+		instance.deleteVfModule("mtn13", "CloudOwner", "1234", "vfname", msoRequest, new Holder<>());
 	}
 
 	@Test
@@ -131,7 +131,7 @@
 				.withBodyFile("OpenstackResponse_Access.json")
 				.withStatus(HttpStatus.SC_OK)));
 
-		instance.deleteVfModule("mtn13", "1234", "vfname", msoRequest, new Holder<>());
+		instance.deleteVfModule("mtn13", "CloudOwner", "1234", "vfname", msoRequest, new Holder<>());
 	}
 	
 	@Test
@@ -141,7 +141,7 @@
         msoRequest.setRequestId("12345");
         msoRequest.setServiceInstanceId("12345");
 
-        instance.deleteVnf("12344", "234", "vnfname", msoRequest);
+        instance.deleteVnf("12344", "CloudOwner", "234", "vnfname", msoRequest);
 
     }
 
@@ -184,7 +184,7 @@
 		msoRequest.setRequestId("12345");
 		msoRequest.setServiceInstanceId("12345");
 
-		instance.createVfModule("123", "123", "vf", "v1", "", "module-005", "", "create", "3245", "234", "123", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
+		instance.createVfModule("123", "CloudOwner", "123", "vf", "v1", "", "module-005", "", "create", "3245", "234", "123", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
 	}
 
 	@Test
@@ -194,7 +194,7 @@
 		msoRequest.setRequestId("12345");
 		msoRequest.setServiceInstanceId("12345");
 
-		instance.createVfModule("123", "123", "vf", "v1", "", "module-005", "", "create", "3245", "234", null, new 
+		instance.createVfModule("123", "CloudOwner", "123", "vf", "v1", "", "module-005", "", "create", "3245", "234", null, new 
 				HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
 	}
 
@@ -205,7 +205,7 @@
 		msoRequest.setRequestId("12345");
 		msoRequest.setServiceInstanceId("12345");
 
-		instance.createVfModule("123", "123", "vf", "v1", "", "module-005", "", "create", "3245", "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
+		instance.createVfModule("123", "CloudOwner", "123", "vf", "v1", "", "module-005", "", "create", "3245", "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
 	}
 
 	@Test
@@ -215,7 +215,7 @@
 		msoRequest.setRequestId("12345");
 		msoRequest.setServiceInstanceId("12345");
 
-		instance.createVfModule("mtn13", "123", "vf", "v1", "", "module-005", "", "create", "3245", "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
+		instance.createVfModule("mtn13", "CloudOwner", "123", "vf", "v1", "", "module-005", "", "create", "3245", "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
 	}
 
 	@Test
@@ -241,7 +241,7 @@
 				.withBodyFile("OpenstackResponse_Access.json")
 				.withStatus(HttpStatus.SC_OK)));
 
-		instance.createVfModule("mtn13", "123", "vf", "v1", "", "vfname", "", "create", "3245", "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
+		instance.createVfModule("mtn13", "CloudOwner", "123", "vf", "v1", "", "vfname", "", "create", "3245", "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
 	}
 
 	@Test
@@ -251,7 +251,7 @@
 		msoRequest.setRequestId("12345");
 		msoRequest.setServiceInstanceId("12345");
 
-		instance.updateVfModule("123", "1234", "fw", "v2", "vnf1", "create", "123", "12", "233", "234", new HashMap<>(), msoRequest, new Holder<>(), new Holder<>());
+		instance.updateVfModule("123", "CloudOwner", "1234", "fw", "v2", "vnf1", "create", "123", "12", "233", "234", new HashMap<>(), msoRequest, new Holder<>(), new Holder<>());
 	}
 
 	@Test
@@ -268,7 +268,7 @@
 		Map<String, Object> map = new HashMap<>();
 		map.put("key1", "value1");
 		try {
-			instance.createVnf("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
+			instance.createVnf("mdt1", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
 					"volumeGroupHeatStackId|1", map,
 					Boolean.FALSE, Boolean.TRUE, Boolean.TRUE, msoRequest, new Holder<>(), new Holder<>(),
                 new Holder<>());
@@ -286,7 +286,7 @@
 		
 		map.put("key1", "value1");
 		try {
-			instance.updateVnf("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
+			instance.updateVnf("mdt1", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
 					"volumeGroupHeatStackId|1",  map, msoRequest, new Holder<>(),
                 new Holder<>());
 		} catch (Exception e) {
@@ -300,7 +300,7 @@
 		msoRequest.setRequestId("12345");
 		msoRequest.setServiceInstanceId("12345");
 		try {
-			instance.deleteVnf("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest);
+			instance.deleteVnf("mdt1", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest);
 		} catch (Exception e) {
 
 		}
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfMulticloudAdapterImplTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfMulticloudAdapterImplTest.java
index 376076a..342a21a 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfMulticloudAdapterImplTest.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfMulticloudAdapterImplTest.java
@@ -92,7 +92,7 @@
                 .withBodyFile("MulticloudResponse_Stack_Create.json")
                 .withStatus(HttpStatus.SC_CREATED)));
 
-        instance.createVfModule("MTN13", "123", "vf", "v1", "genericVnfId", "vfname", "vfModuleId", "create", null, "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", stackInputs, true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
+        instance.createVfModule("MTN13", "CloudOwner", "123", "vf", "v1", "genericVnfId", "vfname", "vfModuleId", "create", null, "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", stackInputs, true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
     }
 
     @Test
@@ -108,7 +108,7 @@
         stubFor(delete(urlPathEqualTo("/api/multicloud/v1/cloud_owner/cloud_region_id/infra_workload/workload-id")).willReturn(aResponse()
                 .withStatus(HttpStatus.SC_NO_CONTENT)));
 
-        instance.deleteVfModule("MTN13", "123", "workload-id", msoRequest, new Holder<>());
+        instance.deleteVfModule("MTN13", "CloudOwner", "123", "workload-id", msoRequest, new Holder<>());
     }
 
     @Test
@@ -121,7 +121,7 @@
                 .withBodyFile("MulticloudResponse_Stack.json")
                 .withStatus(HttpStatus.SC_OK)));
 
-        instance.queryVnf("MTN13", "123", "workload-id", msoRequest, new Holder<>(), new Holder<>(), new Holder<>(), new Holder<>());
+        instance.queryVnf("MTN13", "CloudOwner", "123", "workload-id", msoRequest, new Holder<>(), new Holder<>(), new Holder<>(), new Holder<>());
     }
 
     // TODO Error Tests
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImplTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImplTest.java
index 0cd3d1a..3dcb52b 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImplTest.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImplTest.java
@@ -58,7 +58,7 @@
         MsoRequest msoRequest = getMsoRequest();
         Map<String, Object> map = new HashMap<>();
         map.put("key1", "value1");
-        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+        msoVnfPluginAdapter.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", null, map,
                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                 new Holder<VnfRollback>());
@@ -70,7 +70,7 @@
         MsoRequest msoRequest = getMsoRequest();
         Map<String, Object> map = new HashMap<>();
         map.put("key1", "value1");
-        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+        msoVnfPluginAdapter.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                 new Holder<VnfRollback>());
@@ -82,7 +82,7 @@
         MsoRequest msoRequest = getMsoRequest();
         Map<String, Object> map = new HashMap<>();
         map.put("key1", "value1");
-        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+        msoVnfPluginAdapter.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "9b339a61-69ca-465f-86b8-1c72c582b8e8", map,
                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                 new Holder<VnfRollback>());
@@ -96,7 +96,7 @@
         MsoRequest msoRequest = getMsoRequest();
         Map<String, Object> map = new HashMap<>();
         map.put("key1", "value1");
-        msoVnfPluginAdapter.createVfModule("MTN13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+        msoVnfPluginAdapter.createVfModule("MTN13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                 null, "baseVfHeatStackId", "9b339a61-69ca-465f-86b8-1c72c582b8e8", map,
                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                 new Holder<VnfRollback>());
@@ -109,7 +109,7 @@
         MsoRequest msoRequest = getMsoRequest();
         Map<String, Object> map = new HashMap<>();
         map.put("key1", "value1");
-        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+        msoVnfPluginAdapter.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "9b339a61-69ca-465f-86b8-1c72c582b8e8", map,
                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                 new Holder<VnfRollback>());
@@ -127,7 +127,7 @@
         MsoRequest msoRequest = getMsoRequest();
         Map<String, Object> map = new HashMap<>();
         map.put("key1", "value1");
-        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
+        msoVnfPluginAdapter.createVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                 "volumeGroupHeatStackId", "baseVfHeatStackId", "9b339a61-69ca-465f-86b8-1c72c582b8e8", map,
                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                 new Holder<VnfRollback>());
@@ -137,7 +137,7 @@
     public void deleteVfModule_QueryVduException() throws Exception {
         expectedException.expect(VnfException.class);
         MsoRequest msoRequest = getMsoRequest();
-        msoVnfPluginAdapter.deleteVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest,
+        msoVnfPluginAdapter.deleteVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest,
                 new Holder<Map<String, String>>());
     }
 
@@ -154,7 +154,7 @@
                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
                         .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
         MsoRequest msoRequest = getMsoRequest();
-        msoVnfPluginAdapter.deleteVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest,
+        msoVnfPluginAdapter.deleteVfModule("mtn13", "CloudOwner", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest,
                 new Holder<Map<String, String>>());
     }
 
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/QueryTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/QueryTest.java
index 2740e25..232f5b3 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/QueryTest.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/QueryTest.java
@@ -59,8 +59,9 @@
 	@Test
 	public void testQueryCreatedVnf() throws VnfException, MsoException {
 		StackInfo info = new StackInfo("stackName", HeatStatus.CREATED);
-		when(heat.queryStack(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(info);
+		when(heat.queryStack(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(info);
 		String cloudId = "MT";
+		String cloudOwner = "CloudOwner";
 		String tenantId = "MSO_Test";
 		String vnfName = "VNF_TEST1";
 		Holder<Boolean> vnfExists = new Holder<>();
@@ -68,7 +69,7 @@
 		Holder<VnfStatus> status = new Holder<>();
 		Holder<Map<String, String>> outputs = new Holder<>();
 
-		vnfAdapter.queryVnf(cloudId, tenantId, vnfName, null, vnfExists, vnfId, status, outputs);
+		vnfAdapter.queryVnf(cloudId, cloudOwner, tenantId, vnfName, null, vnfExists, vnfId, status, outputs);
 
 		assertTrue(vnfExists.value);
 	}
@@ -76,8 +77,9 @@
 	@Test
 	public void testQueryNotFoundVnf() throws VnfException, MsoException {
 		StackInfo info = new StackInfo("stackName", HeatStatus.NOTFOUND);
-		when(heat.queryStack(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(info);
+		when(heat.queryStack(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(info);
 		String cloudId = "MT";
+		String cloudOwner = "CloudOwner";
 		String tenantId = "MSO_Test";
 		String vnfName = "VNF_TEST1";
 		Holder<Boolean> vnfExists = new Holder<>();
@@ -85,7 +87,7 @@
 		Holder<VnfStatus> status = new Holder<>();
 		Holder<Map<String, String>> outputs = new Holder<>();
 
-		vnfAdapter.queryVnf(cloudId, tenantId, vnfName, null, vnfExists, vnfId, status, outputs);
+		vnfAdapter.queryVnf(cloudId, cloudOwner, tenantId, vnfName, null, vnfExists, vnfId, status, outputs);
 
 		assertFalse(vnfExists.value);
 	}
@@ -94,6 +96,7 @@
 	// @Ignore // 1802 merge
 	public void testQueryVnfWithException() throws VnfException, MsoException {
 		String cloudId = "MT";
+		String cloudOwner = "CloudOwner";
 		String tenantId = "MSO_Test";
 		String vnfName = "VNF_TEST1";
 		Holder<Boolean> vnfExists = new Holder<>();
@@ -102,7 +105,7 @@
 		Holder<Map<String, String>> outputs = new Holder<>();
 		thrown.expect(VnfException.class);
 		thrown.expectCause(hasProperty("context", is("QueryVNF")));
-		when(heat.queryStack(Mockito.any(), Mockito.any(), Mockito.any())).thenThrow(new MsoOpenstackException(1, "test messsage", "test detail"));
-		vnfAdapter.queryVnf(cloudId, tenantId, vnfName, null, vnfExists, vnfId, status, outputs);
+		when(heat.queryStack(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())).thenThrow(new MsoOpenstackException(1, "test messsage", "test detail"));
+		vnfAdapter.queryVnf(cloudId, cloudOwner, tenantId, vnfName, null, vnfExists, vnfId, status, outputs);
 	}
 }
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/VnfAdapterRestTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/VnfAdapterRestTest.java
index 343b624..50bae8a 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/VnfAdapterRestTest.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/VnfAdapterRestTest.java
@@ -82,6 +82,7 @@
 	private static final String MSO_REQUEST_ID = "62265093-277d-4388-9ba6-449838ade586";
 	private static final String MSO_SERVICE_INSTANCE_ID = "4147e06f-1b89-49c5-b21f-4faf8dc9805a";
 	private static final String CLOUDSITE_ID = "mtn13";
+	private static final String CLOUD_OWNER = "CloudOwner";
 	private static final String TENANT_ID = "0422ffb57ba042c0800a29dc85ca70f8";
 	private static final String VNF_TYPE = "MSOTADevInfra_vSAMP10a_Service/vSAMP10a 1";
 	private static final String VNF_NAME = "MSO-DEV-VNF-1802-it3-pwt3-vSAMP10a-1XXX-Replace";
@@ -449,7 +450,7 @@
 		msoRequest.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
 		
 		VfModuleRollback vfModuleRollback = new VfModuleRollback(AAI_VNF_ID, VF_MODULE_ID,
-				"StackId", false, TENANT_ID, CLOUDSITE_ID, msoRequest, "messageId");
+				"StackId", false, TENANT_ID, CLOUD_OWNER, CLOUDSITE_ID, msoRequest, "messageId");
 		
 		RollbackVfModuleRequest request = new RollbackVfModuleRequest();
 		request.setVfModuleRollback(vfModuleRollback);
diff --git a/adapters/mso-openstack-adapters/src/test/resources/GetResources.json b/adapters/mso-openstack-adapters/src/test/resources/GetResources.json
index 22e66d4..3366ce4 100644
--- a/adapters/mso-openstack-adapters/src/test/resources/GetResources.json
+++ b/adapters/mso-openstack-adapters/src/test/resources/GetResources.json
@@ -1,6 +1,6 @@
 {
-    "resources": [
-      {
+  "resources": [
+    {
       "links": [
         {
           "href": "https://orchestration.com:8004/v1/99cecb7b19dc4690960761abd0fe2413/stacks/zdyh3brlba05_addon/03840be2-7ce6-4e38-a748-dbd59a798732/resources/vlbagent_eph_aff_id", 
@@ -22,207 +22,208 @@
       "resource_type": "OS::Heat::RandomString", 
       "updated_time": "2019-02-07T22:56:12Z"
     }, 
+    {
+      "links": [
         {
-            "resource_name": "ssc_1_trusted_port_0",
-            "links": [
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_trusted_port_0",
-                    "rel": "self"
-                },
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34",
-                    "rel": "stack"
-                }
-            ],
-            "logical_resource_id": "ssc_1_trusted_port_0",
-            "resource_status": "CREATE_COMPLETE",
-            "updated_time": "2019-01-23T19:34:15Z",
-            "required_by": [
-                "ssc_server_1"
-            ],
-            "resource_status_reason": "state changed",
-            "physical_resource_id": "d2f51f82-0ec2-4581-bd1a-d2a82073e52b",
-            "resource_type": "OS::Neutron::Port"
-        },
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_trusted_port_0", 
+          "rel": "self"
+        }, 
         {
-            "resource_name": "ssc_1_service1_port_0",
-            "links": [
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_service1_port_0",
-                    "rel": "self"
-                },
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34",
-                    "rel": "stack"
-                }
-            ],
-            "logical_resource_id": "ssc_1_service1_port_0",
-            "resource_status": "CREATE_COMPLETE",
-            "updated_time": "2019-01-23T19:34:15Z",
-            "required_by": [
-                "ssc_1_subint_service1_port_0_subinterfaces",
-                "ssc_server_1"
-            ],
-            "resource_status_reason": "state changed",
-            "physical_resource_id": "27391d94-33af-474a-927d-d409249e8fd3",
-            "resource_type": "OS::Neutron::Port"
-        },
-        {
-            "resource_name": "ssc_1_subint_service2_port_0_subinterfaces",
-            "links": [
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_subint_service2_port_0_subinterfaces",
-                    "rel": "self"
-                },
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34",
-                    "rel": "stack"
-                },
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_service2_port_0_subinterfaces-hlzdigtimzst/447a9b41-714e-434b-b1d0-6cce8d9f0f0c",
-                    "rel": "nested"
-                }
-            ],
-            "logical_resource_id": "ssc_1_subint_service2_port_0_subinterfaces",
-            "resource_status": "CREATE_COMPLETE",
-            "updated_time": "2019-01-23T19:34:15Z",
-            "required_by": [],
-            "resource_status_reason": "state changed",
-            "physical_resource_id": "447a9b41-714e-434b-b1d0-6cce8d9f0f0c",
-            "resource_type": "OS::Heat::ResourceGroup"
-        },
-        {
-            "resource_name": "ssc_1_mgmt_port_1",
-            "links": [
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_mgmt_port_1",
-                    "rel": "self"
-                },
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34",
-                    "rel": "stack"
-                }
-            ],
-            "logical_resource_id": "ssc_1_mgmt_port_1",
-            "resource_status": "CREATE_COMPLETE",
-            "updated_time": "2019-01-23T19:34:15Z",
-            "required_by": [
-                "ssc_server_1"
-            ],
-            "resource_status_reason": "state changed",
-            "physical_resource_id": "07f5b14c-147a-4d14-8c94-a9e94dbc097b",
-            "resource_type": "OS::Neutron::Port"
-        },
-        {
-            "resource_name": "ssc_1_mgmt_port_0",
-            "links": [
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_mgmt_port_0",
-                    "rel": "self"
-                },
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34",
-                    "rel": "stack"
-                }
-            ],
-            "logical_resource_id": "ssc_1_mgmt_port_0",
-            "resource_status": "CREATE_COMPLETE",
-            "updated_time": "2019-01-23T19:34:15Z",
-            "required_by": [
-                "ssc_server_1"
-            ],
-            "resource_status_reason": "state changed",
-            "physical_resource_id": "8d93f63e-e972-48c7-ad98-b2122da47315",
-            "resource_type": "OS::Neutron::Port"
-        },
-        {
-            "resource_name": "ssc_1_service2_port_0",
-            "links": [
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_service2_port_0",
-                    "rel": "self"
-                },
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34",
-                    "rel": "stack"
-                }
-            ],
-            "logical_resource_id": "ssc_1_service2_port_0",
-            "resource_status": "CREATE_COMPLETE",
-            "updated_time": "2019-01-23T19:34:15Z",
-            "required_by": [
-                "ssc_1_subint_service2_port_0_subinterfaces",
-                "ssc_server_1"
-            ],
-            "resource_status_reason": "state changed",
-            "physical_resource_id": "0594a2f2-7ea4-42eb-abc2-48ea49677fca",
-            "resource_type": "OS::Neutron::Port"
-        },
-        {
-            "resource_name": "ssc_1_int_ha_port_0",
-            "links": [
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_int_ha_port_0",
-                    "rel": "self"
-                },
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34",
-                    "rel": "stack"
-                }
-            ],
-            "logical_resource_id": "ssc_1_int_ha_port_0",
-            "resource_status": "CREATE_COMPLETE",
-            "updated_time": "2019-01-23T19:34:15Z",
-            "required_by": [
-                "ssc_server_1"
-            ],
-            "resource_status_reason": "state changed",
-            "physical_resource_id": "00bb8407-650e-48b5-b919-33b88d6f8fe3",
-            "resource_type": "OS::Neutron::Port"
-        },
-        {
-            "resource_name": "ssc_server_1",
-            "links": [
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_server_1",
-                    "rel": "self"
-                },
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34",
-                    "rel": "stack"
-                }
-            ],
-            "logical_resource_id": "ssc_server_1",
-            "resource_status": "CREATE_COMPLETE",
-            "updated_time": "2019-01-23T19:34:15Z",
-            "required_by": [],
-            "resource_status_reason": "state changed",
-            "physical_resource_id": "92272b67-d23f-42ca-87fa-7b06a9ec81f3",
-            "resource_type": "OS::Nova::Server"
-        },
-        {
-            "resource_name": "ssc_1_subint_service1_port_0_subinterfaces",
-            "links": [
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_subint_service1_port_0_subinterfaces",
-                    "rel": "self"
-                },
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34",
-                    "rel": "stack"
-                },
-                {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_service1_port_0_subinterfaces-dtmxjmny7yjz/31d0647a-6043-49a4-81b6-ccab29380672",
-                    "rel": "nested"
-                }
-            ],
-            "logical_resource_id": "ssc_1_subint_service1_port_0_subinterfaces",
-            "resource_status": "CREATE_COMPLETE",
-            "updated_time": "2019-01-23T19:34:15Z",
-            "required_by": [],
-            "resource_status_reason": "state changed",
-            "physical_resource_id": "31d0647a-6043-49a4-81b6-ccab29380672",
-            "resource_type": "OS::Heat::ResourceGroup"
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34", 
+          "rel": "stack"
         }
-    ]
+      ], 
+      "logical_resource_id": "ssc_1_trusted_port_0", 
+      "physical_resource_id": "7ee06d9d-3d18-411c-9d3e-aec930f70413", 
+      "required_by": [
+        "ssc_server_1"
+      ], 
+      "resource_name": "ssc_1_trusted_port_0", 
+      "resource_status": "CREATE_COMPLETE", 
+      "resource_status_reason": "state changed", 
+      "resource_type": "OS::Neutron::Port", 
+      "updated_time": "2019-01-23T19:34:15Z"
+    }, 
+    {
+      "links": [
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_service1_port_0", 
+          "rel": "self"
+        }, 
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34", 
+          "rel": "stack"
+        }
+      ], 
+      "logical_resource_id": "ssc_1_service1_port_0", 
+      "physical_resource_id": "36551a08-592c-4329-ab75-6c594420754c", 
+      "required_by": [
+        "ssc_1_subint_service1_port_0_subinterfaces", 
+        "ssc_server_1"
+      ], 
+      "resource_name": "ssc_1_service1_port_0", 
+      "resource_status": "CREATE_COMPLETE", 
+      "resource_status_reason": "state changed", 
+      "resource_type": "OS::Neutron::Port", 
+      "updated_time": "2019-01-23T19:34:15Z"
+    }, 
+    {
+      "links": [
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_subint_service2_port_0_subinterfaces", 
+          "rel": "self"
+        }, 
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34", 
+          "rel": "stack"
+        }, 
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_service2_port_0_subinterfaces-hlzdigtimzst/447a9b41-714e-434b-b1d0-6cce8d9f0f0c", 
+          "rel": "nested"
+        }
+      ], 
+      "logical_resource_id": "ssc_1_subint_service2_port_0_subinterfaces", 
+      "physical_resource_id": "447a9b41-714e-434b-b1d0-6cce8d9f0f0c", 
+      "required_by": [], 
+      "resource_name": "ssc_1_subint_service2_port_0_subinterfaces", 
+      "resource_status": "CREATE_COMPLETE", 
+      "resource_status_reason": "state changed", 
+      "resource_type": "OS::Heat::ResourceGroup", 
+      "updated_time": "2019-01-23T19:34:15Z"
+    }, 
+    {
+      "links": [
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_mgmt_port_1", 
+          "rel": "self"
+        }, 
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34", 
+          "rel": "stack"
+        }
+      ], 
+      "logical_resource_id": "ssc_1_mgmt_port_1", 
+      "physical_resource_id": "fdeedf37-c01e-4ab0-bdd6-8d5fc4913943", 
+      "required_by": [
+        "ssc_server_1"
+      ], 
+      "resource_name": "ssc_1_mgmt_port_1", 
+      "resource_status": "CREATE_COMPLETE", 
+      "resource_status_reason": "state changed", 
+      "resource_type": "OS::Neutron::Port", 
+      "updated_time": "2019-01-23T19:34:15Z"
+    }, 
+    {
+      "links": [
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_mgmt_port_0", 
+          "rel": "self"
+        }, 
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34", 
+          "rel": "stack"
+        }
+      ], 
+      "logical_resource_id": "ssc_1_mgmt_port_0", 
+      "physical_resource_id": "8d93f63e-e972-48c7-ad98-b2122da47315", 
+      "required_by": [
+        "ssc_server_1"
+      ], 
+      "resource_name": "ssc_1_mgmt_port_0", 
+      "resource_status": "CREATE_COMPLETE", 
+      "resource_status_reason": "state changed", 
+      "resource_type": "OS::Neutron::Port", 
+      "updated_time": "2019-01-23T19:34:15Z"
+    }, 
+    {
+      "links": [
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_service2_port_0", 
+          "rel": "self"
+        }, 
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34", 
+          "rel": "stack"
+        }
+      ], 
+      "logical_resource_id": "ssc_1_service2_port_0", 
+      "physical_resource_id": "0594a2f2-7ea4-42eb-abc2-48ea49677fca", 
+      "required_by": [
+        "ssc_1_subint_service2_port_0_subinterfaces", 
+        "ssc_server_1"
+      ], 
+      "resource_name": "ssc_1_service2_port_0", 
+      "resource_status": "CREATE_COMPLETE", 
+      "resource_status_reason": "state changed", 
+      "resource_type": "OS::Neutron::Port", 
+      "updated_time": "2019-01-23T19:34:15Z"
+    }, 
+    {
+      "links": [
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_int_ha_port_0", 
+          "rel": "self"
+        }, 
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34", 
+          "rel": "stack"
+        }
+      ], 
+      "logical_resource_id": "ssc_1_int_ha_port_0", 
+      "physical_resource_id": "00bb8407-650e-48b5-b919-33b88d6f8fe3", 
+      "required_by": [
+        "ssc_server_1"
+      ], 
+      "resource_name": "ssc_1_int_ha_port_0", 
+      "resource_status": "CREATE_COMPLETE", 
+      "resource_status_reason": "state changed", 
+      "resource_type": "OS::Neutron::Port", 
+      "updated_time": "2019-01-23T19:34:15Z"
+    }, 
+    {
+      "links": [
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_server_1", 
+          "rel": "self"
+        }, 
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34", 
+          "rel": "stack"
+        }
+      ], 
+      "logical_resource_id": "ssc_server_1", 
+      "physical_resource_id": "92272b67-d23f-42ca-87fa-7b06a9ec81f3", 
+      "required_by": [], 
+      "resource_name": "ssc_server_1", 
+      "resource_status": "CREATE_COMPLETE", 
+      "resource_status_reason": "state changed", 
+      "resource_type": "OS::Nova::Server", 
+      "updated_time": "2019-01-23T19:34:15Z"
+    }, 
+    {
+      "links": [
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34/resources/ssc_1_subint_service1_port_0_subinterfaces", 
+          "rel": "self"
+        }, 
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001/75e046b1-cf7d-4590-91e7-a6079f83fd34", 
+          "rel": "stack"
+        }, 
+        {
+          "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_service1_port_0_subinterfaces-dtmxjmny7yjz/31d0647a-6043-49a4-81b6-ccab29380672", 
+          "rel": "nested"
+        }
+      ], 
+      "logical_resource_id": "ssc_1_subint_service1_port_0_subinterfaces", 
+      "physical_resource_id": "31d0647a-6043-49a4-81b6-ccab29380672", 
+      "required_by": [], 
+      "resource_name": "ssc_1_subint_service1_port_0_subinterfaces", 
+      "resource_status": "CREATE_COMPLETE", 
+      "resource_status_reason": "state changed", 
+      "resource_type": "OS::Heat::ResourceGroup", 
+      "updated_time": "2019-01-23T19:34:15Z"
+    }
+  ]
 }
+
diff --git a/adapters/mso-openstack-adapters/src/test/resources/NeutronPort1.json b/adapters/mso-openstack-adapters/src/test/resources/NeutronPort1.json
new file mode 100644
index 0000000..e4bd83c
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/NeutronPort1.json
@@ -0,0 +1,41 @@
+{
+  "port": {
+    "admin_state_up": true, 
+    "allowed_address_pairs": [
+      {
+        "ip_address": "192.168.1.1", 
+        "mac_address": ""
+      }
+    ], 
+    "binding:host_id": "cool.host.com", 
+    "binding:vif_details": {
+      "vhostuser_mode": "client", 
+      "vhostuser_socket": "/var/run/asdfasdf/asdfasfd-3d", 
+      "vhostuser_vrouter_plug": true
+    }, 
+    "binding:vif_type": "vhostuser", 
+    "binding:vnic_type": "normal", 
+    "device_id": "92272b67-d23f-42ca-87fa-7b06a9ec81f3", 
+    "device_owner": "compute:ddd-daa-ddd", 
+    "fixed_ips": [
+      {
+        "ip_address": "2001:1890:1001:264d::2d:2b", 
+        "subnet_id": "1327b4d5-e0f7-4e95-b019-60caaac751d1"
+      }, 
+      {
+        "ip_address": "192.168.1.1", 
+        "subnet_id": "05f0a2e9-e9d9-4cc0-8635-b82d3de2d700"
+      }
+    ], 
+    "id": "7ee06d9d-3d18-411c-9d3e-aec930f70413", 
+    "mac_address": "02:7e:e0:6d:9d:3d", 
+    "name": "ibcx0026v_ibcx0026vm003_untrusted_port", 
+    "network_id": "cee81fae-28b9-40a0-985f-181796ae0df6", 
+    "port_security_enabled": true, 
+    "security_groups": [
+      "ee45e4fd-b00c-4396-85ee-18d82bd03ef6"
+    ], 
+    "status": "ACTIVE", 
+    "tenant_id": "a9442388264e4a198e68484e676404e9"
+  }
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/NeutronPort2.json b/adapters/mso-openstack-adapters/src/test/resources/NeutronPort2.json
new file mode 100644
index 0000000..376a526
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/NeutronPort2.json
@@ -0,0 +1,41 @@
+{
+  "port": {
+    "admin_state_up": true, 
+    "allowed_address_pairs": [
+      {
+        "ip_address": "192.168.1.1", 
+        "mac_address": ""
+      }
+    ], 
+    "binding:host_id": "cool.host.com", 
+    "binding:vif_details": {
+      "vhostuser_mode": "client", 
+      "vhostuser_socket": "/var/run/asdfasdf/asdfasfd-3d", 
+      "vhostuser_vrouter_plug": true
+    }, 
+    "binding:vif_type": "vhostuser", 
+    "binding:vnic_type": "normal", 
+    "device_id": "92272b67-d23f-42ca-87fa-7b06a9ec81f3", 
+    "device_owner": "compute:ddd-daa-ddd", 
+    "fixed_ips": [
+      {
+        "ip_address": "2001:1890:1001:264d::2d:2b", 
+        "subnet_id": "1327b4d5-e0f7-4e95-b019-60caaac751d1"
+      }, 
+      {
+        "ip_address": "192.168.1.1", 
+        "subnet_id": "05f0a2e9-e9d9-4cc0-8635-b82d3de2d700"
+      }
+    ], 
+    "id": "27391d94-33af-474a-927d-d409249e8fd3", 
+    "mac_address": "02:7e:e0:6d:9d:3d", 
+    "name": "ibcx0026v_ibcx0026vm003_untrusted_port", 
+    "network_id": "cee81fae-28b9-40a0-985f-181796ae0df6", 
+    "port_security_enabled": true, 
+    "security_groups": [
+      "ee45e4fd-b00c-4396-85ee-18d82bd03ef6"
+    ], 
+    "status": "ACTIVE", 
+    "tenant_id": "a9442388264e4a198e68484e676404e9"
+  }
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/NeutronPort3.json b/adapters/mso-openstack-adapters/src/test/resources/NeutronPort3.json
new file mode 100644
index 0000000..f054921
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/NeutronPort3.json
@@ -0,0 +1,41 @@
+{
+  "port": {
+    "admin_state_up": true, 
+    "allowed_address_pairs": [
+      {
+        "ip_address": "192.168.1.1", 
+        "mac_address": ""
+      }
+    ], 
+    "binding:host_id": "cool.host.com", 
+    "binding:vif_details": {
+      "vhostuser_mode": "client", 
+      "vhostuser_socket": "/var/run/asdfasdf/asdfasfd-3d", 
+      "vhostuser_vrouter_plug": true
+    }, 
+    "binding:vif_type": "vhostuser", 
+    "binding:vnic_type": "normal", 
+    "device_id": "92272b67-d23f-42ca-87fa-7b06a9ec81f3", 
+    "device_owner": "compute:ddd-daa-ddd", 
+    "fixed_ips": [
+      {
+        "ip_address": "2001:1890:1001:264d::2d:2b", 
+        "subnet_id": "1327b4d5-e0f7-4e95-b019-60caaac751d1"
+      }, 
+      {
+        "ip_address": "192.168.1.1", 
+        "subnet_id": "05f0a2e9-e9d9-4cc0-8635-b82d3de2d700"
+      }
+    ], 
+    "id": "fdeedf37-c01e-4ab0-bdd6-8d5fc4913943", 
+    "mac_address": "02:7e:e0:6d:9d:3d", 
+    "name": "ibcx0026v_ibcx0026vm003_untrusted_port", 
+    "network_id": "cee81fae-28b9-40a0-985f-181796ae0df6", 
+    "port_security_enabled": true, 
+    "security_groups": [
+      "ee45e4fd-b00c-4396-85ee-18d82bd03ef6"
+    ], 
+    "status": "ACTIVE", 
+    "tenant_id": "a9442388264e4a198e68484e676404e9"
+  }
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/NeutronPort4.json b/adapters/mso-openstack-adapters/src/test/resources/NeutronPort4.json
new file mode 100644
index 0000000..fa10b0c
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/NeutronPort4.json
@@ -0,0 +1,41 @@
+{
+  "port": {
+    "admin_state_up": true, 
+    "allowed_address_pairs": [
+      {
+        "ip_address": "192.168.1.1", 
+        "mac_address": ""
+      }
+    ], 
+    "binding:host_id": "cool.host.com", 
+    "binding:vif_details": {
+      "vhostuser_mode": "client", 
+      "vhostuser_socket": "/var/run/asdfasdf/asdfasfd-3d", 
+      "vhostuser_vrouter_plug": true
+    }, 
+    "binding:vif_type": "vhostuser", 
+    "binding:vnic_type": "normal", 
+    "device_id": "92272b67-d23f-42ca-87fa-7b06a9ec81f3", 
+    "device_owner": "compute:ddd-daa-ddd", 
+    "fixed_ips": [
+      {
+        "ip_address": "2001:1890:1001:264d::2d:2b", 
+        "subnet_id": "1327b4d5-e0f7-4e95-b019-60caaac751d1"
+      }, 
+      {
+        "ip_address": "192.168.1.1", 
+        "subnet_id": "05f0a2e9-e9d9-4cc0-8635-b82d3de2d700"
+      }
+    ], 
+    "id": "8d93f63e-e972-48c7-ad98-b2122da47315", 
+    "mac_address": "02:7e:e0:6d:9d:3d", 
+    "name": "ibcx0026v_ibcx0026vm003_untrusted_port", 
+    "network_id": "cee81fae-28b9-40a0-985f-181796ae0df6", 
+    "port_security_enabled": true, 
+    "security_groups": [
+      "ee45e4fd-b00c-4396-85ee-18d82bd03ef6"
+    ], 
+    "status": "ACTIVE", 
+    "tenant_id": "a9442388264e4a198e68484e676404e9"
+  }
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/NeutronPort5.json b/adapters/mso-openstack-adapters/src/test/resources/NeutronPort5.json
new file mode 100644
index 0000000..54a9ee8
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/NeutronPort5.json
@@ -0,0 +1,41 @@
+{
+  "port": {
+    "admin_state_up": true, 
+    "allowed_address_pairs": [
+      {
+        "ip_address": "192.168.1.1", 
+        "mac_address": ""
+      }
+    ], 
+    "binding:host_id": "cool.host.com", 
+    "binding:vif_details": {
+      "vhostuser_mode": "client", 
+      "vhostuser_socket": "/var/run/asdfasdf/asdfasfd-3d", 
+      "vhostuser_vrouter_plug": true
+    }, 
+    "binding:vif_type": "vhostuser", 
+    "binding:vnic_type": "normal", 
+    "device_id": "92272b67-d23f-42ca-87fa-7b06a9ec81f3", 
+    "device_owner": "compute:ddd-daa-ddd", 
+    "fixed_ips": [
+      {
+        "ip_address": "2001:1890:1001:264d::2d:2b", 
+        "subnet_id": "1327b4d5-e0f7-4e95-b019-60caaac751d1"
+      }, 
+      {
+        "ip_address": "192.168.1.1", 
+        "subnet_id": "05f0a2e9-e9d9-4cc0-8635-b82d3de2d700"
+      }
+    ], 
+    "id": "0594a2f2-7ea4-42eb-abc2-48ea49677fca", 
+    "mac_address": "02:7e:e0:6d:9d:3d", 
+    "name": "ibcx0026v_ibcx0026vm003_untrusted_port", 
+    "network_id": "cee81fae-28b9-40a0-985f-181796ae0df6", 
+    "port_security_enabled": true, 
+    "security_groups": [
+      "ee45e4fd-b00c-4396-85ee-18d82bd03ef6"
+    ], 
+    "status": "ACTIVE", 
+    "tenant_id": "a9442388264e4a198e68484e676404e9"
+  }
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/NeutronPort6.json b/adapters/mso-openstack-adapters/src/test/resources/NeutronPort6.json
new file mode 100644
index 0000000..c47dfd7
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/NeutronPort6.json
@@ -0,0 +1,41 @@
+{
+  "port": {
+    "admin_state_up": true, 
+    "allowed_address_pairs": [
+      {
+        "ip_address": "192.168.1.1", 
+        "mac_address": ""
+      }
+    ], 
+    "binding:host_id": "cool.host.com", 
+    "binding:vif_details": {
+      "vhostuser_mode": "client", 
+      "vhostuser_socket": "/var/run/asdfasdf/asdfasfd-3d", 
+      "vhostuser_vrouter_plug": true
+    }, 
+    "binding:vif_type": "vhostuser", 
+    "binding:vnic_type": "normal", 
+    "device_id": "92272b67-d23f-42ca-87fa-7b06a9ec81f3", 
+    "device_owner": "compute:ddd-daa-ddd", 
+    "fixed_ips": [
+      {
+        "ip_address": "2001:1890:1001:264d::2d:2b", 
+        "subnet_id": "1327b4d5-e0f7-4e95-b019-60caaac751d1"
+      }, 
+      {
+        "ip_address": "192.168.1.1", 
+        "subnet_id": "05f0a2e9-e9d9-4cc0-8635-b82d3de2d700"
+      }
+    ], 
+    "id": "00bb8407-650e-48b5-b919-33b88d6f8fe3", 
+    "mac_address": "02:7e:e0:6d:9d:3d", 
+    "name": "ibcx0026v_ibcx0026vm003_untrusted_port", 
+    "network_id": "cee81fae-28b9-40a0-985f-181796ae0df6", 
+    "port_security_enabled": true, 
+    "security_groups": [
+      "ee45e4fd-b00c-4396-85ee-18d82bd03ef6"
+    ], 
+    "status": "ACTIVE", 
+    "tenant_id": "a9442388264e4a198e68484e676404e9"
+  }
+}
diff --git a/adapters/mso-vnfm-adapter/mso-vnfm-etsi-adapter/pom.xml b/adapters/mso-vnfm-adapter/mso-vnfm-etsi-adapter/pom.xml
index 4554835..2e1fc97 100644
--- a/adapters/mso-vnfm-adapter/mso-vnfm-etsi-adapter/pom.xml
+++ b/adapters/mso-vnfm-adapter/mso-vnfm-etsi-adapter/pom.xml
@@ -76,5 +76,10 @@
             <artifactId>mso-adapters-rest-interface</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.onap.so.adapters</groupId>
+            <artifactId>mso-vnfm-adapter-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
 </project>
diff --git a/adapters/mso-vnfm-adapter/mso-vnfm-etsi-adapter/src/main/java/org/onap/so/adapters/vnfmadapter/rest/VnfmAdapterController.java b/adapters/mso-vnfm-adapter/mso-vnfm-etsi-adapter/src/main/java/org/onap/so/adapters/vnfmadapter/rest/VnfmAdapterController.java
index 4dabec3..77a3f21 100644
--- a/adapters/mso-vnfm-adapter/mso-vnfm-etsi-adapter/src/main/java/org/onap/so/adapters/vnfmadapter/rest/VnfmAdapterController.java
+++ b/adapters/mso-vnfm-adapter/mso-vnfm-etsi-adapter/src/main/java/org/onap/so/adapters/vnfmadapter/rest/VnfmAdapterController.java
@@ -21,14 +21,72 @@
 package org.onap.so.adapters.vnfmadapter.rest;
 
 import static org.onap.so.adapters.vnfmadapter.Constants.BASE_URL;
+import java.util.UUID;
+import javax.validation.Valid;
+import javax.ws.rs.core.MediaType;
+import org.onap.logging.ref.slf4j.ONAPLogConstants;
+import org.onap.vnfmadapter.v1.model.CreateVnfRequest;
+import org.onap.vnfmadapter.v1.model.CreateVnfResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
+import io.swagger.annotations.ApiParam;
 
 /**
  * Controller for handling requests to the VNFM (Virtual Network Function Manager) adapter REST API.
  */
 @Controller
-@RequestMapping(value = BASE_URL)
+@RequestMapping(value = BASE_URL, produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
+        consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
 public class VnfmAdapterController {
 
+    private static final Logger logger = LoggerFactory.getLogger(VnfmAdapterController.class);
+
+    @PostMapping(value = "/vnfs/{vnfId}")
+    public ResponseEntity<CreateVnfResponse> vnfCreate(
+            @ApiParam(value = "The identifier of the VNF. This must be the vnf-id of an existing generic-vnf in AAI.",
+                    required = true) @PathVariable("vnfId") final String vnfId,
+            @ApiParam(value = "VNF creation parameters",
+                    required = true) @Valid @RequestBody final CreateVnfRequest createVnfRequest,
+            @ApiParam(
+                    value = "Used to track REST requests for logging purposes. Identifies a single top level invocation of ONAP",
+                    required = true) @RequestHeader(value = ONAPLogConstants.Headers.REQUEST_ID,
+                            required = false) final String requestId,
+            @ApiParam(
+                    value = "Used to track REST requests for logging purposes. Identifies the client application user agent or user invoking the API",
+                    required = true) @RequestHeader(value = ONAPLogConstants.Headers.PARTNER_NAME,
+                            required = false) final String partnerName,
+            @ApiParam(
+                    value = "Used to track REST requests for logging purposes. Identifies a single invocation of a single component",
+                    required = true) @RequestHeader(value = ONAPLogConstants.Headers.INVOCATION_ID,
+                            required = false) final String invocationId) {
+
+        setLoggingMDCs(requestId, partnerName, invocationId);
+
+        logger.info("REST request vnfCreate with body: {}", createVnfRequest);
+
+        final CreateVnfResponse response = new CreateVnfResponse();
+        response.setJobId(UUID.randomUUID().toString());
+        clearLoggingMDCs();
+        return new ResponseEntity<>(response, HttpStatus.ACCEPTED);
+    }
+
+    private void setLoggingMDCs(final String requestId, final String partnerName, final String invocationId) {
+        MDC.put(ONAPLogConstants.MDCs.REQUEST_ID, requestId);
+        MDC.put(ONAPLogConstants.MDCs.PARTNER_NAME, partnerName);
+        MDC.put(ONAPLogConstants.MDCs.INVOCATION_ID, invocationId);
+    }
+
+    private void clearLoggingMDCs() {
+        MDC.clear();
+    }
+
 }
diff --git a/adapters/mso-vnfm-adapter/mso-vnfm-etsi-adapter/src/test/java/org/onap/so/adapters/vnfmadapter/rest/VnfmAdapterControllerTest.java b/adapters/mso-vnfm-adapter/mso-vnfm-etsi-adapter/src/test/java/org/onap/so/adapters/vnfmadapter/rest/VnfmAdapterControllerTest.java
new file mode 100644
index 0000000..842b3b5
--- /dev/null
+++ b/adapters/mso-vnfm-adapter/mso-vnfm-etsi-adapter/src/test/java/org/onap/so/adapters/vnfmadapter/rest/VnfmAdapterControllerTest.java
@@ -0,0 +1,78 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.adapters.vnfmadapter.rest;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import java.net.URI;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.so.adapters.vnfmadapter.VnfmAdapterApplication;
+import org.onap.vnfmadapter.v1.model.CreateVnfRequest;
+import org.onap.vnfmadapter.v1.model.CreateVnfResponse;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.http.MediaType;
+import org.springframework.http.RequestEntity;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = VnfmAdapterApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
+@ActiveProfiles("test")
+public class VnfmAdapterControllerTest {
+
+    @LocalServerPort
+    private int port;
+
+    private final TestRestTemplate restTemplate = new TestRestTemplate("test", "test");
+
+    @Test
+    public void createVnf_ValidRequest_Returns202AndJobId() throws Exception {
+        final CreateVnfRequest createVnfRequest = new CreateVnfRequest();
+        final RequestEntity<CreateVnfRequest> request =
+                RequestEntity.post(new URI("http://localhost:" + port + "/so/vnfm-adapter/v1/vnfs/myVnfId"))
+                        .accept(MediaType.APPLICATION_JSON).contentType(MediaType.APPLICATION_JSON)
+                        .header("X-ONAP-RequestId", "myRequestId").header("X-ONAP-InvocationID", "myInvocationId")
+                        .body(createVnfRequest);
+        final ResponseEntity<CreateVnfResponse> response = restTemplate.exchange(request, CreateVnfResponse.class);
+        assertEquals(202, response.getStatusCode().value());
+        assertNotNull(response.getBody().getJobId());
+    }
+
+    @Test
+    public void createVnf_UnauthorizedUser_Returns401() throws Exception {
+        final TestRestTemplate restTemplateWrongPassword = new TestRestTemplate("test", "wrongPassword");
+        final CreateVnfRequest createVnfRequest = new CreateVnfRequest();
+        final RequestEntity<CreateVnfRequest> request =
+                RequestEntity.post(new URI("http://localhost:" + port + "/so/vnfm-adapter/v1/vnfs/myVnfId"))
+                        .accept(MediaType.APPLICATION_JSON).contentType(MediaType.APPLICATION_JSON)
+                        .header("X-ONAP-RequestId", "myRequestId").header("X-ONAP-InvocationID", "myInvocationId")
+                        .body(createVnfRequest);
+        final ResponseEntity<CreateVnfResponse> response =
+                restTemplateWrongPassword.exchange(request, CreateVnfResponse.class);
+        assertEquals(401, response.getStatusCode().value());
+    }
+
+}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
index ef0b492..5af427a 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
@@ -1487,8 +1487,6 @@
 		List<NodeTemplate> cvfcList = toscaResourceStructure.getSdcCsarHelper().getNodeTemplateBySdcType(vfTemplate, SdcTypes.CVFC);
 						
 		for(NodeTemplate cvfcTemplate : cvfcList) {
-												
-			CvnfcCustomization existingCvnfcCustomization = findExistingCvfc(existingCvnfcSet, cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
 			
 			if(vfModuleMemberName != null && vfModuleMemberName.equalsIgnoreCase(cvfcTemplate.getName())){
 			
@@ -1529,13 +1527,8 @@
 			// This check is needed incase the VFC subcategory is something other than Abstract.  In that case we want to skip adding that record to our DB.
 			if(vnfcCustomization.getModelCustomizationUUID() != null){
 				
-				CvnfcCustomization cvnfcCustomization = null;
-				
-				if(existingCvnfcCustomization != null){
-					cvnfcCustomization = existingCvnfcCustomization;					
-				}
-				else{
-				
+					CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
+	
 					cvnfcCustomization = new CvnfcCustomization();
 					cvnfcCustomization.setModelCustomizationUUID(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
 					cvnfcCustomization.setModelInstanceName(cvfcTemplate.getName());
@@ -1562,7 +1555,6 @@
 	
 					cvnfcCustomizations.add(cvnfcCustomization);
 					existingCvnfcSet.add(cvnfcCustomization);				
-			 }
 			
 			//*****************************************************************************************************************************************
 			//* Extract Fabric Configuration
@@ -1586,18 +1578,15 @@
 				
 				VnfVfmoduleCvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization = createVfCnvfConfigCustomization(fabricTemplate, toscaResourceStructure, 
 																			   vnfResource, vfModuleCustomization, cvnfcCustomization, fabricConfig, vfTemplate, vfModuleMemberName);
-				
 				vnfVfmoduleCvnfcConfigurationCustomizations.add(vnfVfmoduleCvnfcConfigurationCustomization);
 			}
-			
+			cvnfcCustomization.setVnfVfmoduleCvnfcConfigurationCustomization(vnfVfmoduleCvnfcConfigurationCustomizations);
 			}
 			
 		   }
 			
 		  }
-			
 		} 
-		
 		vfModuleCustomization.setCvnfcCustomization(cvnfcCustomizations);
 		vfModuleCustomization.setVnfVfmoduleCvnfcConfigurationCustomization(vnfVfmoduleCvnfcConfigurationCustomizations);
 		
@@ -1609,7 +1598,7 @@
             ConfigurationResource configResource, NodeTemplate vfTemplate, String vfModuleMemberName) {
 
 		Metadata fabricMetadata = fabricTemplate.getMetaData();	
-		
+				
 		VnfVfmoduleCvnfcConfigurationCustomization vfModuleToCvnfc = new VnfVfmoduleCvnfcConfigurationCustomization();
 		
 		vfModuleToCvnfc.setConfigurationResource(configResource);
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/util/ASDCNotificationLogging.java b/asdc-controller/src/main/java/org/onap/so/asdc/util/ASDCNotificationLogging.java
index de28ca2..0d75c56 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/util/ASDCNotificationLogging.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/util/ASDCNotificationLogging.java
@@ -323,9 +323,67 @@
             		buffer.append(System.lineSeparator());
         		}
         		
+       	   		buffer.append(System.lineSeparator());
+        		buffer.append("VF Module Customization Properties:");
+        		buffer.append(System.lineSeparator());
+        		buffer.append("Model Customization UUID:");
+        		buffer.append(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULECUSTOMIZATIONUUID)));
+        		buffer.append(System.lineSeparator());
         		
     		}
     		
+    		List<NodeTemplate> vfConfigList = toscaResourceStructure.getSdcCsarHelper().getNodeTemplateBySdcType(vfNodeTemplate, SdcTypes.CONFIGURATION);
+			
+    		if(vfConfigList != null){
+    			for (NodeTemplate configNodeTemplate :  vfConfigList) {
+    				
+    				buffer.append(System.lineSeparator());
+    				buffer.append(System.lineSeparator());
+    				buffer.append("Fabric Configuration Properties:");
+    				buffer.append(System.lineSeparator());
+    				
+    		   		buffer.append("Model Name:");
+    	    		buffer.append(configNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME));
+    	    		buffer.append(System.lineSeparator());
+    	    		buffer.append("Model UUID:");
+    	    		buffer.append(configNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID));		
+    	    		buffer.append(System.lineSeparator());
+    	       		buffer.append("Description:");
+    	    		buffer.append(configNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION));
+    	    		buffer.append(System.lineSeparator());
+    	       		buffer.append("Version:");
+    	    		buffer.append(configNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION));
+    	    		buffer.append(System.lineSeparator());
+    	      		buffer.append("InvariantUuid:");
+    	    		buffer.append(configNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
+    	    		buffer.append(System.lineSeparator());
+    	      		buffer.append("Tosca Node Type:");
+    	    		buffer.append(configNodeTemplate.getType());
+    	    		
+    	    		buffer.append(System.lineSeparator());
+    	    		buffer.append(System.lineSeparator());
+    	    		buffer.append("Fabric Configuration Customization Properties:");
+    	    		buffer.append(System.lineSeparator());
+    	    		
+    	       		buffer.append("Model Customization UUID:");
+    	    		buffer.append(configNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
+    	    		buffer.append(System.lineSeparator());
+    	    		buffer.append("Model Instance Name:");
+    	    		buffer.append(configNodeTemplate.getName());		
+    	    		buffer.append(System.lineSeparator());
+    	      		buffer.append("NFFunction:");
+    	      		buffer.append(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(configNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION));
+    	    		buffer.append(System.lineSeparator());
+    	      		buffer.append("NFRole:");
+    	      		buffer.append(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(configNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE));
+    	    		buffer.append(System.lineSeparator());
+    	      		buffer.append("NFType:");
+    	      		buffer.append(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(configNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE));
+    	    		buffer.append(System.lineSeparator());
+    				
+    			}
+    		}
+    		
     		List<NodeTemplate> cvfcList = toscaResourceStructure.getSdcCsarHelper().getNodeTemplateBySdcType(vfNodeTemplate, SdcTypes.CVFC);
     		
     		for(NodeTemplate cvfcTemplate : cvfcList) {
@@ -523,6 +581,7 @@
     	    		buffer.append(System.lineSeparator());	
 	    			
 	    		}
+
 	    		
 	    		List<Group> groupList = toscaResourceStructure.getSdcCsarHelper().getGroupsOfOriginOfNodeTemplateByToscaGroupType(crNode, "org.openecomp.groups.NetworkCollection");	
 	    		
diff --git a/asdc-controller/src/test/resources/schema.sql b/asdc-controller/src/test/resources/schema.sql
index 5f78c85..aef33c3 100644
--- a/asdc-controller/src/test/resources/schema.sql
+++ b/asdc-controller/src/test/resources/schema.sql
@@ -801,38 +801,62 @@
 
 
 CREATE TABLE IF NOT EXISTS vnf_vfmodule_cvnfc_configuration_customization (
-    `ID` INT(11) NOT NULL AUTO_INCREMENT,
-    `MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-    `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-    `VF_MODULE_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-    `CVNFC_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-    `MODEL_INSTANCE_NAME` VARCHAR(200) NOT NULL,
-    `CONFIGURATION_TYPE` VARCHAR(200) NULL,
-    `CONFIGURATION_ROLE` VARCHAR(200) NULL,
-    `CONFIGURATION_FUNCTION` VARCHAR(200) NULL,
-    `POLICY_NAME` VARCHAR(200) NULL,
-    `CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    `CONFIGURATION_MODEL_UUID` VARCHAR(200) NOT NULL,
-    PRIMARY KEY (`ID`),
-    INDEX `fk_vnf_vfmodule_cvnfc_config_cust__configuration_idx` (`CONFIGURATION_MODEL_UUID` ASC),
-    UNIQUE INDEX `UK_vnf_vfmodule_cvnfc_configuration_customization` (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC , `VF_MODULE_MODEL_CUSTOMIZATION_UUID` ASC , `CVNFC_MODEL_CUSTOMIZATION_UUID` ASC , `MODEL_CUSTOMIZATION_UUID` ASC),
-    INDEX `fk_vnf_vfmodule_cvnfc_config_cust__cvnfc_cust1_idx` (`CVNFC_MODEL_CUSTOMIZATION_UUID` ASC),
-    INDEX `fk_vnf_vfmodule_cvnfc_config_cust__vf_module_cust_idx` (`VF_MODULE_MODEL_CUSTOMIZATION_UUID` ASC),
-    INDEX `fk_vnf_vfmodule_cvnfc_config_cust__vnf_res_cust_idx` (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC),
-    CONSTRAINT `fk_vnf_vfmod_cvnfc_config_cust__configuration_resource` FOREIGN KEY (`CONFIGURATION_MODEL_UUID`)
-        REFERENCES `configuration` (`MODEL_UUID`)
-        ON DELETE CASCADE ON UPDATE CASCADE,
-    CONSTRAINT `fk_cvnfc_configuration_customization__cvnfc_customization1` FOREIGN KEY (`CVNFC_MODEL_CUSTOMIZATION_UUID`)
-        REFERENCES `cvnfc_customization` (`MODEL_CUSTOMIZATION_UUID`)
-        ON DELETE CASCADE ON UPDATE CASCADE,
-    CONSTRAINT `fk_vnf_configuration_cvnfc_customization__vf_module_customiza1` FOREIGN KEY (`VF_MODULE_MODEL_CUSTOMIZATION_UUID`)
-        REFERENCES `vf_module_customization` (`MODEL_CUSTOMIZATION_UUID`)
-        ON DELETE CASCADE ON UPDATE CASCADE,
-    CONSTRAINT `fk_vfmodule_cvnfc_configuration_customization__vnf_resource_c1` FOREIGN KEY (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID`)
-        REFERENCES `vnf_resource_customization` (`MODEL_CUSTOMIZATION_UUID`)
-        ON DELETE CASCADE ON UPDATE CASCADE
-)  ENGINE=INNODB AUTO_INCREMENT=20654 DEFAULT CHARACTER SET=LATIN1;
+  `ID` INT(11) NOT NULL AUTO_INCREMENT, 
+  `MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, 
+  `MODEL_INSTANCE_NAME` VARCHAR(200) NOT NULL, 
+  `CONFIGURATION_TYPE` VARCHAR(200) NULL, 
+  `CONFIGURATION_ROLE` VARCHAR(200) NULL, 
+  `CONFIGURATION_FUNCTION` VARCHAR(200) NULL, 
+  `POLICY_NAME` VARCHAR(200) NULL, 
+  `CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
+  `CONFIGURATION_MODEL_UUID` VARCHAR(200) NOT NULL,
+  `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) DEFAULT NULL,
+  `VF_MODULE_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) DEFAULT NULL, 
+  `CVNFC_CUSTOMIZATION_ID` INT(11) DEFAULT NULL,
+  PRIMARY KEY (`ID`), 
+  INDEX `fk_vnf_vfmodule_cvnfc_config_cust__configuration_idx` (`CONFIGURATION_MODEL_UUID` ASC), 
+ 
+  CONSTRAINT `fk_vnf_vfmod_cvnfc_config_cust__configuration_resource` FOREIGN KEY (`CONFIGURATION_MODEL_UUID`) 
+  REFERENCES `configuration` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE = INNODB AUTO_INCREMENT = 20654 DEFAULT CHARACTER SET = LATIN1;
 
+CREATE TABLE IF NOT EXISTS `pnf_resource` (
+  `ORCHESTRATION_MODE` varchar(20) NOT NULL DEFAULT 'HEAT',
+  `DESCRIPTION` varchar(1200) DEFAULT NULL,
+  `CREATION_TIMESTAMP` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `MODEL_UUID` varchar(200) NOT NULL,
+  `MODEL_INVARIANT_UUID` varchar(200) DEFAULT NULL,
+  `MODEL_VERSION` varchar(20) NOT NULL,
+  `MODEL_NAME` varchar(200) DEFAULT NULL,
+  `TOSCA_NODE_TYPE` varchar(200) DEFAULT NULL,
+  `RESOURCE_CATEGORY` varchar(200) DEFAULT NULL,
+  `RESOURCE_SUB_CATEGORY` varchar(200) DEFAULT NULL,
+  PRIMARY KEY (`MODEL_UUID`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `pnf_resource_customization` (
+  `MODEL_CUSTOMIZATION_UUID` varchar(200) NOT NULL,
+  `MODEL_INSTANCE_NAME` varchar(200) NOT NULL,
+  `NF_TYPE` varchar(200) DEFAULT NULL,
+  `NF_ROLE` varchar(200) DEFAULT NULL,
+  `NF_FUNCTION` varchar(200) DEFAULT NULL,
+  `NF_NAMING_CODE` varchar(200) DEFAULT NULL,
+  `CREATION_TIMESTAMP` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `PNF_RESOURCE_MODEL_UUID` varchar(200) NOT NULL,
+  `MULTI_STAGE_DESIGN` varchar(20) DEFAULT NULL,
+  `RESOURCE_INPUT` varchar(2000) DEFAULT NULL,
+  `CDS_BLUEPRINT_NAME` varchar(200) DEFAULT NULL,
+  `CDS_BLUEPRINT_VERSION` varchar(20) DEFAULT NULL,
+  PRIMARY KEY (`MODEL_CUSTOMIZATION_UUID`),
+  KEY `fk_pnf_resource_customization__pnf_resource1_idx` (`PNF_RESOURCE_MODEL_UUID`),
+  CONSTRAINT `fk_pnf_resource_customization__pnf_resource1` FOREIGN KEY (`PNF_RESOURCE_MODEL_UUID`) REFERENCES `pnf_resource` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `pnf_resource_customization_to_service` (
+  `SERVICE_MODEL_UUID` varchar(200) NOT NULL,
+  `RESOURCE_MODEL_CUSTOMIZATION_UUID` varchar(200) NOT NULL,
+  PRIMARY KEY (`SERVICE_MODEL_UUID`,`RESOURCE_MODEL_CUSTOMIZATION_UUID`)
+)ENGINE=InnoDB DEFAULT CHARSET=latin1;
 --------START Request DB SCHEMA --------
 CREATE DATABASE requestdb;
 USE requestdb;
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/AbstractServiceTaskProcessor.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/AbstractServiceTaskProcessor.groovy
index dba6a1a..484be19 100644
--- a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/AbstractServiceTaskProcessor.groovy
+++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/AbstractServiceTaskProcessor.groovy
@@ -4,6 +4,8 @@
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
  * 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
@@ -32,112 +34,16 @@
 import org.onap.so.bpmn.core.WorkflowException
 import org.onap.so.client.aai.AAIResourcesClient
 import org.springframework.web.util.UriUtils
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
 
 import groovy.json.JsonSlurper
 
 public abstract class AbstractServiceTaskProcessor implements ServiceTaskProcessor {
+	private static final Logger logger = LoggerFactory.getLogger( MsoUtils.class);
+
 	public MsoUtils utils = new MsoUtils()
 
-
-	/**
-	 * Logs a message at the ERROR level.
-	 * @param message the message
-	 */
-	public void logError(String message) {
-		log('ERROR', message, null, "true")
-	}
-
-	/**
-	 * Logs a message at the ERROR level.
-	 * @param message the message
-	 * @param cause the cause (stracktrace will be included in the output)
-	 */
-	public void logError(String message, Throwable cause) {
-		log('ERROR', message, cause, "true")
-	}
-
-	/**
-	 * Logs a message at the WARN level.
-	 * @param message the message
-	 */
-	public void logWarn(String message) {
-		log('WARN', message, null, "true")
-	}
-
-	/**
-	 * Logs a message at the WARN level.
-	 * @param message the message
-	 * @param cause the cause (stracktrace will be included in the output)
-	 */
-	public void logWarn(String message, Throwable cause) {
-		log('WARN', message, cause, "true")
-	}
-
-	/**
-	 * Logs a message at the DEBUG level.
-	 * @param message the message
-	 * @param isDebugLogEnabled a flag indicating if DEBUG level is enabled
-	 */
-	public void logDebug(String message, String isDebugLogEnabled) {
-		log('DEBUG', message, null, isDebugLogEnabled)
-	}
-
-	/**
-	 * Logs a message at the DEBUG level.
-	 * @param message the message
-	 * @param cause the cause (stracktrace will be included in the output)
-	 * @param isDebugLogEnabled a flag indicating if DEBUG level is enabled
-	 */
-	public void logDebug(String message, Throwable cause, String isDebugLogEnabled) {
-		log('DEBUG', message, cause, isDebugLogEnabled)
-	}
-
-	/**
-	 * Logs a message at the specified level.
-	 * @param level the level (DEBUG, INFO, WARN, ERROR)
-	 * @param message the message
-	 * @param isLevelEnabled a flag indicating if the level is enabled
-	 *        (used only at the DEBUG level)
-	 */
-	public void log(String level, String message, String isLevelEnabled) {
-		log(level, message,  null, isLevelEnabled)
-	}
-
-	/**
-	 * Logs a message at the specified level.
-	 * @param level the level (DEBUG, INFO, WARN, ERROR)
-	 * @param message the message
-	 * @param cause the cause (stracktrace will be included in the output)
-	 * @param isLevelEnabled a flag indicating if the level is enabled
-	 *        (used only at the DEBUG level)
-	 */
-	public void log(String level, String message, Throwable cause, String isLevelEnabled) {
-		if (cause == null) {
-			utils.log(level, message, isLevelEnabled);
-		} else {
-			StringWriter stringWriter = new StringWriter();
-			PrintWriter printWriter = new PrintWriter(stringWriter);
-			printWriter.println(message);
-			cause.printStackTrace(printWriter);
-			utils.log(level, stringWriter.toString(), isLevelEnabled);
-			printWriter.close();
-		}
-	}
-
-	/**
-	 * Logs a WorkflowException at the ERROR level with the specified message.
-	 * @param execution the execution
-	 */
-	public void logWorkflowException(DelegateExecution execution, String message) {
-		def workflowException = execution.getVariable("WorkflowException")
-
-		if (workflowException == null) {
-			logError(message);
-		} else {
-			logError(message + ": " + workflowException)
-		}
-	}
-
 	/**
 	 * Saves the WorkflowException in the execution to the specified variable,
 	 * clearing the WorkflowException variable so the workflow can continue
@@ -173,7 +79,7 @@
 			', requredVariables=' + requiredVariables +
 			')'
 		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		logDebug('Entered ' + method, isDebugLogEnabled)
+		logger.debug('Entered ' + method)
 
 		String processKey = getProcessKey(execution)
 		def prefix = execution.getVariable("prefix")
@@ -236,13 +142,13 @@
 				serviceInstanceId = (String) execution.getVariable("mso-service-instance-id")
 			}
 
-			logDebug('Incoming message: ' + System.lineSeparator() + request, isDebugLogEnabled)
-			logDebug('Exited ' + method, isDebugLogEnabled)
+			logger.debug('Incoming message: ' + System.lineSeparator() + request)
+			logger.debug('Exited ' + method)
 			return request
 		} catch (BpmnError e) {
 			throw e
 		} catch (Exception e) {
-			logError('Caught exception in ' + method, e)
+			logger.error('Caught exception in ' + method, e)
 			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Invalid Message")
 		}
 	}
@@ -258,7 +164,7 @@
 				'execution=' + execution.getId() +
 				')'
 		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		logDebug('Entered ' + method, isDebugLogEnabled)
+		logger.debug('Entered ' + method)
 
 		String processKey = getProcessKey(execution);
 		def prefix = execution.getVariable("prefix")
@@ -278,8 +184,8 @@
 		def parsed = jsonSlurper.parseText(request)
 
 
-		logDebug('Incoming message: ' + System.lineSeparator() + request, isDebugLogEnabled)
-		logDebug('Exited ' + method, isDebugLogEnabled)
+		logger.debug('Incoming message: ' + System.lineSeparator() + request)
+		logger.debug('Exited ' + method)
 		return parsed
 
 	}
@@ -309,10 +215,10 @@
 			}
 
 			if (String.valueOf(execution.getVariable(processKey + "WorkflowResponseSent")).equals("true")) {
-					logDebug("Sync response has already been sent for " + processKey, isDebugLogEnabled)
+					logger.debug("Sync response has already been sent for " + processKey)
 			}else{
 
-				logDebug("Building " + processKey + " response ", isDebugLogEnabled)
+				logger.debug("Building " + processKey + " response ")
 
 				int intResponseCode;
 
@@ -337,11 +243,10 @@
 				execution.setVariable(processKey + "Status", status);
 				execution.setVariable("WorkflowResponse", response)
 
-				logDebug("Sending response for " + processKey
+				logger.debug("Sending response for " + processKey
 					+ " ResponseCode=" + intResponseCode
 					+ " Status=" + status
-					+ " Response=\n" + response,
-					isDebugLogEnabled)
+					+ " Response=\n" + response)
 
 				// TODO: ensure that this flow was invoked asynchronously?
 
@@ -362,7 +267,7 @@
 			}
 
 		} catch (Exception ex) {
-			logError("Unable to send workflow response to client ....", ex)
+			logger.error("Unable to send workflow response to client ....", ex)
 		}
 	}
 
@@ -432,7 +337,7 @@
 		def element = utils.getNodeXml(xml, elementName, false)
 		if (element.trim().isEmpty()) {
 			def msg = 'Required element \'' + elementName + '\' is missing or empty'
-			logError(msg)
+			logger.error(msg)
 			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
 		} else {
 			return element
@@ -454,7 +359,7 @@
 		def elementText = utils.getNodeText(xml, elementName)
 		if ((elementText == null) || (elementText.isEmpty())) {
 			def msg = 'Required element \'' + elementName + '\' is missing or empty'
-			logError(msg)
+			logger.error(msg)
 			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
 		} else {
 			return elementText
@@ -569,9 +474,9 @@
 		String prefix = execution.getVariable('prefix')
 		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
 
-		logDebug('Entered SetSuccessIndicator Method', isDebugLogEnabled)
+		logger.debug('Entered SetSuccessIndicator Method')
 		execution.setVariable(prefix+'SuccessIndicator', isSuccess)
-		logDebug('Outgoing SuccessIndicator is: ' + execution.getVariable(prefix+'SuccessIndicator') + '', isDebugLogEnabled)
+		logger.debug('Outgoing SuccessIndicator is: ' + execution.getVariable(prefix+'SuccessIndicator') + '')
 	}
 
 	/**
@@ -579,14 +484,14 @@
 	 *
 	 */
 	public void sendSyncError(DelegateExecution execution) {
-		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
 		String requestId = execution.getVariable("mso-request-id")
-		logDebug('sendSyncError, requestId: ' + requestId, isDebugEnabled)
+		logger.debug('sendSyncError, requestId: ' + requestId)
 		WorkflowException workflowExceptionObj = execution.getVariable("WorkflowException")
 		if (workflowExceptionObj != null) {
 			String errorMessage = workflowExceptionObj.getErrorMessage()
 			def errorCode = workflowExceptionObj.getErrorCode()
-			logDebug('sendSyncError, requestId: '  + requestId + ' | errorMessage: ' + errorMessage + ' | errorCode: ' + errorCode, isDebugEnabled)
+			logger.debug('sendSyncError, requestId: '  + requestId + ' | errorMessage: ' + errorMessage + ' | errorCode: ' + errorCode)
 			sendWorkflowResponse(execution, errorCode, errorMessage)
 		}
 	}
@@ -602,27 +507,27 @@
 			DelegateExecution execution = (DelegateExecution) args[0]
 
 			def classAndMethod = getClass().getSimpleName() + '.' + methodName + '(execution=' + execution.getId() + ')'
-			def isDebugEnabled =  execution.getVariable('isDebugLogEnabled')
+			def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
 
-			logDebug('Entered ' + classAndMethod, isDebugEnabled)
-			logDebug('Received parameters: ' + args, isDebugEnabled)
+			logger.debug('Entered ' + classAndMethod)
+			logger.debug('Received parameters: ' + args)
 
 			try{
 				def methodToCall = this.metaClass.getMetaMethod(methodName, args)
-				logDebug('Method to call: ' + methodToCall, isDebugEnabled)
+				logger.debug('Method to call: ' + methodToCall)
 				methodToCall?.invoke(this, args)
 			}
 			catch(BpmnError bpmnError) {
-				logDebug('Rethrowing BpmnError ' + bpmnError.getMessage(), isDebugEnabled)
+				logger.debug('Rethrowing BpmnError ' + bpmnError.getMessage())
 				throw bpmnError
 			}
 			catch(Exception e) {
 				e.printStackTrace()
-				logDebug('Unexpected error encountered - ' + e.getMessage(), isDebugEnabled)
+				logger.debug('Unexpected error encountered - ' + e.getMessage())
 				(new ExceptionUtil()).buildAndThrowWorkflowException(execution, 9999, e.getMessage())
 			}
 			finally {
-				logDebug('Exited ' + classAndMethod, isDebugEnabled)
+				logger.debug('Exited ' + classAndMethod)
 			}
 		}
 	}
@@ -718,8 +623,8 @@
 		def disableRollback = execution.getVariable("disableRollback")
 		def defaultRollback = UrnPropertiesReader.getVariable("mso.rollback", execution).toBoolean()
 
-		logDebug('disableRollback: ' + disableRollback, isDebugLogEnabled)
-		logDebug('defaultRollback: ' + defaultRollback, isDebugLogEnabled)
+		logger.debug('disableRollback: ' + disableRollback)
+		logger.debug('defaultRollback: ' + defaultRollback)
 
 		def rollbackEnabled
 
@@ -727,7 +632,7 @@
 			// get from default urn settings for mso_rollback
 			disableRollback = !defaultRollback
 			rollbackEnabled = defaultRollback
-			logDebug('disableRollback is null or empty!', isDebugLogEnabled)
+			logger.debug('disableRollback is null or empty!')
 		}
 		else {
 			if(disableRollback == true) {
@@ -742,7 +647,7 @@
 		}
 		
 		execution.setVariable(prefix+"backoutOnFailure", rollbackEnabled)
-		logDebug('rollbackEnabled (aka backoutOnFailure): ' + rollbackEnabled, isDebugLogEnabled)
+		logger.debug('rollbackEnabled (aka backoutOnFailure): ' + rollbackEnabled)
 	}
 
 	public void setBasicDBAuthHeader(DelegateExecution execution, isDebugLogEnabled) {
@@ -752,7 +657,7 @@
 			execution.setVariable("BasicAuthHeaderValueDB",encodedString)
 		} catch (IOException ex) {
 			String dataErrorMessage = " Unable to encode Catalog DB user/password string - " + ex.getMessage()
-			utils.log("DEBUG", dataErrorMessage, isDebugLogEnabled)
+			logger.debug(dataErrorMessage)
 			(new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 		}
 	}
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/CatalogDbUtils.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/CatalogDbUtils.groovy
index 0d9b3c5..d5b0b31 100644
--- a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/CatalogDbUtils.groovy
+++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/CatalogDbUtils.groovy
@@ -51,13 +51,13 @@
     private static final Logger logger = LoggerFactory.getLogger( CatalogDbUtils.class);
 
 	private HttpClientFactory httpClientFactory
-	private MsoUtils msoUtils
-	private  JsonUtils jsonUtils
+	private MsoUtils utils
+	private JsonUtils jsonUtils
 	static private String defaultDbAdapterVersion = "v2"
 
-	CatalogDbUtils(HttpClientFactory httpClientFactory, MsoUtils msoUtils, JsonUtils jsonUtils) {
+	CatalogDbUtils(HttpClientFactory httpClientFactory, JsonUtils jsonUtils) {
 		this.httpClientFactory = httpClientFactory
-		this.msoUtils = msoUtils
+		this.utils = new MsoUtils()
 		this.jsonUtils = jsonUtils
 	}
 
@@ -105,7 +105,7 @@
 			}
 		}
 		catch (Exception e) {
-			msoUtils.log("ERROR", "Exception in Querying Catalog DB: " + e.message)
+			logger.error("Exception in Querying Catalog DB: " + e.message)
 			throw e
 		}
 
@@ -488,7 +488,7 @@
 			}
 		}
 		catch (Exception e) {
-			msoUtils.log("ERROR", "Exception in Querying Catalog DB: " + e.message)
+			logger.error("Exception in Querying Catalog DB: " + e.message)
 			throw e
 		}
 
@@ -500,13 +500,13 @@
 		String encodedString = null
 		try {
 			String basicAuthValueDB = UrnPropertiesReader.getVariable("mso.adapters.db.auth", execution)
-			msoUtils.log("DEBUG", " Obtained BasicAuth userid password for Catalog DB adapter: " + basicAuthValueDB)
+			logger.debug("DEBUG", " Obtained BasicAuth userid password for Catalog DB adapter: " + basicAuthValueDB)
 
-			encodedString = msoUtils.getBasicAuth(basicAuthValueDB, UrnPropertiesReader.getVariable("mso.msoKey", execution))
+			encodedString = utils.getBasicAuth(basicAuthValueDB, UrnPropertiesReader.getVariable("mso.msoKey", execution))
 			execution.setVariable("BasicAuthHeaderValueDB",encodedString)
 		} catch (IOException ex) {
 			String dataErrorMessage = " Unable to encode Catalog DB user/password string - " + ex.getMessage()
-			msoUtils.log("ERROR", dataErrorMessage)
+			logger.error(dataErrorMessage)
 		}
 		return encodedString
 	}
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/CatalogDbUtilsFactory.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/CatalogDbUtilsFactory.groovy
index faa0037..bf7d07c 100644
--- a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/CatalogDbUtilsFactory.groovy
+++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/CatalogDbUtilsFactory.groovy
@@ -4,6 +4,8 @@
  * ================================================================================
  * Copyright (C) 2018 NOKIA.
  * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
  * 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
@@ -26,6 +28,6 @@
 public class CatalogDbUtilsFactory {
 
     CatalogDbUtils create() {
-        return new CatalogDbUtils(new HttpClientFactory(), new MsoUtils(), new JsonUtils())
+        return new CatalogDbUtils(new HttpClientFactory(), new JsonUtils())
     }
 }
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/MsoUtils.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/MsoUtils.groovy
index ccbd682..92c1579 100644
--- a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/MsoUtils.groovy
+++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/MsoUtils.groovy
@@ -28,7 +28,6 @@
 
 import org.apache.commons.codec.binary.Base64
 import org.apache.commons.lang3.StringEscapeUtils
-import org.onap.so.bpmn.core.BPMNLogger
 import org.onap.so.bpmn.core.xml.XmlTool
 import org.onap.so.logger.MessageEnum
 import org.slf4j.Logger
@@ -89,7 +88,7 @@
 		}
 		return nodes
 	}
-	
+
 	def getNodeXml(xmlInput,element){
 		return getNodeXml(xmlInput, element, true)
 	}
@@ -106,7 +105,7 @@
 
 		return unescapeNodeContents(nodeToSerialize, nodeAsText)
 	}
-	
+
 	def unescapeNodeContents(NodeChild node, String text) {
 		if (!node.childNodes().hasNext()) {
 			return StringEscapeUtils.unescapeXml(text)
@@ -125,7 +124,7 @@
 		}
 	}
 
-	
+
 	/***** Utilities when using XmlParser *****/
 	
 	/**
@@ -139,12 +138,12 @@
 		nodeAsString = removeXmlPreamble(nodeAsString)
 		return formatXml(nodeAsString)
 	}
-	
+
 	/**
 	 * Get the specified child Node of the specified parent. If there are
 	 * multiple children of the same name, only the first one is returned.
 	 * If there are no children with the specified name, 'null' is returned.
-	 * 
+	 *
 	 * @param parent Parent Node in which to find a child.
 	 * @param childNodeName Name of the child Node to get.
 	 * @return the (first) child Node with the specified name or 'null'
@@ -158,11 +157,11 @@
 			return nodeList.get(0)
 		}
 	}
-	
+
 	/**
 	 * Get the textual value of the specified child Node of the specified parent.
 	 * If there are no children with the specified name, 'null' is returned.
-	 * 
+	 *
 	 * @param parent Parent Node in which to find a child.
 	 * @param childNodeName Name of the child Node whose value to get.
 	 * @return the textual value of child Node with the specified name or 'null'
@@ -176,11 +175,11 @@
 			return childNode.text()
 		}
 	}
-	
+
 	/**
 	 * Get all of the child nodes from the specified parent that have the
 	 * specified name.  The returned NodeList could be empty.
-	 * 
+	 *
 	 * @param parent Parent Node in which to find children.
 	 * @param childNodeName Name of the children to get.
 	 * @return a NodeList of all the children from the parent with the specified
@@ -192,14 +191,14 @@
 
 	/***** End of Utilities when using XmlParser *****/
 
-	
+
 	/** these are covered under the common function above**/
 	def getSubscriberName(xmlInput,element){
 		def rtn=null
 		if(xmlInput!=null){
 			def xml= new XmlSlurper().parseText(xmlInput)
 			rtn= xml.'**'.find{node->node.name()==element}.text()
-		} 
+		}
 		return rtn
 	}
 	def getTenantInformation(xmlInput,element){
@@ -227,7 +226,7 @@
 		}
 		return ret
 	}
-	
+
 	def searchMetaDataNode(fxml, searchName, searchValue){
 		def ret = fxml.'**'.find {it.metaname.text() == searchName && it.metaval.text() == searchValue}
 		if(ret != null){
@@ -235,7 +234,7 @@
 		}
 		return ret
 	}
-	
+
 	// for Trinity L3 add/delete bonding
 	def getPBGFList(isDebugLogEnabled, xmlInput){
 		log("DEBUG", "getPBGFList: xmlInput " + xmlInput,isDebugLogEnabled)
@@ -271,20 +270,18 @@
 						}
 						myNodes.add(XmlUtil.serialize(nodeToAdd))
 					}
-					
 			}
 		}
-				
 			return myNodes
 		}else{
 			return null
 		}
 	}
-	
+
 	def getPBGFList(xmlInput){
 		getPBGFList("false", xmlInput)
 	}
-	
+
 	def getMetaVal(node, name){
 		try{
 			return node.'**'.find {it.metaname.text() == name}.metaval.text()
@@ -293,18 +290,17 @@
 		}
 	}
 
-	def log(logmode,logtxt,isDebugLogEnabled="false"){
+	def private log(logmode,logtxt,isDebugLogEnabled="false"){
 		if ("INFO"==logmode) {
-			logger.info(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, logtxt, "BPMN");
+			logger.info(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), logtxt, "BPMN");
 		} else if ("WARN"==logmode) {
 			logger.warn ("{} {} {} {} {}", MessageEnum.BPMN_GENERAL_WARNING.toString(), logtxt, "BPMN",
 					ErrorCode.UnknownError.getValue(), logtxt);
 		} else if ("ERROR"==logmode) {
 		    logger.error("{} {} {} {} {}", MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), logtxt, "BPMN",
 					ErrorCode.UnknownError.getValue(), logtxt);
-
 		} else {
-			BPMNLogger.debug(isDebugLogEnabled, logtxt);
+			logger.debug(logtxt);
 		}
 	}
 
@@ -317,7 +313,7 @@
 		}
 		return rtn
 	}
-	
+
 	/**
 	 * Gets the children of the specified element.
 	 */
@@ -336,10 +332,10 @@
 		}
 		return out.toString();
 	}
-	
+
 	/**
 	 * Encodes a value so it can be used inside an XML text element.
-	 * 
+	 *
 	 * <b>Will double encode</b>
 	 * @param s the string to encode
 	 * @return the encoded string
@@ -347,7 +343,7 @@
 	public static String xmlEscape(Object value) {
 		return XmlTool.encode(value)
 	}
-	
+
 	/**
 	 * Removes the preamble, if present, from an XML document.
 	 * Also, for historical reasons, this also trims leading and trailing
@@ -395,29 +391,29 @@
 	public String formatXml(def xml) {
 		return XmlTool.normalize(xml);
 	}
-	
+
 	// build single elements
 	def buildElements(xmlInput, elementList, parentName) {
 		String var = ""
 		def xmlBuild = ""
 		if (parentName != "") {
 		   xmlBuild += "<tns2:"+parentName+">"
-		}   
+		}
 		if (xmlInput != null) {
 			   for (element in elementList) {
 			      def xml= new XmlSlurper().parseText(xmlInput)
 			      var = xml.'**'.find {it.name() == element}
 				  if (var != null) {
 			         xmlBuild += "<tns2:"+element+">"+var.toString()+"</tns2:"+element+">"
-				  } 
+				  }
 			   }
 		}
 		if (parentName != "") {
 		   xmlBuild += "</tns2:"+parentName+">"
-		}   
+		}
 		return xmlBuild
 	}
-	
+
 	// build the Unbounded elements
 	def buildElementsUnbounded(xmlInput, elementList, parentName) {
 		def varParents = ""
@@ -445,7 +441,7 @@
 		}
 		return xmlBuildUnbounded
 	 }
-	
+
 	// Build l2-homing-information
 	def buildL2HomingInformation(xmlInput) {
 		def elementsL2HomingList = ["evc-name", "topology", "preferred-aic-clli","aic-version"]
@@ -455,7 +451,7 @@
 		}
 		return rebuildL2Home
 	}
-	
+
 	// Build internet-evc-access-information
 	def buildInternetEvcAccessInformation(xmlInput) {
 		def elementsInternetEvcAccessInformationList = ["internet-evc-speed-value", "internet-evc-speed-units", "ip-version"]
@@ -465,7 +461,7 @@
 		}
 		return rebuildInternetEvcAccess
 	}
-	
+
 	// Build ucpe-vms-service-information
 	def buildUcpeVmsServiceInformation(xmlInput) {
 		def rebuildUcpeVmsServiceInformation = ''
@@ -497,7 +493,7 @@
 		log("DEBUG", " rebuildUcpeVmsServiceInformation - " + rebuildUcpeVmsServiceInformation)
 		return rebuildUcpeVmsServiceInformation
 	}
-	
+
     // Build internet-service-change-details
 	def buildInternetServiceChangeDetails(xmlInput) {
 		def rebuildInternetServiceChangeDetails = ""
@@ -527,33 +523,33 @@
 			}
 		}
 	    return rebuildInternetServiceChangeDetails
-	}		
- 	
-	// Build vr-lan 
+	}
+
+	// Build vr-lan
 	def buildVrLan(xmlInput) {
-		
+
 		def rebuildVrLan = ''
 		if (xmlInput != null) {
-			
+
 			rebuildVrLan = "<tns2:vr-lan>"
 			def vrLan = getNodeXml(xmlInput, "vr-lan").drop(38).trim()
 			rebuildVrLan += buildElements(vrLan, ["routing-protocol"], "")
-			
+
 			// vr-lan-interface
 			def rebuildVrLanInterface = "<tns2:vr-lan-interface>"
 			def vrLanInterface = getNodeXml(vrLan, "vr-lan-interface").drop(38).trim()
 			rebuildVrLanInterface += buildVrLanInterfacePartial(vrLanInterface)
-			
+
 			 // dhcp
 			 def dhcp = getNodeXml(vrLan, "dhcp").drop(38).trim()
 			 def rebuildDhcp = buildDhcp(dhcp)
 			 rebuildVrLanInterface += rebuildDhcp
-			 
+
 			 // pat
 			 def pat = getNodeXml(vrLan, "pat").drop(38).trim()
 			 def rebuildPat = buildPat(pat)
 			 rebuildVrLanInterface += rebuildPat
-			 
+
 			 // nat
 			 def rebuildNat = ""
 			 try { // optional
@@ -563,31 +559,31 @@
 				 log("ERROR", " Optional - Exception 'nat' ")
 			 }
 			 rebuildVrLanInterface += rebuildNat
-										
+
 			 // firewall-lite
 			 def firewallLite = getNodeXml(vrLan, "firewall-lite").drop(38).trim()
 			 def rebuildFirewallLite = buildFirewallLite(firewallLite)
 			 rebuildVrLanInterface += rebuildFirewallLite
-			 
+
 			 // static-routes
 			 def rebuildStaticRoutes = ""
-			 try { // optional 
+			 try { // optional
 				 def staticRoutes = getNodeXml(vrLan, "static-routes").drop(38).trim()
 				 rebuildStaticRoutes = buildStaticRoutes(staticRoutes)
 			} catch (Exception e) {
 				 log("ERROR", " Optional - Exception 'static-routes' ")
 			}
 			rebuildVrLanInterface += rebuildStaticRoutes
-			 
+
 		   rebuildVrLan += rebuildVrLanInterface
 		   rebuildVrLan += "</tns2:vr-lan-interface>"
 		   rebuildVrLan += "</tns2:vr-lan>"
-			
+
 		}
 		log("DEBUG", " rebuildVrLan - " + rebuildVrLan)
-		return rebuildVrLan 		
+		return rebuildVrLan
 	}
-	
+
 	// Build vr-lan-interface
 	def buildVrLanInterfacePartial(xmlInput) {
 		def rebuildingVrLanInterface = ''
@@ -616,7 +612,7 @@
 		log("DEBUG", " rebuildingVrLanInterface - " + rebuildingVrLanInterface)
 		return rebuildingVrLanInterface
 	}
-	
+
 	// Build dhcp
 	def buildDhcp(xmlInput) {
 		def rebuildingDhcp = ''
@@ -686,10 +682,10 @@
 				 log("ERROR", " Optional - Exception DHCP 'v6-dhcp-pools' ")
 			 }
 			 rebuildingDhcp += "</tns2:dhcp>"
-		}	 
+		}
 		log("DEBUG", " rebuildingDhcp - " + rebuildingDhcp)
 		return rebuildingDhcp
-	}	
+	}
 
 	// Build pat
 	def buildPat(xmlInput) {
@@ -710,7 +706,7 @@
 		 log("DEBUG", " rebuildingPat - " + rebuildingPat)
 	     return rebuildingPat
     }
-	
+
 	// Build nat
 	def buildNat(xmlInput) {
 		def rebuildingNat = ''
@@ -728,19 +724,19 @@
 		}
 		log("DEBUG", " rebuildingNat - " + rebuildingNat)
 	    return rebuildingNat
-	}				
-	
+	}
+
 	// Build firewall-lite
 	def buildFirewallLite(xmlInput) {
 		def rebuildingFirewallLite = ''
-		
+
 		if (xmlInput != null) {
-			
+
 			def firewallLiteData = new XmlSlurper().parseText(xmlInput)
 			rebuildingFirewallLite = "<tns2:firewall-lite>"
 			def firewallLiteList = ["stateful-firewall-lite-v4-enabled", "stateful-firewall-lite-v6-enabled"]
 			rebuildingFirewallLite += buildElements(xmlInput, firewallLiteList, "")
-			
+
 			 try { // optional
 				 def v4FirewallPacketFilters = firewallLiteData.'**'.findAll {it.name() == "v4-firewall-packet-filters"}
 				 def v4FirewallPacketFiltersSize = v4FirewallPacketFilters.size()
@@ -768,7 +764,7 @@
 			 } catch (Exception e) {
 				 log("ERROR", " Optional - Exception FIREWALL-LITE 'v4-firewall-packet-filters' ")
 			 }
-			 
+
 			 try { // optional
 				 def v6FirewallPacketFilters = firewallLiteData.'**'.findAll {it.name() == "v6-firewall-packet-filters"}
 				 def v6FirewallPacketFiltersSize = v6FirewallPacketFilters.size()
@@ -801,7 +797,7 @@
 		log("DEBUG", " rebuildingFirewallLite - " + rebuildingFirewallLite)
 		return rebuildingFirewallLite
      }
-	
+
 	def buildStaticRoutes(xmlInput) {
 		def rebuildingStaticRoutes = ''
 		if (xmlInput != null) {
@@ -815,21 +811,21 @@
 		log("DEBUG", " rebuildingStaticRoutes - " + rebuildingStaticRoutes)
 		return rebuildingStaticRoutes
 	}
-	
+
 	public String generateCurrentTimeInUtc(){
 		final  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
 		sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
 		final String utcTime = sdf.format(new Date());
 		return utcTime;
 	}
-	
+
 	public String generateCurrentTimeInGMT(){
 		final  SimpleDateFormat sdf = new SimpleDateFormat("E, d MMM yyyy h:m:s z");
 		sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
 		final String utcTime = sdf.format(new Date());
 		return utcTime;
 	}
-	
+
 
 	/**
 	 * @param encryptedAuth: encrypted credentials from urn properties
@@ -850,7 +846,7 @@
 			throw ex
 		}
 	}
-	
+
 	def encrypt(toEncrypt, msokey){
 		try {
 			String result = CryptoUtils.encrypt(toEncrypt, msokey);
@@ -860,7 +856,7 @@
 			log("ERROR", "Failed to encrypt credentials")
 		}
 	}
-	
+
 	def decrypt(toDecrypt, msokey){
 		try {
 			String result = CryptoUtils.decrypt(toDecrypt, msokey);
@@ -871,7 +867,7 @@
 			throw e
 		}
 	}
-	
+
 	/**
 	 * Return URL with qualified host name (if any) or urn mapping
 	 * @param  String url from urn mapping
@@ -890,9 +886,9 @@
 				log("DEBUG", "unable to grab qualified host name, using what's in urn properties for callbackurl. Exception was: " + e.printStackTrace())
 		}
 		return callbackUrlToUse
-		
+
 	}
-	
+
 	/**
 	 * Retrieves text context of the element if the element exists, returns empty string otherwise
 	 * @param com.sun.org.apache.xerces.internal.dom.DeferredElementNSImpl element to parse
@@ -907,7 +903,7 @@
 	 	}
 	 	return text
 	 }
-	 
+
 	 /**
 	  *
 	  * Find the lowest unused module-index value in a given xml
@@ -915,14 +911,14 @@
 	 public String getLowestUnusedIndex(String xml) {
 		 if (xml == null || xml.isEmpty()) {
 			 return "0"
-		 }		 
-		 def moduleIndexList = getMultNodes(xml, "module-index") 
-		 if (moduleIndexList == null || moduleIndexList.size() == 0) {			
+		 }
+		 def moduleIndexList = getMultNodes(xml, "module-index")
+		 if (moduleIndexList == null || moduleIndexList.size() == 0) {
 			 return "0"
 		 }
-		 
+
 		 def sortedModuleIndexList = moduleIndexList.sort{ a, b -> a as Integer <=> b as Integer}
-		
+
 		 for (i in 0..sortedModuleIndexList.size()-1) {
 			 if (Integer.parseInt(sortedModuleIndexList[i]) != i) {
 				 return i.toString()
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/bbobjects/GenericVnf.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/bbobjects/GenericVnf.java
index ba3ab7f..c6e7668 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/bbobjects/GenericVnf.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/bbobjects/GenericVnf.java
@@ -143,8 +143,28 @@
 	private String nfFunction;
 	@JsonProperty("nf-role")
 	private String nfRole;
+	@JsonProperty("CDS_BLUEPRINT_NAME")
+	private String blueprintName;
+	@JsonProperty("CDS_BLUEPRINT_VERSION")
+	private String blueprintVersion;
 
 
+	public String getBlueprintName() {
+		return blueprintName;
+	}
+
+	public void setBlueprintName(String blueprintName) {
+		this.blueprintName = blueprintName;
+	}
+
+	public String getBlueprintVersion() {
+		return blueprintVersion;
+	}
+
+	public void setBlueprintVersion(String blueprintVersion) {
+		this.blueprintVersion = blueprintVersion;
+	}
+
 	public String getNfFunction() {
 		return nfFunction;
 	}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java
index 36a6bf3..88ed5d3 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java
@@ -146,7 +146,7 @@
 	}
 	
 	public VnfVfmoduleCvnfcConfigurationCustomization getVnfVfmoduleCvnfcConfigurationCustomizationByActionAndIsALaCarteAndRequestScopeAndCloudOwner(String vnfCustomizationUuid,
-			String vfModuleCustomizationUuid, String cvnfcCustomizationUuid) {
+			String vfModuleCustomizationUuid, String cvnfcCustomizationUuid){
 		return catalogDbClient.getVnfVfmoduleCvnfcConfigurationCustomizationByVnfCustomizationUuidAndVfModuleCustomizationUuidAndCvnfcCustomizationUuid(vnfCustomizationUuid,
 				vfModuleCustomizationUuid, cvnfcCustomizationUuid);
 	}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExtractPojosForBB.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExtractPojosForBB.java
index d2d321f..260a942 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExtractPojosForBB.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExtractPojosForBB.java
@@ -46,7 +46,10 @@
 
 	private static final Logger logger = LoggerFactory.getLogger(ExtractPojosForBB.class);
 	
-	public <T> T extractByKey(BuildingBlockExecution execution, ResourceKey key, String value)
+	public <T> T extractByKey(BuildingBlockExecution execution, ResourceKey key) throws BBObjectNotFoundException {
+		return extractByKey(execution, key, execution.getLookupMap().get(key));
+	}
+	protected <T> T extractByKey(BuildingBlockExecution execution, ResourceKey key, String value)
 			throws BBObjectNotFoundException {
 
 		Optional<T> result = Optional.empty();
@@ -59,39 +62,39 @@
 					result = lookupObjectInList(gBBInput.getCustomer().getServiceSubscription().getServiceInstances(), value);
 					break;
 				case GENERIC_VNF_ID:
-					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 					result = lookupObjectInList(serviceInstance.getVnfs(), value);
 					break;
 				case NETWORK_ID:
-					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 					result = lookupObjectInList(serviceInstance.getNetworks(), value);
 					break;
 				case VOLUME_GROUP_ID:
-					vnf = extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+					vnf = extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 					result = lookupObjectInList(vnf.getVolumeGroups(), value);
 					break;
 				case VF_MODULE_ID:
-					vnf = extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+					vnf = extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 					result = lookupObjectInList(vnf.getVfModules(), value);
 					break;
 				case ALLOTTED_RESOURCE_ID:
-					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 					result = lookupObjectInList(serviceInstance.getAllottedResources(), value);
 					break;
 				case CONFIGURATION_ID:
-					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 					result =  lookupObjectInList(serviceInstance.getConfigurations(), value);
 					break;
 				case VPN_ID:
-					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 					result = lookupObjectInList(gBBInput.getCustomer().getVpnBindings(), value);
 					break;
 				case VPN_BONDING_LINK_ID:
-					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
                     result = lookupObjectInList(serviceInstance.getVpnBondingLinks(),value);
 					break;
 				case INSTANCE_GROUP_ID:
-					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+					serviceInstance = extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 					result = lookupObjectInList(serviceInstance.getInstanceGroups(), value);
 					break;	
 				default:
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/AbstractCDSProcessingBBUtils.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/AbstractCDSProcessingBBUtils.java
new file mode 100644
index 0000000..29abe44
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/AbstractCDSProcessingBBUtils.java
@@ -0,0 +1,192 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2019 TechMahindra
+ * ================================================================================
+ * 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=========================================================
+ */
+
+package org.onap.so.client.cds;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.onap.ccsdk.apps.controllerblueprints.common.api.ActionIdentifiers;
+import org.onap.ccsdk.apps.controllerblueprints.common.api.CommonHeader;
+import org.onap.ccsdk.apps.controllerblueprints.common.api.EventType;
+import org.onap.ccsdk.apps.controllerblueprints.processing.api.ExecutionServiceInput;
+import org.onap.ccsdk.apps.controllerblueprints.processing.api.ExecutionServiceOutput;
+import org.onap.so.client.PreconditionFailedException;
+import org.onap.so.client.RestPropertiesLoader;
+import org.onap.so.client.cds.beans.AbstractCDSPropertiesBean;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.google.protobuf.InvalidProtocolBufferException;
+import com.google.protobuf.Struct;
+import com.google.protobuf.Struct.Builder;
+import com.google.protobuf.util.JsonFormat;
+
+import io.grpc.Status;
+
+/**
+ * Util class to support Call to CDS client
+ *
+ */
+@Component
+public class AbstractCDSProcessingBBUtils implements CDSProcessingListener {
+
+    private static final Logger logger = LoggerFactory.getLogger(AbstractCDSProcessingBBUtils.class);
+
+    private static final String SUCCESS = "Success";
+    private static final String FAILED = "Failed";
+    private static final String PROCESSING = "Processing";
+
+    private final AtomicReference<String> cdsResponse = new AtomicReference<>();
+
+    @Autowired
+    private ExceptionBuilder exceptionUtil;
+
+    /**
+     * Extracting data from execution object and building the ExecutionServiceInput
+     * Object
+     * 
+     * @param execution
+     *            DelegateExecution object
+     */
+    public void constructExecutionServiceInputObject(DelegateExecution execution) {
+        logger.trace("Start AbstractCDSProcessingBBUtils.preProcessRequest ");
+
+        try {
+            AbstractCDSPropertiesBean executionObject = (AbstractCDSPropertiesBean) execution
+                    .getVariable("executionObject");
+
+            String payload = executionObject.getRequestObject();
+
+            CommonHeader commonHeader = CommonHeader.newBuilder().setOriginatorId(executionObject.getOriginatorId())
+                    .setRequestId(executionObject.getRequestId()).setSubRequestId(executionObject.getSubRequestId())
+                    .build();
+            ActionIdentifiers actionIdentifiers = ActionIdentifiers.newBuilder()
+                    .setBlueprintName(executionObject.getBlueprintName())
+                    .setBlueprintVersion(executionObject.getBlueprintVersion())
+                    .setActionName(executionObject.getActionName()).setMode(executionObject.getMode()).build();
+
+            Builder struct = Struct.newBuilder();
+            try {
+                JsonFormat.parser().merge(payload, struct);
+            } catch (InvalidProtocolBufferException e) {
+                logger.error("Failed to parse received message. blueprint({}:{}) for action({}). {}",
+                        executionObject.getBlueprintVersion(), executionObject.getBlueprintName(),
+                        executionObject.getActionName(), e);
+            }
+
+            ExecutionServiceInput executionServiceInput = ExecutionServiceInput.newBuilder()
+                    .setCommonHeader(commonHeader).setActionIdentifiers(actionIdentifiers).setPayload(struct.build())
+                    .build();
+
+            execution.setVariable("executionServiceInput", executionServiceInput);
+
+        } catch (Exception ex) {
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
+        }
+    }
+
+    /**
+     * get the executionServiceInput object from execution and send a request to CDS
+     * Client and wait for TIMEOUT period
+     * 
+     * @param execution
+     *            DelegateExecution object
+     */
+    public void sendRequestToCDSClient(DelegateExecution execution) {
+
+        logger.trace("Start AbstractCDSProcessingBBUtils.sendRequestToCDSClient ");
+        try {
+            CDSProperties props = RestPropertiesLoader.getInstance().getNewImpl(CDSProperties.class);
+            if (props == null) {
+                throw new PreconditionFailedException(
+                        "No RestProperty.CDSProperties implementation found on classpath, can't create client.");
+            }
+
+            ExecutionServiceInput executionServiceInput = (ExecutionServiceInput) execution
+                    .getVariable("executionServiceInput");
+
+            CDSProcessingListener cdsProcessingListener = new AbstractCDSProcessingBBUtils();
+
+            CDSProcessingClient cdsClient = new CDSProcessingClient(cdsProcessingListener);
+            CountDownLatch countDownLatch = cdsClient.sendRequest(executionServiceInput);
+
+            try {
+                countDownLatch.await(props.getTimeout(), TimeUnit.SECONDS);
+            } catch (InterruptedException ex) {
+                logger.error("Caught exception in sendRequestToCDSClient in AbstractCDSProcessingBBUtils : ", ex);
+            } finally {
+                cdsClient.close();
+            }
+
+            if (cdsResponse != null) {
+                execution.setVariable("CDSStatus", cdsResponse.get());
+            }
+
+        } catch (Exception ex) {
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
+        }
+    }
+
+    /**
+     * Get Response from CDS Client
+     * 
+     */
+    @Override
+    public void onMessage(ExecutionServiceOutput message) {
+        logger.info("Received notification from CDS: {}", message);
+        EventType eventType = message.getStatus().getEventType();
+
+        switch (eventType) {
+
+        case EVENT_COMPONENT_FAILURE:
+            // failed processing with failure
+            cdsResponse.set(FAILED);
+            break;
+        case EVENT_COMPONENT_PROCESSING:
+            // still processing
+            cdsResponse.set(PROCESSING);
+            break;
+        case EVENT_COMPONENT_EXECUTED:
+            // done with async processing
+            cdsResponse.set(SUCCESS);
+            break;
+        default:
+            cdsResponse.set(FAILED);
+            break;
+        }
+
+    }
+
+    /**
+     * On error at CDS, log the error
+     */
+    @Override
+    public void onError(Throwable t) {
+        Status status = Status.fromThrowable(t);
+        logger.error("Failed processing blueprint {}", status, t);
+    }
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/AbstractCDSPropertiesBean.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/AbstractCDSPropertiesBean.java
new file mode 100644
index 0000000..4b64598
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/AbstractCDSPropertiesBean.java
@@ -0,0 +1,89 @@
+package org.onap.so.client.cds.beans;
+
+import java.io.Serializable;
+
+public class AbstractCDSPropertiesBean implements Serializable {
+
+	private static final long serialVersionUID = -4800522372460352963L;
+
+	private String blueprintName;
+
+	private String blueprintVersion;
+
+	private String requestObject;
+
+	private String originatorId;
+
+	private String requestId;
+
+	private String subRequestId;
+
+	private String actionName;
+
+	private String mode;
+
+	public String getBlueprintName() {
+		return blueprintName;
+	}
+
+	public void setBlueprintName(String blueprintName) {
+		this.blueprintName = blueprintName;
+	}
+
+	public String getBlueprintVersion() {
+		return blueprintVersion;
+	}
+
+	public void setBlueprintVersion(String blueprintVersion) {
+		this.blueprintVersion = blueprintVersion;
+	}
+
+	public String getRequestObject() {
+		return requestObject;
+	}
+
+	public void setRequestObject(String requestObject) {
+		this.requestObject = requestObject;
+	}
+
+	public String getOriginatorId() {
+		return originatorId;
+	}
+
+	public void setOriginatorId(String originatorId) {
+		this.originatorId = originatorId;
+	}
+
+	public String getRequestId() {
+		return requestId;
+	}
+
+	public void setRequestId(String requestId) {
+		this.requestId = requestId;
+	}
+
+	public String getSubRequestId() {
+		return subRequestId;
+	}
+
+	public void setSubRequestId(String subRequestId) {
+		this.subRequestId = subRequestId;
+	}
+
+	public String getActionName() {
+		return actionName;
+	}
+
+	public void setActionName(String actionName) {
+		this.actionName = actionName;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigAssignPropertiesForPnf.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigAssignPropertiesForPnf.java
new file mode 100644
index 0000000..bdb9161
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigAssignPropertiesForPnf.java
@@ -0,0 +1,112 @@
+package org.onap.so.client.cds.beans;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+"service-instance-id",
+"pnf-id",
+"pnf-name",
+"service-model-uuid",
+"pnf-customization-uuid"
+})
+
+public class ConfigAssignPropertiesForPnf {
+
+	@JsonProperty("service-instance-id")
+	private String serviceInstanceId;
+
+	@JsonProperty("pnf-id")
+	private String pnfId;
+
+	@JsonProperty("pnf-name")
+	private String pnfName;
+
+	@JsonProperty("service-model-uuid")
+	private String serviceModelUuid;
+
+	@JsonProperty("pnf-customization-uuid")
+	private String pnfCustomizationUuid;
+
+	@JsonIgnore
+	private Map<String, Object> userParam = new HashMap<String, Object>();
+
+	public String getServiceInstanceId() {
+		return serviceInstanceId;
+	}
+
+	public void setServiceInstanceId(String serviceInstanceId) {
+		this.serviceInstanceId = serviceInstanceId;
+	}
+
+	public String getPnfId() {
+		return pnfId;
+	}
+
+	public void setPnfId(String pnfId) {
+		this.pnfId = pnfId;
+	}
+
+	public String getPnfName() {
+		return pnfName;
+	}
+
+	public void setPnfName(String pnfName) {
+		this.pnfName = pnfName;
+	}
+
+	public String getServiceModelUuid() {
+		return serviceModelUuid;
+	}
+
+	public void setServiceModelUuid(String serviceModelUuid) {
+		this.serviceModelUuid = serviceModelUuid;
+	}
+
+	public String getPnfCustomizationUuid() {
+		return pnfCustomizationUuid;
+	}
+
+	public void setPnfCustomizationUuid(String pnfCustomizationUuid) {
+		this.pnfCustomizationUuid = pnfCustomizationUuid;
+	}
+
+	public Map<String, Object> getUserParam() {
+		return this.userParam;
+	}
+
+	public void setUserParam(String name, Object value) {
+		this.userParam.put(name, value);
+	}
+
+	@Override
+	public String toString() {
+
+		final StringBuilder sb = new StringBuilder("{");
+		sb.append("\"service-instance-id\":").append("\"").append(serviceInstanceId).append("\"");
+		sb.append(", \"pnf-id\":").append("\"").append(pnfId).append("\"");
+		sb.append(", \"pnf-name\":").append("\"").append(pnfName).append("\"");
+		sb.append(", \"service-model-uuid\":").append("\"").append(serviceModelUuid).append("\"");
+		sb.append(", \"pnf-customization-uuid\":").append("\"").append(pnfCustomizationUuid).append("\"");
+		for (Map.Entry<String, Object> entry : userParam.entrySet()) {
+			sb.append(",");
+			sb.append("\"");
+			sb.append(entry.getKey());
+			sb.append("\"");
+			sb.append(":");
+			sb.append("\"");
+			sb.append(entry.getValue());
+			sb.append("\"");
+		}
+		sb.append('}');
+
+		return sb.toString();
+	}
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigAssignPropertiesForVnf.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigAssignPropertiesForVnf.java
new file mode 100644
index 0000000..1ce26d8
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigAssignPropertiesForVnf.java
@@ -0,0 +1,112 @@
+package org.onap.so.client.cds.beans;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+"service-instance-id",
+"vnf-id",
+"vnf-name",
+"service-model-uuid",
+"vnf-customization-uuid"
+})
+
+public class ConfigAssignPropertiesForVnf {
+	
+    @JsonProperty("service-instance-id")
+    private String serviceInstanceId;
+
+    @JsonProperty("vnf-id")
+    private String vnfId;
+
+    @JsonProperty("vnf-name")
+    private String vnfName;
+
+    @JsonProperty("service-model-uuid")
+    private String serviceModelUuid;
+
+    @JsonProperty("vnf-customization-uuid")
+    private String vnfCustomizationUuid;
+
+    @JsonIgnore
+    private Map<String, Object> userParam = new HashMap<String, Object>();
+
+    public String getServiceInstanceId() {
+        return serviceInstanceId;
+    }
+
+    public void setServiceInstanceId(String serviceInstanceId) {
+        this.serviceInstanceId = serviceInstanceId;
+    }
+
+    public String getVnfId() {
+        return vnfId;
+    }
+
+    public void setVnfId(String vnfId) {
+        this.vnfId = vnfId;
+    }
+
+    public String getVnfName() {
+        return vnfName;
+    }
+
+    public void setVnfName(String vnfName) {
+        this.vnfName = vnfName;
+    }
+
+    public String getServiceModelUuid() {
+        return serviceModelUuid;
+    }
+
+    public void setServiceModelUuid(String serviceModelUuid) {
+        this.serviceModelUuid = serviceModelUuid;
+    }
+
+    public String getVnfCustomizationUuid() {
+        return vnfCustomizationUuid;
+    }
+
+    public void setVnfCustomizationUuid(String vnfCustomizationUuid) {
+        this.vnfCustomizationUuid = vnfCustomizationUuid;
+    }
+
+    public Map<String, Object> getUserParam() {
+        return this.userParam;
+    }
+
+    public void setUserParam(String name, Object value) {
+        this.userParam.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+
+        final StringBuilder sb = new StringBuilder("{");
+        sb.append("\"service-instance-id\":").append("\"").append(serviceInstanceId).append("\"");
+        sb.append(", \"vnf-id\":").append("\"").append(vnfId).append("\"");
+        sb.append(", \"vnf-name\":").append("\"").append(vnfName).append("\"");
+        sb.append(", \"service-model-uuid\":").append("\"").append(serviceModelUuid).append("\"");
+        sb.append(", \"vnf-customization-uuid\":").append("\"").append(vnfCustomizationUuid).append("\"");
+        for (Map.Entry<String, Object> entry : userParam.entrySet()) {
+            sb.append(",");
+            sb.append("\"");
+            sb.append(entry.getKey());
+            sb.append("\"");
+            sb.append(":");
+            sb.append("\"");
+            sb.append(entry.getValue());
+            sb.append("\"");
+        }
+        sb.append('}');
+
+        return sb.toString();
+    }
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigAssignRequestPnf.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigAssignRequestPnf.java
new file mode 100644
index 0000000..b96847f
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigAssignRequestPnf.java
@@ -0,0 +1,46 @@
+package org.onap.so.client.cds.beans;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+"config-assign-properties",
+"resolution-key"
+})
+
+public class ConfigAssignRequestPnf {
+	@JsonProperty("resolution-key")
+	private String resolutionKey;
+	@JsonProperty("config-assign-properties")
+	private ConfigAssignPropertiesForPnf configAssignPropertiesForPnf;
+
+	public String getResolutionKey() {
+		return resolutionKey;
+	}
+
+	public void setResolutionKey(String resolutionKey) {
+		this.resolutionKey = resolutionKey;
+	}
+
+	public ConfigAssignPropertiesForPnf getConfigAssignPropertiesForPnf() {
+		return configAssignPropertiesForPnf;
+	}
+
+	public void setConfigAssignPropertiesForPnf(ConfigAssignPropertiesForPnf configAssignPropertiesForPnf) {
+		this.configAssignPropertiesForPnf = configAssignPropertiesForPnf;
+	}
+
+	@Override
+	public String toString() {
+		final StringBuilder sb = new StringBuilder("{\"config-assign-request\":{");
+		sb.append("\"resolution-key\":").append("\"").append(resolutionKey).append("\"");
+		sb.append(", \"config-assign-properties\":").append(configAssignPropertiesForPnf.toString());
+		sb.append('}');
+		sb.append('}');
+
+		return sb.toString();
+	}
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigAssignRequestVnf.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigAssignRequestVnf.java
new file mode 100644
index 0000000..b3a9601
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigAssignRequestVnf.java
@@ -0,0 +1,45 @@
+
+package org.onap.so.client.cds.beans;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+"config-assign-properties",
+"resolution-key"
+})
+public class ConfigAssignRequestVnf {
+	@JsonProperty("resolution-key")
+	private String resolutionKey;
+	@JsonProperty("config-assign-properties")
+	private ConfigAssignPropertiesForVnf configAssignPropertiesForVnf;
+	
+	public String getResolutionKey() {
+		return resolutionKey;
+	}
+	
+	public void setResolutionKey(String resolutionKey) {
+		this.resolutionKey = resolutionKey;
+	}
+	
+	public ConfigAssignPropertiesForVnf getConfigAssignPropertiesForVnf() {
+		return configAssignPropertiesForVnf;
+	}
+
+	public void setConfigAssignPropertiesForVnf(ConfigAssignPropertiesForVnf configAssignPropertiesForVnf) {
+		this.configAssignPropertiesForVnf = configAssignPropertiesForVnf;
+	}
+
+	@Override
+	public String toString() {
+		final StringBuilder sb = new StringBuilder("{\"config-assign-request\":{");
+		sb.append("\"resolution-key\":").append("\"").append(resolutionKey).append("\"");
+		sb.append(", \"config-assign-properties\":").append(configAssignPropertiesForVnf.toString());
+		sb.append('}');
+		sb.append('}');
+		
+		return sb.toString();
+	}
+	
+}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForPnf.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForPnf.java
new file mode 100644
index 0000000..b8fb5b9
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForPnf.java
@@ -0,0 +1,88 @@
+package org.onap.so.client.cds.beans;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+"service-instance-id",
+"pnf-id",
+"pnf-name",
+"service-model-uuid",
+"pnf-customization-uuid"
+})
+
+public class ConfigDeployPropertiesForPnf {
+
+	@JsonProperty("service-instance-id")
+	private String serviceInstanceId;
+
+	@JsonProperty("pnf-id")
+	private String pnfId;
+
+	@JsonProperty("pnf-name")
+	private String pnfName;
+
+	@JsonProperty("service-model-uuid")
+	private String serviceModelUuid;
+
+	@JsonProperty("pnf-customization-uuid")
+	private String pnfCustomizationUuid;
+
+	public String getServiceInstanceId() {
+		return serviceInstanceId;
+	}
+
+	public void setServiceInstanceId(String serviceInstanceId) {
+		this.serviceInstanceId = serviceInstanceId;
+	}
+
+	public String getPnfId() {
+		return pnfId;
+	}
+
+	public void setPnfId(String pnfId) {
+		this.pnfId = pnfId;
+	}
+
+	public String getPnfName() {
+		return pnfName;
+	}
+
+	public void setPnfName(String pnfName) {
+		this.pnfName = pnfName;
+	}
+
+	public String getServiceModelUuid() {
+		return serviceModelUuid;
+	}
+
+	public void setServiceModelUuid(String serviceModelUuid) {
+		this.serviceModelUuid = serviceModelUuid;
+	}
+
+	public String getPnfCustomizationUuid() {
+		return pnfCustomizationUuid;
+	}
+
+	public void setPnfCustomizationUuid(String pnfCustomizationUuid) {
+		this.pnfCustomizationUuid = pnfCustomizationUuid;
+	}
+
+	@Override
+	public String toString() {
+
+		final StringBuilder sb = new StringBuilder("{");
+		sb.append("\"service-instance-id\":").append("\"").append(serviceInstanceId).append("\"");
+		sb.append(", \"pnf-id\":").append("\"").append(pnfId).append("\"");
+		sb.append(", \"pnf-name\":").append("\"").append(pnfName).append("\"");
+		sb.append(", \"service-model-uuid\":").append("\"").append(serviceModelUuid).append("\"");
+		sb.append(", \"pnf-customization-uuid\":").append("\"").append(pnfCustomizationUuid).append("\"");
+
+		sb.append('}');
+
+		return sb.toString();
+	}
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForVnf.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForVnf.java
new file mode 100644
index 0000000..ca2530b
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForVnf.java
@@ -0,0 +1,87 @@
+package org.onap.so.client.cds.beans;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+"service-instance-id",
+"vnf-id",
+"vnf-name",
+"service-model-uuid",
+"vnf-customization-uuid"
+})
+public class ConfigDeployPropertiesForVnf {
+
+	@JsonProperty("service-instance-id")
+	private String serviceInstanceId;
+
+	@JsonProperty("vnf-id")
+	private String vnfId;
+
+	@JsonProperty("vnf-name")
+	private String vnfName;
+
+	@JsonProperty("service-model-uuid")
+	private String serviceModelUuid;
+
+	@JsonProperty("vnf-customization-uuid")
+	private String vnfCustomizationUuid;
+
+	public String getServiceInstanceId() {
+		return serviceInstanceId;
+	}
+
+	public void setServiceInstanceId(String serviceInstanceId) {
+		this.serviceInstanceId = serviceInstanceId;
+	}
+
+	public String getVnfId() {
+		return vnfId;
+	}
+
+	public void setVnfId(String vnfId) {
+		this.vnfId = vnfId;
+	}
+
+	public String getVnfName() {
+		return vnfName;
+	}
+
+	public void setVnfName(String vnfName) {
+		this.vnfName = vnfName;
+	}
+
+	public String getServiceModelUuid() {
+		return serviceModelUuid;
+	}
+
+	public void setServiceModelUuid(String serviceModelUuid) {
+		this.serviceModelUuid = serviceModelUuid;
+	}
+
+	public String getVnfCustomizationUuid() {
+		return vnfCustomizationUuid;
+	}
+
+	public void setVnfCustomizationUuid(String vnfCustomizationUuid) {
+		this.vnfCustomizationUuid = vnfCustomizationUuid;
+	}
+
+	@Override
+	public String toString() {
+
+		final StringBuilder sb = new StringBuilder("{");
+		sb.append("\"service-instance-id\":").append("\"").append(serviceInstanceId).append("\"");
+		sb.append(", \"vnf-id\":").append("\"").append(vnfId).append("\"");
+		sb.append(", \"vnf-name\":").append("\"").append(vnfName).append("\"");
+		sb.append(", \"service-model-uuid\":").append("\"").append(serviceModelUuid).append("\"");
+		sb.append(", \"vnf-customization-uuid\":").append("\"").append(vnfCustomizationUuid).append("\"");
+
+		sb.append('}');
+
+		return sb.toString();
+	}
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigDeployRequestPnf.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigDeployRequestPnf.java
new file mode 100644
index 0000000..4635008
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigDeployRequestPnf.java
@@ -0,0 +1,46 @@
+package org.onap.so.client.cds.beans;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+"config-deploy-properties",
+"resolution-key"
+})
+public class ConfigDeployRequestPnf {
+	@JsonProperty("resolution-key")
+	private String resolutionKey;
+
+	@JsonProperty("config-deploy-properties")
+	private ConfigDeployPropertiesForPnf configDeployPropertiesForPnf;
+
+	public String getResolutionKey() {
+		return resolutionKey;
+	}
+
+	public void setResolutionKey(String resolutionKey) {
+		this.resolutionKey = resolutionKey;
+	}
+
+	public ConfigDeployPropertiesForPnf getConfigDeployPropertiesForPnf() {
+		return configDeployPropertiesForPnf;
+	}
+
+	public void setConfigDeployPropertiesForPnf(ConfigDeployPropertiesForPnf configDeployPropertiesForPnf) {
+		this.configDeployPropertiesForPnf = configDeployPropertiesForPnf;
+	}
+
+	@Override
+	public String toString() {
+		final StringBuilder sb = new StringBuilder("{\"config-deploy-request\":{");
+		sb.append("\"resolution-key\":").append("\"").append(resolutionKey).append("\"");
+		sb.append(", \"config-deploy-properties\":").append(configDeployPropertiesForPnf.toString());
+		sb.append('}');
+		sb.append('}');
+
+		return sb.toString();
+	}
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigDeployRequestVnf.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigDeployRequestVnf.java
new file mode 100644
index 0000000..53b956d
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigDeployRequestVnf.java
@@ -0,0 +1,46 @@
+package org.onap.so.client.cds.beans;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+"config-deploy-properties",
+"resolution-key"
+})
+public class ConfigDeployRequestVnf {
+	@JsonProperty("resolution-key")
+	private String resolutionKey;
+
+	@JsonProperty("config-deploy-properties")
+	private ConfigDeployPropertiesForVnf configDeployPropertiesForVnf;
+
+	public String getResolutionKey() {
+		return resolutionKey;
+	}
+
+	public void setResolutionKey(String resolutionKey) {
+		this.resolutionKey = resolutionKey;
+	}
+
+	public ConfigDeployPropertiesForVnf getConfigDeployPropertiesForVnf() {
+		return configDeployPropertiesForVnf;
+	}
+
+	public void setConfigDeployPropertiesForVnf(ConfigDeployPropertiesForVnf configDeployPropertiesForVnf) {
+		this.configDeployPropertiesForVnf = configDeployPropertiesForVnf;
+	}
+
+	@Override
+	public String toString() {
+		final StringBuilder sb = new StringBuilder("{\"config-deploy-request\":{");
+		sb.append("\"resolution-key\":").append("\"").append(resolutionKey).append("\"");
+		sb.append(", \"config-deploy-properties\":").append(configDeployPropertiesForVnf.toString());
+		sb.append('}');
+		sb.append('}');
+
+		return sb.toString();
+	}
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/restproperties/CDSPropertiesImpl.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/restproperties/CDSPropertiesImpl.java
index 1967e5a..d1888b1 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/restproperties/CDSPropertiesImpl.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/restproperties/CDSPropertiesImpl.java
@@ -30,6 +30,7 @@
     private static final String ENDPOINT = "cds.endpoint";
     private static final String PORT = "cds.port";
     private static final String AUTH = "cds.auth";
+    private static final String TIMEOUT = "cds.timeout";
 
     public CDSPropertiesImpl() {
         // Needed for service loader
@@ -74,4 +75,9 @@
     public boolean mapNotFoundToEmpty() {
         return false;
     }
+    
+    @Override
+	public int getTimeout() {
+		return Integer.parseInt(Objects.requireNonNull(UrnPropertiesReader.getVariable(TIMEOUT)));
+	}
 }
diff --git a/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/CatalogDbUtilsTest.groovy b/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/CatalogDbUtilsTest.groovy
index d6a7cf0..d7438f8 100644
--- a/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/CatalogDbUtilsTest.groovy
+++ b/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/CatalogDbUtilsTest.groovy
@@ -4,6 +4,8 @@
  * ================================================================================
  * Copyright (C) 2018 Nokia.
  * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
  * 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
@@ -51,7 +53,6 @@
     private static final String RESPONSE_FROM_CATALOG_DB = "{\"serviceVnfs\": [{\"name\": \"service1\"," +
             "\"vfModules\": [{\"name\": \"module1\", \"isBase\":true, \"initialCount\":1}]}]}"
     private HttpClientFactory httpClientFactoryMock
-    private MsoUtils msoUtilsMock
     private JsonUtils jsonUtilsMock
     private HttpClient httpClientMock
     private DelegateExecutionFake executionFake
@@ -61,11 +62,10 @@
     @Before
     void setUp() {
         httpClientFactoryMock = mock(HttpClientFactory.class)
-        msoUtilsMock = mock(MsoUtils.class)
         jsonUtilsMock = mock(JsonUtils.class)
         httpClientMock = mock(HttpClient.class)
         executionFake = new DelegateExecutionFake()
-        testedObject = new CatalogDbUtils(httpClientFactoryMock, msoUtilsMock, jsonUtilsMock)
+        testedObject = new CatalogDbUtils(httpClientFactoryMock, jsonUtilsMock)
     }
 
     @Test
diff --git a/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/PrepareUpdateAAIVfModuleTest.groovy b/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/PrepareUpdateAAIVfModuleTest.groovy
index 21441b9..60385a7 100644
--- a/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/PrepareUpdateAAIVfModuleTest.groovy
+++ b/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/PrepareUpdateAAIVfModuleTest.groovy
@@ -34,7 +34,6 @@
 import org.mockito.Captor
 import org.mockito.MockitoAnnotations
 import org.mockito.runners.MockitoJUnitRunner
-import org.onap.so.bpmn.mock.StubResponseAAI
 
 import static org.mockito.Mockito.*
 
diff --git a/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/UpdateAAIGenericVnfTest.groovy b/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/UpdateAAIGenericVnfTest.groovy
index 2bd5181..6a4d536 100644
--- a/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/UpdateAAIGenericVnfTest.groovy
+++ b/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/UpdateAAIGenericVnfTest.groovy
@@ -37,7 +37,6 @@
 import org.mockito.runners.MockitoJUnitRunner
 import org.onap.so.bpmn.core.WorkflowException
 import org.onap.so.bpmn.mock.FileUtil
-import org.onap.so.bpmn.mock.StubResponseAAI
 
 import static com.github.tomakehurst.wiremock.client.WireMock.*
 import static org.mockito.ArgumentMatchers.any
diff --git a/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/VnfAdapterRestV1Test.groovy b/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/VnfAdapterRestV1Test.groovy
index afc180e..75ddca5 100644
--- a/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/VnfAdapterRestV1Test.groovy
+++ b/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/VnfAdapterRestV1Test.groovy
@@ -85,6 +85,7 @@
       <volumeGroupId>8a07b246-155e-4b08-b56e-76e98a3c2d66</volumeGroupId>
       <volumeGroupStackId>phmaz401me6-vpevre-VOLUMEGROUP/dbd560b6-b03f-4a17-92e7-8942459a60c1</volumeGroupStackId>
       <cloudSiteId>mtrnj1b</cloudSiteId>
+      <cloudOwnerId>CloudOwner</cloudOwnerId>
       <tenantId>cfb5e0a790374c9a98a1c0d2044206a7</tenantId>
       <volumeGroupCreated>true</volumeGroupCreated>
       <msoRequest>
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java
index d5b5cde..bf98648 100644
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java
@@ -352,7 +352,7 @@
 		ServiceInstance serviceInstance = null;
 
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
@@ -370,7 +370,7 @@
 		Collection collection = null;
 
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			collection = serviceInstance.getCollection();
 
 			if (collection == null) {
@@ -445,7 +445,7 @@
 		ServiceInstance serviceInstance = null;
 
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
@@ -490,7 +490,7 @@
 		ServiceInstance serviceInstance = null;
 
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
@@ -525,7 +525,7 @@
 		GenericVnf genericVnf = null;
 
 		try {
-			genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 		} catch(BBObjectNotFoundException e) {
 			genericVnf = setGenericVnf();
 		}
@@ -553,7 +553,7 @@
 		GenericVnf genericVnf = null;
 
 		try {
-			genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 		} catch(BBObjectNotFoundException e) {
 			genericVnf = setGenericVnf();
 		}
@@ -617,7 +617,7 @@
 		ServiceInstance serviceInstance = null;
 
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
@@ -684,7 +684,7 @@
 		configurations.add(config);
 		ServiceInstance serviceInstance = new ServiceInstance();
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/MockResource.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/MockResource.java
deleted file mode 100644
index b9a413f..0000000
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/MockResource.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * 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=========================================================
- */
-
-package org.onap.so.bpmn.mock;
-
-import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Response;
-
-import com.github.tomakehurst.wiremock.WireMockServer;
-import com.github.tomakehurst.wiremock.client.WireMock;
-
-/**
- * 
- * Mock Resource which is used to start, stop the WireMock Server
- * Also up to 50 mock properties can be added at run-time to change the properties used in transformers such as sdnc_delay in SDNCAdapterMockTransformer
- * You can also selectively setup a stub (use reset before setting up), reset all stubs
- */
-@Path("/server")
-public class MockResource {
-
-	private boolean started = false;
-	private final Integer defaultPort = 28090;
-	private WireMockServer wireMockServer = null;
-	private static Map<String,String> mockProperties = new HashMap<>();
-
-	public static String getMockProperties(String key) {
-		return mockProperties.get(key);
-	}
-
-	private synchronized void initMockServer(int portNumber) {
-		String path = "src/test/resources/" + "__files/sdncSimResponse.xml";
-		path = path.substring(0,path.indexOf("__files/"));
-
-		wireMockServer = new WireMockServer(wireMockConfig().port(portNumber).extensions("org.onap.so.bpmn.mock.SDNCAdapterMockTransformer")
-																			.extensions("org.onap.so.bpmn.mock.SDNCAdapterNetworkTopologyMockTransformer")
-																			.extensions("org.onap.so.bpmn.mock.VnfAdapterCreateMockTransformer")
-																			.extensions("org.onap.so.bpmn.mock.VnfAdapterDeleteMockTransformer")
-																			.extensions("org.onap.so.bpmn.mock.VnfAdapterUpdateMockTransformer")
-																			.extensions("org.onap.so.bpmn.mock.VnfAdapterRollbackMockTransformer")
-																			.extensions("org.onap.so.bpmn.mock.VnfAdapterQueryMockTransformer"));
-																			//.withRootDirectory(path));
-		//Mocks were failing - commenting out for now, both mock and transformers seem to work fine
-		WireMock.configureFor("localhost", portNumber);
-		wireMockServer.start();
-//		StubResponse.setupAllMocks();
-		started= true;
-	}
-
-	public static void main(String [] args) {
-		MockResource mockresource = new MockResource();
-		mockresource.start(28090);
-		mockresource.reset();
-//		mockresource.setupStub("MockCreateTenant");
-	}
-	
-	/**
-	 * Starts the wiremock server in default port
-	 * @return
-	 */
-	@GET
-	@Path("/start")
-	@Produces("application/json")
-	public Response start() {
-		return startMockServer(defaultPort);
-	}
-
-	private Response startMockServer(int port) {
-		if (!started) {
-			initMockServer(defaultPort);
-			System.out.println("Started Mock Server in port " + port);
-			return Response.status(200).entity("Started Mock Server in port " + port).build();
-		} else {
-			return Response.status(200).entity("Mock Server is already running").build();
-		}
-	}
-
-	/**
-	 * Starts the wiremock server in a different port
-	 * @param portNumber
-	 * @return
-	 */
-	@GET
-	@Path("/start/{portNumber}")
-	@Produces("application/json")
-	public Response start(@PathParam("portNumber") Integer portNumber) {
-		if (portNumber == null) portNumber = defaultPort;
-		return startMockServer(portNumber);
-	}
-
-
-	/**
-	 * Stop the wiremock server
-	 * @return
-	 */
-	@GET
-	@Path("/stop")
-	@Produces("application/json")
-	public synchronized Response stop() {
-		if (wireMockServer.isRunning()) {
-			wireMockServer.stop();
-			started = false;
-			return Response.status(200).entity("Stopped Mock Server in port ").build();
-		}
-		return Response.status(200).entity("Mock Server is not running").build();
-	}
-
-
-	/**
-	 * Return list of mock properties
-	 * @return
-	 */
-	@GET
-	@Path("/properties")
-	@Produces("application/json")
-	public Response getProperties() {
-		return Response.status(200).entity(mockProperties).build();
-	}
-
-	/**
-	 * Update a particular mock property at run-time
-	 * @param name
-	 * @param value
-	 * @return
-	 */
-	@POST
-	@Path("/properties/{name}/{value}")
-	public Response updateProperties(@PathParam("name") String name, @PathParam("value") String value) {
-		if (mockProperties.size() > 50) return Response.serverError().build();
-		mockProperties.put(name, value);
-		return Response.status(200).build();
-	}
-
-	/**
-	 * Reset all stubs
-	 * @return
-	 */
-	@GET
-	@Path("/reset")
-	@Produces("application/json")
-	public Response reset() {
-		WireMock.reset();
-		return Response.status(200).entity("Wiremock stubs are reset").build();
-	}
-
-	
-	/**
-	 * Setup a stub selectively
-	 * Prior to use, make sure that stub method is available in StubResponse class
-	 * @param methodName
-	 * @return
-	 */
-	
-	// commenting for now until we figure out a way to use new StubResponse classes to setupStubs
-//	@GET
-//	@Path("/stub/{methodName}")
-//	@Produces("application/json")
-//	public Response setupStub(@PathParam("methodName") String methodName) {
-//		
-//	    @SuppressWarnings("rawtypes")
-//		Class params[] = {};
-//	    Object paramsObj[] = {};
-//
-//	    try {
-//			Method thisMethod = StubResponse.class.getDeclaredMethod(methodName, params);
-//			try {
-//				thisMethod.invoke(StubResponse.class, paramsObj);
-//			} catch (IllegalAccessException | IllegalArgumentException
-//					| InvocationTargetException e) {
-//				return Response.status(200).entity("Error invoking " + methodName ).build();
-//			}
-//		} catch (NoSuchMethodException | SecurityException e) {
-//			return Response.status(200).entity("Stub " + methodName + " not found...").build();
-//		}		
-//		return Response.status(200).entity("Successfully invoked " + methodName).build();
-//	}
-	
-	
-	public static Map<String,String> getMockProperties(){
-		return mockProperties;
-	}
-}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/MockResourceApplication.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/MockResourceApplication.java
deleted file mode 100644
index 6c62920..0000000
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/MockResourceApplication.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * 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=========================================================
- */
-
-package org.onap.so.bpmn.mock;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.ws.rs.ApplicationPath;
-import javax.ws.rs.core.Application;
-
-import org.junit.Ignore;
-
-/**
- * 
- * JAX RS Application wiring for Mock Resource
- */
-@ApplicationPath("/console")
-@Ignore
-public class MockResourceApplication extends Application {
-
-	private Set<Object> singletons = new HashSet<>();
-	private Set<Class<?>> classes = new HashSet<>();
-
-	public MockResourceApplication() {
-		singletons.add(new MockResource());
-	}
-
-	@Override
-	public Set<Class<?>> getClasses() {
-		return classes;
-	}
-
-	@Override
-	public Set<Object> getSingletons() {
-		return singletons;
-	}
-}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/SDNCAdapterAsyncTransformer.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/SDNCAdapterAsyncTransformer.java
deleted file mode 100644
index 8515307..0000000
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/SDNCAdapterAsyncTransformer.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*- 
- * ============LICENSE_START======================================================= 
- * ONAP - SO 
- * ================================================================================ 
- * 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========================================================= 
- */ 
-
-package org.onap.so.bpmn.mock;
-
-import javax.ws.rs.core.UriBuilder;
-
-import org.onap.so.client.HttpClient;
-import org.onap.so.client.HttpClientFactory;
-import org.onap.so.utils.TargetEntity;
-
-import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
-import com.github.tomakehurst.wiremock.common.BinaryFile;
-import com.github.tomakehurst.wiremock.common.FileSource;
-import com.github.tomakehurst.wiremock.extension.Parameters;
-import com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer;
-import com.github.tomakehurst.wiremock.http.Request;
-import com.github.tomakehurst.wiremock.http.ResponseDefinition;
-
-/**
- * 
- * Simulates SDNC Adapter Callback response
- *
- */
-public class SDNCAdapterAsyncTransformer extends ResponseDefinitionTransformer {
-
-	private String syncResponse;
-	private String callbackResponseWrapper;
-	
-	public SDNCAdapterAsyncTransformer() {
-		syncResponse = FileUtil.readResourceFile("__files/StandardSDNCSynchResponse.xml");
-		callbackResponseWrapper = FileUtil.readResourceFile("__files/sdncCallbackSoapWrapper.xml");
-	}
-	
-	@Override
-	public String getName() {
-		return "sdnc-adapter-vf-module-assign";
-	}
-
-	/**
-	 * Grab the incoming request xml,extract the request id and replace the stub response with the incoming request id
-	 * so that callback response can be correlated
-	 * 
-	 * Mock Resource can be used to add dynamic properties. If sdnc_delay is not in the list by default waits for 300ms before
-	 * the callback response is sent
-	 */
-	@Override
-	public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition,
-			FileSource fileSource, Parameters parameters) {
-		
-		String requestBody = request.getBodyAsString();
-		
-		String callbackUrl = requestBody.substring(requestBody.indexOf("<sdncadapter:CallbackUrl>")+25, requestBody.indexOf("</sdncadapter:CallbackUrl>"));
-		String requestId = requestBody.substring(requestBody.indexOf("<sdncadapter:RequestId>")+23, requestBody.indexOf("</sdncadapter:RequestId>"));
-
-		System.out.println("responseDefinition: " + responseDefinition);
-
-		// For this mock, the mapped response body is the Async callback (since the sync response is generic for all requests)
-		String sdncResponse = responseDefinition.getBody();
-		System.out.println("sdncResponse:" + sdncResponse);
-
-		if (sdncResponse == null) {
-			// Body wasn't specified.  Check for a body file
-			String bodyFileName = responseDefinition.getBodyFileName();
-			System.out.println("bodyFileName" + bodyFileName);
-			if (bodyFileName != null) {
-				System.out.println("fileSource Class: " + fileSource.getClass().getName());
-				BinaryFile bodyFile = fileSource.getBinaryFileNamed(bodyFileName);
-				byte[] responseFile = bodyFile.readContents();
-				sdncResponse = new String(responseFile);
-				System.out.println("sdncResponse(2):" + sdncResponse);
-			}
-		}
-		
-		// Next substitute the SDNC response into the callbackResponse (SOAP wrapper).
-		// Also, replace the request ID wherever it appears
-		String callbackResponse = callbackResponseWrapper.replace("SDNC_RESPONSE_DATA", sdncResponse).replaceAll("SDNC_REQUEST_ID", requestId);
-		
-		Object sdncDelay = MockResource.getMockProperties().get("sdnc_delay");
-		int delay = 2000;
-		if (sdncDelay != null) {
-			delay = Integer.parseInt(sdncDelay.toString());
-		}
-		
-		//Kick off callback thread
-		System.out.println("callback Url:" + callbackUrl + ":delay:" + delay);
-		CallbackResponseThread calbackResponseThread = new CallbackResponseThread(callbackUrl,callbackResponse, delay);
-		calbackResponseThread.start();
-		
-		//return 200 OK with empty body
-		return ResponseDefinitionBuilder
-                .like(responseDefinition).but()
-                .withStatus(200).withBody(syncResponse).withHeader("Content-Type", "text/xml")
-                .build();
-	}
-
-	@Override
-	public boolean applyGlobally() {
-	    return false;
-	}
-	
-	/**
-	 * 
-	 * Callback response thread which sends the callback response asynchronously
-	 *
-	 */
-	private class CallbackResponseThread extends Thread {
-		
-		private String callbackUrl;
-		private String payLoad;
-		private int delay;
-		
-		public CallbackResponseThread(String callbackUrl, String payLoad, int delay) {
-			this.callbackUrl = callbackUrl;
-			this.payLoad = payLoad;
-			this.delay = delay;
-		}
-		
-		public void run () {
-			try {
-				//Delay sending callback response
-				sleep(delay);
-			} catch (InterruptedException e1) {
-				// TODO Auto-generated catch block
-				e1.printStackTrace();
-			}
-			try {
-				HttpClient client = new HttpClientFactory().newTextXmlClient(
-					UriBuilder.fromUri(callbackUrl).build().toURL(),
-					TargetEntity.SDNC_ADAPTER);
-				client.post(payLoad);
-			} catch (Exception e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
-		}
-		
-	}
-}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/SDNCAdapterMockTransformer.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/SDNCAdapterMockTransformer.java
deleted file mode 100644
index 11788be..0000000
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/SDNCAdapterMockTransformer.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * 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=========================================================
- */
-
-package org.onap.so.bpmn.mock;
-
-import javax.ws.rs.core.UriBuilder;
-
-import org.onap.so.client.HttpClient;
-import org.onap.so.client.HttpClientFactory;
-import org.onap.so.utils.TargetEntity;
-
-import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
-import com.github.tomakehurst.wiremock.common.FileSource;
-import com.github.tomakehurst.wiremock.extension.Parameters;
-import com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer;
-import com.github.tomakehurst.wiremock.http.Request;
-import com.github.tomakehurst.wiremock.http.ResponseDefinition;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * 
- * Simulates SDNC Adapter Callback response
- *
- */
-public class SDNCAdapterMockTransformer extends ResponseDefinitionTransformer {
-
-	private static final Logger logger = LoggerFactory.getLogger(SDNCAdapterMockTransformer.class);
-	private String callbackResponse;
-	private String requestId;
-	
-	public SDNCAdapterMockTransformer() {
-		callbackResponse = FileUtil.readResourceFile("__files/sdncSimResponse.xml");
-	}
-
-	public SDNCAdapterMockTransformer(String requestId) {
-		this.requestId = requestId;
-	}
-	
-	@Override
-	public String getName() {
-		return "sdnc-adapter-transformer";
-	}
-
-	/**
-	 * Grab the incoming request xml,extract the request id and replace the stub response with the incoming request id
-	 * so that callback response can be correlated
-	 * 
-	 * Mock Resource can be used to add dynamic properties. If sdnc_delay is not in the list by default waits for 300ms before
-	 * the callback response is sent
-	 */
-	@Override
-	public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition,
-			FileSource fileSource, Parameters parameters) {
-		String requestBody = request.getBodyAsString();
-		
-		String callbackUrl = requestBody.substring(requestBody.indexOf("<sdncadapter:CallbackUrl>")+25, requestBody.indexOf("</sdncadapter:CallbackUrl>"));
-		String requestId = requestBody.substring(requestBody.indexOf("<sdncadapter:RequestId>")+23, requestBody.indexOf("</sdncadapter:RequestId>"));
-
-		callbackResponse = FileUtil.readResourceFile("__files/" + responseDefinition.getBodyFileName());
-		logger.info("callbackResponse:" + callbackResponse);
-		
-		if (this.requestId != null) {
-			callbackResponse = callbackResponse.replace(this.requestId, requestId);
-		} else {
-			callbackResponse = callbackResponse.replace("testRequestId", requestId);
-		}
-		
-
-		Object sdncDelay = MockResource.getMockProperties().get("sdnc_delay");
-		int delay = 300;
-		if (sdncDelay != null) {
-			delay = Integer.parseInt(sdncDelay.toString());
-		}
-		
-		//Kick off callback thread
-		logger.info("callback Url:" + callbackUrl + ":delay:" + delay);
-		CallbackResponseThread calbackResponseThread = new CallbackResponseThread(callbackUrl,callbackResponse, delay);
-		calbackResponseThread.start();
-		
-		//return 200 OK with empty body
-		return ResponseDefinitionBuilder
-                .like(responseDefinition).but()
-                .withStatus(200).withBody("").withHeader("Content-Type", "text/xml")
-                .build();
-	}
-
-	@Override
-	public boolean applyGlobally() {
-	    return false;
-	}
-	
-	/**
-	 * 
-	 * Callback response thread which sends the callback response asynchronously
-	 *
-	 */
-	private class CallbackResponseThread extends Thread {
-		
-		private String callbackUrl;
-		private String payLoad;
-		private int delay;
-		
-		public CallbackResponseThread(String callbackUrl, String payLoad, int delay) {
-			this.callbackUrl = callbackUrl;
-			this.payLoad = payLoad;
-			this.delay = delay;
-		}
-		
-		public void run () {
-			try {
-				//Delay sending callback response
-				sleep(delay);
-			} catch (InterruptedException e1) {
-				logger.debug("Exception :", e1);
-			}
-			logger.debug("Sending callback response:" + callbackUrl);
-			try {
-				HttpClient client = new HttpClientFactory().newTextXmlClient(
-					UriBuilder.fromUri(callbackUrl).build().toURL(),
-					TargetEntity.SDNC_ADAPTER);
-				client.post(payLoad);
-			} catch (Exception e) {
-				logger.debug("Exception :", e);
-			}
-		}
-		
-	}
-}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/SDNCAdapterNetworkTopologyMockTransformer.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/SDNCAdapterNetworkTopologyMockTransformer.java
deleted file mode 100644
index 344c3b5..0000000
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/SDNCAdapterNetworkTopologyMockTransformer.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * 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=========================================================
- */
-
-package org.onap.so.bpmn.mock;
-
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriBuilder;
-
-import org.onap.so.client.HttpClient;
-import org.onap.so.client.HttpClientFactory;
-import org.onap.so.utils.TargetEntity;
-
-import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
-import com.github.tomakehurst.wiremock.common.FileSource;
-import com.github.tomakehurst.wiremock.extension.Parameters;
-import com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer;
-import com.github.tomakehurst.wiremock.http.Request;
-import com.github.tomakehurst.wiremock.http.ResponseDefinition;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SDNCAdapterNetworkTopologyMockTransformer extends ResponseDefinitionTransformer {
-
-	private static final Logger logger = LoggerFactory.getLogger(SDNCAdapterNetworkTopologyMockTransformer.class);
-	
-	private String callbackResponse;
-	private String requestId;
-	
-	public SDNCAdapterNetworkTopologyMockTransformer() {
-		callbackResponse = ""; // FileUtil.readResourceFile("__files/sdncDeleteNetworkTopologySimResponse.xml");
-	}
-
-	public SDNCAdapterNetworkTopologyMockTransformer(String requestId) {
-		this.requestId = requestId;
-	}
-	
-	@Override
-	public String getName() {
-		return "network-topology-operation-transformer";
-	}
-
-	@Override
-	public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition, FileSource fileSource, Parameters parameters) {
-		String requestBody = request.getBodyAsString();
-		
-		String callbackUrl = requestBody.substring(requestBody.indexOf("<sdncadapter:CallbackUrl>")+25, requestBody.indexOf("</sdncadapter:CallbackUrl>"));
-		String requestId = requestBody.substring(requestBody.indexOf("<sdncadapter:RequestId>")+23, requestBody.indexOf("</sdncadapter:RequestId>"));
-		logger.info("request callbackUrl : " + callbackUrl);
-		logger.info("request requestId : " + requestId);
-
-		logger.info("file path/name : " + responseDefinition.getBodyFileName());
-		callbackResponse = FileUtil.readResourceFile("__files/" + responseDefinition.getBodyFileName());		
-		// extract Response responseRequestId
-		String responseRequestId = callbackResponse.substring(callbackResponse.indexOf("<RequestId>")+11, callbackResponse.indexOf("</RequestId>"));
-		logger.info("response requestId: " + responseRequestId);
-		logger.info("callbackResponse (before): " + callbackResponse);
-		callbackResponse = callbackResponse.replace(responseRequestId, requestId);				
-		if (this.requestId != null) {
-			callbackResponse = callbackResponse.replace(this.requestId, requestId);
-		} else {
-			callbackResponse = callbackResponse.replace(responseRequestId, requestId);
-		}	
-		logger.info("callbackResponse (after):" + callbackResponse);
-
-		Object sdncDelay = MockResource.getMockProperties().get("sdnc_delay");
-		int delay = 300;
-		if (sdncDelay != null) {
-			delay = Integer.parseInt(sdncDelay.toString());
-		}
-		
-		//Kick off callback thread
-		logger.info("(NetworkTopologyMockTransformer) callback Url:" + callbackUrl + ":delay:" + delay);
-		CallbackResponseThread calbackResponseThread = new CallbackResponseThread(callbackUrl,callbackResponse, delay);
-		calbackResponseThread.start();
-		
-		//return 200 OK with body
-		return ResponseDefinitionBuilder
-                .like(responseDefinition).but()
-                .withStatus(200).withBody(callbackResponse).withHeader("Content-Type", "text/xml")
-                .build();
-	}
-
-	@Override
-	public boolean applyGlobally() {
-	    return false;
-	}
-	
-	private class CallbackResponseThread extends Thread {
-		
-		private String callbackUrl;
-		private String payLoad;
-		private int delay;
-		
-		public CallbackResponseThread(String callbackUrl, String payLoad, int delay) {
-			this.callbackUrl = callbackUrl;
-			this.payLoad = payLoad;
-			this.delay = delay;
-		}
-		
-		public void run () {
-			try {
-				//Delay sending callback response
-				sleep(delay);
-			} catch (InterruptedException e1) {
-				// TODO Auto-generated catch block
-				logger.debug("Exception :", e1);
-			}
-			logger.debug("Sending callback response to url: {}", callbackUrl);
-			try {
-				HttpClient client = new HttpClientFactory()
-					.newTextXmlClient(UriBuilder.fromUri(callbackUrl).build().toURL(), TargetEntity.SDNC_ADAPTER);
-				Response response = client.post(payLoad);
-				logger.debug("Successfully posted callback? Status: {}", response.getStatus());
-			} catch (Exception e) {
-				// TODO Auto-generated catch block
-				logger.debug("catch error in - request.post() ");
-				logger.debug("Exception :", e);
-			}
-		}
-		
-	}
-}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/StubResponseSDNCAdapter.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/StubResponseSDNCAdapter.java
index e0c51b7..66dc1f9 100644
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/StubResponseSDNCAdapter.java
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/StubResponseSDNCAdapter.java
@@ -80,29 +80,6 @@
 					.withBodyFile(responseFile)));
 	}
 
-	public static void mockSDNCAdapterSimulator(String responseFile) {
-		MockResource mockResource = new MockResource();
-		mockResource.updateProperties("sdnc_delay", "300");
-		stubFor(post(urlEqualTo("/SDNCAdapter"))
-				.willReturn(aResponse()
-						.withStatus(200)
-						.withHeader("Content-Type", "application/soap+xml")
-						.withTransformers("sdnc-adapter-transformer")
-						.withBodyFile(responseFile)));
-	}
-
-	public static void mockSDNCAdapterSimulator(String responseFile, String requestContaining) {
-		MockResource mockResource = new MockResource();
-		mockResource.updateProperties("sdnc_delay", "300");
-		stubFor(post(urlEqualTo("/SDNCAdapter"))
-				.withRequestBody(containing(requestContaining))
-				.willReturn(aResponse()
-						.withStatus(200)
-						.withHeader("Content-Type", "application/soap+xml")
-						.withTransformers("sdnc-adapter-transformer")
-						.withBodyFile(responseFile)));
-	}
-
 	public static void mockSDNCAdapterRest() {
 		stubFor(post(urlEqualTo("/SDNCAdapter/v1/sdnc/services"))
 				.willReturn(aResponse()
@@ -133,17 +110,4 @@
 						.withHeader("Content-Type", "application/json")));
 	}
 
-	public static void mockSDNCAdapterTopology(String responseFile, String requestContaining) {
-		MockResource mockResource = new MockResource();
-		mockResource.updateProperties("sdnc_delay", "300");		
-		stubFor(post(urlEqualTo("/SDNCAdapter"))
-				.withRequestBody(containing(requestContaining))
-				.willReturn(aResponse()
-						.withStatus(200)
-						.withHeader("Content-Type", "text/xml")
-						.withTransformers("network-topology-operation-transformer")
-						.withBodyFile(responseFile)));
-	}
-
-	
 }
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/StubResponseVNFAdapter.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/StubResponseVNFAdapter.java
index 91ecbd2..7528351 100644
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/StubResponseVNFAdapter.java
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/StubResponseVNFAdapter.java
@@ -53,29 +53,6 @@
 				.willReturn(aResponse()
 						.withStatus(500)));
 	}
-
-	public static void mockVNFAdapterTransformer(String transformer, String responseFile) {
-		MockResource mockResource = new MockResource();
-		mockResource.updateProperties("vnf_delay", "300");
-		stubFor(post(urlEqualTo("/vnfs/VnfAdapterAsync"))
-				.willReturn(aResponse()
-						.withStatus(200)
-						.withHeader("Content-Type", "application/soap+xml")
-						.withTransformers(transformer)
-						.withBodyFile(responseFile)));
-	}
-
-	public static void mockVNFAdapterTransformer(String transformer, String responseFile, String requestContaining) {
-		MockResource mockResource = new MockResource();
-		mockResource.updateProperties("vnf_delay", "300");
-		stubFor(post(urlEqualTo("/vnfs/VnfAdapterAsync"))
-				.withRequestBody(containing(requestContaining))
-				.willReturn(aResponse()
-						.withStatus(200)
-						.withHeader("Content-Type", "application/soap+xml")
-						.withTransformers(transformer)
-						.withBodyFile(responseFile)));
-	}
 	
 	public static void mockVNFPost(String vfModuleId, int statusCode, String vnfId) {
 		stubFor(post(urlEqualTo("/services/rest/v1/vnfs" + vnfId + "/vf-modules" + vfModuleId))
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterAsyncTransformer.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterAsyncTransformer.java
deleted file mode 100644
index e190535..0000000
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterAsyncTransformer.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*- 
- * ============LICENSE_START======================================================= 
- * ONAP - SO 
- * ================================================================================ 
- * 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========================================================= 
- */ 
-
-package org.onap.so.bpmn.mock;
-
-import javax.ws.rs.core.UriBuilder;
-
-import org.onap.so.client.HttpClient;
-import org.onap.so.client.HttpClientFactory;
-import org.onap.so.utils.TargetEntity;
-
-import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
-import com.github.tomakehurst.wiremock.common.BinaryFile;
-import com.github.tomakehurst.wiremock.common.FileSource;
-import com.github.tomakehurst.wiremock.extension.Parameters;
-import com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer;
-import com.github.tomakehurst.wiremock.http.Request;
-import com.github.tomakehurst.wiremock.http.ResponseDefinition;
-
-/**
- * 
- * Simulates VNF Adapter Asynch Callback response.
- * This should work for any of the operations.
- * 
- * This transformer uses the mapped message as the asynchronous response.
- * By definition, the async API sends a 202 (with no body) in the sync response.
- *
- */
-public class VnfAdapterAsyncTransformer extends ResponseDefinitionTransformer {
-
-	public VnfAdapterAsyncTransformer() {
-	}
-	
-	@Override
-	public String getName() {
-		return "vnf-adapter-async";
-	}
-
-	/**
-	 * Grab the incoming request, extract properties to be copied to the response
-	 * (request id, vnf id, vf module ID, message ID).  Then fetch the actual response
-	 * body from its FileSource, make the replacements.
-	 * 
-	 * The sync response is an empty 202 response.
-	 * The transformed mapped response file is sent asynchronously after a delay.
-	 * 
-	 * Mock Resource can be used to add dynamic properties. If vnf_delay is not in the list by
-	 * default waits for 5s before the callback response is sent
-	 */
-	@Override
-	public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition,
-			FileSource fileSource, Parameters parameters) {
-		
-		String requestBody = request.getBodyAsString();
-		
-		// Note: Should recognize both XML and JSON.  But current BPMN uses XML.
-		String notificationUrl = requestBody.substring(requestBody.indexOf("<notificationUrl>")+17, requestBody.indexOf("</notificationUrl>"));
-		
-		String vnfId = requestBody.substring(requestBody.indexOf("<vnfId>")+7, requestBody.indexOf("</vnfId>"));
-		String vfModuleId = requestBody.substring(requestBody.indexOf("<vfModuleId>")+12, requestBody.indexOf("</vfModuleId>"));
-		String messageId = requestBody.substring(requestBody.indexOf("<messageId>")+11, requestBody.indexOf("</messageId>"));
-		String requestId = requestBody.substring(requestBody.indexOf("<requestId>")+11, requestBody.indexOf("</requestId>"));
-
-		System.out.println("responseDefinition: " + responseDefinition);
-
-		// For this mock, the mapped response body is the Async callback (since the sync response is generic for all requests)
-		String vnfResponse = responseDefinition.getBody();
-		System.out.println("VNF Response:" + vnfResponse);
-
-		if (vnfResponse == null) {
-			// Body wasn't specified.  Check for a body file
-			String bodyFileName = responseDefinition.getBodyFileName();
-			System.out.println("bodyFileName" + bodyFileName);
-			if (bodyFileName != null) {
-				System.out.println("fileSource Class: " + fileSource.getClass().getName());
-				BinaryFile bodyFile = fileSource.getBinaryFileNamed(bodyFileName);
-				byte[] responseFile = bodyFile.readContents();
-				vnfResponse = new String(responseFile);
-				System.out.println("vnfResponse(2):" + vnfResponse);
-			}
-		}
-		
-		// Transform the SDNC response to escape < and >
-		vnfResponse = vnfResponse.replaceAll ("VNF_ID", vnfId);
-		vnfResponse = vnfResponse.replaceAll ("VF_MODULE_ID", vfModuleId);
-		vnfResponse = vnfResponse.replaceAll ("REQUEST_ID", requestId);
-		vnfResponse = vnfResponse.replaceAll ("MESSAGE_ID", messageId);
-		
-		Object vnfDelay = MockResource.getMockProperties().get("vnf_delay");
-		int delay = 5000;
-		if (vnfDelay != null) {
-			delay = Integer.parseInt(vnfDelay.toString());
-		}
-		
-		//Kick off callback thread
-		System.out.println("notification Url:" + notificationUrl + ":delay:" + delay);
-		CallbackResponseThread calbackResponseThread = new CallbackResponseThread(notificationUrl,vnfResponse, delay);
-		calbackResponseThread.start();
-		
-		//return 200 OK with empty body
-		return ResponseDefinitionBuilder
-                .like(responseDefinition).but()
-                .withStatus(202).withBody("").withHeader("Content-Type", "text/xml")
-                .build();
-	}
-
-	@Override
-	public boolean applyGlobally() {
-	    return false;
-	}
-	
-	/**
-	 * 
-	 * Callback response thread which sends the callback response asynchronously
-	 *
-	 */
-	private class CallbackResponseThread extends Thread {
-		
-		private String callbackUrl;
-		private String payLoad;
-		private int delay;
-		
-		public CallbackResponseThread(String callbackUrl, String payLoad, int delay) {
-			this.callbackUrl = callbackUrl;
-			this.payLoad = payLoad;
-			this.delay = delay;
-		}
-		
-		public void run () {
-			try {
-				//Delay sending callback response
-				sleep(delay);
-			} catch (InterruptedException e1) {
-				// TODO Auto-generated catch block
-				e1.printStackTrace();
-			}
-			
-			try {
-				HttpClient client = new HttpClientFactory().newTextXmlClient(
-					UriBuilder.fromUri(callbackUrl).build().toURL(),
-					TargetEntity.VNF_ADAPTER);
-				client.post(payLoad);
-			} catch (Exception e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
-		}
-		
-	}
-}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterCreateMockTransformer.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterCreateMockTransformer.java
deleted file mode 100644
index 362d950..0000000
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterCreateMockTransformer.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * 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=========================================================
- */
-
-package org.onap.so.bpmn.mock;
-
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriBuilder;
-
-import org.onap.so.client.HttpClient;
-import org.onap.so.client.HttpClientFactory;
-import org.onap.so.utils.TargetEntity;
-
-import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
-import com.github.tomakehurst.wiremock.common.FileSource;
-import com.github.tomakehurst.wiremock.extension.Parameters;
-import com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer;
-import com.github.tomakehurst.wiremock.http.Request;
-import com.github.tomakehurst.wiremock.http.ResponseDefinition;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Please describe the VnfAdapterCreateMockTransformer.java class
- *
- */
-public class VnfAdapterCreateMockTransformer extends ResponseDefinitionTransformer {
-
-	private static final Logger logger = LoggerFactory.getLogger(VnfAdapterCreateMockTransformer.class);
-	
-	private String notifyCallbackResponse;
-	private String ackResponse;
-
-	public VnfAdapterCreateMockTransformer() {
-		notifyCallbackResponse = FileUtil.readResourceFile("__files/vnfAdapterMocks/vnfCreateSimResponse.xml"); // default response
-	}
-
-	@Override
-	public String getName() {
-		return "vnf-adapter-create-transformer";
-	}
-
-	@Override
-	public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition,
-			FileSource fileSource, Parameters parameters) {
-
-		String requestBody = request.getBodyAsString();
-
-		String notficationUrl = requestBody.substring(requestBody.indexOf("<notificationUrl>")+17, requestBody.indexOf("</notificationUrl>"));
-		String messageId = requestBody.substring(requestBody.indexOf("<messageId>")+11, requestBody.indexOf("</messageId>"));
-		String responseMessageId = "";
-		String updatedResponse = "";
-
-		try {
-			// try supplied response file (if any)
-			System.out.println(" Supplied fileName: " + responseDefinition.getBodyFileName());
-		    ackResponse = FileUtil.readResourceFile("__files/" + responseDefinition.getBodyFileName());
-			notifyCallbackResponse = ackResponse;
-			responseMessageId = ackResponse.substring(ackResponse.indexOf("<messageId>")+11, ackResponse.indexOf("</messageId>"));
-		    updatedResponse = ackResponse.replace(responseMessageId, messageId);
-		} catch (Exception ex) {
-			logger.debug("Exception :",ex);
-			System.out.println(" ******* Use default response file in '__files/vnfAdapterMocks/vnfCreateSimResponse.xml'");
-		    responseMessageId = notifyCallbackResponse.substring(notifyCallbackResponse.indexOf("<messageId>")+11, notifyCallbackResponse.indexOf("</messageId>"));
-			updatedResponse = notifyCallbackResponse.replace(responseMessageId, messageId);
-		}
-
-		logger.info("response (mock) messageId       : {}", responseMessageId);
-		logger.info("request  (replacement) messageId: {}", messageId);
-
-		logger.info("vnf Response (before): {}", notifyCallbackResponse);
-		logger.info("vnf Response (after): {}", updatedResponse);
-
-		Object vnfDelay = MockResource.getMockProperties().get("vnf_delay");
-		int delay = 300;
-		if (vnfDelay != null) {
-			delay = Integer.parseInt(vnfDelay.toString());
-		}
-
-		//Kick off callback thread
-		logger.info("VnfAdapterCreateMockTransformer notficationUrl: {} :delay: {}", notficationUrl, delay);
-		CallbackResponseThread callbackResponseThread = new CallbackResponseThread(notficationUrl,updatedResponse, delay);
-		callbackResponseThread.start();
-
-		return ResponseDefinitionBuilder
-		           .like(responseDefinition).but()
-		           .withStatus(200).withBody(updatedResponse).withHeader("Content-Type", "text/xml")
-		           .build();
-
-	}
-
-	@Override
-	public boolean applyGlobally() {
-	    return false;
-	}
-
-	private class CallbackResponseThread extends Thread {
-
-		private String callbackUrl;
-		private String payLoad;
-		private int delay;
-
-		public CallbackResponseThread(String callbackUrl, String payLoad, int delay) {
-			this.callbackUrl = callbackUrl;
-			this.payLoad = payLoad;
-			this.delay = delay;
-		}
-
-		@SuppressWarnings("deprecation")
-		public void run () {
-			try {
-				//Delay sending callback response
-				sleep(delay);
-			} catch (InterruptedException e1) {
-				// TODO Auto-generated catch block
-				logger.debug("Exception :",e1);
-			}
-			logger.debug("Sending callback response to url: {}", callbackUrl);
-			try {
-				HttpClient client = new HttpClientFactory().newTextXmlClient(
-					UriBuilder.fromUri(callbackUrl).build().toURL(),
-					TargetEntity.VNF_ADAPTER);
-				Response response = client.post(payLoad);
-				logger.debug("Successfully posted callback? Status: {}", response.getStatus());
-			} catch (Exception e) {
-				// TODO Auto-generated catch block
-				logger.debug("catch error in - request.post() ");
-				logger.debug("Exception :", e);
-			}
-		}
-
-	}
-
-
-}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterDeleteMockTransformer.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterDeleteMockTransformer.java
deleted file mode 100644
index b67f3dc..0000000
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterDeleteMockTransformer.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * 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=========================================================
- */
-
-package org.onap.so.bpmn.mock;
-
-import javax.ws.rs.core.UriBuilder;
-
-import org.onap.so.client.HttpClient;
-import org.onap.so.client.HttpClientFactory;
-import org.onap.so.utils.TargetEntity;
-
-import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
-import com.github.tomakehurst.wiremock.common.FileSource;
-import com.github.tomakehurst.wiremock.extension.Parameters;
-import com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer;
-import com.github.tomakehurst.wiremock.http.Request;
-import com.github.tomakehurst.wiremock.http.ResponseDefinition;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Please describe the VnfAdapterCreateMockTransformer.java class
- *
- */
-public class VnfAdapterDeleteMockTransformer extends ResponseDefinitionTransformer {
-
-	private static final Logger logger = LoggerFactory.getLogger(VnfAdapterDeleteMockTransformer.class);
-
-	private String notifyCallbackResponse;
-	private String ackResponse;
-
-	public VnfAdapterDeleteMockTransformer() {
-		notifyCallbackResponse = FileUtil.readResourceFile("__files/vnfAdapterMocks/vnfDeleteSimResponse.xml");
-	}
-
-	@Override
-	public String getName() {
-		return "vnf-adapter-delete-transformer";
-	}
-
-	@Override
-	public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition,
-			FileSource fileSource, Parameters parameters) {
-
-		String requestBody = request.getBodyAsString();
-
-		String notficationUrl = requestBody.substring(requestBody.indexOf("<notificationUrl>")+17, requestBody.indexOf("</notificationUrl>"));
-		String messageId = requestBody.substring(requestBody.indexOf("<messageId>")+11, requestBody.indexOf("</messageId>"));
-		String responseMessageId = "";
-		String updatedResponse = "";
-
-		try {
-			// try supplied response file (if any)
-			logger.info(" Supplied fileName: {}", responseDefinition.getBodyFileName());
-		    ackResponse = FileUtil.readResourceFile("__files/" + responseDefinition.getBodyFileName());
-			notifyCallbackResponse = ackResponse;
-			responseMessageId = ackResponse.substring(ackResponse.indexOf("<messageId>")+11, ackResponse.indexOf("</messageId>"));
-		    updatedResponse = ackResponse.replace(responseMessageId, messageId);
-		} catch (Exception ex) {
-			logger.debug("Exception :",ex);
-			logger.info(" ******* Use default response file in '__files/vnfAdapterMocks/vnfDeleteSimResponse.xml'");
-		    responseMessageId = notifyCallbackResponse.substring(notifyCallbackResponse.indexOf("<messageId>")+11, notifyCallbackResponse.indexOf("</messageId>"));
-			updatedResponse = notifyCallbackResponse.replace(responseMessageId, messageId);
-		}
-
-		logger.info("response (mock) messageId       : {}", responseMessageId);
-		logger.info("request  (replacement) messageId: {}", messageId);
-
-		logger.info("vnf Response (before):{}", notifyCallbackResponse);
-		logger.info("vnf Response (after):{}", updatedResponse);
-
-		Object vnfDelay = MockResource.getMockProperties().get("vnf_delay");
-		int delay = 300;
-		if (vnfDelay != null) {
-			delay = Integer.parseInt(vnfDelay.toString());
-		}
-
-		//Kick off callback thread
-		logger.info("VnfAdapterDeleteMockTransformer notficationUrl: {} :delay: {}", notficationUrl, delay);
-		CallbackResponseThread callbackResponseThread = new CallbackResponseThread(notficationUrl,updatedResponse, delay);
-		callbackResponseThread.start();
-
-		return ResponseDefinitionBuilder
-		           .like(responseDefinition).but()
-		           .withStatus(200).withBody(updatedResponse).withHeader("Content-Type", "text/xml")
-		           .build();
-
-	}
-
-	@Override
-	public boolean applyGlobally() {
-	    return false;
-	}
-
-	private class CallbackResponseThread extends Thread {
-
-		private String callbackUrl;
-		private String payLoad;
-		private int delay;
-
-		public CallbackResponseThread(String callbackUrl, String payLoad, int delay) {
-			this.callbackUrl = callbackUrl;
-			this.payLoad = payLoad;
-			this.delay = delay;
-		}
-
-		@SuppressWarnings("deprecation")
-		public void run () {
-			try {
-				//Delay sending callback response
-				sleep(delay);
-			} catch (InterruptedException e1) {
-				// TODO Auto-generated catch block
-				logger.debug("Exception :",e1);
-			}
-
-			try {
-				HttpClient client = new HttpClientFactory().newTextXmlClient(
-					UriBuilder.fromUri(callbackUrl).build().toURL(),
-					TargetEntity.VNF_ADAPTER);
-				client.post(payLoad);
-			} catch (Exception e) {
-				// TODO Auto-generated catch block
-				logger.info("catch error in - request.post() ");
-				logger.debug("Exception :",e);
-			}
-		}
-
-	}
-}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterQueryMockTransformer.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterQueryMockTransformer.java
deleted file mode 100644
index 48ced35..0000000
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterQueryMockTransformer.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * 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=========================================================
- */
-
-package org.onap.so.bpmn.mock;
-
-
-import javax.ws.rs.core.UriBuilder;
-
-import org.onap.so.client.HttpClient;
-import org.onap.so.client.HttpClientFactory;
-import org.onap.so.utils.TargetEntity;
-
-import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
-import com.github.tomakehurst.wiremock.common.FileSource;
-import com.github.tomakehurst.wiremock.extension.Parameters;
-import com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer;
-import com.github.tomakehurst.wiremock.http.Request;
-import com.github.tomakehurst.wiremock.http.ResponseDefinition;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Please describe the VnfAdapterQueryMockTransformer.java class
- *
- */
-
-
-public class VnfAdapterQueryMockTransformer extends ResponseDefinitionTransformer{
-	
-	private static final Logger logger = LoggerFactory.getLogger(VnfAdapterQueryMockTransformer
-		.class);
-	
-	private String notifyCallbackResponse;
-	private String ackResponse;
-	private String messageId;
-
-	public VnfAdapterQueryMockTransformer() {
-		notifyCallbackResponse = FileUtil.readResourceFile("__files/vnfAdapterMocks/vnfQuerySimResponse.xml");
-	}
-	
-	public VnfAdapterQueryMockTransformer(String messageId) {
-		this.messageId = messageId;
-	}
-
-	@Override
-	public String getName() {
-		return "vnf-adapter-query-transformer";
-	}
-	
-	@Override
-	public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition,
-			FileSource fileSource, Parameters parameters) {
-
-		String requestBody = request.getBodyAsString();
-
-		String notficationUrl = requestBody.substring(requestBody.indexOf("<notificationUrl>")+17, requestBody.indexOf("</notificationUrl>"));
-		String messageId = requestBody.substring(requestBody.indexOf("<messageId>")+11, requestBody.indexOf("</messageId>"));
-
-		String responseMessageId = "";
-		String updatedResponse = "";
-
-		try {
-			// try supplied response file (if any)
-			logger.info(" Supplied fileName: {}", responseDefinition.getBodyFileName());
-		    ackResponse = FileUtil.readResourceFile("__files/" + responseDefinition.getBodyFileName());
-			notifyCallbackResponse = ackResponse;
-			responseMessageId = ackResponse.substring(ackResponse.indexOf("<messageId>")+11, ackResponse.indexOf("</messageId>"));
-		    updatedResponse = ackResponse.replace(responseMessageId, messageId); 
-		} catch (Exception ex) {
-			logger.debug("Exception :",ex);
-			logger.info(" ******* Use default response file in '__files/vnfAdapterMocks/vnfQuerySimResponse.xml'");
-		    responseMessageId = notifyCallbackResponse.substring(notifyCallbackResponse.indexOf("<messageId>")+11, notifyCallbackResponse.indexOf("</messageId>"));
-			updatedResponse = notifyCallbackResponse.replace(responseMessageId, messageId);
-		}
-
-		logger.info("response (mock) messageId       : {}", responseMessageId);
-		logger.info("request  (replacement) messageId: {}", messageId);
-
-		logger.info("vnf Response (before):{}", notifyCallbackResponse);
-		logger.info("vnf Response (after):{}", updatedResponse);
-		
-		
-		Object vnfDelay = MockResource.getMockProperties().get("vnf_delay");
-		int delay = 300;
-		if (vnfDelay != null) {
-			delay = Integer.parseInt(vnfDelay.toString());
-		}
-
-		//Kick off callback thread
-		logger.info("VnfAdapterQueryMockTransformer notficationUrl: {}:delay: {}", notficationUrl, delay);
-		CallbackResponseThread callbackResponseThread = new CallbackResponseThread(notficationUrl,updatedResponse, delay);
-		logger.info("Inside Callback" );
-		callbackResponseThread.start();
-
-				return ResponseDefinitionBuilder
-		             .like(responseDefinition).but()
-		             .withStatus(200).withBody(updatedResponse).withHeader("Content-Type", "text/xml")
-		             .build();
-	}
-
-	@Override
-	public boolean applyGlobally() {
-	    return false;
-	}
-
-	private class CallbackResponseThread extends Thread {
-
-		private String callbackUrl;
-		private String payLoad;
-		private int delay;
-
-		public CallbackResponseThread(String callbackUrl, String payLoad, int delay) {
-			this.callbackUrl = callbackUrl;
-			this.payLoad = payLoad;
-			this.delay = delay;
-		}
-
-		public void run () {
-			try {
-				//Delay sending callback response
-				sleep(delay);
-			} catch (InterruptedException e1) {
-				logger.debug("Exception :",e1);
-			}
-
-			try {
-				HttpClient client = new HttpClientFactory().newTextXmlClient(
-					UriBuilder.fromUri(callbackUrl).build().toURL(),
-					TargetEntity.VNF_ADAPTER);
-				client.post(payLoad);
-			} catch (Exception e) {
-				logger.debug("Exception :",e);
-			}
-		}
-
-	}
-
-
-}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterRollbackMockTransformer.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterRollbackMockTransformer.java
deleted file mode 100644
index edf0542..0000000
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterRollbackMockTransformer.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * 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=========================================================
- */
-
-package org.onap.so.bpmn.mock;
-
-import javax.ws.rs.core.UriBuilder;
-
-import org.onap.so.client.HttpClient;
-import org.onap.so.client.HttpClientFactory;
-import org.onap.so.utils.TargetEntity;
-
-import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
-import com.github.tomakehurst.wiremock.common.FileSource;
-import com.github.tomakehurst.wiremock.extension.Parameters;
-import com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer;
-import com.github.tomakehurst.wiremock.http.Request;
-import com.github.tomakehurst.wiremock.http.ResponseDefinition;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Please describe the VnfAdapterCreateMockTransformer.java class
- *
- */
-public class VnfAdapterRollbackMockTransformer extends ResponseDefinitionTransformer {
-
-	private static final Logger logger = LoggerFactory.getLogger(VnfAdapterRollbackMockTransformer.class);
-
-	private String notifyCallbackResponse;
-	private String ackResponse;
-	private String messageId;
-
-	public VnfAdapterRollbackMockTransformer() {
-		notifyCallbackResponse = FileUtil.readResourceFile("__files/vnfAdapterMocks/vnfRollbackSimResponse.xml");
-	}
-	
-	public VnfAdapterRollbackMockTransformer(String messageId) {
-		this.messageId = messageId;
-	}
-
-	@Override
-	public String getName() {
-		return "vnf-adapter-rollback-transformer";
-	}
-
-	@Override
-	public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition,
-			FileSource fileSource, Parameters parameters) {
-
-		String requestBody = request.getBodyAsString();
-
-		String notficationUrl = requestBody.substring(requestBody.indexOf("<notificationUrl>")+17, requestBody.indexOf("</notificationUrl>"));
-		String messageId = requestBody.substring(requestBody.indexOf("<messageId>")+11, requestBody.indexOf("</messageId>"));
-		String responseMessageId = "";
-		String updatedResponse = "";
-		
-		try {
-			// try supplied response file (if any)
-			logger.info(" Supplied fileName: {}", responseDefinition.getBodyFileName());
-		    ackResponse = FileUtil.readResourceFile("__files/" + responseDefinition.getBodyFileName());
-			notifyCallbackResponse = ackResponse;
-			responseMessageId = ackResponse.substring(ackResponse.indexOf("<messageId>")+11, ackResponse.indexOf("</messageId>"));
-		    updatedResponse = ackResponse.replace(responseMessageId, messageId); 
-		} catch (Exception ex) {
-			logger.debug("Exception :",ex);
-			logger.info(" ******* Use default response file in '__files/vnfAdapterMocks/vnfRollbackSimResponse.xml'");
-		    responseMessageId = notifyCallbackResponse.substring(notifyCallbackResponse.indexOf("<messageId>")+11, notifyCallbackResponse.indexOf("</messageId>"));
-			updatedResponse = notifyCallbackResponse.replace(responseMessageId, messageId);
-		}
-
-		logger.info("response (mock) messageId       : {}", responseMessageId);
-		logger.info("request  (replacement) messageId: {}", messageId);
-
-		logger.info("vnf Response (before):{}", notifyCallbackResponse);
-		logger.info("vnf Response (after):{}", updatedResponse);
-
-		Object vnfDelay = MockResource.getMockProperties().get("vnf_delay");
-		int delay = 300;
-		if (vnfDelay != null) {
-			delay = Integer.parseInt(vnfDelay.toString());
-		}
-
-		//Kick off callback thread
-		logger.info("VnfAdapterRollbackMockTransformer notficationUrl: {} :delay: {}", notficationUrl, delay);
-		CallbackResponseThread callbackResponseThread = new CallbackResponseThread(notficationUrl,updatedResponse, delay);
-		callbackResponseThread.start();
-
-		return ResponseDefinitionBuilder
-		           .like(responseDefinition).but()
-		           .withStatus(200).withBody(updatedResponse).withHeader("Content-Type", "text/xml")
-		           .build();
-		
-	}
-
-	@Override
-	public boolean applyGlobally() {
-	    return false;
-	}
-
-	private class CallbackResponseThread extends Thread {
-
-		private String callbackUrl;
-		private String payLoad;
-		private int delay;
-
-		public CallbackResponseThread(String callbackUrl, String payLoad, int delay) {
-			this.callbackUrl = callbackUrl;
-			this.payLoad = payLoad;
-			this.delay = delay;
-		}
-
-		public void run () {
-			try {
-				//Delay sending callback response
-				sleep(delay);
-			} catch (InterruptedException e1) {
-				logger.debug("Exception :",e1);
-			}
-
-			try {
-				HttpClient client = new HttpClientFactory().newTextXmlClient(
-					UriBuilder.fromUri(callbackUrl).build().toURL(),
-					TargetEntity.VNF_ADAPTER);
-				client.post(payLoad);
-			} catch (Exception e) {
-				logger.info("catch error in - request.post() ");
-				logger.debug("Exception :", e);
-			}
-		}
-
-	}
-}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterUpdateMockTransformer.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterUpdateMockTransformer.java
deleted file mode 100644
index 5693877..0000000
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/mock/VnfAdapterUpdateMockTransformer.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * 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=========================================================
- */
-
-package org.onap.so.bpmn.mock;
-
-import javax.ws.rs.core.UriBuilder;
-
-import org.onap.so.client.HttpClient;
-import org.onap.so.client.HttpClientFactory;
-import org.onap.so.utils.TargetEntity;
-
-import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
-import com.github.tomakehurst.wiremock.common.FileSource;
-import com.github.tomakehurst.wiremock.extension.Parameters;
-import com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer;
-import com.github.tomakehurst.wiremock.http.Request;
-import com.github.tomakehurst.wiremock.http.ResponseDefinition;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Please describe the VnfAdapterUpdateMockTransformer.java class
- *
- */
-public class VnfAdapterUpdateMockTransformer extends ResponseDefinitionTransformer {
-
-	private static final Logger logger = LoggerFactory.getLogger(VnfAdapterUpdateMockTransformer.class);
-	
-	private String notifyCallbackResponse;
-	private String requestId;
-	private String ackResponse;
-
-	public VnfAdapterUpdateMockTransformer() {
-		notifyCallbackResponse = FileUtil.readResourceFile("vnfAdapter/vnfUpdateSimResponse.xml");
-	}
-
-	public VnfAdapterUpdateMockTransformer(String requestId) {
-		this.requestId = requestId;
-	}
-	
-	@Override
-	public String getName() {
-		return "vnf-adapter-update-transformer";
-	}
-
-	@Override
-	public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition,
-			FileSource fileSource, Parameters parameters) {
-
-		String requestBody = request.getBodyAsString();
-
-		String notficationUrl = requestBody.substring(requestBody.indexOf("<notificationUrl>")+17, requestBody.indexOf("</notificationUrl>"));
-		String messageId = requestBody.substring(requestBody.indexOf("<messageId>")+11, requestBody.indexOf("</messageId>"));
-		String responseMessageId = "";
-		String updatedResponse = "";
-		
-		try {
-			// try supplied response file (if any)
-			logger.info(" Supplied fileName: {}", responseDefinition.getBodyFileName());
-		    ackResponse = FileUtil.readResourceFile("__files/" + responseDefinition.getBodyFileName());
-			notifyCallbackResponse = ackResponse;
-			responseMessageId = ackResponse.substring(ackResponse.indexOf("<messageId>")+11, ackResponse.indexOf("</messageId>"));
-		    updatedResponse = ackResponse.replace(responseMessageId, messageId); 
-		} catch (Exception ex) {
-			logger.debug("Exception :",ex);
-			logger.info(" ******* Use default response file in 'vnfAdapter/vnfUpdateSimResponse.xml'");
-		    responseMessageId = notifyCallbackResponse.substring(notifyCallbackResponse.indexOf("<messageId>")+11, notifyCallbackResponse.indexOf("</messageId>"));
-			updatedResponse = notifyCallbackResponse.replace(responseMessageId, messageId);
-		}
-
-		logger.info("response (mock) messageId       : {}", responseMessageId);
-		logger.info("request  (replacement) messageId: {}", messageId);
-
-		logger.info("vnf Response (before):{}", notifyCallbackResponse);
-		logger.info("vnf Response (after):{}", updatedResponse);
-		
-		Object vnfDelay = MockResource.getMockProperties().get("vnf_delay");
-		int delay = 300;
-		if (vnfDelay != null) {
-			delay = Integer.parseInt(vnfDelay.toString());
-		}
-
-		//Kick off callback thread
-		logger.info("VnfAdapterUpdateMockTransformer notficationUrl: {} :delay: {}", notficationUrl, delay);
-		CallbackResponseThread callbackResponseThread = new CallbackResponseThread(notficationUrl,updatedResponse, delay);
-		callbackResponseThread.start();
-
-		return ResponseDefinitionBuilder
-		           .like(responseDefinition).but()
-		           .withStatus(200).withBody(updatedResponse).withHeader("Content-Type", "text/xml")
-		           .build();
-
-	}
-
-	@Override
-	public boolean applyGlobally() {
-	    return false;
-	}
-
-	private class CallbackResponseThread extends Thread {
-
-		private String callbackUrl;
-		private String payLoad;
-		private int delay;
-
-		public CallbackResponseThread(String callbackUrl, String payLoad, int delay) {
-			this.callbackUrl = callbackUrl;
-			this.payLoad = payLoad;
-			this.delay = delay;
-		}
-
-		public void run () {
-			try {
-				//Delay sending callback response
-				sleep(delay);
-			} catch (InterruptedException e1) {
-				logger.debug("Exception :", e1);
-			}
-
-			try {
-				HttpClient client = new HttpClientFactory().newTextXmlClient(
-					UriBuilder.fromUri(callbackUrl).build().toURL(),
-					TargetEntity.VNF_ADAPTER);
-				client.post(payLoad);
-			} catch (Exception e) {
-				logger.info("catch error in - request.post() ");
-				logger.debug("Exception :", e);
-			}
-		}
-
-	}
-}
-
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/ExtractPojosForBBTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/ExtractPojosForBBTest.java
index bc41b16..5de0903 100644
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/ExtractPojosForBBTest.java
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/ExtractPojosForBBTest.java
@@ -120,30 +120,29 @@
 		customer.getServiceSubscription().getServiceInstances().add(serviceInstancePend);
 		gBBInput.setCustomer(customer);
 
-		ServiceInstance extractServPend = extractPojos.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, "abc");
+		ServiceInstance extractServPend = extractPojos.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		assertEquals(extractServPend.getServiceInstanceId(), serviceInstancePend.getServiceInstanceId());
-		GenericVnf extractVnfPend = extractPojos.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, "abc");
+		GenericVnf extractVnfPend = extractPojos.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 		assertEquals(extractVnfPend.getVnfId(), vnfPend.getVnfId());
-		L3Network extractNetworkPend = extractPojos.extractByKey(execution, ResourceKey.NETWORK_ID, "abc");
+		L3Network extractNetworkPend = extractPojos.extractByKey(execution, ResourceKey.NETWORK_ID);
 		assertEquals(extractNetworkPend.getNetworkId(), networkPend.getNetworkId());
-		VolumeGroup extractVolumeGroupPend = extractPojos.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, "abc");
+		VolumeGroup extractVolumeGroupPend = extractPojos.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
 		assertEquals(extractVolumeGroupPend.getVolumeGroupId(), volumeGroupPend.getVolumeGroupId());
 		AllottedResource extractallotedResourcePend = extractPojos.extractByKey(execution,
-				ResourceKey.ALLOTTED_RESOURCE_ID, "abc");
+				ResourceKey.ALLOTTED_RESOURCE_ID);
 		assertEquals(extractallotedResourcePend.getId(), allotedResourcePend.getId());
-		Configuration extractConfigurationPend = extractPojos.extractByKey(execution, ResourceKey.CONFIGURATION_ID,
-				"abc");
+		Configuration extractConfigurationPend = extractPojos.extractByKey(execution, ResourceKey.CONFIGURATION_ID);
 		assertEquals(extractConfigurationPend.getConfigurationId(), configurationPend.getConfigurationId());
-		VpnBinding extractVpnBinding = extractPojos.extractByKey(execution, ResourceKey.VPN_ID, "abc");
+		VpnBinding extractVpnBinding = extractPojos.extractByKey(execution, ResourceKey.VPN_ID);
 		assertEquals(extractVpnBinding.getVpnId(), vpnBinding.getVpnId());
 		
-		VfModule extractVfModulePend = extractPojos.extractByKey(execution, ResourceKey.VF_MODULE_ID, "abc");
+		VfModule extractVfModulePend = extractPojos.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 		assertEquals(extractVfModulePend.getVfModuleId(), vfModulePend.getVfModuleId());
 
-		VpnBondingLink extractVpnBondingLinkPend = extractPojos.extractByKey(execution, ResourceKey.VPN_BONDING_LINK_ID, "testVpnBondingLink");
+		VpnBondingLink extractVpnBondingLinkPend = extractPojos.extractByKey(execution, ResourceKey.VPN_BONDING_LINK_ID);
 		assertEquals(extractVpnBondingLinkPend.getVpnBondingLinkId(), vpnBondingLinkPend.getVpnBondingLinkId());
 		
-		InstanceGroup extractInstanceGroupPend = extractPojos.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID, "test-instance-group-1");
+		InstanceGroup extractInstanceGroupPend = extractPojos.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID);
 		assertEquals(instanceGroupPend.getId(), extractInstanceGroupPend.getId());
 	}
 
@@ -157,7 +156,7 @@
 		customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
 		gBBInput.setCustomer(customer);
 
-		extractPojos.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, "abc");
+		extractPojos.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 	}
 
 	@Test
@@ -169,7 +168,7 @@
 		ServiceInstance serviceInstance = new ServiceInstance();
 		customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
 		gBBInput.setCustomer(customer);
-		extractPojos.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, "bbb");
+		extractPojos.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 	}
 
 	@Test
@@ -181,7 +180,7 @@
 		ServiceInstance serviceInstance = new ServiceInstance();
 		customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
 		gBBInput.setCustomer(customer);
-		extractPojos.extractByKey(execution, ResourceKey.VF_MODULE_ID, "bbb");
+		extractPojos.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 	}
 	
 	@Test
@@ -193,7 +192,7 @@
 		ServiceInstance serviceInstance = new ServiceInstance();
 		customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
 		gBBInput.setCustomer(customer);
-		extractPojos.extractByKey(execution, ResourceKey.CONFIGURATION_ID, "bbb");
+		extractPojos.extractByKey(execution, ResourceKey.CONFIGURATION_ID);
 	}
 	@Test
 	public void allotedError() throws BBObjectNotFoundException {
@@ -204,7 +203,7 @@
 		ServiceInstance serviceInstance = new ServiceInstance();
 		customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
 		gBBInput.setCustomer(customer);
-		extractPojos.extractByKey(execution, ResourceKey.ALLOTTED_RESOURCE_ID, "bbb");
+		extractPojos.extractByKey(execution, ResourceKey.ALLOTTED_RESOURCE_ID);
 	}
 	@Test
 	public void vpnBindingError() throws BBObjectNotFoundException {
@@ -214,7 +213,7 @@
 		ServiceInstance serviceInstance = new ServiceInstance();
 		customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
 		gBBInput.setCustomer(customer);
-		extractPojos.extractByKey(execution, ResourceKey.VPN_ID, "bbb");
+		extractPojos.extractByKey(execution, ResourceKey.VPN_ID);
 	}
 
 	@Test
@@ -225,6 +224,6 @@
 		ServiceInstance serviceInstance = new ServiceInstance();
 		customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
 		gBBInput.setCustomer(customer);
-		extractPojos.extractByKey(execution, ResourceKey.VPN_BONDING_LINK_ID, "bbb");
+		extractPojos.extractByKey(execution, ResourceKey.VPN_BONDING_LINK_ID);
 	}
 }
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/AbstractCDSProcessingBBUtilsTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/AbstractCDSProcessingBBUtilsTest.java
new file mode 100644
index 0000000..b2812d9
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/AbstractCDSProcessingBBUtilsTest.java
@@ -0,0 +1,70 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2019 TechMahindra.
+ * ================================================================================
+ * 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=========================================================
+ */
+
+package org.onap.so.client.cds;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.UUID;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.InjectMocks;
+import org.onap.so.client.cds.beans.AbstractCDSPropertiesBean;
+
+@RunWith(JUnit4.class)
+public class AbstractCDSProcessingBBUtilsTest {
+    @InjectMocks
+    private AbstractCDSProcessingBBUtils abstractCDSProcessingBBUtils = new AbstractCDSProcessingBBUtils();
+    @InjectMocks
+    AbstractCDSPropertiesBean abstractCDSPropertiesBean = new AbstractCDSPropertiesBean();
+
+    @Test
+    public void preProcessRequestTest() throws Exception {
+        String requestObject = "{\"config-assign-request\":{\"resolution-key\":\"resolutionKey\", \"config-assign-properties\":{\"service-instance-id\":\"serviceInstanceId\", \"vnf-id\":\"vnfId\", \"vnf-name\":\"vnfName\", \"service-model-uuid\":\"serviceModelUuid\", \"vnf-customization-uuid\":\"vnfCustomizationUuid\",\"Instance1\":\"Instance1Value\",\"Instance2\":\"Instance2Value\",\"Param3\":\"Param3Value\"}}}";
+        String blueprintName = "blueprintName";
+        String blueprintVersion = "blueprintVersion";
+        String actionName = "actionName";
+        String mode = "mode";
+        String requestId = "123456";
+        String originatorId = "originatorId";
+        String subRequestId = UUID.randomUUID().toString();
+
+        abstractCDSPropertiesBean.setActionName(actionName);
+        abstractCDSPropertiesBean.setBlueprintName(blueprintName);
+        abstractCDSPropertiesBean.setBlueprintVersion(blueprintVersion);
+        abstractCDSPropertiesBean.setMode(mode);
+        abstractCDSPropertiesBean.setOriginatorId(originatorId);
+        abstractCDSPropertiesBean.setRequestId(requestId);
+        abstractCDSPropertiesBean.setRequestObject(requestObject);
+        abstractCDSPropertiesBean.setSubRequestId(subRequestId);
+
+        DelegateExecution execution = mock(DelegateExecution.class);
+        when(execution.getVariable("executionObject")).thenReturn(abstractCDSPropertiesBean);
+
+        abstractCDSProcessingBBUtils.constructExecutionServiceInputObject(execution);
+        assertTrue(true);
+    }
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigAssignPropertiesForPnfTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigAssignPropertiesForPnfTest.java
new file mode 100644
index 0000000..c294124
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigAssignPropertiesForPnfTest.java
@@ -0,0 +1,70 @@
+package org.onap.so.client.cds.beans;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+
+public class ConfigAssignPropertiesForPnfTest {
+    ConfigAssignPropertiesForPnf configAssignPropertiesForPnf = new ConfigAssignPropertiesForPnf();
+    private Map<String, Object> userParam = new HashMap<String, Object>();
+    private String serviceInstanceId;
+    private String pnfId;
+    private String pnfName;
+    private String serviceModelUuid;
+    private String pnfCustomizationUuid;
+
+    @Test
+    public final void testConfigDeployPropertiesForPnfTest() {
+        userParam.put("Instance1", "instance1value");
+        userParam.put("Instance2", "instance2value");
+        configAssignPropertiesForPnf.setPnfCustomizationUuid("pnf-customization-uuid");
+        configAssignPropertiesForPnf.setPnfId("pnf-id");
+        configAssignPropertiesForPnf.setPnfName("pnf-name");
+        configAssignPropertiesForPnf.setServiceInstanceId("service-instance-id");
+        configAssignPropertiesForPnf.setServiceModelUuid("service-model-uuid");
+        configAssignPropertiesForPnf.setUserParam("Instance1", "instance1value");
+        configAssignPropertiesForPnf.setUserParam("Instance2", "instance2value");
+
+        assertNotNull(configAssignPropertiesForPnf.getPnfCustomizationUuid());
+        assertNotNull(configAssignPropertiesForPnf.getPnfId());
+        assertNotNull(configAssignPropertiesForPnf.getPnfName());
+        assertNotNull(configAssignPropertiesForPnf.getServiceInstanceId());
+        assertNotNull(configAssignPropertiesForPnf.getServiceModelUuid());
+        assertNotNull(configAssignPropertiesForPnf.getUserParam());
+
+        assertEquals("service-instance-id", configAssignPropertiesForPnf.getServiceInstanceId());
+        assertEquals("service-model-uuid", configAssignPropertiesForPnf.getServiceModelUuid());
+        assertEquals("pnf-customization-uuid", configAssignPropertiesForPnf.getPnfCustomizationUuid());
+        assertEquals("pnf-id", configAssignPropertiesForPnf.getPnfId());
+        assertEquals("pnf-name", configAssignPropertiesForPnf.getPnfName());
+        assertEquals(userParam, configAssignPropertiesForPnf.getUserParam());
+    }
+
+    @Test
+    public void testtoString() {
+        final StringBuilder sb = new StringBuilder("{");
+        sb.append("\"service-instance-id\":").append("\"").append(serviceInstanceId).append("\"");
+        sb.append(", \"pnf-id\":").append("\"").append(pnfId).append("\"");
+        sb.append(", \"pnf-name\":").append("\"").append(pnfName).append("\"");
+        sb.append(", \"service-model-uuid\":").append("\"").append(serviceModelUuid).append("\"");
+        sb.append(", \"pnf-customization-uuid\":").append("\"").append(pnfCustomizationUuid).append("\"");
+        for (Map.Entry<String, Object> entry : userParam.entrySet()) {
+            sb.append(",");
+            sb.append("\"");
+            sb.append(entry.getKey());
+            sb.append("\"");
+            sb.append(":");
+            sb.append("\"");
+            sb.append(entry.getValue());
+            sb.append("\"");
+        }
+        sb.append('}');
+        String Expexted = sb.toString();
+        assertEquals(Expexted, configAssignPropertiesForPnf.toString());
+
+    }
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigAssignPropertiesForVnfTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigAssignPropertiesForVnfTest.java
new file mode 100644
index 0000000..8b732af
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigAssignPropertiesForVnfTest.java
@@ -0,0 +1,68 @@
+package org.onap.so.client.cds.beans;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+
+public class ConfigAssignPropertiesForVnfTest {
+    ConfigAssignPropertiesForVnf configAssignPropertiesForVnf = new ConfigAssignPropertiesForVnf();
+    private Map<String, Object> userParam = new HashMap<String, Object>();
+    private String serviceInstanceId;
+    private String vnfId;
+    private String vnfName;
+    private String serviceModelUuid;
+    private String vnfCustomizationUuid;
+
+    @Test
+    public final void testConfigAssignPropertiesForVnfTest() {
+        userParam.put("Instance1", "instance1value");
+        configAssignPropertiesForVnf.setServiceInstanceId("service-instance-id");
+        configAssignPropertiesForVnf.setServiceModelUuid("service-model-uuid");
+        configAssignPropertiesForVnf.setVnfCustomizationUuid("vnf-customization-uuid");
+        configAssignPropertiesForVnf.setVnfId("vnf-id");
+        configAssignPropertiesForVnf.setVnfName("vnf-name");
+        configAssignPropertiesForVnf.setUserParam("Instance1", "instance1value");
+
+        assertNotNull(configAssignPropertiesForVnf.getServiceInstanceId());
+        assertNotNull(configAssignPropertiesForVnf.getServiceModelUuid());
+        assertNotNull(configAssignPropertiesForVnf.getVnfCustomizationUuid());
+        assertNotNull(configAssignPropertiesForVnf.getVnfId());
+        assertNotNull(configAssignPropertiesForVnf.getVnfName());
+        assertNotNull(configAssignPropertiesForVnf.getUserParam());
+
+        assertEquals("service-instance-id", configAssignPropertiesForVnf.getServiceInstanceId());
+        assertEquals("service-model-uuid", configAssignPropertiesForVnf.getServiceModelUuid());
+        assertEquals("vnf-customization-uuid", configAssignPropertiesForVnf.getVnfCustomizationUuid());
+        assertEquals("vnf-id", configAssignPropertiesForVnf.getVnfId());
+        assertEquals("vnf-name", configAssignPropertiesForVnf.getVnfName());
+        assertEquals(userParam, configAssignPropertiesForVnf.getUserParam());
+
+    }
+
+    @Test
+    public void testtoString() {
+        final StringBuilder sb = new StringBuilder("{");
+        sb.append("\"service-instance-id\":").append("\"").append(serviceInstanceId).append("\"");
+        sb.append(", \"vnf-id\":").append("\"").append(vnfId).append("\"");
+        sb.append(", \"vnf-name\":").append("\"").append(vnfName).append("\"");
+        sb.append(", \"service-model-uuid\":").append("\"").append(serviceModelUuid).append("\"");
+        sb.append(", \"vnf-customization-uuid\":").append("\"").append(vnfCustomizationUuid).append("\"");
+        for (Map.Entry<String, Object> entry : userParam.entrySet()) {
+            sb.append(",");
+            sb.append("\"");
+            sb.append(entry.getKey());
+            sb.append("\"");
+            sb.append(":");
+            sb.append("\"");
+            sb.append(entry.getValue());
+            sb.append("\"");
+        }
+        sb.append('}');
+        String Expexted = sb.toString();
+        assertEquals(Expexted, configAssignPropertiesForVnf.toString());
+    }
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigAssignRequestPnfTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigAssignRequestPnfTest.java
new file mode 100644
index 0000000..e4f062a
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigAssignRequestPnfTest.java
@@ -0,0 +1,48 @@
+package org.onap.so.client.cds.beans;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+
+public class ConfigAssignRequestPnfTest {
+    ConfigAssignRequestPnf configAssignRequestPnf = new ConfigAssignRequestPnf();
+    ConfigAssignPropertiesForPnf configAssignPropertiesForPnf = new ConfigAssignPropertiesForPnf();
+    private Map<String, Object> userParam = new HashMap<String, Object>();
+    private String resolutionKey;
+
+    @Test
+    public final void testConfigAssignRequestPnfTest() {
+        configAssignRequestPnf.setResolutionKey("resolution-key");
+        configAssignRequestPnf.setConfigAssignPropertiesForPnf(configAssignPropertiesForPnf);
+        assertNotNull(configAssignRequestPnf.getResolutionKey());
+        assertNotNull(configAssignRequestPnf.getConfigAssignPropertiesForPnf());
+
+        assertEquals("resolution-key", configAssignRequestPnf.getResolutionKey());
+        assertEquals(configAssignPropertiesForPnf, configAssignRequestPnf.getConfigAssignPropertiesForPnf());
+    }
+
+    @Test
+    public void testtoString() {
+        userParam.put("Instance1", "instance1value");
+        configAssignPropertiesForPnf.setPnfCustomizationUuid("pnf-customization-uuid");
+        configAssignPropertiesForPnf.setPnfId("pnf-id");
+        configAssignPropertiesForPnf.setPnfName("pnf-name");
+        configAssignPropertiesForPnf.setServiceInstanceId("service-instance-id");
+        configAssignPropertiesForPnf.setServiceModelUuid("service-model-uuid");
+        configAssignPropertiesForPnf.setUserParam("user_params", userParam);
+        configAssignRequestPnf.setConfigAssignPropertiesForPnf(configAssignPropertiesForPnf);
+        final StringBuilder sb = new StringBuilder("{\"config-assign-request\":{");
+        sb.append("\"resolution-key\":").append("\"").append(resolutionKey).append("\"");
+        sb.append(", \"config-assign-properties\":").append(configAssignPropertiesForPnf.toString());
+        sb.append('}');
+        sb.append('}');
+        String Expexted = sb.toString();
+
+        assertEquals(Expexted, configAssignRequestPnf.toString());
+
+    }
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigAssignRequestVnfTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigAssignRequestVnfTest.java
new file mode 100644
index 0000000..ad3af47
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigAssignRequestVnfTest.java
@@ -0,0 +1,51 @@
+package org.onap.so.client.cds.beans;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+
+public class ConfigAssignRequestVnfTest {
+    ConfigAssignRequestVnf configAssignRequestVnf = new ConfigAssignRequestVnf();
+    ConfigAssignPropertiesForVnf configAssignPropertiesForVnf = new ConfigAssignPropertiesForVnf();
+    private Map<String, Object> userParam = new HashMap<String, Object>();
+
+    private String resolutionKey;
+
+    @Test
+    public final void testConfigAssignRequestVnf() {
+        configAssignRequestVnf.setResolutionKey("resolution-key");
+        configAssignRequestVnf.setConfigAssignPropertiesForVnf(configAssignPropertiesForVnf);
+        assertNotNull(configAssignRequestVnf.getResolutionKey());
+        assertNotNull(configAssignRequestVnf.getConfigAssignPropertiesForVnf());
+
+        assertEquals("resolution-key", configAssignRequestVnf.getResolutionKey());
+        assertEquals(configAssignPropertiesForVnf, configAssignRequestVnf.getConfigAssignPropertiesForVnf());
+
+    }
+
+    @Test
+    public void testtoString() {
+        userParam.put("Instance1", "instance1value");
+        configAssignPropertiesForVnf.setServiceInstanceId("service-instance-id");
+        configAssignPropertiesForVnf.setServiceModelUuid("service-model-uuid");
+        configAssignPropertiesForVnf.setUserParam("user_params", userParam);
+        configAssignPropertiesForVnf.setVnfCustomizationUuid("vnf-customization-uuid");
+        configAssignPropertiesForVnf.setVnfId("vnf-id");
+        configAssignPropertiesForVnf.setVnfName("vnf-name");
+        configAssignRequestVnf.setConfigAssignPropertiesForVnf(configAssignPropertiesForVnf);
+
+        final StringBuilder sb = new StringBuilder("{\"config-assign-request\":{");
+        sb.append("\"resolution-key\":").append("\"").append(resolutionKey).append("\"");
+        sb.append(", \"config-assign-properties\":").append(configAssignPropertiesForVnf.toString());
+        sb.append('}');
+        sb.append('}');
+
+        String Expexted = sb.toString();
+
+        assertEquals(Expexted, configAssignRequestVnf.toString());
+    }
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForPnfTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForPnfTest.java
new file mode 100644
index 0000000..1d771c8
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForPnfTest.java
@@ -0,0 +1,50 @@
+package org.onap.so.client.cds.beans;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+
+public class ConfigDeployPropertiesForPnfTest {
+    ConfigDeployPropertiesForPnf configDeployPropertiesForPnf = new ConfigDeployPropertiesForPnf();
+    private String serviceInstanceId;
+    private String pnfId;
+    private String pnfName;
+    private String serviceModelUuid;
+    private String pnfCustomizationUuid;
+
+    @Test
+    public final void testConfigDeployPropertiesForPnfTest() {
+        configDeployPropertiesForPnf.setServiceInstanceId("service-instance-id");
+        configDeployPropertiesForPnf.setServiceModelUuid("service-model-uuid");
+        configDeployPropertiesForPnf.setPnfCustomizationUuid("pnf-customization-uuid");
+        configDeployPropertiesForPnf.setPnfId("pnf-id");
+        configDeployPropertiesForPnf.setPnfName("pnf-name");
+        assertNotNull(configDeployPropertiesForPnf.getServiceInstanceId());
+        assertNotNull(configDeployPropertiesForPnf.getServiceModelUuid());
+        assertNotNull(configDeployPropertiesForPnf.getPnfCustomizationUuid());
+        assertNotNull(configDeployPropertiesForPnf.getPnfId());
+        assertNotNull(configDeployPropertiesForPnf.getPnfName());
+
+        assertEquals("service-instance-id", configDeployPropertiesForPnf.getServiceInstanceId());
+        assertEquals("service-model-uuid", configDeployPropertiesForPnf.getServiceModelUuid());
+        assertEquals("pnf-customization-uuid", configDeployPropertiesForPnf.getPnfCustomizationUuid());
+        assertEquals("pnf-id", configDeployPropertiesForPnf.getPnfId());
+        assertEquals("pnf-name", configDeployPropertiesForPnf.getPnfName());
+
+    }
+
+    @Test
+    public void testtoString() {
+        final StringBuilder sb = new StringBuilder("{");
+        sb.append("\"service-instance-id\":").append("\"").append(serviceInstanceId).append("\"");
+        sb.append(", \"pnf-id\":").append("\"").append(pnfId).append("\"");
+        sb.append(", \"pnf-name\":").append("\"").append(pnfName).append("\"");
+        sb.append(", \"service-model-uuid\":").append("\"").append(serviceModelUuid).append("\"");
+        sb.append(", \"pnf-customization-uuid\":").append("\"").append(pnfCustomizationUuid).append("\"");
+        sb.append('}');
+        String Expexted = sb.toString();
+        assertEquals(Expexted, configDeployPropertiesForPnf.toString());
+    }
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForVnfTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForVnfTest.java
new file mode 100644
index 0000000..47c59b9
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForVnfTest.java
@@ -0,0 +1,49 @@
+package org.onap.so.client.cds.beans;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+
+public class ConfigDeployPropertiesForVnfTest {
+    ConfigDeployPropertiesForVnf configDeployPropertiesForVnf = new ConfigDeployPropertiesForVnf();
+    private String serviceInstanceId;
+    private String vnfId;
+    private String vnfName;
+    private String serviceModelUuid;
+    private String vnfCustomizationUuid;
+
+    @Test
+    public final void testConfigDeployPropertiesForVnf() {
+        configDeployPropertiesForVnf.setServiceInstanceId("service-instance-id");
+        configDeployPropertiesForVnf.setServiceModelUuid("service-model-uuid");
+        configDeployPropertiesForVnf.setVnfCustomizationUuid("vnf-customization-uuid");
+        configDeployPropertiesForVnf.setVnfId("vnf-id");
+        configDeployPropertiesForVnf.setVnfName("vnf-name");
+        assertNotNull(configDeployPropertiesForVnf.getServiceInstanceId());
+        assertNotNull(configDeployPropertiesForVnf.getServiceModelUuid());
+        assertNotNull(configDeployPropertiesForVnf.getVnfCustomizationUuid());
+        assertNotNull(configDeployPropertiesForVnf.getVnfId());
+        assertNotNull(configDeployPropertiesForVnf.getVnfName());
+
+        assertEquals("service-instance-id", configDeployPropertiesForVnf.getServiceInstanceId());
+        assertEquals("service-model-uuid", configDeployPropertiesForVnf.getServiceModelUuid());
+        assertEquals("vnf-customization-uuid", configDeployPropertiesForVnf.getVnfCustomizationUuid());
+        assertEquals("vnf-id", configDeployPropertiesForVnf.getVnfId());
+        assertEquals("vnf-name", configDeployPropertiesForVnf.getVnfName());
+    }
+
+    @Test
+    public void testtoString() {
+        final StringBuilder sb = new StringBuilder("{");
+        sb.append("\"service-instance-id\":").append("\"").append(serviceInstanceId).append("\"");
+        sb.append(", \"vnf-id\":").append("\"").append(vnfId).append("\"");
+        sb.append(", \"vnf-name\":").append("\"").append(vnfName).append("\"");
+        sb.append(", \"service-model-uuid\":").append("\"").append(serviceModelUuid).append("\"");
+        sb.append(", \"vnf-customization-uuid\":").append("\"").append(vnfCustomizationUuid).append("\"");
+        sb.append('}');
+        String Expexted = sb.toString();
+        assertEquals(Expexted, configDeployPropertiesForVnf.toString());
+
+    }
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigDeployRequestPnfTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigDeployRequestPnfTest.java
new file mode 100644
index 0000000..df41bf2
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigDeployRequestPnfTest.java
@@ -0,0 +1,41 @@
+package org.onap.so.client.cds.beans;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+
+public class ConfigDeployRequestPnfTest {
+    ConfigDeployRequestPnf configDeployRequestPnf = new ConfigDeployRequestPnf();
+    private String resolutionKey;
+    ConfigDeployPropertiesForPnf configDeployPropertiesForPnf = new ConfigDeployPropertiesForPnf();
+
+    @Test
+    public final void testConfigDeployRequestVnf() {
+        configDeployRequestPnf.setResolutionKey("resolution-key");
+        configDeployRequestPnf.setConfigDeployPropertiesForPnf(configDeployPropertiesForPnf);
+        assertNotNull(configDeployRequestPnf.getResolutionKey());
+        assertNotNull(configDeployRequestPnf.getConfigDeployPropertiesForPnf());
+        assertEquals("resolution-key", configDeployRequestPnf.getResolutionKey());
+        assertEquals(configDeployPropertiesForPnf, configDeployRequestPnf.getConfigDeployPropertiesForPnf());
+    }
+
+    @Test
+    public void testtoString() {
+        configDeployPropertiesForPnf.setServiceInstanceId("service-instance-id");
+        configDeployPropertiesForPnf.setServiceModelUuid("service-model-uuid");
+        configDeployPropertiesForPnf.setPnfCustomizationUuid("pnf-customization-uuid");
+        configDeployPropertiesForPnf.setPnfId("pnf-id");
+        configDeployPropertiesForPnf.setPnfName("pnf-name");
+        configDeployRequestPnf.setConfigDeployPropertiesForPnf(configDeployPropertiesForPnf);
+        final StringBuilder sb = new StringBuilder("{\"config-deploy-request\":{");
+        sb.append("\"resolution-key\":").append("\"").append(resolutionKey).append("\"");
+        sb.append(", \"config-deploy-properties\":").append(configDeployPropertiesForPnf.toString());
+        sb.append('}');
+        sb.append('}');
+        String Expexted = sb.toString();
+
+        assertEquals(Expexted, configDeployRequestPnf.toString());
+    }
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigDeployRequestVnfTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigDeployRequestVnfTest.java
new file mode 100644
index 0000000..f771710
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigDeployRequestVnfTest.java
@@ -0,0 +1,42 @@
+package org.onap.so.client.cds.beans;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+
+public class ConfigDeployRequestVnfTest {
+
+    ConfigDeployRequestVnf configDeployRequestVnf = new ConfigDeployRequestVnf();
+    private String resolutionKey;
+    ConfigDeployPropertiesForVnf configDeployPropertiesForVnf = new ConfigDeployPropertiesForVnf();
+
+    @Test
+    public final void testConfigDeployRequestVnf() {
+        configDeployRequestVnf.setResolutionKey("resolution-key");
+        configDeployRequestVnf.setConfigDeployPropertiesForVnf(configDeployPropertiesForVnf);
+        assertNotNull(configDeployRequestVnf.getResolutionKey());
+        assertNotNull(configDeployRequestVnf.getConfigDeployPropertiesForVnf());
+        assertEquals("resolution-key", configDeployRequestVnf.getResolutionKey());
+        assertEquals(configDeployPropertiesForVnf, configDeployRequestVnf.getConfigDeployPropertiesForVnf());
+    }
+
+    @Test
+    public void testtoString() {
+        configDeployPropertiesForVnf.setServiceInstanceId("service-instance-id");
+        configDeployPropertiesForVnf.setServiceModelUuid("service-model-uuid");
+        configDeployPropertiesForVnf.setVnfCustomizationUuid("vnf-customization-uuid");
+        configDeployPropertiesForVnf.setVnfId("vnf-id");
+        configDeployPropertiesForVnf.setVnfName("vnf-name");
+        configDeployRequestVnf.setConfigDeployPropertiesForVnf(configDeployPropertiesForVnf);
+        final StringBuilder sb = new StringBuilder("{\"config-deploy-request\":{");
+        sb.append("\"resolution-key\":").append("\"").append(resolutionKey).append("\"");
+        sb.append(", \"config-deploy-properties\":").append(configDeployPropertiesForVnf.toString());
+        sb.append('}');
+        sb.append('}');
+        String Expexted = sb.toString();
+
+        assertEquals(Expexted, configDeployRequestVnf.toString());
+    }
+
+}
diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/BPMNLogger.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/BPMNLogger.java
deleted file mode 100644
index ede5156..0000000
--- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/BPMNLogger.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * 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=========================================================
- */
-
-package org.onap.so.bpmn.core;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class BPMNLogger {
-	private static Logger logger = LoggerFactory.getLogger(BPMNLogger.class);
-	
-	public static void debug (String isDebugLogEnabled, String LogText) {	
-			logger.debug(LogText);
-	}	
-
-	
-}	
-
diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/ResponseBuilder.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/ResponseBuilder.java
index 6166071..fb794e2 100644
--- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/ResponseBuilder.java
+++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/ResponseBuilder.java
@@ -4,6 +4,8 @@
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
  * 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
@@ -21,6 +23,8 @@
 package org.onap.so.bpmn.core;
 
 import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Used in the output variable mapping configuration of subflow call activity
@@ -36,6 +40,7 @@
  */
 public class ResponseBuilder implements java.io.Serializable {
 	private static final long serialVersionUID = 1L;
+	private static final Logger logger = LoggerFactory.getLogger(ResponseBuilder.class);
 
 	/**
 	 * Creates a WorkflowException using data from the execution variables.
@@ -48,28 +53,28 @@
 		String method = getClass().getSimpleName() + ".buildWorkflowException(" +
 			"execution=" + execution.getId() +
 			")";
-		String isDebugLogEnabled = (String) execution.getVariable("isDebugLogEnabled");
-		logDebug("Entered " + method, isDebugLogEnabled);
-	
+
+		logger.debug("Entered " + method);
+
 		String prefix = (String) execution.getVariable("prefix");
 		String processKey = getProcessKey(execution);
 
-		logDebug("processKey=" + processKey, isDebugLogEnabled);
+		logger.debug("processKey=" + processKey);
 
 		// See if there"s already a WorkflowException object in the execution.
 		WorkflowException theException = (WorkflowException) execution.getVariable("WorkflowException");
 
 		if (theException != null) {
-			logDebug("Exited " + method + " - propagated " + theException, isDebugLogEnabled);
+			logger.debug("Exited " + method + " - propagated " + theException);
 			return theException;
 		}
-		
+
 		// Look in the legacy variables: ErrorResponse and ResponseCode
 
 		String errorResponse = trimString(execution.getVariable(prefix + "ErrorResponse"), null);
 		String responseCode = trimString(execution.getVariable(prefix + "ResponseCode"), null);
-		logDebug("errorResponse=" + errorResponse, isDebugLogEnabled);
-		logDebug("responseCode=" + responseCode, isDebugLogEnabled);
+		logger.debug("errorResponse=" + errorResponse);
+		logger.debug("responseCode=" + responseCode);
 		if (errorResponse != null || !isOneOf(responseCode, null, "0", "200", "201", "202", "204")) {
 			// This is an error condition.  We need to return a WorkflowExcpetion
 
@@ -93,8 +98,8 @@
 			String xmlErrorCode = trimString(getXMLTextElement(maybeXML, "ErrorCode"), null);
 
 			if (xmlErrorMessage != null || xmlErrorCode != null) {
-				logDebug("xmlErrorMessage=" + xmlErrorMessage, isDebugLogEnabled);
-				logDebug("xmlErrorCode=" + xmlErrorCode, isDebugLogEnabled);
+				logger.debug("xmlErrorMessage=" + xmlErrorMessage);
+				logger.debug("xmlErrorCode=" + xmlErrorCode);
 
 				if (xmlErrorMessage == null) {
 					errorResponse = "Received error code " + xmlErrorCode + " from " + processKey;
@@ -135,27 +140,26 @@
 
 			theException = new WorkflowException(processKey, intResponseCode, errorResponse);
 			execution.setVariable("WorkflowException", theException);
-			logDebug("Exited " + method + " - created " + theException, isDebugLogEnabled);
+			logger.debug("Exited " + method + " - created " + theException);
 			return theException;
 		}
 
-		logDebug("Exited " + method + " - no WorkflowException", isDebugLogEnabled);
+		logger.debug("Exited " + method + " - no WorkflowException");
 		return null;
 	}
-	
+
 	/**
 	 * Returns the "Response" variable, unless the execution variables
 	 * indicate there was an error. In that case, null is returned.
 	 * @param execution the execution
 	 */
 	public Object buildWorkflowResponse(DelegateExecution execution) {
-	
+
 		String method = getClass().getSimpleName() + ".buildWorkflowResponse(" +
 			"execution=" + execution.getId() +
 			")";
-		String isDebugLogEnabled = (String) execution.getVariable("isDebugLogEnabled");
-		logDebug("Entered " + method, isDebugLogEnabled);
-	
+		logger.debug("Entered " + method);
+
 		String prefix = (String) execution.getVariable("prefix");
 		String processKey = getProcessKey(execution);
 
@@ -169,16 +173,16 @@
 				isOneOf(responseCode, null, "0", "200", "201", "202", "204")) {
 
 			theResponse = execution.getVariable("WorkflowResponse");
-	
+
 			if (theResponse == null) {
 				theResponse = execution.getVariable(processKey + "Response");
 			}
 		}
 
-		logDebug("Exited " + method, isDebugLogEnabled);
+		logger.debug("Exited " + method);
 		return theResponse;
 	}
-	
+
 	/**
 	 * Checks if the specified item is one of the specified values.
 	 * @param item the item
@@ -201,10 +205,10 @@
 				}
 			}
 		}
-		
+
 		return false;
 	}
-	
+
 	/**
 	 * Creates a string value of the specified object, trimming whitespace in
 	 * the process.  If the result is null or empty, the specified empty string
@@ -221,7 +225,7 @@
 		String s = String.valueOf(object).trim();
 		return s.equals("") ? emptyStringValue : s;
 	}
-	
+
 	/**
 	 * Returns the process definition key (i.e. the process name) from the
 	 * execution.
@@ -237,16 +241,7 @@
 		return execution.getProcessEngineServices().getRepositoryService()
 			.getProcessDefinition(execution.getProcessDefinitionId()).getKey();
 	}
-	
-	/**
-	 * Logs a message at the DEBUG level.
-	 * @param message the message
-	 * @param isDebugLogEnabled a flag indicating if DEBUG level is enabled
-	 */
-	private void logDebug(String message, String isDebugLogEnabled) {
-		BPMNLogger.debug(isDebugLogEnabled, message);
-	}
-	
+
 	/**
 	 * Removes namespace definitions and prefixes from XML, if any.
 	 */
diff --git a/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/common/adapter/vnf/VnfRollback.java b/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/common/adapter/vnf/VnfRollback.java
index 194ce58..9fd3bc5 100644
--- a/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/common/adapter/vnf/VnfRollback.java
+++ b/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/common/adapter/vnf/VnfRollback.java
@@ -36,6 +36,7 @@
  *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
  *       &lt;sequence>
  *         &lt;element name="cloudSiteId" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="cloudOwner" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
  *         &lt;element name="msoRequest" type="{http://org.onap.so/vnfNotify}msoRequest" minOccurs="0"/>
  *         &lt;element name="tenantCreated" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
  *         &lt;element name="tenantId" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
@@ -52,6 +53,7 @@
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "vnfRollback", propOrder = {
     "cloudSiteId",
+    "cloudOwner",
     "msoRequest",
     "tenantCreated",
     "tenantId",
@@ -61,6 +63,7 @@
 public class VnfRollback {
 
     protected String cloudSiteId;
+    protected String cloudOwner;
     protected MsoRequest msoRequest;
     protected boolean tenantCreated;
     protected String tenantId;
@@ -92,6 +95,30 @@
     }
 
     /**
+     * Gets the value of the cloudOwner property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCloudOwner() {
+        return cloudOwner;
+    }
+
+    /**
+     * Sets the value of the cloudOwner property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCloudOwner(String value) {
+        this.cloudOwner = value;
+    }
+
+    /**
      * Gets the value of the msoRequest property.
      * 
      * @return
@@ -201,6 +228,7 @@
 
         	return
         		"<cloudSiteId>"+cloudSiteId+"</cloudSiteId>" + '\n' +
+        		"<cloudOwner>"+cloudOwner+"</cloudOwner>" + '\n' +
         		msoRequestElement +
         		"<tenantCreated>"+tenantCreated+"</tenantCreated>" + '\n' +
         		"<tenantId>"+tenantId+"</tenantId>" + '\n' +
diff --git a/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/core/plugins/LoggingAndURNMappingPlugin.java b/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/core/plugins/LoggingAndURNMappingPlugin.java
index f795bcc..3eed14b 100644
--- a/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/core/plugins/LoggingAndURNMappingPlugin.java
+++ b/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/core/plugins/LoggingAndURNMappingPlugin.java
@@ -53,7 +53,6 @@
 import org.camunda.bpm.model.bpmn.instance.EndEvent;
 import org.camunda.bpm.model.bpmn.instance.FlowNode;
 import org.camunda.bpm.model.bpmn.instance.StartEvent;
-import org.onap.so.bpmn.core.BPMNLogger;
 
 
 import org.slf4j.Logger;
@@ -71,11 +70,11 @@
  * Plugin for MSO logging and URN mapping.
  */
 @Component
-public class LoggingAndURNMappingPlugin extends AbstractProcessEnginePlugin {	
-	
+public class LoggingAndURNMappingPlugin extends AbstractProcessEnginePlugin {
+
 	@Autowired
 	private LoggingParseListener loggingParseListener;
-	
+
 	@Override
 	public void preInit(
 			ProcessEngineConfigurationImpl processEngineConfiguration) {
@@ -87,14 +86,14 @@
 		}
 		preParseListeners.add(loggingParseListener);
 	}
-	
+
 	/**
 	 * Called when a process flow is parsed so we can inject listeners.
 	 */
 	@Component
-	public class LoggingParseListener extends AbstractBpmnParseListener {		
-		
-		
+	public class LoggingParseListener extends AbstractBpmnParseListener {
+
+
 		private void injectLogExecutionListener(ActivityImpl activity) {
 			activity.addListener(
 					ExecutionListener.EVENTNAME_END,
@@ -115,7 +114,7 @@
 
                 @Override
 		public void parseStartEvent(Element startEventElement, ScopeImpl scope, ActivityImpl startEventActivity) {
-			// Inject these listeners only on the main start event for the flow, not on any embedded subflow start events			
+			// Inject these listeners only on the main start event for the flow, not on any embedded subflow start events
 
 			injectLogExecutionListener(startEventActivity);
 		}
@@ -275,15 +274,15 @@
 			injectLogExecutionListener(messageActivity);
 		}
 	}
-	
+
 	/**
 	 * Logs details about the current activity.
-	 */	
+	 */
 	public class LoggingExecutionListener implements ExecutionListener {
 		private final Logger logger = LoggerFactory.getLogger(LoggingExecutionListener.class);
 
 		private String event;
-		
+
 		public LoggingExecutionListener() {
 			this.event = "";
 		}
@@ -291,31 +290,31 @@
 		public LoggingExecutionListener(String event) {
 			this.event = event;
 		}
-		
+
 		public String getEvent() {
 			return event;
 		}
 
 		@Override
-		public void notify(DelegateExecution execution) throws Exception {			
+		public void notify(DelegateExecution execution) throws Exception {
 			//required for legacy groovy processing in camunda
 			execution.setVariable("isDebugLogEnabled", "true");
 			if (!isBlank(execution.getCurrentActivityName())) {
 				try {
-				
+
 					String id = execution.getId();
-					if (id != null ) {				
+					if (id != null ) {
 						RepositoryService repositoryService = execution.getProcessEngineServices().getRepositoryService();
 						String processName = repositoryService.createProcessDefinitionQuery()
 						  .processDefinitionId(execution.getProcessDefinitionId())
 						  .singleResult()
-						  .getName();				
+						  .getName();
 
-						
+
 						String requestId = (String) execution.getVariable("mso-request-id");
 						String svcid = (String) execution.getVariable("mso-service-instance-id");
 					}
-				} catch(Exception e) {					
+				} catch(Exception e) {
 					logger.error("Exception occurred", e);
 				}
 			}
diff --git a/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/core/plugins/WorkflowExceptionPlugin.java b/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/core/plugins/WorkflowExceptionPlugin.java
index 9b8f6cd..8bc0055 100644
--- a/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/core/plugins/WorkflowExceptionPlugin.java
+++ b/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/core/plugins/WorkflowExceptionPlugin.java
@@ -4,6 +4,8 @@
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
  * 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
@@ -40,9 +42,10 @@
 import org.camunda.bpm.engine.impl.pvm.process.TransitionImpl;
 import org.camunda.bpm.engine.impl.util.xml.Element;
 
-import org.onap.so.bpmn.core.BPMNLogger;
 import org.onap.so.bpmn.core.WorkflowException;
 import org.springframework.stereotype.Component;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This plugin does the following:
@@ -60,7 +63,8 @@
  */
 @Component
 public class WorkflowExceptionPlugin extends AbstractProcessEnginePlugin {
-	
+	private static final Logger logger = LoggerFactory.getLogger(WorkflowExceptionPlugin.class);
+
 	@Override
 	public void preInit(ProcessEngineConfigurationImpl processEngineConfiguration) {
 		List<BpmnParseListener> preParseListeners =
@@ -73,7 +77,7 @@
 
 		preParseListeners.add(new WorkflowExceptionParseListener());
 	}
-	
+
 	public static class WorkflowExceptionParseListener extends AbstractBpmnParseListener {
 		@Override
 		public void parseProcess(Element processElement, ProcessDefinitionEntity processDefinition) {
@@ -131,7 +135,7 @@
 			}
 		}
 	}
-	
+
     /**
      * If there is a WorkflowException object in the execution, this method
      * removes it (saving a copy of it in a different variable).
@@ -147,8 +151,7 @@
 					saveName = "SavedWorkflowException" + (++index);
 				}
 
-				BPMNLogger.debug((String)execution.getVariable("isDebugLogEnabled"),
-					"WorkflowExceptionResetTask is moving WorkflowException to " + saveName);
+				logger.debug("WorkflowExceptionResetTask is moving WorkflowException to " + saveName);
 
 				execution.setVariable(saveName, workflowException);
 				execution.setVariable("WorkflowException", null);
@@ -163,8 +166,7 @@
 	public static class WorkflowExceptionTriggerTask implements JavaDelegate {
 		public void execute(DelegateExecution execution) throws Exception {
 			if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
-				BPMNLogger.debug((String)execution.getVariable("isDebugLogEnabled"),
-					"WorkflowExceptionTriggerTask is generating a MSOWorkflowException event");
+				logger.debug("WorkflowExceptionTriggerTask is generating a MSOWorkflowException event");
 				throw new BpmnError("MSOWorkflowException");
 			}
 		}
diff --git a/bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/common/VnfAdapterRestV1IT.java b/bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/common/VnfAdapterRestV1IT.java
index ad08f8b..1ef864b 100644
--- a/bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/common/VnfAdapterRestV1IT.java
+++ b/bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/common/VnfAdapterRestV1IT.java
@@ -59,6 +59,7 @@
 	private final String CREATE_VF_MODULE_REQUEST =
 		"<createVfModuleRequest>" + EOL +
 		"  <cloudSiteId>cloudSiteId</cloudSiteId>" + EOL +
+		"  <cloudOwner>cloudOwner</cloudOwner>" + EOL +
 		"  <tenantId>tenantId</tenantId>" + EOL +
 		"  <vnfId>vnfId</vnfId>" + EOL +
 		"  <vfModuleName>vfModuleName</vfModuleName>" + EOL +
@@ -94,6 +95,7 @@
 	private final String UPDATE_VF_MODULE_REQUEST =
 		"<updateVfModuleRequest>" + EOL +
 		"  <cloudSiteId>cloudSiteId</cloudSiteId>" + EOL +
+		"  <cloudOwner>cloudOwner</cloudOwner>" + EOL +
 		"  <tenantId>tenantId</tenantId>" + EOL +
 		"  <vnfId>vnfId</vnfId>" + EOL +
 		"  <vfModuleName>vfModuleName</vfModuleName>" + EOL +
@@ -130,6 +132,7 @@
 	private final String DELETE_VF_MODULE_REQUEST =
 		"<deleteVfModuleRequest>" + EOL +
 		"  <cloudSiteId>cloudSiteId</cloudSiteId>" + EOL +
+		"  <cloudOwner>cloudOwner</cloudOwner>" + EOL +
 		"  <tenantId>tenantId</tenantId>" + EOL +
 		"  <vnfId>vnfId</vnfId>" + EOL +
 		"  <vfModuleId>vfModuleId</vfModuleId>" + EOL +
@@ -150,6 +153,7 @@
 			"  <skipAAI>true</skipAAI>" + EOL +
 			"  <vfModuleRollback>" + EOL +
 			"    <cloudSiteId>cloudSiteId</cloudSiteId>" + EOL +
+		    "    <cloudOwner>cloudOwner</cloudOwner>" + EOL +
 			"    <tenantId>tenantId</tenantId>" + EOL +
 			"    <vnfId>vnfId</vnfId>" + EOL +
 			"    <vfModuleId>vfModuleId</vfModuleId>" + EOL +
@@ -186,6 +190,7 @@
 			"    <vfModuleStackId>vfModuleStackId</vfModuleStackId>" + EOL +
 			"    <vfModuleCreated>true</vfModuleCreated>" + EOL +
 			"    <tenantId>tenantId</tenantId>" + EOL +
+		    "    <cloudOwner>cloudOwner</cloudOwner>" + EOL +
 			"    <cloudSiteId>cloudSiteId</cloudSiteId>" + EOL +
 			"    <msoRequest>" + EOL +
 			"      <requestId>requestId</requestId>" + EOL +
diff --git a/bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/common/WorkflowTest.java b/bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/common/WorkflowTest.java
index 117d3b2..eed2978 100644
--- a/bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/common/WorkflowTest.java
+++ b/bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/common/WorkflowTest.java
@@ -1100,6 +1100,10 @@
 				"/tns:createVnfNotification/tns:rollback/tns:cloudSiteId/text()");
 			rollback.setCloudSiteId(cloudSiteId);
 
+			String cloudOwner = xpathTool.evaluate(
+				"/tns:createVnfNotification/tns:rollback/tns:cloudOwner/text()");
+			rollback.setCloudOwner(cloudOwner);
+
 			String requestId = xpathTool.evaluate(
 				"/tns:createVnfNotification/tns:rollback/tns:msoRequest/tns:requestId/text()");
 			String serviceInstanceId = xpathTool.evaluate(
@@ -1276,6 +1280,10 @@
 				"/tns:updateVnfNotification/tns:rollback/tns:cloudSiteId/text()");
 			rollback.setCloudSiteId(cloudSiteId);
 
+			String cloudOwner = xpathTool.evaluate(
+				"/tns:updateVnfNotification/tns:rollback/tns:cloudOwner/text()");
+			rollback.setCloudOwner(cloudOwner);
+
 			String requestId = xpathTool.evaluate(
 				"/tns:updateVnfNotification/tns:rollback/tns:msoRequest/tns:requestId/text()");
 			String serviceInstanceId = xpathTool.evaluate(
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AbstractCDSProcessingBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AbstractCDSProcessingBB.bpmn
new file mode 100644
index 0000000..4fcf13d
--- /dev/null
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AbstractCDSProcessingBB.bpmn
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1l7m222" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.1">
+  <bpmn:process id="AbstractCDSProcessingBB" name="Abstract CDS Processing BB" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1">
+      <bpmn:outgoing>SequenceFlow_02v5z4h</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_02v5z4h" sourceRef="StartEvent_1" targetRef="Task_06n9c9v" />
+    <bpmn:sequenceFlow id="SequenceFlow_0gksy4i" sourceRef="Task_06n9c9v" targetRef="Task_0kjfr5o" />
+    <bpmn:sequenceFlow id="SequenceFlow_161g9uz" sourceRef="Task_0kjfr5o" targetRef="EndEvent_1h3epjc" />
+    <bpmn:endEvent id="EndEvent_1h3epjc">
+      <bpmn:incoming>SequenceFlow_161g9uz</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:serviceTask id="Task_06n9c9v" name="Get Required data to call CDS Client" camunda:expression="${AbstractCDSProcessingBBUtils.constructExecutionServiceInputObject(execution)}">
+      <bpmn:incoming>SequenceFlow_02v5z4h</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0gksy4i</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:serviceTask id="Task_0kjfr5o" name="CDS&#10;(Call SelfServiceAPI)&#10;" camunda:expression="${AbstractCDSProcessingBBUtils.sendRequestToCDSClient(execution)}">
+      <bpmn:incoming>SequenceFlow_0gksy4i</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_161g9uz</bpmn:outgoing>
+    </bpmn:serviceTask>
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="AbstractCDSProcessingBB">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="124" y="264" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_02v5z4h_di" bpmnElement="SequenceFlow_02v5z4h">
+        <di:waypoint x="160" y="282" />
+        <di:waypoint x="223" y="282" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gksy4i_di" bpmnElement="SequenceFlow_0gksy4i">
+        <di:waypoint x="323" y="282" />
+        <di:waypoint x="385" y="282" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_161g9uz_di" bpmnElement="SequenceFlow_161g9uz">
+        <di:waypoint x="485" y="282" />
+        <di:waypoint x="578" y="282" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1h3epjc_di" bpmnElement="EndEvent_1h3epjc">
+        <dc:Bounds x="578" y="264" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_16es7z5_di" bpmnElement="Task_06n9c9v">
+        <dc:Bounds x="223" y="242" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_18soa9e_di" bpmnElement="Task_0kjfr5o">
+        <dc:Bounds x="385" y="242" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ConfigAssignVnfBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ConfigAssignVnfBB.bpmn
new file mode 100644
index 0000000..9892fbd
--- /dev/null
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ConfigAssignVnfBB.bpmn
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1ahlzqg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.1">
+  <bpmn:process id="ConfigAssignVnfBB" name="ConfigAssignVnfBB" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1">
+      <bpmn:outgoing>SequenceFlow_0gmfit3</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0gmfit3" sourceRef="StartEvent_1" targetRef="Task_0bhf6tp" />
+    <bpmn:endEvent id="EndEvent_0lgvk82">
+      <bpmn:incoming>SequenceFlow_1mkhog2</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1mkhog2" sourceRef="Task_1hs1mn0" targetRef="EndEvent_0lgvk82" />
+    <bpmn:callActivity id="CallActivity_1gfzi2g" name="Abstract CDS&#10;(CDS Call)&#10;" calledElement="AbstractCDSProcessingBB">
+      <bpmn:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="CDSStatus" target="CDSStatus" />
+        <camunda:in source="executionObject" target="executionObject" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_05qembo</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0cvsnuu</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:serviceTask id="Task_1hs1mn0" name="Update AAI&#10;(VNF)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusConfigAssignedVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+      <bpmn:incoming>SequenceFlow_07tqu82</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1mkhog2</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_05qembo" sourceRef="Task_0bhf6tp" targetRef="CallActivity_1gfzi2g" />
+    <bpmn:serviceTask id="Task_0bhf6tp" name="PreProcess Abstract CDS Processing" camunda:expression="${ConfigAssignVnf.PreProcessAbstractCDSProcessing(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+      <bpmn:incoming>SequenceFlow_0gmfit3</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_05qembo</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_13q340y" default="SequenceFlow_15gxql1">
+      <bpmn:incoming>SequenceFlow_0cvsnuu</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_07tqu82</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_15gxql1</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0cvsnuu" sourceRef="CallActivity_1gfzi2g" targetRef="ExclusiveGateway_13q340y" />
+    <bpmn:sequenceFlow id="SequenceFlow_07tqu82" name="success" sourceRef="ExclusiveGateway_13q340y" targetRef="Task_1hs1mn0">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("CDSStatus").equals("Success")}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:endEvent id="EndEvent_0mnaj50">
+      <bpmn:incoming>SequenceFlow_15gxql1</bpmn:incoming>
+      <bpmn:errorEventDefinition id="ErrorEventDefinition_1s1hqgm" errorRef="Error_0aovtfv" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_15gxql1" sourceRef="ExclusiveGateway_13q340y" targetRef="EndEvent_0mnaj50" />
+  </bpmn:process>
+  <bpmn:error id="Error_0aovtfv" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ConfigAssignVnfBB">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="507" y="187" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gmfit3_di" bpmnElement="SequenceFlow_0gmfit3">
+        <di:waypoint x="543" y="205" />
+        <di:waypoint x="614" y="205" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0lgvk82_di" bpmnElement="EndEvent_0lgvk82">
+        <dc:Bounds x="1307" y="187" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mkhog2_di" bpmnElement="SequenceFlow_1mkhog2">
+        <di:waypoint x="1218" y="205" />
+        <di:waypoint x="1307" y="205" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1gfzi2g_di" bpmnElement="CallActivity_1gfzi2g">
+        <dc:Bounds x="788" y="165" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0404s6a_di" bpmnElement="Task_1hs1mn0">
+        <dc:Bounds x="1118" y="165" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_05qembo_di" bpmnElement="SequenceFlow_05qembo">
+        <di:waypoint x="714" y="205" />
+        <di:waypoint x="788" y="205" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_01mv1si_di" bpmnElement="Task_0bhf6tp">
+        <dc:Bounds x="614" y="165" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_13q340y_di" bpmnElement="ExclusiveGateway_13q340y" isMarkerVisible="true">
+        <dc:Bounds x="978" y="180" width="50" height="50" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cvsnuu_di" bpmnElement="SequenceFlow_0cvsnuu">
+        <di:waypoint x="888" y="205" />
+        <di:waypoint x="978" y="205" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07tqu82_di" bpmnElement="SequenceFlow_07tqu82">
+        <di:waypoint x="1028" y="205" />
+        <di:waypoint x="1118" y="205" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1053" y="187" width="41" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0mnaj50_di" bpmnElement="EndEvent_0mnaj50">
+        <dc:Bounds x="985" y="327" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15gxql1_di" bpmnElement="SequenceFlow_15gxql1">
+        <di:waypoint x="1003" y="230" />
+        <di:waypoint x="1003" y="327" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/WorkflowActionBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/WorkflowActionBB.bpmn
index 2437476..76ca2a89 100644
--- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/WorkflowActionBB.bpmn
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/WorkflowActionBB.bpmn
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.7.2">
   <bpmn:process id="WorkflowActionBB" name="WorkflowActionBB" isExecutable="true">
     <bpmn:startEvent id="Start_WorkflowActionBB" name="start">
       <bpmn:outgoing>SequenceFlow_15s0okp</bpmn:outgoing>
@@ -88,7 +88,7 @@
       </bpmn:serviceTask>
     </bpmn:subProcess>
     <bpmn:sequenceFlow id="SequenceFlow_0v588sm" name="Rollback = true" sourceRef="ExclusiveGateway_Finished" targetRef="Task_RollbackExecutionPath">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("handlingCode")=="Rollback"||execution.getVariable("handlingCode")=="RollbackToAssigned"}]]></bpmn:conditionExpression>
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("handlingCode")=="Rollback"||execution.getVariable("handlingCode")=="RollbackToAssigned"||execution.getVariable("handlingCode")=="RollbackToCreated"}]]></bpmn:conditionExpression>
     </bpmn:sequenceFlow>
     <bpmn:sequenceFlow id="SequenceFlow_1atzsgn" sourceRef="Task_RollbackExecutionPath" targetRef="Task_SelectBB">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("isRollbackNeeded")==true}]]></bpmn:conditionExpression>
diff --git a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java
index cd2b46b..6aa5cf3 100644
--- a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java
+++ b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java
@@ -349,7 +349,7 @@
 		ServiceInstance serviceInstance = null;
 
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
@@ -367,7 +367,7 @@
 		Collection collection = null;
 
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			collection = serviceInstance.getCollection();
 
 			if (collection == null) {
@@ -442,7 +442,7 @@
 		ServiceInstance serviceInstance = null;
 
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
@@ -487,7 +487,7 @@
 		ServiceInstance serviceInstance = null;
 
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
@@ -522,7 +522,7 @@
 		GenericVnf genericVnf = null;
 
 		try {
-			genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 		} catch(BBObjectNotFoundException e) {
 			genericVnf = setGenericVnf();
 		}
@@ -550,7 +550,7 @@
 		GenericVnf genericVnf = null;
 
 		try {
-			genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 		} catch(BBObjectNotFoundException e) {
 			genericVnf = setGenericVnf();
 		}
@@ -614,7 +614,7 @@
 		ServiceInstance serviceInstance = null;
 
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy
index ccd9f9b..cf53aff 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy
@@ -68,6 +68,7 @@
 		execution.setVariable('DELVfModVol_vnfType', null)
 		execution.setVariable('DELVfModVol_serviceId', null)
 		execution.setVariable('DELVfModVol_cloudRegion', null)
+		execution.setVariable('DELVfModVol_cloudOwner', null)
 		execution.setVariable('DELVfModVol_tenantId', null)
 		execution.setVariable('DELVfModVol_volumeParams', null)
 		execution.setVariable('DELVfModVol_volumeGroupHeatStackId', null)
@@ -141,6 +142,7 @@
 		execution.setVariable('DELVfModVol_volumeOutputs', utils.getNodeXml(request, 'volume-outputs', false))
 		execution.setVariable('DELVfModVol_volumeParams', utils.getNodeXml(request, 'volume-params'))
 		execution.setVariable('DELVfModVol_cloudRegion', utils.getNodeText(request, 'aic-cloud-region'))
+		execution.setVariable('DELVfModVol_cloudOwner', utils.getNodeText(request, 'cloud-owner'))
 
 		setBasicDBAuthHeader(execution, isDebugLogEnabled)
 
@@ -308,6 +310,7 @@
 
 	public void prepareVnfAdapterDeleteRequest(DelegateExecution execution, isDebugLogEnabled) {
 		def cloudRegion = execution.getVariable('DELVfModVol_cloudRegion')
+		def cloudOwner = execution.getVariable('DELVfModVol_cloudOwner')
 		def tenantId = execution.getVariable('DELVfModVol_tenantId')
 		def volumeGroupId = execution.getVariable('DELVfModVol_volumeGroupId')
 		def volumeGroupHeatStackId = execution.getVariable('DELVfModVol_volumeGroupHeatStackId')
@@ -324,6 +327,7 @@
 		String vnfAdapterRestRequest = """
 			<deleteVolumeGroupRequest>
 				<cloudSiteId>${MsoUtils.xmlEscape(cloudRegion)}</cloudSiteId>
+				<cloudOwner>${MsoUtils.xmlEscape(cloudOwner)}</cloudOwner>
 				<tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
 				<volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId>
 				<volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupHeatStackId)}</volumeGroupStackId>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy
index c03f9f9..7a606d5 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy
@@ -982,6 +982,8 @@
 		//Get variables
 		//cloudSiteId
 		def cloudSiteId = execution.getVariable("DCVFM_cloudSiteId")
+		//cloudOwner
+		def cloudOwner = execution.getVariable("DCVFM_cloudOwner")
 		//tenantId
 		def tenantId = execution.getVariable("DCVFM_tenantId")
 		//vnfType
@@ -1070,6 +1072,7 @@
 		String createVnfARequest = """
 		<createVfModuleRequest>
 		<cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
+		<cloudOwner>${MsoUtils.xmlEscape(cloudOwner)}</cloudOwner>
 		<tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
 		<vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
 		<vnfName>${MsoUtils.xmlEscape(vnfName)}</vnfName>
@@ -1233,6 +1236,7 @@
 		def vfModuleModelName = execution.getVariable("DCVFM_vfModuleModelName")
 		def vnfId = execution.getVariable("DCVFM_vnfId")
 		def cloudSiteId = execution.getVariable("DCVFM_cloudSiteId")
+		def cloudOwner = execution.getVariable("DCVFM_cloudOwner")
 		def sdncVersion = execution.getVariable("DCVFM_sdncVersion")
 		def serviceModelInfo = execution.getVariable("serviceModelInfo")
 		def vnfModelInfo = execution.getVariable("vnfModelInfo")
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy
index a6040ac..07ffa38 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy
@@ -92,6 +92,8 @@
 			execution.setVariable("DCVFMR_vfModuleModelName", vfModuleModelName)
 			String cloudSiteId = rollbackData.get("VFMODULE", "aiccloudregion")
 			execution.setVariable("DCVFMR_cloudSiteId", cloudSiteId)
+			String cloudOwner = rollbackData.get("VFMODULE", "cloudowner")
+			execution.setVariable("DCVFMR_cloudOwner", cloudOwner)
 			String heatStackId = rollbackData.get("VFMODULE", "heatstackid")
 			execution.setVariable("DCVFMR_heatStackId", heatStackId)
 			String requestId = rollbackData.get("VFMODULE", "msorequestid")
@@ -358,6 +360,7 @@
 		String origRequestId = execution.getVariable("DCVFMR_requestId")
 		String srvInstId = execution.getVariable("DCVFMR_serviceInstanceId")
 		String aicCloudRegion = execution.getVariable("DCVFMR_cloudSiteId")
+		String cloudOwner = execution.getVariable("DCVFMR_cloudOwner")
 		String vnfId = execution.getVariable("DCVFMR_vnfId")
 		String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
 		String vfModuleStackId = execution.getVariable("DCVFMR_heatStackId")
@@ -373,6 +376,7 @@
 		String request = """
 			<deleteVfModuleRequest>
 			    <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
+			    <cloudOwner>${MsoUtils.xmlEscape(cloudOwner)}</cloudOwner>
 			    <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
 			    <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
 			    <vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy
index bedf5e0..05ccfa0 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy
@@ -111,6 +111,8 @@
 				execution.setVariable("tenantId", tenantId)
 				String cloudSiteId = jsonUtil.getJsonValue(cloudConfiguration, "lcpCloudRegionId")
 				execution.setVariable("cloudSiteId", cloudSiteId)
+				String cloudOwner = jsonUtil.getJsonValue(cloudConfiguration, "cloudOwner")
+				execution.setVariable("cloudOwner", cloudOwner)
 				// Source is HARDCODED
 				String source = "VID"
 				execution.setVariable("source", source)
@@ -176,6 +178,8 @@
 				execution.setVariable("vfModuleModelName", vfModuleModelName)
 				String cloudSiteId = utils.getNodeText(xml, "aic-cloud-region")
 				execution.setVariable("cloudSiteId", cloudSiteId)
+				String cloudOwner = utils.getNodeText(xml, "cloud-owner")
+				execution.setVariable("cloudOwner", cloudOwner)
 			}
 
 			// formulate the request for PrepareUpdateAAIVfModule
@@ -281,6 +285,7 @@
 		def origRequestId = execution.getVariable('requestId')
 		def srvInstId = execution.getVariable("serviceInstanceId")
 		def aicCloudRegion = execution.getVariable("cloudSiteId")
+		def cloudOwner = execution.getVariable("cloudOwner")
 		def vnfId = execution.getVariable("vnfId")
 		def vfModuleId = execution.getVariable("vfModuleId")
 		def vfModuleStackId = execution.getVariable('DoDVfMod_heatStackId')
@@ -296,6 +301,7 @@
 		String request = """
 			<deleteVfModuleRequest>
 			    <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
+			    <cloudOwner>${MsoUtils.xmlEscape(cloudOwner)}</cloudOwner>
 			    <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
 			    <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
 			    <vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy
index 3be52f5..47aec46 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy
@@ -79,6 +79,9 @@
 				String cloudSiteId = execution.getVariable("lcpCloudRegionId")
 				execution.setVariable("cloudSiteId", cloudSiteId)
 				logger.debug("cloudSiteId: " + cloudSiteId)
+				String cloudOwner = execution.getVariable("cloudOwner")
+				execution.setVariable("cloudOwner", cloudOwner)
+				logger.debug("cloudOwner: " + cloudOwner)
 				// Source is HARDCODED
 				String source = "VID"
 				execution.setVariable("source", source)
@@ -363,6 +366,7 @@
 		def origRequestId = execution.getVariable('requestId')
 		def srvInstId = execution.getVariable("serviceInstanceId")
 		def aicCloudRegion = execution.getVariable("cloudSiteId")
+		def cloudOwner = execution.getVariable("cloudOwner")
 		def vnfId = execution.getVariable("vnfId")
 		def vfModuleId = execution.getVariable("vfModuleId")
 		def vfModuleStackId = execution.getVariable('DDVMFV_heatStackId')
@@ -378,6 +382,7 @@
 		String request = """
 			<deleteVfModuleRequest>
 			    <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
+			    <cloudOwner>${MsoUtils.xmlEscape(cloudOwner)}</cloudOwner>
 			    <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
 			    <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
 			    <vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy
index 787b582..6acf222 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy
@@ -217,6 +217,7 @@
 	 */
 	public void prepareVnfAdapterDeleteRequest(DelegateExecution execution, isDebugLogEnabled) {
 		def cloudRegion = execution.getVariable(prefix+'aicCloudRegion')
+		def cloudOwner = execution.getVariable(prefix+'cloudOwner')
 		def tenantId = execution.getVariable('tenantId')										// input parameter (optional) - see preProcessRequest
 		def volumeGroupId = execution.getVariable('volumeGroupId')								// input parameter (required)
 		def volumeGroupHeatStackId = execution.getVariable(prefix+'volumeGroupHeatStackId')		// from AAI query volume group
@@ -233,6 +234,7 @@
 		String vnfAdapterRestRequest = """
 			<deleteVolumeGroupRequest>
 				<cloudSiteId>${MsoUtils.xmlEscape(cloudRegion)}</cloudSiteId>
+				<cloudOwner>${MsoUtils.xmlEscape(cloudOwner)}</cloudOwner>
 				<tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
 				<volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId>
 				<volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupHeatStackId)}</volumeGroupStackId>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy
index a17dc9d..013f66b 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy
@@ -143,6 +143,12 @@
 				execution.setVariable("DOUPVfMod_aicCloudRegion", cloudSiteId)
 
 				logger.debug("cloudSiteId: " + cloudSiteId)
+
+				//cloudOwner
+				def cloudOwner = execution.getVariable("cloudOwner")
+				execution.setVariable("DOUPVfMod_cloudOwner", cloudOwner)
+				logger.debug("cloudOwner: " + cloudOwner)
+
 				//vnfType
 				def vnfType = execution.getVariable("vnfType")
 				execution.setVariable("DOUPVfMod_vnfType", vnfType)
@@ -304,6 +310,7 @@
 				execution.setVariable('DOUPVfMod_modelCustomizationUuid', getNodeTextForce(vnfInputs, 'model-customization-id'))
 				execution.setVariable('DOUPVfMod_serviceId', getRequiredNodeText(execution, vnfInputs, 'service-id'))
 				execution.setVariable('DOUPVfMod_aicCloudRegion', getRequiredNodeText(execution, vnfInputs, 'aic-cloud-region'))
+				execution.setVariable('DOUPVfMod_cloudOwner', getRequiredNodeText(execution, vnfInputs, 'cloud-owner'))
 				execution.setVariable('DOUPVfMod_tenantId', getRequiredNodeText(execution, vnfInputs, 'tenant-id'))
 				//isBaseVfModule
 				def isBaseVfModule = "false"
@@ -640,6 +647,7 @@
 				heatStackId = vfModule.getHeatStackId()
 			}			
 			def cloudId = execution.getVariable('DOUPVfMod_aicCloudRegion')
+			def cloudOwner = execution.getVariable('DOUPVfMod_cloudOwner')
 			def vnfType = execution.getVariable('DOUPVfMod_vnfType')
 			def vnfName = execution.getVariable('DOUPVfMod_vnfName')
 			def vfModuleModelName = execution.getVariable('DOUPVfMod_vfModuleModelName')
@@ -672,6 +680,7 @@
 			String vnfAdapterRestRequest = """
 				<updateVfModuleRequest>
 					<cloudSiteId>${MsoUtils.xmlEscape(cloudId)}</cloudSiteId>
+					<cloudOwner>${MsoUtils.xmlEscape(cloudOwner)}</cloudOwner>
 					<tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
 					<vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
 					<vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy
index 0c32947..3e9b934 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy
@@ -100,6 +100,7 @@
 			execution.setVariable('UPDVfModVol_vnfType', getRequiredNodeText(execution, volumeInputs, 'vnf-type'))
 			execution.setVariable('UPDVfModVol_serviceId', getRequiredNodeText(execution, volumeInputs, 'service-id'))
 			execution.setVariable('UPDVfModVol_aicCloudRegion', getRequiredNodeText(execution, volumeInputs, 'aic-cloud-region'))
+			execution.setVariable('UPDVfModVol_cloudOwner', getRequiredNodeText(execution, volumeInputs, 'cloud-owner'))
 			execution.setVariable('UPDVfModVol_tenantId', getRequiredNodeText(execution, volumeInputs, 'tenant-id'))
 
 			def volumeParams = utils.getNodeXml(request, 'volume-params')
@@ -255,6 +256,7 @@
 			String vnfAdapterRestRequest = """
 				<updateVolumeGroupRequest>
 					<cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
+					<cloudOwner>${MsoUtils.xmlEscape(cloudOwner)}</cloudOwner>
 					<tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
 					<volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId>
 					<volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupHeatStackId)}</volumeGroupStackId>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy
index 361d6a2..ab7b659 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy
@@ -135,6 +135,7 @@
         execution.setVariable('UPDVfModVol_vnfVersion', getRequiredNodeText(execution, volumeInputs, 'asdc-service-model-version'))
         execution.setVariable('UPDVfModVol_serviceId', utils.getNodeText(volumeInputs, 'service-id'))
         execution.setVariable('UPDVfModVol_aicCloudRegion', getRequiredNodeText(execution, volumeInputs, 'aic-cloud-region'))
+        execution.setVariable('UPDVfModVol_cloudRegion', getRequiredNodeText(execution, volumeInputs, 'cloud-owner'))
         execution.setVariable('UPDVfModVol_tenantId', getRequiredNodeText(execution, volumeInputs, 'tenant-id'))
         //execution.setVariable('UPDVfModVol_modelCustomizationId', getRequiredNodeText(execution, volumeInputs, 'model-customization-id'))
 
@@ -328,6 +329,7 @@
         String vnfAdapterRestRequest = """
 			<updateVolumeGroupRequest>
 				<cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
+				<cloudOwner>${MsoUtils.xmlEscape(cloudOwner)}</cloudOwner>
 				<tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
 				<vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
 				<vnfName>${MsoUtils.xmlEscape(vnfName)}</vnfName>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollbackTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollbackTest.groovy
index e7ebe23..fc5960b 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollbackTest.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollbackTest.groovy
@@ -165,6 +165,7 @@
         when(mockExecution.getVariable("prefix")).thenReturn(prefix)
         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
         when(mockExecution.getVariable("DCVFM_cloudSiteId")).thenReturn("12345")
+        when(mockExecution.getVariable("DCVFM_cloudOwner")).thenReturn("CloudOwner")
         when(mockExecution.getVariable("rollbackData")).thenReturn(new RollbackData())
         List fqdnList = new ArrayList()
         fqdnList.add("test")
@@ -194,6 +195,7 @@
         when(mockExecution.getVariable("prefix")).thenReturn(prefix)
         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
         when(mockExecution.getVariable("DCVFM_cloudSiteId")).thenReturn("12345")
+        when(mockExecution.getVariable("DCVFM_cloudOwner")).thenReturn("CloudOwner")
         when(mockExecution.getVariable("rollbackData")).thenReturn(new RollbackData())
         List fqdnList = new ArrayList()
         fqdnList.add("test")
@@ -223,6 +225,7 @@
         when(mockExecution.getVariable("prefix")).thenReturn(prefix)
         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
         when(mockExecution.getVariable("DCVFM_cloudSiteId")).thenReturn("12345")
+        when(mockExecution.getVariable("DCVFM_cloudOwner")).thenReturn("CloudOwner")
         when(mockExecution.getVariable("rollbackData")).thenReturn(new RollbackData())
         List fqdnList = new ArrayList()
         fqdnList.add("test")
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModuleTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModuleTest.groovy
index d635b23..59a2b0e 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModuleTest.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModuleTest.groovy
@@ -182,6 +182,7 @@
         ExecutionEntity mockExecution = setupMock()
         when(mockExecution.getVariable("prefix")).thenReturn(prefix)
         when(mockExecution.getVariable(prefix + "aicCloudRegion")).thenReturn("RDM2WAGPLCP")
+        when(mockExecution.getVariable(prefix + "cloudRegion")).thenReturn("CloudOwner")
         when(mockExecution.getVariable(prefix + "vfModuleId")).thenReturn("cb510af0-5b21-4bc7-86d9-323cb396ce32")
         when(mockExecution.getVariable(prefix + "volumeGroupStackId")).thenReturn("12345")
         when(mockExecution.getVariable(prefix + "vfModuleName")).thenReturn("PCRF::module-0-2")
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1Test.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1Test.groovy
index 06ae576..8af15de 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1Test.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1Test.groovy
@@ -143,6 +143,7 @@
         when(mockExecution.getVariable("prefix")).thenReturn(prefix)
         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
         when(mockExecution.getVariable(prefix + "aicCloudRegion")).thenReturn("RDM2WAGPLCP")
+        when(mockExecution.getVariable(prefix + "cloudOwner")).thenReturn("CloudOwner")
         when(mockExecution.getVariable(prefix + "tenantId")).thenReturn("")
         VolumeGroup volumeGroup = new VolumeGroup();
         volumeGroup.setHeatStackId("heatStackId")
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICommonTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICommonTasks.java
index 6571971..bdb46e8 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICommonTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICommonTasks.java
@@ -41,7 +41,7 @@
 	
 	public Optional<String> getServiceType(BuildingBlockExecution execution) {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID)); 
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID); 
 
 			ModelInfoServiceInstance model = serviceInstance.getModelInfoServiceInstance();
 			if (model != null) {
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICreateTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICreateTasks.java
index 760f623..dad84e5 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICreateTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICreateTasks.java
@@ -104,7 +104,7 @@
 
 	public void createServiceInstance(BuildingBlockExecution execution) {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			Customer customer = execution.getGeneralBuildingBlock().getCustomer();
 			aaiSIResources.createServiceInstance(serviceInstance, customer);
 		} catch (Exception ex) {
@@ -115,7 +115,7 @@
     public void createServiceSubscription(BuildingBlockExecution execution){
         try{
             ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution,
-                    ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+                    ResourceKey.SERVICE_INSTANCE_ID);
             Customer customer = execution.getGeneralBuildingBlock().getCustomer();
             if (null == customer) {
                 String errorMessage = "Exception in creating ServiceSubscription. Customer not present for ServiceInstanceID: "
@@ -135,7 +135,7 @@
 
 	public void createProject(BuildingBlockExecution execution) {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			Project project = serviceInstance.getProject();
 			if(project != null) {
 				if (project.getProjectName() == null || "".equals(project.getProjectName())) {
@@ -151,7 +151,7 @@
 
 	public void createOwningEntity(BuildingBlockExecution execution) {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			OwningEntity owningEntity = serviceInstance.getOwningEntity();
 			String owningEntityId = owningEntity.getOwningEntityId();
 			String owningEntityName = owningEntity.getOwningEntityName();
@@ -187,8 +187,8 @@
 
 	public void createVnf(BuildingBlockExecution execution) {
 		try {
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			execution.setVariable("callHoming", Boolean.TRUE.equals(vnf.isCallHoming()));
 			aaiVnfResources.createVnfandConnectServiceInstance(vnf, serviceInstance);
 		} catch (Exception ex) {
@@ -198,7 +198,7 @@
 	
 	public void createPlatform(BuildingBlockExecution execution) {
 		try {
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			Platform platform = vnf.getPlatform();
 			if(platform != null) {
 				if (platform.getPlatformName() == null || "".equals(platform.getPlatformName())) {
@@ -215,7 +215,7 @@
 	
 	public void createLineOfBusiness(BuildingBlockExecution execution) {
 		try {
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			LineOfBusiness lineOfBusiness = vnf.getLineOfBusiness();
 			if(lineOfBusiness != null) {
 				if (lineOfBusiness.getLineOfBusinessName() == null || "".equals(lineOfBusiness.getLineOfBusinessName())) {
@@ -233,8 +233,8 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			
-			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
-			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
 			aaiVolumeGroupResources.createVolumeGroup(volumeGroup, cloudRegion);
 			aaiVolumeGroupResources.connectVolumeGroupToVnf(genericVnf, volumeGroup, cloudRegion);
@@ -246,8 +246,8 @@
 	
 	public void createVfModule(BuildingBlockExecution execution) {
 		try {
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			int moduleIndex = 0;
 			if (vfModule.getModelInfoVfModule() != null && !Boolean.TRUE.equals(vfModule.getModelInfoVfModule().getIsBaseBoolean())) {
 				moduleIndex = this.getLowestUnusedVfModuleIndexFromAAIVnfResponse(vnf, vfModule);
@@ -266,11 +266,11 @@
 	 */
 	public void connectVfModuleToVolumeGroup(BuildingBlockExecution execution) {
 		try {
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			VolumeGroup volumeGroup = null;
 			try{
-				volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+				volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
 			} catch (BBObjectNotFoundException e){
 				logger.info("VolumeGroup not found. Skipping Connect between VfModule and VolumeGroup");
 			}
@@ -289,8 +289,8 @@
 	 */
 	public void createNetwork(BuildingBlockExecution execution) {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			//set default to false. ToBe updated by SDNC
 			l3network.setIsBoundToVpn(false);
 			//define is bound to vpn flag as true if NEUTRON_NETWORK_TYPE is PROVIDER
@@ -319,7 +319,7 @@
 	 */
 	public void createNetworkCollection(BuildingBlockExecution execution) {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			Collection networkCollection =  serviceInstance.getCollection();
 			//pass name generated for NetworkCollection/NetworkCollectionInstanceGroup in previous step of the BB flow
 			//put shell in AAI
@@ -337,7 +337,7 @@
 	 */
 	public void createNetworkCollectionInstanceGroup(BuildingBlockExecution execution) {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			InstanceGroup instanceGroup =  serviceInstance.getCollection().getInstanceGroup();
 			//set name generated for NetworkCollection/NetworkCollectionInstanceGroup in previous step of the BB flow
 			instanceGroup.setInstanceGroupName(execution.getVariable(NETWORK_COLLECTION_NAME));
@@ -356,7 +356,7 @@
 	 */
 	public void connectNetworkToTenant(BuildingBlockExecution execution) {
 		try {
-			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			aaiNetworkResources.connectNetworkToTenant(l3network, execution.getGeneralBuildingBlock().getCloudRegion());
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -370,7 +370,7 @@
 	 */
 	public void connectNetworkToCloudRegion(BuildingBlockExecution execution) {
 		try {
-			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			aaiNetworkResources.connectNetworkToCloudRegion(l3network, execution.getGeneralBuildingBlock().getCloudRegion());
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -390,7 +390,7 @@
 				cloudRegionsToSkip = Arrays.stream(cloudRegions).anyMatch(execution.getGeneralBuildingBlock().getCloudRegion().getLcpCloudRegionId()::equals);
 			}
 			if(!cloudRegionsToSkip) {
-				GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+				GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 				aaiVnfResources.connectVnfToCloudRegion(vnf, execution.getGeneralBuildingBlock().getCloudRegion());
 			}
 		} catch (Exception ex) {
@@ -405,7 +405,7 @@
 	 */
 	public void connectVnfToTenant(BuildingBlockExecution execution) {
 		try {
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			aaiVnfResources.connectVnfToTenant(vnf, execution.getGeneralBuildingBlock().getCloudRegion());
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -419,8 +419,8 @@
 	 */
 	public void connectNetworkToNetworkCollectionServiceInstance(BuildingBlockExecution execution) {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			aaiNetworkResources.connectNetworkToNetworkCollectionServiceInstance(l3network, serviceInstance);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -434,8 +434,8 @@
 	 */
 	public void connectNetworkToNetworkCollectionInstanceGroup(BuildingBlockExecution execution) {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			//connect network only if Instance Group / Collection objects exist
 			if (serviceInstance.getCollection() != null && serviceInstance.getCollection().getInstanceGroup() != null)
 				aaiNetworkResources.connectNetworkToNetworkCollectionInstanceGroup(l3network, serviceInstance.getCollection().getInstanceGroup());
@@ -446,7 +446,7 @@
 	
 	public void createConfiguration(BuildingBlockExecution execution){
 		try{
-			Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID, execution.getLookupMap().get(ResourceKey.CONFIGURATION_ID));
+			Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID);
 			aaiConfigurationResources.createConfiguration(configuration);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -455,8 +455,8 @@
 	
 	public void createInstanceGroupVnf(BuildingBlockExecution execution){
 		try{
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			InstanceGroup instanceGroup = extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID, execution.getLookupMap().get(ResourceKey.INSTANCE_GROUP_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			InstanceGroup instanceGroup = extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID);
 			aaiInstanceGroupResources.createInstanceGroupandConnectServiceInstance(instanceGroup, serviceInstance);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIDeleteTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIDeleteTasks.java
index 6e4a5f3..095fd7f 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIDeleteTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIDeleteTasks.java
@@ -82,8 +82,8 @@
 	private AAIInstanceGroupResources aaiInstanceGroupResources;
 	
 	public void deleteVfModule(BuildingBlockExecution execution) throws Exception {		
-		GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
-		VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+		GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+		VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 		
 		execution.setVariable("aaiVfModuleRollback", false);
 		try {
@@ -95,7 +95,7 @@
 	}
 
 	public void deleteVnf(BuildingBlockExecution execution) throws Exception {		
-		GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+		GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 		
 		execution.setVariable("aaiVnfRollback", false);
 		try {
@@ -108,7 +108,7 @@
 	
 	public void deleteServiceInstance(BuildingBlockExecution execution) throws Exception {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID)); 
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID); 
 			aaiSIResources.deleteServiceInstance(serviceInstance);
 		}
 		catch(Exception ex) {
@@ -119,7 +119,7 @@
 	
 	public void deleteNetwork(BuildingBlockExecution execution) throws Exception {
 		try {
-			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID)); 
+			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID); 
 			aaiNetworkResources.deleteNetwork(l3network);
 			execution.setVariable("isRollbackNeeded", true);
 		}
@@ -130,7 +130,7 @@
 	
 	public void deleteCollection(BuildingBlockExecution execution) throws Exception {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID)); 
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID); 
 			aaiNetworkResources.deleteCollection(serviceInstance.getCollection());
 		}
 		catch(Exception ex) {
@@ -140,7 +140,7 @@
 	
 	public void deleteInstanceGroup(BuildingBlockExecution execution) throws Exception {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID)); 
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID); 
 			aaiNetworkResources.deleteNetworkInstanceGroup(serviceInstance.getCollection().getInstanceGroup());
 		}
 		catch(Exception ex) {
@@ -150,7 +150,7 @@
 	
 	public void deleteVolumeGroup(BuildingBlockExecution execution) {
 		try {
-			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
 			CloudRegion cloudRegion = execution.getGeneralBuildingBlock().getCloudRegion();
 			aaiVolumeGroupResources.deleteVolumeGroup(volumeGroup, cloudRegion);
 		} catch (Exception ex) {
@@ -159,7 +159,7 @@
 	}
 	public void deleteConfiguration(BuildingBlockExecution execution) {
 		try {
-			Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID, execution.getLookupMap().get(ResourceKey.CONFIGURATION_ID));
+			Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID);
 			aaiConfigurationResources.deleteConfiguration(configuration);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -168,7 +168,7 @@
 	
 	public void deleteInstanceGroupVnf(BuildingBlockExecution execution) {
 		try {
-			InstanceGroup instanceGroup = extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID, execution.getLookupMap().get(ResourceKey.INSTANCE_GROUP_ID));
+			InstanceGroup instanceGroup = extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID);
 			aaiInstanceGroupResources.deleteInstanceGroup(instanceGroup);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIFlagTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIFlagTasks.java
index ccc9fb0..177e09d 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIFlagTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIFlagTasks.java
@@ -47,7 +47,7 @@
 	public void checkVnfInMaintFlag(BuildingBlockExecution execution) {
 		boolean inMaint = false;
 		try {
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			String vnfId = vnf.getVnfId();
 			inMaint = aaiVnfResources.checkInMaintFlag(vnfId);
 		} catch (Exception ex) {
@@ -60,7 +60,7 @@
 	
 	public void modifyVnfInMaintFlag(BuildingBlockExecution execution, boolean inMaint) {
 		try {
-			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 
 			GenericVnf copiedGenericVnf = genericVnf.shallowCopyId();
 
@@ -76,7 +76,7 @@
 	public void checkVnfClosedLoopDisabledFlag(BuildingBlockExecution execution) {
 		boolean isClosedLoopDisabled = false;
 		try {
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			String vnfId = vnf.getVnfId();
 			isClosedLoopDisabled = aaiVnfResources.checkVnfClosedLoopDisabledFlag(vnfId);
 		} catch (Exception ex) {
@@ -89,7 +89,7 @@
 		
 	public void modifyVnfClosedLoopDisabledFlag(BuildingBlockExecution execution, boolean closedLoopDisabled) {
 		try {
-			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 
 			GenericVnf copiedGenericVnf = genericVnf.shallowCopyId();
 			copiedGenericVnf.setClosedLoopDisabled(closedLoopDisabled);
@@ -104,7 +104,7 @@
 	public void checkVnfPserversLockedFlag(BuildingBlockExecution execution) {
 		boolean inPserversLocked = false;
 		try {
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			String vnfId = vnf.getVnfId();
 			inPserversLocked = aaiVnfResources.checkVnfPserversLockedFlag(vnfId);
 		} catch (Exception ex) {
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIQueryTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIQueryTasks.java
index e89dffc..e0e139e 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIQueryTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIQueryTasks.java
@@ -71,8 +71,7 @@
 
 	public void queryNetworkVpnBinding(BuildingBlockExecution execution) {
 		try {
-			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID,
-					execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			AAIResultWrapper aaiResultWrapper = aaiNetworkResources.queryNetworkWrapperById(l3network);
 			Optional<Relationships> networkRelationships = aaiResultWrapper.getRelationships();
 			if (!networkRelationships.isPresent()) {
@@ -106,8 +105,7 @@
 	public void getNetworkVpnBinding(BuildingBlockExecution execution) {
 
 		try {
-			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID,
-					execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			AAIResultWrapper aaiResultWrapper = aaiNetworkResources.queryNetworkWrapperById(l3network);
 			CreateNetworkRequest createNetworkRequest = execution.getVariable("createNetworkRequest");
 
@@ -162,8 +160,7 @@
 	 */
 	public void queryNetworkPolicy(BuildingBlockExecution execution) {
 		try {
-			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID,
-					execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			AAIResultWrapper aaiResultWrapper = aaiNetworkResources.queryNetworkWrapperById(l3network);
 			Optional<Relationships> networkRelationships = aaiResultWrapper.getRelationships();
 			if (!networkRelationships.isPresent()) {
@@ -193,8 +190,7 @@
 	 */
 	public void queryNetworkTableRef(BuildingBlockExecution execution) {
 		try {
-			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID,
-					execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			AAIResultWrapper aaiResultWrapper = aaiNetworkResources.queryNetworkWrapperById(l3network);
 			Optional<Relationships> networkRelationships = aaiResultWrapper.getRelationships();
 			if (!networkRelationships.isPresent()) {
@@ -229,8 +225,7 @@
 	
 	public void querySubnet(BuildingBlockExecution execution) {
 		try {
-			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID,
-					execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			AAIResultWrapper aaiResultWrapper = aaiNetworkResources.queryNetworkWrapperById(l3network);
 			Optional<Relationships> networkRelationships = aaiResultWrapper.getRelationships();
 			if (!networkRelationships.isPresent()) {
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIUpdateTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIUpdateTasks.java
index 34598ef..4237a50 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIUpdateTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIUpdateTasks.java
@@ -82,7 +82,7 @@
 	
 	public void updateOrchestrationStatusAssignedService(BuildingBlockExecution execution) {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			aaiServiceInstanceResources.updateOrchestrationStatusServiceInstance(serviceInstance, OrchestrationStatus.ASSIGNED);
 			execution.setVariable("aaiServiceInstanceRollback", true);
 		} catch (Exception ex) {
@@ -92,7 +92,7 @@
 	
 	public void updateOrchestrationStatusActiveService(BuildingBlockExecution execution) {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			aaiServiceInstanceResources.updateOrchestrationStatusServiceInstance(serviceInstance, OrchestrationStatus.ACTIVE);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -101,7 +101,7 @@
 
 	public void updateOrchestrationStatusAssignedVnf(BuildingBlockExecution execution) {
 		try {
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			aaiVnfResources.updateOrchestrationStatusVnf(vnf,OrchestrationStatus.ASSIGNED);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -110,7 +110,7 @@
 	
 	public void updateOrchestrationStatusActiveVnf(BuildingBlockExecution execution) {
 		try {
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			aaiVnfResources.updateOrchestrationStatusVnf(vnf,OrchestrationStatus.ACTIVE);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -121,7 +121,7 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			
-			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
 			volumeGroup.setHeatStackId("");
 			aaiVolumeGroupResources.updateOrchestrationStatusVolumeGroup(volumeGroup, cloudRegion, OrchestrationStatus.ASSIGNED);
@@ -134,7 +134,7 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			
-			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
 			
 			aaiVolumeGroupResources.updateOrchestrationStatusVolumeGroup(volumeGroup, cloudRegion, OrchestrationStatus.ACTIVE);
@@ -147,7 +147,7 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			
-			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
 			
 			aaiVolumeGroupResources.updateOrchestrationStatusVolumeGroup(volumeGroup, cloudRegion, OrchestrationStatus.CREATED);
@@ -163,7 +163,7 @@
 			if (heatStackId == null) {
 				heatStackId = "";
 			}			
-			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
 			volumeGroup.setHeatStackId(heatStackId);
 			
@@ -175,9 +175,9 @@
 	
 	public void updateOrchestrationStatusAssignedVfModule(BuildingBlockExecution execution) {
 		try {
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			vfModule.setHeatStackId("");
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.ASSIGNED);
 		} catch (Exception ex) {			
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -186,8 +186,8 @@
 	
 	public void updateOrchestrationStatusPendingActivationVfModule(BuildingBlockExecution execution) {
 		try {
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.PENDING_ACTIVATION);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -196,9 +196,9 @@
 	
 	public void updateOrchestrationStatusAssignedOrPendingActivationVfModule(BuildingBlockExecution execution) {
 		try {
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			vfModule.setHeatStackId("");
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			String multiStageDesign = MULTI_STAGE_DESIGN_OFF;
 			if (vnf.getModelInfoGenericVnf() != null) {
 				multiStageDesign = vnf.getModelInfoGenericVnf().getMultiStageDesign();
@@ -217,8 +217,8 @@
 	
 	public void updateOrchestrationStatusCreatedVfModule(BuildingBlockExecution execution) {		
 		try {
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.CREATED);			
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -228,8 +228,8 @@
 	public void updateOrchestrationStatusDeactivateVfModule(BuildingBlockExecution execution) {	
 		execution.setVariable("aaiDeactivateVfModuleRollback", false);
 		try {
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.CREATED);
 			execution.setVariable("aaiDeactivateVfModuleRollback", true);
 		} catch (Exception ex) {
@@ -266,7 +266,7 @@
 	
 	protected void updateNetwork(BuildingBlockExecution execution, OrchestrationStatus status) {
 		try {
-			L3Network l3Network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			L3Network l3Network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			updateNetworkAAI(l3Network, status);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -298,7 +298,7 @@
 	public void updateOrchestrationStatusActiveNetworkCollection(BuildingBlockExecution execution) {
 		execution.setVariable("aaiNetworkCollectionActivateRollback", false);
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			Collection networkCollection = serviceInstance.getCollection();
 			Collection copiedNetworkCollection = networkCollection.shallowCopyId();
 
@@ -314,8 +314,8 @@
 	public void updateOrchestrationStatusActivateVfModule(BuildingBlockExecution execution) {
 		execution.setVariable("aaiActivateVfModuleRollback", false);
 		try {
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule, vnf, OrchestrationStatus.ACTIVE);
 			execution.setVariable("aaiActivateVfModuleRollback", true);
 		} catch (Exception ex) {
@@ -329,8 +329,8 @@
 			if (heatStackId == null) {
 				heatStackId = "";
 			}
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			vfModule.setHeatStackId(heatStackId);
 			aaiVfModuleResources.updateHeatStackIdVfModule(vfModule, vnf);			
 		} catch (Exception ex) {
@@ -345,7 +345,7 @@
 	 */
 	public void updateNetworkCreated(BuildingBlockExecution execution) throws Exception {
 		execution.setVariable("aaiNetworkActivateRollback", false);
-		L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+		L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 		L3Network copiedl3network = l3network.shallowCopyId();
 		CreateNetworkResponse response = execution.getVariable("createNetworkResponse");
 		try {
@@ -386,7 +386,7 @@
 	 * @throws Exception
 	 */
 	public void updateNetworkUpdated(BuildingBlockExecution execution) throws Exception {
-		L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+		L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 		L3Network copiedl3network = l3network.shallowCopyId();
 		UpdateNetworkResponse response = execution.getVariable("updateNetworkResponse");
 		try {
@@ -410,7 +410,7 @@
 	
 	public void updateObjectNetwork(BuildingBlockExecution execution) {
 		try {
-			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			aaiNetworkResources.updateNetwork(l3network);
 		} catch(Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -423,7 +423,7 @@
 	 */
 	public void updateServiceInstance(BuildingBlockExecution execution) {
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			aaiServiceInstanceResources.updateServiceInstance(serviceInstance);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -432,7 +432,7 @@
 	
 	public void updateObjectVnf(BuildingBlockExecution execution) {
 		try {
-			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			aaiVnfResources.updateObjectVnf(genericVnf);
 		} catch(Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -442,9 +442,9 @@
 	public void updateOrchestrationStatusDeleteVfModule(BuildingBlockExecution execution) {	
 		execution.setVariable("aaiDeleteVfModuleRollback", false);
 		try {
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			vfModule.setHeatStackId("");
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 
 			VfModule copiedVfModule = vfModule.shallowCopyId();
 			copiedVfModule.setHeatStackId("");
@@ -457,8 +457,8 @@
 
 	public void updateModelVfModule(BuildingBlockExecution execution) {
 		try {
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			aaiVfModuleResources.changeAssignVfModule(vfModule, vnf);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -466,7 +466,7 @@
 	}
 	public void updateOrchestrationStatusActivateFabricConfiguration(BuildingBlockExecution execution) {
 		try {
-			Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID, execution.getLookupMap().get(ResourceKey.CONFIGURATION_ID));
+			Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID);
 			aaiConfigurationResources.updateOrchestrationStatusConfiguration(configuration, OrchestrationStatus.ACTIVE);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -475,7 +475,7 @@
 	
 	public void updateOrchestrationStatusDeactivateFabricConfiguration(BuildingBlockExecution execution) {
 		try {
-			Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID, execution.getLookupMap().get(ResourceKey.CONFIGURATION_ID));
+			Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID);
 			aaiConfigurationResources.updateOrchestrationStatusConfiguration(configuration, OrchestrationStatus.ASSIGNED);
 		} catch (Exception ex) {
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -486,7 +486,7 @@
 		try {
 			String ipv4OamAddress = execution.getVariable("oamManagementV4Address");
 			if (ipv4OamAddress != null) {
-				GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+				GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 				GenericVnf copiedGenericVnf = genericVnf.shallowCopyId();
 			
 				genericVnf.setIpv4OamAddress(ipv4OamAddress);	
@@ -503,7 +503,7 @@
 		try {
 			String managementV6Address = execution.getVariable("oamManagementV6Address");
 			if (managementV6Address != null) {
-				GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+				GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 				GenericVnf copiedGenericVnf = genericVnf.shallowCopyId();
 			
 				genericVnf.setManagementV6Address(managementV6Address);	
@@ -520,8 +520,8 @@
 		try {
 			String contrailServiceInstanceFqdn = execution.getVariable("contrailServiceInstanceFqdn");
 			if (contrailServiceInstanceFqdn != null) {
-				VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
-				GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+				VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+				GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 				vfModule.setContrailServiceInstanceFqdn(contrailServiceInstanceFqdn);
 				aaiVfModuleResources.updateContrailServiceInstanceFqdnVfModule(vfModule, vnf);
 			}
@@ -530,4 +530,12 @@
 		}
 	}
 	
+	public void updateOrchestrationStatusConfigAssignedVnf(BuildingBlockExecution execution) {
+		try {
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			aaiVnfResources.updateOrchestrationStatusVnf(vnf, OrchestrationStatus.CONFIGASSIGNED);
+		} catch (Exception ex) {
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
+		}
+	}
 }
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasks.java
index 4c531d4..67d2864 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasks.java
@@ -53,8 +53,8 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			L3Network l3Network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			L3Network l3Network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
      
 			Map<String, String> userInput = gBBInput.getUserInput();
 			String cloudRegionPo = execution.getVariable("cloudRegionPo");
@@ -69,7 +69,7 @@
 	
 	public void processResponseFromOpenstack(BuildingBlockExecution execution) {
 		try {
-			L3Network l3Network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			L3Network l3Network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			
 			CreateNetworkResponse createNetworkResponse = execution.getVariable("createNetworkResponse");
 			if(createNetworkResponse != null) {
@@ -90,8 +90,8 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			L3Network l3Network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			L3Network l3Network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			CreateNetworkResponse createNetworkResponse = execution.getVariable("createNetworkResponse");
      
 			Map<String, String> userInput = gBBInput.getUserInput();
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasks.java
index 5eab611..7e0c5f6 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasks.java
@@ -46,8 +46,8 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			
-			L3Network l3Network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			L3Network l3Network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			
 			DeleteNetworkRequest deleteNetworkRequest = networkAdapterObjectMapper.deleteNetworkRequestMapper(gBBInput.getRequestContext(), gBBInput.getCloudRegion(), serviceInstance, l3Network);	
 			
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterUpdateTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterUpdateTasks.java
index 6168708..9eeba04 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterUpdateTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterUpdateTasks.java
@@ -52,8 +52,8 @@
 	public void updateNetwork(BuildingBlockExecution execution) {
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			L3Network l3Network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			L3Network l3Network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			
 			UpdateNetworkRequest updateNetworkRequest = networkAdapterObjectMapper.createNetworkUpdateRequestMapper(gBBInput.getRequestContext(), gBBInput.getCloudRegion(),  gBBInput.getOrchContext(), serviceInstance, l3Network, gBBInput.getUserInput(), gBBInput.getCustomer());
 			execution.setVariable("networkAdapterRequest", updateNetworkRequest);
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterCreateTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterCreateTasks.java
index 1815fcd..ae9e6e7 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterCreateTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterCreateTasks.java
@@ -65,12 +65,12 @@
 
 			ServiceInstance serviceInstance = gBBInput.getCustomer().getServiceSubscription().getServiceInstances().get(0);
 
-			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
-			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
 			VfModule vfModule;
 			String sdncVfModuleQueryResponse = null;
 			try {
-				vfModule =  extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+				vfModule =  extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 				if(vfModule.getSelflink() != null && !vfModule.getSelflink().isEmpty()) {
 					sdncVfModuleQueryResponse = execution.getVariable("SDNCQueryResponse_" + vfModule.getVfModuleId());
 				}
@@ -94,11 +94,11 @@
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 
 			ServiceInstance serviceInstance = gBBInput.getCustomer().getServiceSubscription().getServiceInstances().get(0);
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
-			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			VolumeGroup volumeGroup = null;
 			try {
-				volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+				volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
 			} catch(BBObjectNotFoundException bbException) {
 			}
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterDeleteTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterDeleteTasks.java
index 759ec61..a96e270 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterDeleteTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterDeleteTasks.java
@@ -58,8 +58,8 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
 			
 			DeleteVolumeGroupRequest deleteVolumeGroupRequest = vnfAdapterVolumeGroupResources.deleteVolumeGroupRequest(gBBInput.getRequestContext(), gBBInput.getCloudRegion(), serviceInstance, volumeGroup);
 			execution.setVariable(VNFREST_REQUEST, deleteVolumeGroupRequest.toXmlString());
@@ -73,9 +73,9 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
-			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			
 			DeleteVfModuleRequest deleteVfModuleRequest = vnfAdapterVfModuleResources.deleteVfModuleRequest( gBBInput.getRequestContext(), gBBInput.getCloudRegion(), serviceInstance, genericVnf, vfModule);
 			execution.setVariable(VNFREST_REQUEST, deleteVfModuleRequest.toXmlString());
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImpl.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImpl.java
index 05ddb2e..e854efd 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImpl.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImpl.java
@@ -74,7 +74,7 @@
 	public void preProcessVnfAdapter(BuildingBlockExecution execution) {
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			execution.setVariable("mso-request-id", gBBInput.getRequestContext().getMsoRequestId());
 			execution.setVariable("mso-service-instance-id", serviceInstance.getServiceInstanceId());
 			execution.setVariable("heatStackId", null);
@@ -93,7 +93,7 @@
             if (!StringUtils.isEmpty( vnfAdapterResponse)) {
                 Object vnfRestResponse = unMarshal(vnfAdapterResponse);
                 if(vnfRestResponse instanceof CreateVfModuleResponse) {
-                    VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+                    VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
                     String heatStackId = ((CreateVfModuleResponse) vnfRestResponse).getVfModuleStackId();
                     if(!StringUtils.isEmpty(heatStackId)) {
                         vfModule.setHeatStackId(heatStackId);                        
@@ -104,8 +104,8 @@
                     	processVfModuleOutputs(execution, vfModuleOutputs);
                     }
                 } else if(vnfRestResponse instanceof DeleteVfModuleResponse) {
-                    VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
-                    GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+                    VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+                    GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
                     Boolean vfModuleDelete = ((DeleteVfModuleResponse) vnfRestResponse).getVfModuleDeleted();
                     if(null!= vfModuleDelete && vfModuleDelete) {
                         vfModule.setHeatStackId(null);
@@ -128,7 +128,7 @@
                         }
                     }
                 } else if(vnfRestResponse instanceof CreateVolumeGroupResponse) {
-                    VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+                    VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
                     String heatStackId = ((CreateVolumeGroupResponse) vnfRestResponse).getVolumeGroupStackId();
                     if(!StringUtils.isEmpty(heatStackId)) {
                         volumeGroup.setHeatStackId(heatStackId);
@@ -137,7 +137,7 @@
                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "HeatStackId is missing from create VolumeGroup Vnf Adapter response.");
                     }                    
                 } else if(vnfRestResponse instanceof DeleteVolumeGroupResponse) {                	
-                	VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+                	VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
                 	Boolean volumeGroupDelete = ((DeleteVolumeGroupResponse) vnfRestResponse).getVolumeGroupDeleted();
                 	if(null!= volumeGroupDelete && volumeGroupDelete) {                		
                 		volumeGroup.setHeatStackId(null);
@@ -178,8 +178,8 @@
     		return;
     	}
     	try {
-	    	VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
-	    	GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+	    	VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+	    	GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 	    	List<String> contrailNetworkPolicyFqdnList = new ArrayList<String>();
 	    	Iterator<String> keys = vfModuleOutputs.keySet().iterator();
 	    	while (keys.hasNext()) {
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasks.java
index 876a555..f9e4177 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasks.java
@@ -82,7 +82,7 @@
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			GenericVnf vnf = null;
 			try {
-				vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+				vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			} catch (BBObjectNotFoundException e) {
 				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "No valid VNF exists");
 			}
@@ -110,7 +110,7 @@
 			String vfModuleId = null;
 			VfModule vfModule = null;
 			try {
-				vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+				vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			} catch (BBObjectNotFoundException e) {
 			}
 			if (vfModule != null) {
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/audit/AuditTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/audit/AuditTasks.java
index 8cb7cbb..f6e07c8 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/audit/AuditTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/audit/AuditTasks.java
@@ -71,7 +71,7 @@
 			AuditInventory auditInventory = new AuditInventory();
 
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
 
 			auditInventory.setCloudOwner(cloudRegion.getCloudOwner());
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignNetwork.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignNetwork.java
index 753a29f..c3106d6 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignNetwork.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignNetwork.java
@@ -47,8 +47,7 @@
 	public boolean networkFoundByName(BuildingBlockExecution execution) {
 		boolean networkFound = false;
 		try {
-			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID,
-					execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 
 			if (!OrchestrationStatus.PRECREATED.equals(l3network.getOrchestrationStatus())){
 				networkFound = true;
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignVnf.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignVnf.java
index ee80ba4..0aa3142 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignVnf.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignVnf.java
@@ -50,7 +50,7 @@
 	
 	public void createInstanceGroups(BuildingBlockExecution execution) {
 		try {
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			List<InstanceGroup> instanceGroups = vnf.getInstanceGroups();
 			for(InstanceGroup instanceGroup : instanceGroups) {
 				if(ModelInfoInstanceGroup.TYPE_VNFC.equalsIgnoreCase(instanceGroup.getModelInfoInstanceGroup().getType())) {
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnf.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnf.java
new file mode 100644
index 0000000..1304408
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnf.java
@@ -0,0 +1,115 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2019 TechMahindra.
+ * ================================================================================
+ * 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=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.flowspecific.tasks;
+
+import java.util.Map;
+import java.util.UUID;
+
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
+import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
+import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
+import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
+import org.onap.so.client.cds.beans.AbstractCDSPropertiesBean;
+import org.onap.so.client.cds.beans.ConfigAssignPropertiesForVnf;
+import org.onap.so.client.cds.beans.ConfigAssignRequestVnf;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 
+ * Get vnf related data and config assign
+ *
+ */
+@Component
+public class ConfigAssignVnf {
+
+    private static final Logger logger = LoggerFactory.getLogger(ConfigAssignVnf.class);
+    private static final String ORIGINATOR_ID = "SO";
+    private static final String ACTION_NAME = "config-assign";
+    private static final String MODE = "sync";
+
+    @Autowired
+    private ExceptionBuilder exceptionUtil;
+    @Autowired
+    private ExtractPojosForBB extractPojosForBB;
+
+    /**
+     * Getting the vnf data, blueprint name, blueprint version etc and setting them
+     * in execution object and calling the subprocess.
+     * 
+     * @param execution
+     */
+    public void preProcessAbstractCDSProcessing(BuildingBlockExecution execution) {
+        logger.info("Start preProcessAbstractCDSProcessing ");
+        try {
+            GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID,
+                    execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+            ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID,
+                    execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+
+            Map<String, Object> userParams = execution.getGeneralBuildingBlock().getRequestContext().getUserParams();
+
+            ConfigAssignPropertiesForVnf configAssignPropertiesForVnf = new ConfigAssignPropertiesForVnf();
+            configAssignPropertiesForVnf.setServiceInstanceId(serviceInstance.getServiceInstanceId());
+            configAssignPropertiesForVnf
+                    .setServiceModelUuid(serviceInstance.getModelInfoServiceInstance().getModelUuid());
+            configAssignPropertiesForVnf
+                    .setVnfCustomizationUuid(vnf.getModelInfoGenericVnf().getModelCustomizationUuid());
+            configAssignPropertiesForVnf.setVnfId(vnf.getVnfId());
+            configAssignPropertiesForVnf.setVnfName(vnf.getVnfName());
+
+            for (Map.Entry<String, Object> entry : userParams.entrySet()) {
+                configAssignPropertiesForVnf.setUserParam(entry.getKey(), entry.getValue());
+            }
+
+            ConfigAssignRequestVnf configAssignRequestVnf = new ConfigAssignRequestVnf();
+            configAssignRequestVnf.setResolutionKey(vnf.getVnfName());
+            configAssignRequestVnf.setConfigAssignPropertiesForVnf(configAssignPropertiesForVnf);
+
+            String blueprintName = vnf.getBlueprintName();
+            String blueprintVersion = vnf.getBlueprintVersion();
+
+            AbstractCDSPropertiesBean abstractCDSPropertiesBean = new AbstractCDSPropertiesBean();
+
+            abstractCDSPropertiesBean.setBlueprintName(blueprintName);
+            abstractCDSPropertiesBean.setBlueprintVersion(blueprintVersion);
+            abstractCDSPropertiesBean.setRequestObject(configAssignRequestVnf.toString());
+
+            GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
+
+            abstractCDSPropertiesBean.setOriginatorId(ORIGINATOR_ID);
+            abstractCDSPropertiesBean.setRequestId(gBBInput.getRequestContext().getMsoRequestId());
+            abstractCDSPropertiesBean.setSubRequestId(UUID.randomUUID().toString());
+            abstractCDSPropertiesBean.setActionName(ACTION_NAME);
+            abstractCDSPropertiesBean.setMode(MODE);
+            execution.setVariable("executionObject", abstractCDSPropertiesBean);
+
+        } catch (Exception ex) {
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
+        }
+    }
+
+}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigurationScaleOut.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigurationScaleOut.java
index 717d0de..4cd0321 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigurationScaleOut.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigurationScaleOut.java
@@ -81,7 +81,7 @@
 			String configScaleOutPayloadString = null;
 			ControllerSelectionReference controllerSelectionReference;
 			ConfigScaleOutPayload configPayload = new ConfigScaleOutPayload();
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			String vnfId = vnf.getVnfId();
 			String vnfName = vnf.getVnfName();	
 			String vnfType = vnf.getVnfType();
@@ -89,7 +89,7 @@
 			controllerSelectionReference = catalogDbClient.getControllerSelectionReferenceByVnfTypeAndActionCategory(vnfType, actionCategory);
 			String controllerName = controllerSelectionReference.getControllerName();
 			
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			String sdncVfModuleQueryResponse = execution.getVariable("SDNCQueryResponse_" + vfModule.getVfModuleId());
 			
 			Map<String, String> paramsMap = new HashMap<>();
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetwork.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetwork.java
index 962d4fa..8cad8f9 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetwork.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetwork.java
@@ -55,8 +55,8 @@
 	public void buildCreateNetworkRequest(BuildingBlockExecution execution) throws Exception {
 		try{
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
-			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			L3Network l3Network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			L3Network l3Network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			Map<String, String> userInput = gBBInput.getUserInput();
 			String cloudRegionPo = execution.getVariable("cloudRegionPo");
 			
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollection.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollection.java
index 060775e..5665302 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollection.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollection.java
@@ -54,7 +54,7 @@
 	 */
 	public void buildNetworkCollectionName(BuildingBlockExecution execution) throws Exception {
 		try{
-			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			InstanceGroup instanceGroup =  serviceInstance.getCollection().getInstanceGroup();
 			if(instanceGroup.getModelInfoInstanceGroup() != null) {
 				//Build collection name assembling SI name and IG function
@@ -84,7 +84,7 @@
 	public void connectCollectionToInstanceGroup(BuildingBlockExecution execution) throws Exception {
 		execution.setVariable("connectCollectionToInstanceGroupRollback", false);
 		try{
-			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			Collection networkCollection =  serviceInstance.getCollection();
 			aaiNetworkResources.connectNetworkCollectionInstanceGroupToNetworkCollection(networkCollection.getInstanceGroup(), networkCollection);
 			execution.setVariable("connectCollectionToInstanceGroupRollback", true);
@@ -101,7 +101,7 @@
 	public void connectInstanceGroupToCloudRegion(BuildingBlockExecution execution) throws Exception {
 		execution.setVariable("connectInstanceGroupToCloudRegionRollback", false);
 		try{
-			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			Collection networkCollection =  serviceInstance.getCollection();
 			aaiNetworkResources.connectInstanceGroupToCloudRegion(networkCollection.getInstanceGroup(), execution.getGeneralBuildingBlock().getCloudRegion());
 			execution.setVariable("connectInstanceGroupToCloudRegionRollback", true);
@@ -118,7 +118,7 @@
 	public void connectCollectionToServiceInstance(BuildingBlockExecution execution) throws Exception {
 		execution.setVariable("connectCollectionToServiceInstanceRollback", false);
 		try{
-			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			Collection networkCollection =  serviceInstance.getCollection();
 			aaiNetworkResources.connectNetworkCollectionToServiceInstance(networkCollection, serviceInstance);
 			execution.setVariable("connectCollectionToServiceInstanceRollback", true);
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/GenericVnfHealthCheck.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/GenericVnfHealthCheck.java
index ce14bde..f0db5ed 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/GenericVnfHealthCheck.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/GenericVnfHealthCheck.java
@@ -60,7 +60,7 @@
 
 		try {
 			ControllerSelectionReference controllerSelectionReference;
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			String vnfId = vnf.getVnfId();
 			String vnfName = vnf.getVnfName();	
 			String vnfType = vnf.getVnfType();
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignNetworkBB.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignNetworkBB.java
index c7fd41c..9a7d695 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignNetworkBB.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignNetworkBB.java
@@ -67,8 +67,7 @@
 	
 	public void checkRelationshipRelatedTo(BuildingBlockExecution execution, String relatedToValue) throws Exception {
 		try {
-			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID,
-				execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 			AAIResultWrapper aaiResultWrapper = aaiNetworkResources.queryNetworkWrapperById(l3network);
 			Optional<org.onap.aai.domain.yang.L3Network> network = aaiResultWrapper.asBean(org.onap.aai.domain.yang.L3Network.class);
 			if (networkBBUtils.isRelationshipRelatedToExists(network, relatedToValue)) {
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignVnf.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignVnf.java
index b9360b3..afa9b43 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignVnf.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignVnf.java
@@ -48,7 +48,7 @@
 	
 	public void deleteInstanceGroups(BuildingBlockExecution execution) {
 		try {
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			List<InstanceGroup> instanceGroups = vnf.getInstanceGroups();
 			for(InstanceGroup instanceGroup : instanceGroups) {
 				if(ModelInfoInstanceGroup.TYPE_VNFC.equalsIgnoreCase(instanceGroup.getModelInfoInstanceGroup().getType())) {
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceCreateTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceCreateTasks.java
index cb4ac5c..119716a 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceCreateTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceCreateTasks.java
@@ -42,7 +42,7 @@
 	private NamingServiceResources namingServiceResources;
 	
 	public void createInstanceGroupName(BuildingBlockExecution execution) throws Exception {		
-		InstanceGroup instanceGroup = extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID, execution.getLookupMap().get(ResourceKey.INSTANCE_GROUP_ID));
+		InstanceGroup instanceGroup = extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID);
 		String policyInstanceName = execution.getVariable("policyInstanceName");
 		String nfNamingCode = execution.getVariable("nfNamingCode");
 		String generatedInstanceGroupName = "";
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceDeleteTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceDeleteTasks.java
index ddea272..c998e4a 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceDeleteTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceDeleteTasks.java
@@ -42,7 +42,7 @@
 	private NamingServiceResources namingServiceResources;
 	
 	public void deleteInstanceGroupName(BuildingBlockExecution execution) throws Exception {		
-		InstanceGroup instanceGroup = extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID, execution.getLookupMap().get(ResourceKey.INSTANCE_GROUP_ID));
+		InstanceGroup instanceGroup = extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID);
 		
 		try {
 			namingServiceResources.deleteInstanceGroupName(instanceGroup);			
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCActivateTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCActivateTasks.java
index 3793adc..31f4b33 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCActivateTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCActivateTasks.java
@@ -67,8 +67,8 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			RequestContext requestContext = gBBInput.getRequestContext();
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
 			Customer customer = gBBInput.getCustomer();
 			GenericResourceApiVnfOperationInformation req = sdncVnfResources.activateVnf(vnf, serviceInstance, customer, cloudRegion, requestContext);
@@ -89,8 +89,8 @@
 	public void activateNetwork(BuildingBlockExecution execution) throws BBObjectNotFoundException {
 		try{
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
-			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
-			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
+			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			Customer customer = gBBInput.getCustomer();
 			RequestContext requestContext = gBBInput.getRequestContext();
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
@@ -111,12 +111,9 @@
 		GenericVnf vnf = null;
 		VfModule vfModule = null;
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID,
-					execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID,
-					execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
-			vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID,
-					execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+			vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			Customer customer = gBBInput.getCustomer();
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
 			GenericResourceApiVfModuleOperationInformation req = sdncVfModuleResources.activateVfModule(vfModule, vnf, serviceInstance, customer,
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCAssignTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCAssignTasks.java
index 715322b..cbb1f34 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCAssignTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCAssignTasks.java
@@ -71,7 +71,7 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			RequestContext requestContext = gBBInput.getRequestContext();
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			Customer customer = gBBInput.getCustomer();
 			GenericResourceApiServiceOperationInformation req = sdncSIResources.assignServiceInstance(serviceInstance, customer, requestContext);
 			SDNCRequest sdncRequest = new SDNCRequest();
@@ -87,8 +87,8 @@
 		try {		
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();			
 			RequestContext requestContext = gBBInput.getRequestContext();
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			Customer customer = gBBInput.getCustomer();
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
 			GenericResourceApiVnfOperationInformation req = sdncVnfResources.assignVnf(vnf, serviceInstance, customer, cloudRegion, requestContext, Boolean.TRUE.equals(vnf.isCallHoming()));
@@ -105,12 +105,12 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			RequestContext requestContext = gBBInput.getRequestContext();
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			VolumeGroup volumeGroup = null;
 			try{
-				volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+				volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
 			} catch (BBObjectNotFoundException e){
 				logger.info("No volume group was found.");
 			}
@@ -134,8 +134,8 @@
 	public void assignNetwork(BuildingBlockExecution execution) {
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
-			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			Customer customer = gBBInput.getCustomer();
 			RequestContext requestContext = gBBInput.getRequestContext();
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCChangeAssignTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCChangeAssignTasks.java
index 592b831..59e46e1 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCChangeAssignTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCChangeAssignTasks.java
@@ -63,7 +63,7 @@
 	public void changeModelServiceInstance(BuildingBlockExecution execution) {
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			GenericResourceApiServiceOperationInformation req = sdncServiceInstanceResources.changeModelServiceInstance(serviceInstance, gBBInput.getCustomer(), gBBInput.getRequestContext());
 			SDNCRequest sdncRequest = new SDNCRequest();
 			sdncRequest.setSDNCPayload(req);
@@ -77,8 +77,8 @@
 	public void changeModelVnf(BuildingBlockExecution execution) {
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
-			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			GenericResourceApiVnfOperationInformation req = sdncVnfResources.changeModelVnf(genericVnf, serviceInstance, gBBInput.getCustomer(), gBBInput.getCloudRegion(), gBBInput.getRequestContext());
 			SDNCRequest sdncRequest = new SDNCRequest();
 			sdncRequest.setSDNCPayload(req);
@@ -92,8 +92,8 @@
 	public void changeAssignNetwork(BuildingBlockExecution execution) {
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
-			L3Network network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			L3Network network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			GenericResourceApiNetworkOperationInformation req = sdncNetworkResources.changeAssignNetwork(network, serviceInstance, gBBInput.getCustomer(), gBBInput.getRequestContext(), gBBInput.getCloudRegion());
 			SDNCRequest sdncRequest = new SDNCRequest();
 			sdncRequest.setSDNCPayload(req);
@@ -109,9 +109,9 @@
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			RequestContext requestContext = gBBInput.getRequestContext();
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			Customer customer = gBBInput.getCustomer();
 			GenericResourceApiVfModuleOperationInformation req = sdncVfModuleResources.changeAssignVfModule(vfModule, vnf, serviceInstance, customer, cloudRegion, requestContext);
 			SDNCRequest sdncRequest = new SDNCRequest();
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCDeactivateTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCDeactivateTasks.java
index d7313ad..8202a14 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCDeactivateTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCDeactivateTasks.java
@@ -69,9 +69,9 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			RequestContext requestContext = gBBInput.getRequestContext();
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			Customer customer = gBBInput.getCustomer();
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
 			GenericResourceApiVfModuleOperationInformation req = sdncVfModuleResources.deactivateVfModule(vfModule, vnf, serviceInstance, customer,
@@ -95,8 +95,8 @@
 			RequestContext requestContext = gBBInput.getRequestContext();
 			ServiceInstance serviceInstance = null;
 			GenericVnf vnf = null;
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
 			Customer customer = gBBInput.getCustomer();
 			GenericResourceApiVnfOperationInformation req = sdncVnfResources.deactivateVnf(vnf, serviceInstance, customer, cloudRegion, requestContext);
@@ -118,8 +118,7 @@
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
 			RequestContext requestContext = gBBInput.getRequestContext();
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID,
-					execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			Customer customer = gBBInput.getCustomer();
 			GenericResourceApiServiceOperationInformation req = sdncSIResources.deactivateServiceInstance(serviceInstance, customer, requestContext);
 			SDNCRequest sdncRequest = new SDNCRequest();
@@ -139,8 +138,8 @@
 	public void deactivateNetwork(BuildingBlockExecution execution) {
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
-			L3Network l3Network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			L3Network l3Network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			Customer customer = gBBInput.getCustomer();
 			RequestContext requestContext = gBBInput.getRequestContext();
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCQueryTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCQueryTasks.java
index b636fe1..941eb7a 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCQueryTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCQueryTasks.java
@@ -50,8 +50,8 @@
 	private ExtractPojosForBB extractPojosForBB;
 	
 	public void queryVnf(BuildingBlockExecution execution) throws Exception {	
-		ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-		GenericVnf genericVnf =  extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+		ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+		GenericVnf genericVnf =  extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 				
 		String selfLink = "restconf/config/GENERIC-RESOURCE-API:services/service/"
 							+ serviceInstance.getServiceInstanceId() + "/service-data/vnfs/vnf/"
@@ -69,9 +69,9 @@
 
 	
 	public void queryVfModule(BuildingBlockExecution execution) throws Exception {		
-		ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-		GenericVnf genericVnf =  extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
-		VfModule vfModule =  extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));		
+		ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+		GenericVnf genericVnf =  extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+		VfModule vfModule =  extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);		
 		String selfLink = "restconf/config/GENERIC-RESOURCE-API:services/service/"
 				+ serviceInstance.getServiceInstanceId() + "/service-data/vnfs/vnf/"
 				+ genericVnf.getVnfId() + "/vnf-data/vf-modules/vf-module/"
@@ -94,7 +94,7 @@
 	
 	public void queryVfModuleForVolumeGroup(BuildingBlockExecution execution) {
 		try {
-			VfModule vfModule =  extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+			VfModule vfModule =  extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			if(vfModule.getSelflink() != null && !vfModule.getSelflink().isEmpty()) {
 				String response = sdncVfModuleResources.queryVfModule(vfModule);
 				execution.setVariable("SDNCQueryResponse_" + vfModule.getVfModuleId(), response);
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCUnassignTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCUnassignTasks.java
index 292f29c..3408725 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCUnassignTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCUnassignTasks.java
@@ -68,7 +68,7 @@
 	public void unassignServiceInstance(BuildingBlockExecution execution) {
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID)); 
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID); 
 			RequestContext requestContext = gBBInput.getRequestContext();
 			Customer customer = gBBInput.getCustomer();
 			GenericResourceApiServiceOperationInformation req = sdncSIResources.unassignServiceInstance(serviceInstance, customer, requestContext);
@@ -83,9 +83,9 @@
 	
 	public void unassignVfModule(BuildingBlockExecution execution) {		
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID)); 
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID)); 
-			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID); 
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID); 
+			VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 			GenericResourceApiVfModuleOperationInformation req = sdncVfModuleResources.unassignVfModule(vfModule, vnf, serviceInstance);		
 			SDNCRequest sdncRequest = new SDNCRequest();
 			sdncRequest.setSDNCPayload(req);
@@ -98,8 +98,8 @@
 	public void unassignVnf(BuildingBlockExecution execution)  {
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
-			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+			GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 			RequestContext requestContext = gBBInput.getRequestContext();
 			Customer customer = gBBInput.getCustomer();
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
@@ -116,8 +116,8 @@
 	public void unassignNetwork(BuildingBlockExecution execution) throws Exception {
 		try {
 			GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
-			L3Network network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
-			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			L3Network network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
+			ServiceInstance serviceInstance =  extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			Customer customer = gBBInput.getCustomer();
 			RequestContext requestContext = gBBInput.getRequestContext();		
 			CloudRegion cloudRegion = gBBInput.getCloudRegion();
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidator.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidator.java
index a622520..bbfc019 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidator.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidator.java
@@ -80,36 +80,36 @@
 			
 			switch(buildingBlockDetail.getResourceType()) {
 			case SERVICE:
-				org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+				org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 				orchestrationStatus = serviceInstance.getOrchestrationStatus();
 				break;
 			case VNF:
-				org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+				org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 				orchestrationStatus = genericVnf.getOrchestrationStatus();
 				break;
 			case VF_MODULE:
-				org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+				org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
 				orchestrationStatus = vfModule.getOrchestrationStatus();
 				break;
 			case VOLUME_GROUP:
-				org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+				org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
 				orchestrationStatus = volumeGroup.getOrchestrationStatus();
 				break;
 			case NETWORK:
-				org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+				org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 				orchestrationStatus = network.getOrchestrationStatus();
 				break;
 			case NETWORK_COLLECTION:
-				org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInst = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+				org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInst = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 				org.onap.so.bpmn.servicedecomposition.bbobjects.Collection networkCollection = serviceInst.getCollection();
 				orchestrationStatus = networkCollection.getOrchestrationStatus();
 				break;
 			case CONFIGURATION:
-				org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID, execution.getLookupMap().get(ResourceKey.CONFIGURATION_ID));
+				org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID);
 				orchestrationStatus = configuration.getOrchestrationStatus();
 				break;
 			case INSTANCE_GROUP:
-				org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup instanceGroup = extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID, execution.getLookupMap().get(ResourceKey.INSTANCE_GROUP_ID));
+				org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup instanceGroup = extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID);
 				orchestrationStatus = instanceGroup.getOrchestrationStatus();
 				break;				
 			case NO_VALIDATE:
@@ -128,7 +128,7 @@
 			
 			if(aLaCarte && ResourceType.VF_MODULE.equals(buildingBlockDetail.getResourceType()) && OrchestrationAction.CREATE.equals(buildingBlockDetail.getTargetAction()) &&
 					OrchestrationStatus.PENDING_ACTIVATION.equals(orchestrationStatus)) {				
-				org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+				org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 				orchestrationStatusStateTransitionDirective = processPossibleSecondStageofVfModuleCreate(execution, previousOrchestrationStatusValidationResult,
 						genericVnf, orchestrationStatusStateTransitionDirective);	
 			}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java
index 482957e..242f125 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java
@@ -375,38 +375,23 @@
 			List<Vnfc> vnfcs = workflowAction.getRelatedResourcesInVfModule(vnfId, vfModuleId, Vnfc.class, AAIObjectType.VNFC);
 			for(Vnfc vnfc : vnfcs) {
 				String modelCustomizationId = vnfc.getModelCustomizationId();
-				List<CvnfcCustomization> cvnfcCustomizations = catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID(vnfCustomizationUUID, vfModuleCustomizationUUID);
-				CvnfcCustomization cvnfcCustomization = null;
-				for(CvnfcCustomization cvnfc : cvnfcCustomizations) {
-					if(cvnfc.getModelCustomizationUUID().equalsIgnoreCase(modelCustomizationId)) {
-						cvnfcCustomization = cvnfc;
-					}
-				}
-				if(cvnfcCustomization != null) {
-					VnfVfmoduleCvnfcConfigurationCustomization fabricConfig = null;
-					for(VnfVfmoduleCvnfcConfigurationCustomization customization : cvnfcCustomization.getVnfVfmoduleCvnfcConfigurationCustomization()){
-						if(customization.getConfigurationResource().getToscaNodeType().contains(FABRIC_CONFIGURATION)){
-							if(fabricConfig == null) {
-								fabricConfig = customization;
-							} else {
-								throw new Exception("Multiple Fabric configs found for this vnfc");
-							}
-						}
-					}
-					if(fabricConfig != null) {
-						String configurationId = UUID.randomUUID().toString();
-						ConfigurationResourceKeys configurationResourceKeys = new ConfigurationResourceKeys();
-						configurationResourceKeys.setCvnfcCustomizationUUID(modelCustomizationId);
-						configurationResourceKeys.setVfModuleCustomizationUUID(vfModuleCustomizationUUID);
-						configurationResourceKeys.setVnfResourceCustomizationUUID(vnfCustomizationUUID);
-						configurationResourceKeys.setVnfcName(vnfc.getVnfcName());
-						ExecuteBuildingBlock assignConfigBB = getExecuteBBForConfig(ASSIGN_FABRIC_CONFIGURATION_BB, ebb, configurationId, configurationResourceKeys);
-						ExecuteBuildingBlock activateConfigBB = getExecuteBBForConfig(ACTIVATE_FABRIC_CONFIGURATION_BB, ebb, configurationId, configurationResourceKeys);
-						flowsToExecute.add(assignConfigBB);
-						flowsToExecute.add(activateConfigBB);
-						execution.setVariable("flowsToExecute", flowsToExecute);
-						execution.setVariable("completed", false);
-					}
+				VnfVfmoduleCvnfcConfigurationCustomization fabricConfig = 
+						catalogDbClient.getVnfVfmoduleCvnfcConfigurationCustomizationByVnfCustomizationUuidAndVfModuleCustomizationUuidAndCvnfcCustomizationUuid(vnfCustomizationUUID, vfModuleCustomizationUUID, modelCustomizationId);
+				if(fabricConfig != null && fabricConfig.getConfigurationResource() != null 
+						&& fabricConfig.getConfigurationResource().getToscaNodeType() != null 
+						&& fabricConfig.getConfigurationResource().getToscaNodeType().contains(FABRIC_CONFIGURATION)) {
+					String configurationId = UUID.randomUUID().toString();
+					ConfigurationResourceKeys configurationResourceKeys = new ConfigurationResourceKeys();
+					configurationResourceKeys.setCvnfcCustomizationUUID(modelCustomizationId);
+					configurationResourceKeys.setVfModuleCustomizationUUID(vfModuleCustomizationUUID);
+					configurationResourceKeys.setVnfResourceCustomizationUUID(vnfCustomizationUUID);
+					configurationResourceKeys.setVnfcName(vnfc.getVnfcName());
+					ExecuteBuildingBlock assignConfigBB = getExecuteBBForConfig(ASSIGN_FABRIC_CONFIGURATION_BB, ebb, configurationId, configurationResourceKeys);
+					ExecuteBuildingBlock activateConfigBB = getExecuteBBForConfig(ACTIVATE_FABRIC_CONFIGURATION_BB, ebb, configurationId, configurationResourceKeys);
+					flowsToExecute.add(assignConfigBB);
+					flowsToExecute.add(activateConfigBB);
+					execution.setVariable("flowsToExecute", flowsToExecute);
+					execution.setVariable("completed", false);
 				} else {
 					logger.debug("No cvnfcCustomization found for customizationId: " + modelCustomizationId);
 				}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/sdno/tasks/SDNOHealthCheckTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/sdno/tasks/SDNOHealthCheckTasks.java
index 36162af..c0f7b21 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/sdno/tasks/SDNOHealthCheckTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/sdno/tasks/SDNOHealthCheckTasks.java
@@ -57,7 +57,7 @@
 			Map<ResourceKey, String> lookupMap = execution.getLookupMap();
 			for (Map.Entry<ResourceKey, String> entry : lookupMap.entrySet()) {
 				if (entry.getKey().equals(ResourceKey.GENERIC_VNF_ID)) {
-					vnf = extractPojosForBB.extractByKey(execution, entry.getKey(), entry.getValue());
+					vnf = extractPojosForBB.extractByKey(execution, entry.getKey());
 				}
 			}
 			
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/vnf/mapper/VnfAdapterVfModuleObjectMapper.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/vnf/mapper/VnfAdapterVfModuleObjectMapper.java
index 98174d5..258bea9 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/vnf/mapper/VnfAdapterVfModuleObjectMapper.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/vnf/mapper/VnfAdapterVfModuleObjectMapper.java
@@ -121,6 +121,7 @@
 		CreateVfModuleRequest createVfModuleRequest = new CreateVfModuleRequest();
 		
 		createVfModuleRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
+		createVfModuleRequest.setCloudOwner(cloudRegion.getCloudOwner());
 		createVfModuleRequest.setTenantId(cloudRegion.getTenantId());
 		createVfModuleRequest.setVfModuleId(vfModule.getVfModuleId());
 		createVfModuleRequest.setVfModuleName(vfModule.getVfModuleName());
@@ -776,6 +777,7 @@
 			VfModule vfModule) throws IOException {
 		DeleteVfModuleRequest deleteVfModuleRequest = new DeleteVfModuleRequest();
 		deleteVfModuleRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
+		deleteVfModuleRequest.setCloudOwner(cloudRegion.getCloudOwner());
 		deleteVfModuleRequest.setTenantId(cloudRegion.getTenantId());
 		deleteVfModuleRequest.setVnfId(genericVnf.getVnfId());
 		deleteVfModuleRequest.setVfModuleId(vfModule.getVfModuleId());
@@ -823,4 +825,4 @@
 		}
 		return baseVfModule;
 	}
-}
\ No newline at end of file
+}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAIConfigurationResources.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAIConfigurationResources.java
index 138a20b..f412720 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAIConfigurationResources.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAIConfigurationResources.java
@@ -50,7 +50,7 @@
      */
     public void createConfiguration(Configuration configuration) {
         AAIResourceUri configurationURI = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configuration.getConfigurationId());
-        configuration.setOrchestrationStatus(OrchestrationStatus.INVENTORIED);
+        configuration.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
         org.onap.aai.domain.yang.Configuration aaiConfiguration = aaiObjectMapper.mapConfiguration(configuration);
         injectionHelper.getAaiClient().create(configurationURI, aaiConfiguration);
     }
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/sdnc/SDNCClient.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/sdnc/SDNCClient.java
index 99d5fca..cae4a19 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/sdnc/SDNCClient.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/sdnc/SDNCClient.java
@@ -42,7 +42,6 @@
 public class SDNCClient {
 
 	private static final Logger logger = LoggerFactory.getLogger(SDNCClient.class);
-	private BaseClient<String, LinkedHashMap<String, Object>> STOClient = new BaseClient<>();
 
 	@Autowired
 	private SDNCProperties properties;
@@ -61,6 +60,8 @@
 	public String post(Object request, SDNCTopology topology) throws MapperException, BadResponseException {
 		String jsonRequest = sdnCommonTasks.buildJsonRequest(request);
 		String targetUrl = properties.getHost() + properties.getPath() + ":" + topology.toString() + "/";
+		BaseClient<String, LinkedHashMap<String, Object>> STOClient = new BaseClient<>();
+
 		STOClient.setTargetUrl(targetUrl);
 		HttpHeaders httpHeader = sdnCommonTasks.getHttpHeaders(properties.getAuth());
 		STOClient.setHttpHeader(httpHeader);
@@ -70,7 +71,8 @@
 	
 	
 	public String post(Object request, String url) throws MapperException, BadResponseException {
-		String jsonRequest = sdnCommonTasks.buildJsonRequest(request);	
+		String jsonRequest = sdnCommonTasks.buildJsonRequest(request);
+		BaseClient<String, LinkedHashMap<String, Object>> STOClient = new BaseClient<>();
 		STOClient.setTargetUrl(url);
 		HttpHeaders httpHeader = sdnCommonTasks.getHttpHeaders(properties.getAuth());
 		STOClient.setHttpHeader(httpHeader);
@@ -91,7 +93,8 @@
 	public String get(String queryLink) throws MapperException, BadResponseException {
 		String request = "";
 		String jsonRequest = sdnCommonTasks.buildJsonRequest(request);
-		String targetUrl = UriBuilder.fromUri(properties.getHost()).path(queryLink).build().toString();			
+		String targetUrl = UriBuilder.fromUri(properties.getHost()).path(queryLink).build().toString();
+		BaseClient<String, LinkedHashMap<String, Object>> STOClient = new BaseClient<>();
 		STOClient.setTargetUrl(targetUrl);
 		HttpHeaders httpHeader = sdnCommonTasks.getHttpHeaders(properties.getAuth());
 		STOClient.setHttpHeader(httpHeader);
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/common/aai/tasks/AAIFlagTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/common/aai/tasks/AAIFlagTasksTest.java
index cad97ca..a91ef66 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/common/aai/tasks/AAIFlagTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/common/aai/tasks/AAIFlagTasksTest.java
@@ -65,7 +65,7 @@
 	public void before() throws BBObjectNotFoundException {
 		genericVnf = setGenericVnf();
 		doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
-		when(extractPojosForBB.extractByKey(any(),any(), any())).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),any())).thenReturn(genericVnf);
 	}
 
 	@Test
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/common/data/TestDataSetup.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/common/data/TestDataSetup.java
index 166319d..d0901eb 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/common/data/TestDataSetup.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/common/data/TestDataSetup.java
@@ -353,7 +353,7 @@
 		ServiceInstance serviceInstance = null;
 
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
@@ -371,7 +371,7 @@
 		Collection collection = null;
 
 		try {
-			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 			collection = serviceInstance.getCollection();
 
 			if (collection == null) {
@@ -393,7 +393,7 @@
 		ServiceInstance serviceInstance = null;
 
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
@@ -464,7 +464,7 @@
 		ServiceInstance serviceInstance = null;
 
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
@@ -517,7 +517,7 @@
 		ServiceInstance serviceInstance = null;
 
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
@@ -556,7 +556,7 @@
 		GenericVnf genericVnf = null;
 
 		try {
-			genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 		} catch(BBObjectNotFoundException e) {
 			genericVnf = setGenericVnf();
 		}
@@ -586,7 +586,7 @@
 		GenericVnf genericVnf = null;
 
 		try {
-			genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
+			genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
 		} catch(BBObjectNotFoundException e) {
 			genericVnf = setGenericVnf();
 		}
@@ -650,7 +650,7 @@
 		ServiceInstance serviceInstance = null;
 
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
@@ -710,7 +710,7 @@
 		configurations.add(config);
 		ServiceInstance serviceInstance = new ServiceInstance();
 		try {
-			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
+			serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
 		} catch(BBObjectNotFoundException e) {
 			serviceInstance = setServiceInstance();
 		}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICreateTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICreateTasksTest.java
index 4e147a0..fcb95ca 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICreateTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICreateTasksTest.java
@@ -96,13 +96,13 @@
 		configuration = setConfiguration();
 		instanceGroup = setInstanceGroupVnf();
 		
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(network);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID), any())).thenReturn(volumeGroup);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.CONFIGURATION_ID), any())).thenReturn(configuration);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID), any())).thenReturn(instanceGroup);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(network);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID))).thenReturn(volumeGroup);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.CONFIGURATION_ID))).thenReturn(configuration);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID))).thenReturn(instanceGroup);
 		
 
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
@@ -277,7 +277,7 @@
 	public void createVnfExceptionTest() throws Exception {
 		expectedException.expect(BpmnError.class);		
 		lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "notfound");
-		doThrow(BBObjectNotFoundException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID),eq("notfound"));	
+		doThrow(BBObjectNotFoundException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID));	
 		doNothing().when(aaiVnfResources).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
 		aaiCreateTasks.createVnf(execution);
 		verify(aaiVnfResources, times(1)).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
@@ -291,7 +291,7 @@
 		newVfModule.setModuleIndex(null);
 		newVfModule.getModelInfoVfModule().setModelInvariantUUID("testModelInvariantUUID1");
 		doNothing().when(aaiVfModuleResources).createVfModule(newVfModule, genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(newVfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(newVfModule);
 
 		assertEquals(null, newVfModule.getModuleIndex());
 		aaiCreateTasks.createVfModule(execution);
@@ -412,8 +412,8 @@
 		gBBInput.setServiceInstance(serviceInstance);
 		lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, serviceInstance.getServiceInstanceId());
 		
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), eq("testServiceInstanceId"))).thenReturn(serviceInstance);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID),eq("testNetworkId"))).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(serviceInstance);
 		//verify connection call was not executednetwork
 		exception.expect(BpmnError.class);
 		aaiCreateTasks.connectNetworkToNetworkCollectionInstanceGroup(execution);
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIDeleteTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIDeleteTasksTest.java
index 94d886c..826f888 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIDeleteTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIDeleteTasksTest.java
@@ -88,13 +88,13 @@
 		configuration = setConfiguration();
 		instanceGroup = setInstanceGroupVnf();
 		
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(network);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID), any())).thenReturn(volumeGroup);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.CONFIGURATION_ID), any())).thenReturn(configuration);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID), any())).thenReturn(instanceGroup);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(network);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID))).thenReturn(volumeGroup);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.CONFIGURATION_ID))).thenReturn(configuration);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID))).thenReturn(instanceGroup);
 		
 
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIUpdateTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIUpdateTasksTest.java
index a8a249f..78d08aa 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIUpdateTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIUpdateTasksTest.java
@@ -84,12 +84,12 @@
 		configuration = setConfiguration();
 		subnet = buildSubnet();
 
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(network);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID), any())).thenReturn(volumeGroup);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.CONFIGURATION_ID), any())).thenReturn(configuration);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(network);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID))).thenReturn(volumeGroup);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.CONFIGURATION_ID))).thenReturn(configuration);
 		
 
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasksTest.java
index 3034f0b..72f6a08 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasksTest.java
@@ -72,8 +72,8 @@
 		orchestrationContext.setIsRollbackEnabled(true);
 		
 
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(l3Network);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(l3Network);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
 		
 	}
 	
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasksTest.java
index 5b534e0..ceb4796 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasksTest.java
@@ -66,8 +66,8 @@
 		requestContext = setRequestContext();
 		cloudRegion = setCloudRegion();
 
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(l3Network);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(l3Network);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
 	}
 
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterUpdateTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterUpdateTasksTest.java
index 478c512..0406ce0 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterUpdateTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterUpdateTasksTest.java
@@ -79,8 +79,8 @@
 		userInput = setUserInput();
 		userInput.put("userInputKey1", "userInputValue1");
 		
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(network);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(network);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
 		
 	}
 	
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterCreateTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterCreateTasksTest.java
index eaab75d..32b3201 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterCreateTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterCreateTasksTest.java
@@ -76,9 +76,9 @@
         CreateVolumeGroupRequest request = new CreateVolumeGroupRequest();
         request.setVolumeGroupId("volumeGroupStackId");
 
-    	when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID), any())).thenReturn(volumeGroup);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
+    	when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID))).thenReturn(volumeGroup);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 		doReturn(request).when(vnfAdapterVolumeGroupResources).createVolumeGroupRequest(requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVnfQueryResponse);
 
         vnfAdapterCreateTasks.createVolumeGroupRequest(execution);
@@ -107,9 +107,9 @@
         CreateVolumeGroupRequest request = new CreateVolumeGroupRequest();
         request.setVolumeGroupId("volumeGroupStackId");
         
-    	when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID), any())).thenReturn(volumeGroup);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
+    	when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID))).thenReturn(volumeGroup);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 		doReturn(request).when(vnfAdapterVolumeGroupResources).createVolumeGroupRequest(requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf,  volumeGroup, null);
 
 		vnfAdapterCreateTasks.createVolumeGroupRequest(execution);
@@ -122,7 +122,7 @@
 	
 	@Test
 	public void test_createVolumeGroupRequest_exception() throws Exception {
-		doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any());
+		doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID));
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
 		expectedException.expect(BpmnError.class);
 		
@@ -156,8 +156,8 @@
 		String sdncVnfQueryResponse = "{someJson}";
 		execution.setVariable("SDNCQueryResponse_" + genericVnf.getVnfId(), sdncVnfQueryResponse);
 		
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 		
 		doReturn(createVfModuleRequest).when(vnfAdapterVfModuleResources).createVfModuleRequest(requestContext, cloudRegion, orchestrationContext, serviceInstance, 
 				genericVnf, vfModule, null, sdncVnfQueryResponse, sdncVfModuleQueryResponse);
@@ -199,9 +199,9 @@
 		String sdncVnfQueryResponse = "{someJson}";
 		execution.setVariable("SDNCQueryResponse_" + genericVnf.getVnfId(), sdncVnfQueryResponse);
 		
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID), any())).thenReturn(volumeGroup);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID))).thenReturn(volumeGroup);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 		doReturn(createVfModuleRequest).when(vnfAdapterVfModuleResources).createVfModuleRequest(requestContext, cloudRegion, orchestrationContext, serviceInstance, 
 				genericVnf, vfModule, volumeGroup, sdncVnfQueryResponse, sdncVfModuleQueryResponse);
 		
@@ -216,7 +216,7 @@
 	@Test
 	public void createVfModuleExceptionTest() throws Exception {
 		// run with no data setup, and it will throw a BBObjectNotFoundException
-		doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any());
+		doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID));
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
 		expectedException.expect(BpmnError.class);
 		vnfAdapterCreateTasks.createVolumeGroupRequest(execution);
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterDeleteTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterDeleteTasksTest.java
index b8be26b..efd2e7d 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterDeleteTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterDeleteTasksTest.java
@@ -76,10 +76,10 @@
 		orchestrationContext = setOrchestrationContext();
 		orchestrationContext.setIsRollbackEnabled(true);
 		
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID), any())).thenReturn(volumeGroup);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID))).thenReturn(volumeGroup);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
         doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
         doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
 	}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImplTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImplTest.java
index 33d0dbe..b515835 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImplTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImplTest.java
@@ -78,10 +78,10 @@
 		volumeGroup.setHeatStackId(null);
         doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
         doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
-    	when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
-    	when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID), any())).thenReturn(volumeGroup);
-    	when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-    	when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
+    	when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
+    	when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID))).thenReturn(volumeGroup);
+    	when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+    	when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 	}
 
 	@Test
@@ -209,7 +209,7 @@
 	@Test
 	public void preProcessVnfAdapterExceptionTest() throws BBObjectNotFoundException {
 		expectedException.expect(BpmnError.class);
-		doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any());
+		doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID));
 		
 		vnfAdapterImpl.preProcessVnfAdapter(execution);
 	}
@@ -263,7 +263,7 @@
 
 	@Test
 	public void postProcessVnfAdapterExceptionTest() throws BBObjectNotFoundException {	
-		doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any());
+		doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID));
 
 		execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_CREATE_RESPONSE);
 		expectedException.expect(BpmnError.class);
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasksTest.java
index 7495cc1..a8518d9 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasksTest.java
@@ -73,7 +73,7 @@
     public void runAppcCommandVnfNull() throws BBObjectNotFoundException {
         execution.getLookupMap().put(ResourceKey.GENERIC_VNF_ID, "NULL-TEST");
         fillRequiredAppcExecutionFields();
-        when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.GENERIC_VNF_ID), eq("NULL-TEST")))
+        when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.GENERIC_VNF_ID)))
             .thenReturn(null);
         when(catalogDbClient.getControllerSelectionReferenceByVnfTypeAndActionCategory(
             isNull(), eq(Action.Lock.toString()))).
@@ -92,7 +92,7 @@
     public void runAppcCommandBBObjectNotFoundException() throws BBObjectNotFoundException {
         execution.getLookupMap().put(ResourceKey.GENERIC_VNF_ID, "EXCEPTION-TEST");
         fillRequiredAppcExecutionFields();
-        when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.GENERIC_VNF_ID), eq("EXCEPTION-TEST")))
+        when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.GENERIC_VNF_ID)))
             .thenThrow(new BBObjectNotFoundException());
 
         appcRunTasks.runAppcCommand(execution, Action.Lock);
@@ -107,11 +107,11 @@
         execution.getLookupMap().put(ResourceKey.GENERIC_VNF_ID, "SUCCESS-TEST");
         fillRequiredAppcExecutionFields();
         GenericVnf genericVnf = getTestGenericVnf();
-        when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.GENERIC_VNF_ID), eq("SUCCESS-TEST")))
+        when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.GENERIC_VNF_ID)))
             .thenReturn(genericVnf);
         mockReferenceResponse();
         execution.getLookupMap().put(ResourceKey.VF_MODULE_ID, "VF-MODULE-ID-TEST");
-        when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.VF_MODULE_ID), eq("VF-MODULE-ID-TEST")))
+        when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.VF_MODULE_ID)))
             .thenReturn(null);
         when(appCClient.getErrorCode()).thenReturn("0");
 
@@ -125,13 +125,13 @@
         execution.getLookupMap().put(ResourceKey.GENERIC_VNF_ID, "SUCCESS-TEST");
         fillRequiredAppcExecutionFields();
         GenericVnf genericVnf = getTestGenericVnf();
-        when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.GENERIC_VNF_ID), eq("SUCCESS-TEST")))
+        when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.GENERIC_VNF_ID)))
             .thenReturn(genericVnf);
         mockReferenceResponse();
         execution.getLookupMap().put(ResourceKey.VF_MODULE_ID, "VF-MODULE-ID-TEST");
         VfModule vfModule = new VfModule();
         vfModule.setVfModuleId("VF-MODULE-ID");
-        when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.VF_MODULE_ID), eq("VF-MODULE-ID-TEST")))
+        when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.VF_MODULE_ID)))
             .thenReturn(vfModule);
         when(appCClient.getErrorCode()).thenReturn("0");
 
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/audit/AuditTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/audit/AuditTasksTest.java
index 7a9e2bb..3542d7f 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/audit/AuditTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/audit/AuditTasksTest.java
@@ -56,9 +56,9 @@
 		genericVnf = setGenericVnf();
 		vfModule = setVfModule();
 		setCloudRegion();
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
 	}
 	
 	@Test
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignNetworkTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignNetworkTest.java
index befeea4..19981bc 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignNetworkTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignNetworkTest.java
@@ -48,14 +48,14 @@
 	public void before() throws BBObjectNotFoundException {
 		network = setL3Network();
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));	
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(network);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(network);
 	}
 	
 	@Test
 	public void networkNotFoundTest() throws Exception {
 		//network status to PRECREATED - when it was NOT found by name
 		try {
-			network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID,execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 		} catch(BBObjectNotFoundException e) {
 		}
 		
@@ -67,7 +67,7 @@
 	@Test
 	public void networkFoundTest() throws Exception {
 		try {
-			network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID,execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+			network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
 		} catch(BBObjectNotFoundException e) {
 		}
 		boolean networkFound = assignNetwork.networkFoundByName(execution);
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignVnfTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignVnfTest.java
index 4ad6fba..834990d 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignVnfTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/AssignVnfTest.java
@@ -92,7 +92,7 @@
 		
 		doNothing().when(aaiInstanceGroupResources).createInstanceGroup(isA(InstanceGroup.class));
 		doNothing().when(aaiInstanceGroupResources).connectInstanceGroupToVnf(isA(InstanceGroup.class), isA(GenericVnf.class));
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
 	}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnfTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnfTest.java
new file mode 100644
index 0000000..be94a96
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnfTest.java
@@ -0,0 +1,78 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2019 TechMahindra.
+ * ================================================================================
+ * 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=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.flowspecific.tasks;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.when;
+
+import java.util.UUID;
+
+import org.camunda.bpm.engine.delegate.BpmnError;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.ArgumentMatchers;
+import org.mockito.InjectMocks;
+import org.onap.so.bpmn.BaseTaskTest;
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
+import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
+import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
+import org.onap.so.client.exception.BBObjectNotFoundException;
+
+public class ConfigAssignVnfTest extends BaseTaskTest {
+    @InjectMocks
+    private ConfigAssignVnf configAssignVnf = new ConfigAssignVnf();
+
+    private GenericVnf genericVnf;
+    private ServiceInstance serviceInstance;
+    private RequestContext requestContext;
+    private String msoRequestId;
+
+    @Before
+    public void before() throws BBObjectNotFoundException {
+        genericVnf = setGenericVnf();
+        serviceInstance = setServiceInstance();
+        msoRequestId = UUID.randomUUID().toString();
+        requestContext = setRequestContext();
+        requestContext.setMsoRequestId(msoRequestId);
+        gBBInput.setRequestContext(requestContext);
+
+        doThrow(new BpmnError("BPMN Error")).when(exceptionUtil)
+                .buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
+        when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any()))
+                .thenReturn(genericVnf);
+        when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any()))
+                .thenReturn(serviceInstance);
+    }
+
+    @Test
+    public void preProcessAbstractCDSProcessingTest() throws Exception {
+
+        configAssignVnf.preProcessAbstractCDSProcessing(execution);
+
+        assertTrue(true);
+    }
+
+}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigurationScaleOutTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigurationScaleOutTest.java
index ad848a4..6390268 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigurationScaleOutTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigurationScaleOutTest.java
@@ -81,8 +81,8 @@
 		gBBInput.setRequestContext(requestContext);
 		
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 
 	}
 	
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollectionTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollectionTest.java
index 7202bd5..423029c 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollectionTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollectionTest.java
@@ -70,8 +70,8 @@
 		orchestrationContext.setIsRollbackEnabled(true);
 		
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(network);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(network);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
 	}
 	
 	@Test
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkTest.java
index ddfd636..de1aa63 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkTest.java
@@ -70,8 +70,8 @@
 		userInput = setUserInput();
 
 		customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(network);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(network);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
 	}
 	
 	@Test
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/GenericVnfHealthCheckTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/GenericVnfHealthCheckTest.java
index 7fdf253..2386da7 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/GenericVnfHealthCheckTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/GenericVnfHealthCheckTest.java
@@ -66,7 +66,7 @@
 		gBBInput.setRequestContext(requestContext);
 		
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));	
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
 	}
 	
 	@Test
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignNetworkBBTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignNetworkBBTest.java
index ccfcaba..ecdf11b 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignNetworkBBTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignNetworkBBTest.java
@@ -72,7 +72,7 @@
 		AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(aaiResponse); 
 		Optional<org.onap.aai.domain.yang.L3Network> l3network = aaiResultWrapper.asBean(org.onap.aai.domain.yang.L3Network.class);
 		
-		doReturn(network).when(extractPojosForBB).extractByKey(execution, ResourceKey.NETWORK_ID, "testNetworkId1");
+		doReturn(network).when(extractPojosForBB).extractByKey(execution, ResourceKey.NETWORK_ID);
 		doReturn(aaiResultWrapper).when(aaiNetworkResources).queryNetworkWrapperById(network);
 		
 		doReturn(true).when(networkBBUtils).isRelationshipRelatedToExists(any(Optional.class), eq("vf-module"));
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignVnfTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignVnfTest.java
index 688f95c..394ffcf 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignVnfTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/UnassignVnfTest.java
@@ -68,7 +68,7 @@
 		instanceGroup2.setId("test-002");
 		instanceGroup2.setModelInfoInstanceGroup(modelVnfc);
 		genericVnf.getInstanceGroups().add(instanceGroup2);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);		
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);		
 		unassignVnf.deleteInstanceGroups(execution);
 		verify(aaiInstanceGroupResources, times(1)).deleteInstanceGroup(eq(instanceGroup1));
 		verify(aaiInstanceGroupResources, times(1)).deleteInstanceGroup(eq(instanceGroup2));	
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceCreateTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceCreateTasksTest.java
index 41739f3..67c48d1 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceCreateTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceCreateTasksTest.java
@@ -22,7 +22,6 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.times;
@@ -47,7 +46,7 @@
 	@Before
 	public void before() throws BBObjectNotFoundException {
 		instanceGroup = setInstanceGroup();				
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID), any())).thenReturn(instanceGroup);		
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID))).thenReturn(instanceGroup);		
 	}
 	
 	@Test
@@ -68,7 +67,7 @@
 	public void createInstanceGroupExceptionTest() throws Exception {
 		expectedException.expect(BBObjectNotFoundException.class);		
 		lookupKeyMap.put(ResourceKey.INSTANCE_GROUP_ID, "notfound");
-		doThrow(BBObjectNotFoundException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID),eq("notfound"));	
+		doThrow(BBObjectNotFoundException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID));	
 		String policyInstanceName = "policyInstanceName";
 		String nfNamingCode = "nfNamingCode";
 		execution.setVariable(policyInstanceName, policyInstanceName);
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceDeleteTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceDeleteTasksTest.java
index 97dcc61..56226df 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceDeleteTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/namingservice/tasks/NamingServiceDeleteTasksTest.java
@@ -21,7 +21,6 @@
 package org.onap.so.bpmn.infrastructure.namingservice.tasks;
 
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.times;
@@ -46,7 +45,7 @@
 	@Before
 	public void before() throws BBObjectNotFoundException {
 		instanceGroup = setInstanceGroup();				
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID), any())).thenReturn(instanceGroup);	
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID))).thenReturn(instanceGroup);	
 	}
 	
 	@Test
@@ -62,7 +61,7 @@
 	public void deleteInstanceGroupExceptionTest() throws Exception {
 		expectedException.expect(BBObjectNotFoundException.class);		
 		lookupKeyMap.put(ResourceKey.INSTANCE_GROUP_ID, "notfound");
-		doThrow(BBObjectNotFoundException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID),eq("notfound"));	
+		doThrow(BBObjectNotFoundException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID));	
 		doReturn("").when(namingServiceResources).deleteInstanceGroupName(instanceGroup);
 		namingServiceDeleteTasks.deleteInstanceGroupName(execution);
 		verify(namingServiceResources, times(1)).deleteInstanceGroupName(instanceGroup);
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCActivateTaskTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCActivateTaskTest.java
index 65e7d24..cbd7605 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCActivateTaskTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCActivateTaskTest.java
@@ -78,10 +78,10 @@
 		customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(network);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(network);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
 
 	}
 
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCAssignTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCAssignTasksTest.java
index d021df5..b5509b1 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCAssignTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCAssignTasksTest.java
@@ -80,11 +80,11 @@
 		
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(network);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID), any())).thenReturn(volumeGroup);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(network);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID))).thenReturn(volumeGroup);
 	}
 
 	@Test
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCChangeAssignTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCChangeAssignTasksTest.java
index f01596c..be79211 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCChangeAssignTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCChangeAssignTasksTest.java
@@ -69,9 +69,9 @@
 		requestContext = setRequestContext();
 
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
 	}
 	
 	@Test
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCDeactivateTaskTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCDeactivateTaskTest.java
index 3d25add..18048da 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCDeactivateTaskTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCDeactivateTaskTest.java
@@ -75,10 +75,10 @@
 		network = setL3Network();
 		
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(network);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(network);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
 
 	}
 	
@@ -142,7 +142,7 @@
 	@Test
 	public void test_deactivateNetwork_exception() throws Exception {
 		expectedException.expect(BpmnError.class);
-		doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any());
+		doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID));
 		sdncDeactivateTasks.deactivateNetwork(execution);
 		verify(sdncNetworkResources, times(0)).deactivateNetwork(network, serviceInstance, customer, requestContext, cloudRegion);	
 	}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCQueryTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCQueryTasksTest.java
index 4c5c50e..28551ba 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCQueryTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCQueryTasksTest.java
@@ -63,11 +63,11 @@
 		vfModule = setVfModule();
 		
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
 		
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
 
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 
 	}
 	
@@ -124,7 +124,7 @@
 	@Test
 	public void queryVfModuleForVolumeGroupVfObjectExceptionTest() throws Exception {
 		expectedException.expect(BpmnError.class);
-		doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any());	
+		doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID));	
 		sdncQueryTasks.queryVfModuleForVolumeGroup(execution);
 		
 		verify(sdncVfModuleResources, times(0)).queryVfModule(any(VfModule.class));
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCUnassignTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCUnassignTasksTest.java
index 1301787..527fe0d 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCUnassignTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCUnassignTasksTest.java
@@ -76,10 +76,10 @@
 		cloudRegion = setCloudRegion();
 		network = setL3Network();
 		doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(network);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
-		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(network);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
+		when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
 	}
 	
 	@Test
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/sdno/tasks/SDNOHealthCheckTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/sdno/tasks/SDNOHealthCheckTasksTest.java
index 6eb22a6..329f2cf 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/sdno/tasks/SDNOHealthCheckTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/sdno/tasks/SDNOHealthCheckTasksTest.java
@@ -69,7 +69,7 @@
 	public void before() throws BBObjectNotFoundException {
 		genericVnf = setGenericVnf();
 		requestContext = setRequestContext();
-		when(extractPojosForBB.extractByKey(any(),any(), any())).thenReturn(genericVnf);
+		when(extractPojosForBB.extractByKey(any(),any())).thenReturn(genericVnf);
 		
 	}
 
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/AAIConfigurationResourcesTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/AAIConfigurationResourcesTest.java
index 4aeed71..4bf4459 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/AAIConfigurationResourcesTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/AAIConfigurationResourcesTest.java
@@ -98,7 +98,7 @@
         
         aaiConfigurationResources.createConfiguration(configuration);
         
-        assertEquals(OrchestrationStatus.INVENTORIED, configuration.getOrchestrationStatus());
+        assertEquals(OrchestrationStatus.ASSIGNED, configuration.getOrchestrationStatus());
         verify(MOCK_aaiResourcesClient, times(1)).create(any(AAIResourceUri.class), isA(org.onap.aai.domain.yang.Configuration.class));
     }
 
diff --git a/common/src/main/java/org/onap/so/client/cds/CDSProperties.java b/common/src/main/java/org/onap/so/client/cds/CDSProperties.java
index 42a4b47..59c64e0 100644
--- a/common/src/main/java/org/onap/so/client/cds/CDSProperties.java
+++ b/common/src/main/java/org/onap/so/client/cds/CDSProperties.java
@@ -1,23 +1,18 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 - 2019 Bell Canada.
- * ================================================================================
+/*
+ * Copyright (C) 2019 Bell Canada.
+ *
  * 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=========================================================
  */
-
 package org.onap.so.client.cds;
 
 import org.onap.so.client.RestProperties;
@@ -30,4 +25,6 @@
     int getPort();
 
     String getBasicAuth();
+    
+    int getTimeout();
 }
diff --git a/common/src/test/java/org/onap/so/client/cds/TestCDSPropertiesImpl.java b/common/src/test/java/org/onap/so/client/cds/TestCDSPropertiesImpl.java
index 514c595..b0e6709 100644
--- a/common/src/test/java/org/onap/so/client/cds/TestCDSPropertiesImpl.java
+++ b/common/src/test/java/org/onap/so/client/cds/TestCDSPropertiesImpl.java
@@ -1,23 +1,18 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 - 2019 Bell Canada.
- * ================================================================================
+/*
+ * Copyright (C) 2019 Bell Canada.
+ *
  * 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=========================================================
  */
-
 package org.onap.so.client.cds;
 
 import java.net.MalformedURLException;
@@ -68,4 +63,9 @@
     public boolean mapNotFoundToEmpty() {
         return false;
     }
+
+	@Override
+	public int getTimeout() {
+		return 60;
+	}
 }
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/process/ActivateVnfStatusOperationalEnvironment.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/process/ActivateVnfStatusOperationalEnvironment.java
index e09dcd8..cd05aa5 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/process/ActivateVnfStatusOperationalEnvironment.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/process/ActivateVnfStatusOperationalEnvironment.java
@@ -116,10 +116,11 @@
 	    
 			// Update AAI to ACTIVE if Overall success
 			if (isOverallSuccess) {
-				OperationalEnvironment aaiOpEnv = getAAIOperationalEnvironment(this.queryServiceModelResponse.getVnfOperationalEnvId());
+				String vnfOperationalEnvironmentId = this.queryServiceModelResponse.getVnfOperationalEnvId();
+				OperationalEnvironment aaiOpEnv = getAAIOperationalEnvironment(vnfOperationalEnvironmentId);
 				if (aaiOpEnv != null) {
 					aaiOpEnv.setOperationalEnvironmentStatus("ACTIVE");
-					aaiHelper.updateAaiOperationalEnvironment(operationalEnvironmentId, aaiOpEnv);
+					aaiHelper.updateAaiOperationalEnvironment(vnfOperationalEnvironmentId, aaiOpEnv);
 				}else {
 					requestDb.updateInfraFailureCompletion("Unable to update ACTIVATE status in AAI. ", this.origRequestId, this.queryServiceModelResponse.getVnfOperationalEnvId());
 				}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/tenantisolation/process/ActivateVnfStatusOperationalEnvironmentTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/tenantisolation/process/ActivateVnfStatusOperationalEnvironmentTest.java
index 6722941..c0250f7 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/tenantisolation/process/ActivateVnfStatusOperationalEnvironmentTest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/tenantisolation/process/ActivateVnfStatusOperationalEnvironmentTest.java
@@ -240,9 +240,9 @@
 				.willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 						.withStatus(HttpStatus.SC_OK)));
 		
-		stubFor(get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
+		stubFor(get(urlPathEqualTo("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/operational-environment/VNF_operationalEnvironmentId"))
 				.willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json).withStatus(HttpStatus.SC_ACCEPTED)));
-		stubFor(put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
+		stubFor(put(urlPathEqualTo("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/operational-environment/VNF_operationalEnvironmentId"))
 				.willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_ACCEPTED)));
 		
 		activateVnfStatus.execute(requestId, request);		
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/logback-test.xml b/mso-api-handlers/mso-api-handler-infra/src/test/resources/logback-test.xml
index 4da57a1..5e6b88c 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/logback-test.xml
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/logback-test.xml
@@ -38,4 +38,4 @@
 
 	<logger name="wiremock.org" level="ERROR" />
 
-</configuration>
\ No newline at end of file
+</configuration>
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/schema.sql b/mso-api-handlers/mso-api-handler-infra/src/test/resources/schema.sql
index fddd7ad..e469961 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/schema.sql
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/schema.sql
@@ -776,61 +776,105 @@
 DEFAULT CHARACTER SET = latin1;
 
 CREATE TABLE IF NOT EXISTS cvnfc_customization (
-`ID` INT(11) NOT NULL AUTO_INCREMENT,
-`MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-`MODEL_INSTANCE_NAME` VARCHAR(200) NOT NULL,
-`MODEL_UUID` VARCHAR(200) NOT NULL,
-`MODEL_INVARIANT_UUID` VARCHAR(200) NOT NULL,
-`MODEL_VERSION` VARCHAR(20) NOT NULL,
-`MODEL_NAME` VARCHAR(200) NOT NULL,
-`TOSCA_NODE_TYPE` VARCHAR(200) NOT NULL,
-`DESCRIPTION` VARCHAR(1200) NULL DEFAULT NULL,
-`NFC_FUNCTION` VARCHAR(200) NULL,
-`NFC_NAMING_CODE` VARCHAR(200) NULL,
-`CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
-`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-`VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-`VNFC_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, PRIMARY KEY (`ID`), INDEX `fk_cvnfc_customization__vf_module_customization1_idx` (`VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID` ASC), INDEX `fk_cvnfc_customization__vnfc_customization1_idx` (`VNFC_CUST_MODEL_CUSTOMIZATION_UUID` ASC), INDEX `fk_cvnfc_customization__vnf_resource_customization1_idx` (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC), UNIQUE INDEX `UK_cvnfc_customization` (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC, `VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID` ASC, `MODEL_CUSTOMIZATION_UUID` ASC), INDEX `fk_cvnfc_customization__vnf_vfmod_cvnfc_config_cust1_idx` (`MODEL_CUSTOMIZATION_UUID` ASC), CONSTRAINT `fk_cvnfc_customization__vf_module_customization1` FOREIGN KEY (`VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID`) REFERENCES `vf_module_customization` (`MODEL_CUSTOMIZATION_UUID`) ON
-DELETE CASCADE ON
-UPDATE CASCADE, CONSTRAINT `fk_cvnfc_customization__vnfc_customization1` FOREIGN KEY (`VNFC_CUST_MODEL_CUSTOMIZATION_UUID`) REFERENCES `vnfc_customization` (`MODEL_CUSTOMIZATION_UUID`) ON
-DELETE CASCADE ON
-UPDATE CASCADE, CONSTRAINT `fk_cvnfc_customization__vnf_resource_customization1` FOREIGN KEY (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID`) REFERENCES `vnf_resource_customization` (`MODEL_CUSTOMIZATION_UUID`) ON
-DELETE CASCADE ON
-UPDATE CASCADE) ENGINE = InnoDB AUTO_INCREMENT = 20654 DEFAULT CHARACTER SET = latin1;
+  `ID` INT(11) NOT NULL AUTO_INCREMENT, 
+  `MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, 
+  `MODEL_INSTANCE_NAME` VARCHAR(200) NOT NULL, 
+  `MODEL_UUID` VARCHAR(200) NOT NULL, 
+  `MODEL_INVARIANT_UUID` VARCHAR(200) NOT NULL, 
+  `MODEL_VERSION` VARCHAR(20) NOT NULL, 
+  `MODEL_NAME` VARCHAR(200) NOT NULL, 
+  `TOSCA_NODE_TYPE` VARCHAR(200) NOT NULL, 
+  `DESCRIPTION` VARCHAR(1200) NULL DEFAULT NULL, 
+  `NFC_FUNCTION` VARCHAR(200) NULL, 
+  `NFC_NAMING_CODE` VARCHAR(200) NULL, 
+  `CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
+  `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, 
+  `VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, 
+  `VNFC_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, 
+  PRIMARY KEY (`ID`), 
+  INDEX `fk_cvnfc_customization__vf_module_customization1_idx` (
+    `VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID` ASC
+  ), 
+  INDEX `fk_cvnfc_customization__vnfc_customization1_idx` (
+    `VNFC_CUST_MODEL_CUSTOMIZATION_UUID` ASC
+  ), 
+  INDEX `fk_cvnfc_customization__vnf_resource_customization1_idx` (
+    `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC
+  ), 
+  UNIQUE INDEX `UK_cvnfc_customization` (
+    `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC, 
+    `VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID` ASC, 
+    `MODEL_CUSTOMIZATION_UUID` ASC
+  ), 
+  INDEX `fk_cvnfc_customization__vnf_vfmod_cvnfc_config_cust1_idx` (`MODEL_CUSTOMIZATION_UUID` ASC), 
+  CONSTRAINT `fk_cvnfc_customization__vf_module_customization1` FOREIGN KEY (
+    `VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID`
+  ) REFERENCES `vf_module_customization` (`MODEL_CUSTOMIZATION_UUID`) ON DELETE CASCADE ON UPDATE CASCADE, 
+    CONSTRAINT `fk_cvnfc_customization__vnfc_customization1` FOREIGN KEY (
+      `VNFC_CUST_MODEL_CUSTOMIZATION_UUID`
+    ) REFERENCES `vnfc_customization` (`MODEL_CUSTOMIZATION_UUID`) ON DELETE CASCADE ON UPDATE CASCADE, 
+    CONSTRAINT `fk_cvnfc_customization__vnf_resource_customization1` FOREIGN KEY (
+      `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID`
+    ) REFERENCES `vnf_resource_customization` (`MODEL_CUSTOMIZATION_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE = InnoDB AUTO_INCREMENT = 20654 DEFAULT CHARACTER SET = latin1;
 
 CREATE TABLE IF NOT EXISTS vnf_vfmodule_cvnfc_configuration_customization (
-    `ID` INT(11) NOT NULL AUTO_INCREMENT,
-    `MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-    `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-    `VF_MODULE_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-    `CVNFC_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-    `MODEL_INSTANCE_NAME` VARCHAR(200) NOT NULL,
-    `CONFIGURATION_TYPE` VARCHAR(200) NULL,
-    `CONFIGURATION_ROLE` VARCHAR(200) NULL,
-    `CONFIGURATION_FUNCTION` VARCHAR(200) NULL,
-    `POLICY_NAME` VARCHAR(200) NULL,
-    `CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    `CONFIGURATION_MODEL_UUID` VARCHAR(200) NOT NULL,
-    PRIMARY KEY (`ID`),
-    INDEX `fk_vnf_vfmodule_cvnfc_config_cust__configuration_idx` (`CONFIGURATION_MODEL_UUID` ASC),
-    UNIQUE INDEX `UK_vnf_vfmodule_cvnfc_configuration_customization` (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC , `VF_MODULE_MODEL_CUSTOMIZATION_UUID` ASC , `CVNFC_MODEL_CUSTOMIZATION_UUID` ASC , `MODEL_CUSTOMIZATION_UUID` ASC),
-    INDEX `fk_vnf_vfmodule_cvnfc_config_cust__cvnfc_cust1_idx` (`CVNFC_MODEL_CUSTOMIZATION_UUID` ASC),
-    INDEX `fk_vnf_vfmodule_cvnfc_config_cust__vf_module_cust_idx` (`VF_MODULE_MODEL_CUSTOMIZATION_UUID` ASC),
-    INDEX `fk_vnf_vfmodule_cvnfc_config_cust__vnf_res_cust_idx` (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC),
-    CONSTRAINT `fk_vnf_vfmod_cvnfc_config_cust__configuration_resource` FOREIGN KEY (`CONFIGURATION_MODEL_UUID`)
-        REFERENCES `configuration` (`MODEL_UUID`)
-        ON DELETE CASCADE ON UPDATE CASCADE,
-    CONSTRAINT `fk_cvnfc_configuration_customization__cvnfc_customization1` FOREIGN KEY (`CVNFC_MODEL_CUSTOMIZATION_UUID`)
-        REFERENCES `cvnfc_customization` (`MODEL_CUSTOMIZATION_UUID`)
-        ON DELETE CASCADE ON UPDATE CASCADE,
-    CONSTRAINT `fk_vnf_configuration_cvnfc_customization__vf_module_customiza1` FOREIGN KEY (`VF_MODULE_MODEL_CUSTOMIZATION_UUID`)
-        REFERENCES `vf_module_customization` (`MODEL_CUSTOMIZATION_UUID`)
-        ON DELETE CASCADE ON UPDATE CASCADE,
-    CONSTRAINT `fk_vfmodule_cvnfc_configuration_customization__vnf_resource_c1` FOREIGN KEY (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID`)
-        REFERENCES `vnf_resource_customization` (`MODEL_CUSTOMIZATION_UUID`)
-        ON DELETE CASCADE ON UPDATE CASCADE
-)  ENGINE=INNODB AUTO_INCREMENT=20654 DEFAULT CHARACTER SET=LATIN1;
+  `ID` INT(11) NOT NULL AUTO_INCREMENT, 
+  `MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, 
+  `MODEL_INSTANCE_NAME` VARCHAR(200) NOT NULL, 
+  `CONFIGURATION_TYPE` VARCHAR(200) NULL, 
+  `CONFIGURATION_ROLE` VARCHAR(200) NULL, 
+  `CONFIGURATION_FUNCTION` VARCHAR(200) NULL, 
+  `POLICY_NAME` VARCHAR(200) NULL, 
+  `CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
+  `CONFIGURATION_MODEL_UUID` VARCHAR(200) NOT NULL,
+  `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) DEFAULT NULL,
+  `VF_MODULE_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) DEFAULT NULL, 
+  `CVNFC_CUSTOMIZATION_ID` INT(11) DEFAULT NULL,
+  PRIMARY KEY (`ID`), 
+  INDEX `fk_vnf_vfmodule_cvnfc_config_cust__configuration_idx` (`CONFIGURATION_MODEL_UUID` ASC), 
+ 
+  CONSTRAINT `fk_vnf_vfmod_cvnfc_config_cust__configuration_resource` FOREIGN KEY (`CONFIGURATION_MODEL_UUID`) 
+  REFERENCES `configuration` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE = INNODB AUTO_INCREMENT = 20654 DEFAULT CHARACTER SET = LATIN1;
 
+CREATE TABLE IF NOT EXISTS `pnf_resource` (
+  `ORCHESTRATION_MODE` varchar(20) NOT NULL DEFAULT 'HEAT',
+  `DESCRIPTION` varchar(1200) DEFAULT NULL,
+  `CREATION_TIMESTAMP` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `MODEL_UUID` varchar(200) NOT NULL,
+  `MODEL_INVARIANT_UUID` varchar(200) DEFAULT NULL,
+  `MODEL_VERSION` varchar(20) NOT NULL,
+  `MODEL_NAME` varchar(200) DEFAULT NULL,
+  `TOSCA_NODE_TYPE` varchar(200) DEFAULT NULL,
+  `RESOURCE_CATEGORY` varchar(200) DEFAULT NULL,
+  `RESOURCE_SUB_CATEGORY` varchar(200) DEFAULT NULL,
+  PRIMARY KEY (`MODEL_UUID`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `pnf_resource_customization` (
+  `MODEL_CUSTOMIZATION_UUID` varchar(200) NOT NULL,
+  `MODEL_INSTANCE_NAME` varchar(200) NOT NULL,
+  `NF_TYPE` varchar(200) DEFAULT NULL,
+  `NF_ROLE` varchar(200) DEFAULT NULL,
+  `NF_FUNCTION` varchar(200) DEFAULT NULL,
+  `NF_NAMING_CODE` varchar(200) DEFAULT NULL,
+  `CREATION_TIMESTAMP` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `PNF_RESOURCE_MODEL_UUID` varchar(200) NOT NULL,
+  `MULTI_STAGE_DESIGN` varchar(20) DEFAULT NULL,
+  `RESOURCE_INPUT` varchar(2000) DEFAULT NULL,
+  `CDS_BLUEPRINT_NAME` varchar(200) DEFAULT NULL,
+  `CDS_BLUEPRINT_VERSION` varchar(20) DEFAULT NULL,
+  PRIMARY KEY (`MODEL_CUSTOMIZATION_UUID`),
+  KEY `fk_pnf_resource_customization__pnf_resource1_idx` (`PNF_RESOURCE_MODEL_UUID`),
+  CONSTRAINT `fk_pnf_resource_customization__pnf_resource1` FOREIGN KEY (`PNF_RESOURCE_MODEL_UUID`) REFERENCES `pnf_resource` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `pnf_resource_customization_to_service` (
+  `SERVICE_MODEL_UUID` varchar(200) NOT NULL,
+  `RESOURCE_MODEL_CUSTOMIZATION_UUID` varchar(200) NOT NULL,
+  PRIMARY KEY (`SERVICE_MODEL_UUID`,`RESOURCE_MODEL_CUSTOMIZATION_UUID`)
+)ENGINE=InnoDB DEFAULT CHARSET=latin1;
 --------START Request DB SCHEMA --------
 CREATE DATABASE requestdb;
 USE requestdb;
diff --git a/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/RequestProcessingData.java b/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/RequestProcessingData.java
index 34832b9..0a74c1d 100644
--- a/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/RequestProcessingData.java
+++ b/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/RequestProcessingData.java
@@ -33,10 +33,12 @@
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
-import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
 import com.openpojo.business.annotation.BusinessKey;
 
 /**
@@ -50,6 +52,8 @@
  */
 
 @Entity
+
+@JsonInclude(Include.NON_NULL)
 @Table(name = "request_processing_data")
 public class RequestProcessingData implements Serializable{
 
diff --git a/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/client/RequestsDbClient.java b/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/client/RequestsDbClient.java
index 5958397..9c29d96 100644
--- a/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/client/RequestsDbClient.java
+++ b/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/client/RequestsDbClient.java
@@ -308,7 +308,7 @@
 
 	public void saveRequestProcessingData(RequestProcessingData requestProcessingData) {
 		HttpHeaders headers = getHttpHeaders();
-		URI uri = getUri(endpoint + requestProcessingDataURI);
+		URI uri = getUri(requestProcessingDataURI);
 		HttpEntity<RequestProcessingData> entity = new HttpEntity<>(requestProcessingData, headers);
 		restTemplate.postForLocation(uri, entity);
 	}
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/CvnfcCustomization.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/CvnfcCustomization.java
index b1ad0de..9f081cc 100644
--- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/CvnfcCustomization.java
+++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/CvnfcCustomization.java
@@ -121,7 +121,7 @@
 
 	@Override
 	public int hashCode() {
-		return new HashCodeBuilder().append(modelCustomizationUUID).toHashCode();
+		return new HashCodeBuilder().append(modelCustomizationUUID).append(vfModuleCustomization).append(vnfcCustomization).append(vnfResourceCustomization).toHashCode();
 	}
 
 	@Override
@@ -249,6 +249,7 @@
 		this.created = created;
 	}
 
+	@LinkedResource
 	public VfModuleCustomization getVfModuleCustomization() {
 		return vfModuleCustomization;
 	}
@@ -257,6 +258,7 @@
 		this.vfModuleCustomization = vfModuleCustomization;
 	}
 
+	@LinkedResource
 	public VnfcCustomization getVnfcCustomization() {
 		return vnfcCustomization;
 	}
@@ -265,6 +267,7 @@
 		this.vnfcCustomization = vnfcCustomization;
 	}
 
+	@LinkedResource
 	public VnfResourceCustomization getVnfResourceCustomization() {
 		return vnfResourceCustomization;
 	}
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/OrchestrationStatus.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/OrchestrationStatus.java
index b893cec..6902d8f 100644
--- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/OrchestrationStatus.java
+++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/OrchestrationStatus.java
@@ -29,7 +29,8 @@
 	PENDING_ACTIVATION("PendingActivation", "pending.?activation"),
 	PENDING_CREATE("PendingCreate", "pending.?create"),
 	PENDING_DELETE("PendingDelete", "pending.?delete"),
-	PRECREATED("PreCreated", "pre.?created");
+	PRECREATED("PreCreated", "pre.?created"),
+	CONFIGASSIGNED("ConfigAssigned", "config.?assigned");
 
 	private final String name;
 	private final String fuzzyMatcher;
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/VnfVfmoduleCvnfcConfigurationCustomization.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/VnfVfmoduleCvnfcConfigurationCustomization.java
index 7ce657c..e425ebb 100644
--- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/VnfVfmoduleCvnfcConfigurationCustomization.java
+++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/VnfVfmoduleCvnfcConfigurationCustomization.java
@@ -31,6 +31,7 @@
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
+import javax.persistence.JoinColumns;
 import javax.persistence.ManyToOne;
 import javax.persistence.PrePersist;
 import javax.persistence.Table;
@@ -74,7 +75,8 @@
 	private String configurationFunction;	
 
 	@Column(name = "POLICY_NAME")
-	private String policyName;	
+	private String policyName;
+
 	
 	@Column(name = "CREATION_TIMESTAMP", updatable = false)
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
@@ -87,7 +89,7 @@
 	
 	@BusinessKey
 	@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-	@JoinColumn(name = "CVNFC_MODEL_CUSTOMIZATION_UUID", referencedColumnName = "MODEL_CUSTOMIZATION_UUID")
+	@JoinColumn(name = "CVNFC_CUSTOMIZATION_ID")
 	private CvnfcCustomization cvnfcCustomization;
 	
 	@BusinessKey
@@ -98,7 +100,7 @@
 	@BusinessKey
 	@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
 	@JoinColumn(name = "VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID")
-	private VnfResourceCustomization vnfResourceCustomization;
+	private VnfResourceCustomization vnfResourceCustomization; 
 
 	@Override
 	public boolean equals(final Object other) {
@@ -222,6 +224,7 @@
 		this.cvnfcCustomization = cvnfcCustomization;
 	}
 
+	@LinkedResource
 	public VfModuleCustomization getVfModuleCustomization() {
 		return vfModuleCustomization;
 	}
@@ -230,6 +233,7 @@
 		this.vfModuleCustomization = vfModuleCustomization;
 	}
 
+	@LinkedResource
 	public VnfResourceCustomization getVnfResourceCustomization() {
 		return vnfResourceCustomization;
 	}
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java
index f730447..2faac31 100644
--- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java
+++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java
@@ -234,8 +234,6 @@
 
     private final Client<ControllerSelectionReference> controllerSelectionReferenceClient;
 
-    private final Client<VnfVfmoduleCvnfcConfigurationCustomization> vnfVfmoduleCvnfcConfigurationCustomizationClient;
-
     private final Client<PnfResource> pnfResourceClient;
 
     private final Client<PnfResourceCustomization> pnfResourceCustomizationClient;
@@ -365,7 +363,6 @@
         cvnfcCustomizationClient = clientFactory.create(CvnfcCustomization.class);
         controllerSelectionReferenceClient = clientFactory.create(ControllerSelectionReference.class);
         externalServiceToInternalServiceClient = clientFactory.create(ExternalServiceToInternalService.class);
-        vnfVfmoduleCvnfcConfigurationCustomizationClient = clientFactory.create(VnfVfmoduleCvnfcConfigurationCustomization.class);
         pnfResourceClient = clientFactory.create(PnfResource.class);
         pnfResourceCustomizationClient = clientFactory.create(PnfResourceCustomization.class);
     }
@@ -415,7 +412,6 @@
         cvnfcCustomizationClient = clientFactory.create(CvnfcCustomization.class);
         controllerSelectionReferenceClient = clientFactory.create(ControllerSelectionReference.class);
         externalServiceToInternalServiceClient = clientFactory.create(ExternalServiceToInternalService.class);
-        vnfVfmoduleCvnfcConfigurationCustomizationClient = clientFactory.create(VnfVfmoduleCvnfcConfigurationCustomization.class);
         pnfResourceClient = clientFactory.create(PnfResource.class);
         pnfResourceCustomizationClient = clientFactory.create(PnfResourceCustomization.class);
     }
@@ -801,12 +797,24 @@
             .queryParam("VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID", vfModuleCustomizationUUID).build().toString()));
     }
 
-    public VnfVfmoduleCvnfcConfigurationCustomization getVnfVfmoduleCvnfcConfigurationCustomizationByVnfCustomizationUuidAndVfModuleCustomizationUuidAndCvnfcCustomizationUuid(String vnfCustomizationUuid,
-            String vfModuleCustomizationUuid, String cvnfcCustomizationUuid) {
-        return this.getSingleResource(vnfVfmoduleCvnfcConfigurationCustomizationClient, getUri(UriBuilder
-                .fromUri(endpoint + "/vnfVfmoduleCvnfcConfigurationCustomization/search/findOneByVnfResourceCustomizationAndVfModuleCustomizationAndCvnfcCustomization")
-                .queryParam("VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID", vnfCustomizationUuid)
-                .queryParam("VF_MODULE_MODEL_CUSTOMIZATION_UUID", vfModuleCustomizationUuid)
-                .queryParam("CVNFC_MODEL_CUSTOMIZATION_UUID", cvnfcCustomizationUuid).build().toString()));
+    public CvnfcCustomization getCvnfcCustomizationByCustomizationUUID(String cvnfcCustomizationUuid){
+        return this.getSingleResource(cvnfcCustomizationClient,getUri(UriBuilder
+                        .fromUri(endpoint + "/cvnfcCustomization/search/findOneByModelCustomizationUUID").queryParam("modelCustomizationUuid", cvnfcCustomizationUuid)
+                        .build().toString()));
+    }
+
+    //fetch all VnfVfmoduleCvnfcConfigurationCustomization underneath a vnfc
+    //find the VnfVfmoduleCvnfcConfigurationCustomization that is related to our vnf and our vf-module, filter all others.
+    public VnfVfmoduleCvnfcConfigurationCustomization getVnfVfmoduleCvnfcConfigurationCustomizationByVnfCustomizationUuidAndVfModuleCustomizationUuidAndCvnfcCustomizationUuid(
+            String vnfCustomizationUuid, String vfModuleCustomizationUuid, String cvnfcCustomizationUuid) {
+        CvnfcCustomization cvnfc = getCvnfcCustomizationByCustomizationUUID(cvnfcCustomizationUuid);
+        for(VnfVfmoduleCvnfcConfigurationCustomization vnfVfModuleCvnfcCust: cvnfc.getVnfVfmoduleCvnfcConfigurationCustomization()){
+            if(vnfVfModuleCvnfcCust.getVnfResourceCustomization().getModelCustomizationUUID().equals(vnfCustomizationUuid) &&
+                    vnfVfModuleCvnfcCust.getVfModuleCustomization().getModelCustomizationUUID().equals(vfModuleCustomizationUuid)){
+                return vnfVfModuleCvnfcCust;
+            }
+        }
+        return null;
+        
     }
 }
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/VnfVfmoduleCvnfcConfigurationCustomizationRepository.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/VnfVfmoduleCvnfcConfigurationCustomizationRepository.java
index aad75a1..8664c1e 100644
--- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/VnfVfmoduleCvnfcConfigurationCustomizationRepository.java
+++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/VnfVfmoduleCvnfcConfigurationCustomizationRepository.java
@@ -20,21 +20,11 @@
 
 package org.onap.so.db.catalog.data.repository;
 
-import java.util.List;
-
 import org.onap.so.db.catalog.beans.VnfVfmoduleCvnfcConfigurationCustomization;
 import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
 import org.springframework.data.rest.core.annotation.RepositoryRestResource;
 
 @RepositoryRestResource(collectionResourceRel = "vnfVfmoduleCvnfcConfigurationCustomization", path = "vnfVfmoduleCvnfcConfigurationCustomization")
 public interface VnfVfmoduleCvnfcConfigurationCustomizationRepository extends JpaRepository<VnfVfmoduleCvnfcConfigurationCustomization, Integer> {
-	List<VnfVfmoduleCvnfcConfigurationCustomization> findByModelCustomizationUUID(String modelCustomizationUUID);
-	
-	@Query(value = "SELECT * FROM vnf_vfmodule_cvnfc_configuration_customization WHERE VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID = ?1 AND VF_MODULE_MODEL_CUSTOMIZATION_UUID = ?2 AND CVNFC_MODEL_CUSTOMIZATION_UUID = ?3", nativeQuery = true)
-	VnfVfmoduleCvnfcConfigurationCustomization findOneByVnfResourceCustomizationAndVfModuleCustomizationAndCvnfcCustomization (
-			@Param("VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID") String vnfResourceCustomizationUuid, 
-			@Param("VF_MODULE_MODEL_CUSTOMIZATION_UUID") String vfModuleCustomizationUuid,
-			@Param("CVNFC_MODEL_CUSTOMIZATION_UUID") String cvnfcCustomizationUuid);
+
 }
\ No newline at end of file
diff --git a/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CvnfcCustomizationRepositoryTest.java b/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CvnfcCustomizationRepositoryTest.java
index 8de5366..4b65984 100644
--- a/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CvnfcCustomizationRepositoryTest.java
+++ b/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CvnfcCustomizationRepositoryTest.java
@@ -309,6 +309,8 @@
     	Set<VnfVfmoduleCvnfcConfigurationCustomization> vnfVfmoduleCvnfcConfigurationCustomizationSet = new HashSet<VnfVfmoduleCvnfcConfigurationCustomization>();
     	vnfVfmoduleCvnfcConfigurationCustomizationSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
     	cvnfcCustomization.setVnfVfmoduleCvnfcConfigurationCustomization(vnfVfmoduleCvnfcConfigurationCustomizationSet);
+    	vfModuleCustomization.setVnfVfmoduleCvnfcConfigurationCustomization(vnfVfmoduleCvnfcConfigurationCustomizationSet);
+    	vnfResourceCustomization.setVnfVfmoduleCvnfcConfigurationCustomization(vnfVfmoduleCvnfcConfigurationCustomizationSet);
     	
     	cvnfcCustomizationRepository.save(cvnfcCustomization);
     	
diff --git a/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/VnfVfmoduleCvnfcConfigurationCustomizationRepositoryTest.java b/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/VnfVfmoduleCvnfcConfigurationCustomizationRepositoryTest.java
deleted file mode 100644
index a953fc8..0000000
--- a/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/VnfVfmoduleCvnfcConfigurationCustomizationRepositoryTest.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 - 2018 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=========================================================
- */
-
-package org.onap.so.db.catalog.data.repository;
-
-import static org.junit.Assert.fail;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.onap.so.db.catalog.BaseTest;
-import org.onap.so.db.catalog.beans.ConfigurationResource;
-import org.onap.so.db.catalog.beans.CvnfcCustomization;
-import org.onap.so.db.catalog.beans.VfModule;
-import org.onap.so.db.catalog.beans.VfModuleCustomization;
-import org.onap.so.db.catalog.beans.VnfResource;
-import org.onap.so.db.catalog.beans.VnfResourceCustomization;
-import org.onap.so.db.catalog.beans.VnfVfmoduleCvnfcConfigurationCustomization;
-import org.onap.so.db.catalog.beans.VnfcCustomization;
-import org.onap.so.db.catalog.exceptions.NoEntityFoundException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
-
-public class VnfVfmoduleCvnfcConfigurationCustomizationRepositoryTest extends BaseTest {
-    @Autowired
-    private VnfVfmoduleCvnfcConfigurationCustomizationRepository vnfVfmoduleCvnfcConfigurationCustomizationRepository;
-    @Autowired
-    private CvnfcCustomizationRepository cvnfcCustomizationRepository;
-
-    @Test
-    public void findAllTest() throws Exception {
-        List<VnfVfmoduleCvnfcConfigurationCustomization> vnfVfmoduleCvnfcConfigurationCustomizationList = vnfVfmoduleCvnfcConfigurationCustomizationRepository.findAll();
-        Assert.assertFalse(CollectionUtils.isEmpty(vnfVfmoduleCvnfcConfigurationCustomizationList));
-        
-        VnfVfmoduleCvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization = 
-        		vnfVfmoduleCvnfcConfigurationCustomizationRepository.findById(1).orElseThrow(() -> new NoEntityFoundException("Cannot Find Operation"));
-
-		
-        Assert.assertTrue(vnfVfmoduleCvnfcConfigurationCustomization.getConfigurationFunction().equalsIgnoreCase("testConfigurationFunction"));
-    }
-    
-    @Test
-    @Transactional
-    public void createAndGetTest() throws Exception {
-    	
-    	VnfVfmoduleCvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization = new VnfVfmoduleCvnfcConfigurationCustomization();
-    	vnfVfmoduleCvnfcConfigurationCustomization.setModelCustomizationUUID("cf9f6efc-9f14-11e8-98d0-529269fb1459");
-    	vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("testModelInstanceName");
-    	vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationType("testConfigurationType");
-    	vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationRole("testConfigurationRole");
-    	vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationFunction("testConfigurationFunction");
-    	vnfVfmoduleCvnfcConfigurationCustomization.setPolicyName("testPolicyName");
-
-    	ConfigurationResource configurationResource = new ConfigurationResource();
-    	configurationResource.setModelUUID("98b42780-9f13-11e8-98d0-529269fb1459");
-    	configurationResource.setModelInvariantUUID("c9338d1a-9f13-11e8-98d0-529269fb1459");
-    	configurationResource.setModelVersion("testModelVertsion");
-    	configurationResource.setModelName("testModelName");
-    	configurationResource.setToscaNodeType("testToscaNodeType");
-    	configurationResource.setDescription("testConfigurationDescription");
-    	vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
-    	
-    	CvnfcCustomization cvnfcCustomization = setUpCvnfcCustomization();
-    	cvnfcCustomization.setModelCustomizationUUID("0c3a8b76-3f5b-11e9-b210-d663bd873d93");
-
-    	VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
-    	vfModuleCustomization.setModelCustomizationUUID("cf9f6efc-9f14-11e8-98d0-529269fb1459");
-    	
-    	VfModule vFModule = setUpVfModule();
-    	VnfResource vnfResource = setUpVnfResource();
-
-    	vFModule.setVnfResources(vnfResource);
-    	vfModuleCustomization.setVfModule(vFModule);
-    	cvnfcCustomization.setVfModuleCustomization(vfModuleCustomization);
-    	
-    	VnfResourceCustomization vnfResourceCustomization = new VnfResourceCustomization();
-    	vnfResourceCustomization.setModelCustomizationUUID("cf9f6efc-9f14-11e8-98d0-529269fb1459"); 
-    	vnfResourceCustomization.setModelInstanceName("testModelInstanceName");
-    	
-    	List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList();
-    	vnfResourceCustomizations.add(vnfResourceCustomization);
-    	vnfResource.setVnfResourceCustomizations(vnfResourceCustomizations);
-    	vnfResourceCustomization.setVnfResources(vnfResource);
-    	
-    	cvnfcCustomization.setVnfResourceCustomization(vnfResourceCustomization);
-    	
-    	VnfcCustomization vnfcCustomization = setUpVnfcCustomization();
-    	vnfcCustomization.setModelCustomizationUUID("0aa015ea-9ff3-11e8-98d0-529269fb1459");
-    	cvnfcCustomization.setVnfcCustomization(vnfcCustomization);
-    	
-    	cvnfcCustomizationRepository.save(cvnfcCustomization);
-    	
-    	vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
-    	vnfVfmoduleCvnfcConfigurationCustomization.setVfModuleCustomization(vfModuleCustomization);
-    	vnfVfmoduleCvnfcConfigurationCustomization.setVnfResourceCustomization(vnfResourceCustomization);
-    	
-    	vnfVfmoduleCvnfcConfigurationCustomizationRepository.save(vnfVfmoduleCvnfcConfigurationCustomization);
-    	
-    	VnfVfmoduleCvnfcConfigurationCustomization foundVnfVfmoduleCvnfcConfigurationCustomization = 
-    			vnfVfmoduleCvnfcConfigurationCustomizationRepository.findById(1).orElseThrow(() -> new NoEntityFoundException("Cannot Find Operation"));
-       
-        
-    	if(foundVnfVfmoduleCvnfcConfigurationCustomization == null)
-    		fail("should not be null");
-    	
-    	VnfVfmoduleCvnfcConfigurationCustomization foundOneVnfVfmoduleCvnfcConfigurationCustomization = 
-    			vnfVfmoduleCvnfcConfigurationCustomizationRepository.findOneByVnfResourceCustomizationAndVfModuleCustomizationAndCvnfcCustomization("cf9f6efc-9f14-11e8-98d0-529269fb1459", "cf9f6efc-9f14-11e8-98d0-529269fb1459", "0c3a8b76-3f5b-11e9-b210-d663bd873d93");
-
-    	if(foundOneVnfVfmoduleCvnfcConfigurationCustomization == null)
-    		fail("should not be null");
-    	Assert.assertTrue(foundOneVnfVfmoduleCvnfcConfigurationCustomization.getConfigurationFunction().equalsIgnoreCase("testConfigurationFunction"));
-    }
-}
\ No newline at end of file
diff --git a/mso-catalog-db/src/test/resources/data.sql b/mso-catalog-db/src/test/resources/data.sql
index a59137d..ffd1265 100644
--- a/mso-catalog-db/src/test/resources/data.sql
+++ b/mso-catalog-db/src/test/resources/data.sql
@@ -736,9 +736,7 @@
 INSERT INTO vnf_vfmodule_cvnfc_configuration_customization
             (id,
              model_customization_uuid,
-             vnf_resource_cust_model_customization_uuid,
-             vf_module_model_customization_uuid,
-             cvnfc_model_customization_uuid,
+             CVNFC_CUSTOMIZATION_ID,
              model_instance_name,
              configuration_type,
              configuration_role,
@@ -748,9 +746,7 @@
              configuration_model_uuid)
 VALUES      ( '1',
               '7bcce658-9b37-11e8-98d0-529269fb1450',
-              '68dc9a92-214c-11e7-93ae-92361f002671',
-              'cb82ffd8-252a-11e7-93ae-92361f002671',
-              '9bcce658-9b37-11e8-98d0-529269fb1459',
+              '1',
               'testModelInstanceName',
               'testConfigurationType',
               'testConfigurationRole',
diff --git a/mso-catalog-db/src/test/resources/logback-test.xml b/mso-catalog-db/src/test/resources/logback-test.xml
index 0bf39bd..68e4fcf 100644
--- a/mso-catalog-db/src/test/resources/logback-test.xml
+++ b/mso-catalog-db/src/test/resources/logback-test.xml
@@ -39,9 +39,14 @@
     <appender-ref ref="STDOUT" />
   </logger>
   
-	<logger name="org.onap" level="${so.log.level:-DEBUG}" additivity="false">
+	<logger name="org.onap" level="DEBUG" additivity="false">
 		<appender-ref ref="STDOUT" />
 	</logger>
+	
+    <logger name="org.hibernate" level="DEBUG" additivity="false">
+        <appender-ref ref="STDOUT" />
+    </logger>
+    
   <root level="info">
     <appender-ref ref="STDOUT" />
   </root>
diff --git a/mso-catalog-db/src/test/resources/schema.sql b/mso-catalog-db/src/test/resources/schema.sql
index 6bd9bae..d53d892 100644
--- a/mso-catalog-db/src/test/resources/schema.sql
+++ b/mso-catalog-db/src/test/resources/schema.sql
@@ -893,61 +893,67 @@
 DEFAULT CHARACTER SET = latin1;
 
 CREATE TABLE IF NOT EXISTS cvnfc_customization (
-`ID` INT(11) NOT NULL AUTO_INCREMENT,
-`MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-`MODEL_INSTANCE_NAME` VARCHAR(200) NOT NULL,
-`MODEL_UUID` VARCHAR(200) NOT NULL,
-`MODEL_INVARIANT_UUID` VARCHAR(200) NOT NULL,
-`MODEL_VERSION` VARCHAR(20) NOT NULL,
-`MODEL_NAME` VARCHAR(200) NOT NULL,
-`TOSCA_NODE_TYPE` VARCHAR(200) NOT NULL,
-`DESCRIPTION` VARCHAR(1200) NULL DEFAULT NULL,
-`NFC_FUNCTION` VARCHAR(200) NULL,
-`NFC_NAMING_CODE` VARCHAR(200) NULL,
-`CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
-`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-`VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-`VNFC_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, PRIMARY KEY (`ID`), INDEX `fk_cvnfc_customization__vf_module_customization1_idx` (`VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID` ASC), INDEX `fk_cvnfc_customization__vnfc_customization1_idx` (`VNFC_CUST_MODEL_CUSTOMIZATION_UUID` ASC), INDEX `fk_cvnfc_customization__vnf_resource_customization1_idx` (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC), UNIQUE INDEX `UK_cvnfc_customization` (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC, `VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID` ASC, `MODEL_CUSTOMIZATION_UUID` ASC), INDEX `fk_cvnfc_customization__vnf_vfmod_cvnfc_config_cust1_idx` (`MODEL_CUSTOMIZATION_UUID` ASC), CONSTRAINT `fk_cvnfc_customization__vf_module_customization1` FOREIGN KEY (`VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID`) REFERENCES `vf_module_customization` (`MODEL_CUSTOMIZATION_UUID`) ON
-DELETE CASCADE ON
-UPDATE CASCADE, CONSTRAINT `fk_cvnfc_customization__vnfc_customization1` FOREIGN KEY (`VNFC_CUST_MODEL_CUSTOMIZATION_UUID`) REFERENCES `vnfc_customization` (`MODEL_CUSTOMIZATION_UUID`) ON
-DELETE CASCADE ON
-UPDATE CASCADE, CONSTRAINT `fk_cvnfc_customization__vnf_resource_customization1` FOREIGN KEY (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID`) REFERENCES `vnf_resource_customization` (`MODEL_CUSTOMIZATION_UUID`) ON
-DELETE CASCADE ON
-UPDATE CASCADE) ENGINE = InnoDB AUTO_INCREMENT = 20654 DEFAULT CHARACTER SET = latin1;
-
+  `ID` INT(11) NOT NULL AUTO_INCREMENT, 
+  `MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, 
+  `MODEL_INSTANCE_NAME` VARCHAR(200) NOT NULL, 
+  `MODEL_UUID` VARCHAR(200) NOT NULL, 
+  `MODEL_INVARIANT_UUID` VARCHAR(200) NOT NULL, 
+  `MODEL_VERSION` VARCHAR(20) NOT NULL, 
+  `MODEL_NAME` VARCHAR(200) NOT NULL, 
+  `TOSCA_NODE_TYPE` VARCHAR(200) NOT NULL, 
+  `DESCRIPTION` VARCHAR(1200) NULL DEFAULT NULL, 
+  `NFC_FUNCTION` VARCHAR(200) NULL, 
+  `NFC_NAMING_CODE` VARCHAR(200) NULL, 
+  `CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
+  `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, 
+  `VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, 
+  `VNFC_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, 
+  PRIMARY KEY (`ID`), 
+  INDEX `fk_cvnfc_customization__vf_module_customization1_idx` (
+    `VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID` ASC
+  ), 
+  INDEX `fk_cvnfc_customization__vnfc_customization1_idx` (
+    `VNFC_CUST_MODEL_CUSTOMIZATION_UUID` ASC
+  ), 
+  INDEX `fk_cvnfc_customization__vnf_resource_customization1_idx` (
+    `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC
+  ), 
+  UNIQUE INDEX `UK_cvnfc_customization` (
+    `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC, 
+    `VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID` ASC, 
+    `MODEL_CUSTOMIZATION_UUID` ASC
+  ), 
+  INDEX `fk_cvnfc_customization__vnf_vfmod_cvnfc_config_cust1_idx` (`MODEL_CUSTOMIZATION_UUID` ASC), 
+  CONSTRAINT `fk_cvnfc_customization__vf_module_customization1` FOREIGN KEY (
+    `VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID`
+  ) REFERENCES `vf_module_customization` (`MODEL_CUSTOMIZATION_UUID`) ON DELETE CASCADE ON UPDATE CASCADE, 
+    CONSTRAINT `fk_cvnfc_customization__vnfc_customization1` FOREIGN KEY (
+      `VNFC_CUST_MODEL_CUSTOMIZATION_UUID`
+    ) REFERENCES `vnfc_customization` (`MODEL_CUSTOMIZATION_UUID`) ON DELETE CASCADE ON UPDATE CASCADE, 
+    CONSTRAINT `fk_cvnfc_customization__vnf_resource_customization1` FOREIGN KEY (
+      `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID`
+    ) REFERENCES `vnf_resource_customization` (`MODEL_CUSTOMIZATION_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE = InnoDB AUTO_INCREMENT = 20654 DEFAULT CHARACTER SET = latin1;
 
 CREATE TABLE IF NOT EXISTS vnf_vfmodule_cvnfc_configuration_customization (
-    `ID` INT(11) NOT NULL AUTO_INCREMENT,
-    `MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-    `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-    `VF_MODULE_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-    `CVNFC_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL,
-    `MODEL_INSTANCE_NAME` VARCHAR(200) NOT NULL,
-    `CONFIGURATION_TYPE` VARCHAR(200) NULL,
-    `CONFIGURATION_ROLE` VARCHAR(200) NULL,
-    `CONFIGURATION_FUNCTION` VARCHAR(200) NULL,
-    `POLICY_NAME` VARCHAR(200) NULL,
-    `CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    `CONFIGURATION_MODEL_UUID` VARCHAR(200) NOT NULL,
-    PRIMARY KEY (`ID`),
-    INDEX `fk_vnf_vfmodule_cvnfc_config_cust__configuration_idx` (`CONFIGURATION_MODEL_UUID` ASC),
-    UNIQUE INDEX `UK_vnf_vfmodule_cvnfc_configuration_customization` (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC , `VF_MODULE_MODEL_CUSTOMIZATION_UUID` ASC , `CVNFC_MODEL_CUSTOMIZATION_UUID` ASC , `MODEL_CUSTOMIZATION_UUID` ASC),
-    INDEX `fk_vnf_vfmodule_cvnfc_config_cust__cvnfc_cust1_idx` (`CVNFC_MODEL_CUSTOMIZATION_UUID` ASC),
-    INDEX `fk_vnf_vfmodule_cvnfc_config_cust__vf_module_cust_idx` (`VF_MODULE_MODEL_CUSTOMIZATION_UUID` ASC),
-    INDEX `fk_vnf_vfmodule_cvnfc_config_cust__vnf_res_cust_idx` (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` ASC),
-    CONSTRAINT `fk_vnf_vfmod_cvnfc_config_cust__configuration_resource` FOREIGN KEY (`CONFIGURATION_MODEL_UUID`)
-        REFERENCES `configuration` (`MODEL_UUID`)
-        ON DELETE CASCADE ON UPDATE CASCADE,
-    CONSTRAINT `fk_cvnfc_configuration_customization__cvnfc_customization1` FOREIGN KEY (`CVNFC_MODEL_CUSTOMIZATION_UUID`)
-        REFERENCES `cvnfc_customization` (`MODEL_CUSTOMIZATION_UUID`)
-        ON DELETE CASCADE ON UPDATE CASCADE,
-    CONSTRAINT `fk_vnf_configuration_cvnfc_customization__vf_module_customiza1` FOREIGN KEY (`VF_MODULE_MODEL_CUSTOMIZATION_UUID`)
-        REFERENCES `vf_module_customization` (`MODEL_CUSTOMIZATION_UUID`)
-        ON DELETE CASCADE ON UPDATE CASCADE,
-    CONSTRAINT `fk_vfmodule_cvnfc_configuration_customization__vnf_resource_c1` FOREIGN KEY (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID`)
-        REFERENCES `vnf_resource_customization` (`MODEL_CUSTOMIZATION_UUID`)
-        ON DELETE CASCADE ON UPDATE CASCADE
-)  ENGINE=INNODB AUTO_INCREMENT=20654 DEFAULT CHARACTER SET=LATIN1;
+  `ID` INT(11) NOT NULL AUTO_INCREMENT, 
+  `MODEL_CUSTOMIZATION_UUID` VARCHAR(200) NOT NULL, 
+  `MODEL_INSTANCE_NAME` VARCHAR(200) NOT NULL, 
+  `CONFIGURATION_TYPE` VARCHAR(200) NULL, 
+  `CONFIGURATION_ROLE` VARCHAR(200) NULL, 
+  `CONFIGURATION_FUNCTION` VARCHAR(200) NULL, 
+  `POLICY_NAME` VARCHAR(200) NULL, 
+  `CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
+  `CONFIGURATION_MODEL_UUID` VARCHAR(200) NOT NULL,
+  `VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) DEFAULT NULL,
+  `VF_MODULE_MODEL_CUSTOMIZATION_UUID` VARCHAR(200) DEFAULT NULL, 
+  `CVNFC_CUSTOMIZATION_ID` INT(11) DEFAULT NULL,
+  PRIMARY KEY (`ID`), 
+  INDEX `fk_vnf_vfmodule_cvnfc_config_cust__configuration_idx` (`CONFIGURATION_MODEL_UUID` ASC), 
+ 
+  CONSTRAINT `fk_vnf_vfmod_cvnfc_config_cust__configuration_resource` FOREIGN KEY (`CONFIGURATION_MODEL_UUID`) 
+  REFERENCES `configuration` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE = INNODB AUTO_INCREMENT = 20654 DEFAULT CHARACTER SET = LATIN1;
 
 CREATE TABLE IF NOT EXISTS `pnf_resource` (
   `ORCHESTRATION_MODE` varchar(20) NOT NULL DEFAULT 'HEAT',
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.spec.ts
index 8205226..8f2af84 100644
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.spec.ts
+++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.spec.ts
@@ -1,138 +1,218 @@
-/**

-============LICENSE_START=======================================================

- Copyright (C) 2018 Ericsson. 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.

-

-SPDX-License-Identifier: Apache-2.0

-============LICENSE_END=========================================================

-

-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com

-*/

-

-import { async, ComponentFixture, TestBed } from '@angular/core/testing';

-

-import { DetailsComponent } from './details.component';

-import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';

-import { RouterTestingModule } from '@angular/router/testing';

-import { MatTableModule } from '@angular/material';

-import { inject } from '@angular/core/testing';

-import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';

-import { HttpClientModule } from '@angular/common/http';

-import { HttpClient } from '@angular/common/http';

-import { RouterModule } from '@angular/router';

-import { APP_BASE_HREF } from '@angular/common';

-import { ToastrNotificationService } from '../toastr-notification-service.service';

-import { DataService } from '../data.service';

-import { Observable, of } from 'rxjs';

-import { ACTINST } from '../model/activityInstance.model';

-import { PDI } from '../model/processDefinition.model';

-import { PII } from '../model/processInstance.model';

-import { VarInstance } from '../model/variableInstance.model';

-

-// Generate stub for toastr popup notifications

-class StubbedToastrNotificationService extends ToastrNotificationService {

-  toastrSettings() {

-  }

-}

-

-// Create SPY Object for Jasmine tests to mock DataService

-let spyDataService: jasmine.SpyObj<DataService>;

-

-describe('DetailsComponent', () => {

-  beforeEach(async(() => {

-    spyDataService = jasmine.createSpyObj('DataService', ['getActivityInstance', 'getVariableInstance']);

-

-    TestBed.configureTestingModule({

-      providers: [DetailsComponent, HttpClient, HttpTestingController,

-        { provide: APP_BASE_HREF, useValue: '/' },

-        { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService },

-        { provide: DataService, useValue: spyDataService }],

-      imports: [RouterTestingModule, MatTableModule, HttpClientModule, RouterModule.forRoot([])],

-      schemas: [

-        CUSTOM_ELEMENTS_SCHEMA

-      ]

-    })

-      .compileComponents();

-  }));

-

-  // Ensure creation of DetailsComponent component

-  it('component should be created', inject([DetailsComponent],

-    (detailsComponent: DetailsComponent) => {

-      expect(detailsComponent).toBeTruthy();

-    }));

-

-

-  // Mock an activityInstance and ensure array is populated

-  it('activityInstance should be defined if data service returns activities', inject([DetailsComponent],

-    (detailsComponent: DetailsComponent) => {

-      const activity: ACTINST = {

-        activityId: "",

-        processInstanceId: "",

-        calledProcessInstanceId: "",

-        activityName: "",

-        activityType: "",

-        durationInMillis: "1",

-        endTime: "",

-        startTime: ""

-      };

-      spyDataService.getActivityInstance.and.returnValue(of([activity]));

-      detailsComponent.getActInst("");

-      expect(detailsComponent.activityInstance.length).toEqual(1);

-    }));

-

-

-  // Create a processDefinition and ensure it is defined

-  it('processDefinition should be defined if PDI populated', inject([DetailsComponent],

-    (detailsComponent: DetailsComponent) => {

-      const activity: PDI = {

-        processDefinitionId: "1",

-        processDefinitionXml: ""

-      };

-      detailsComponent.getProcessDefinition("");

-      detailsComponent.processDefinition = activity;

-      expect(detailsComponent.processDefinition).toBeDefined();

-    }));

-

-

-  // Create a processInstance and ensure it is defined

-  it('processInstance should be defined if PII populated', inject([DetailsComponent],

-    (detailsComponent: DetailsComponent) => {

-      const testVals: PII = {

-        processInstancId: "1",

-        processDefinitionId: "1",

-        processDefinitionName: "test",

-        superProcessInstanceId: "1"

-      };

-      detailsComponent.getProcInstance("");

-      detailsComponent.processInstance = testVals;

-      expect(detailsComponent.processInstance).toBeDefined();

-    }));

-

-

-    // displayCamundaflow test

-    // TODO

-

-    // Mock an variableInstance and ensure array is populated

-    it('variableInstance should be defined if data service returns activities', inject([DetailsComponent],

-      (detailsComponent: DetailsComponent) => {

-        const activity2: VarInstance = {

-          name: "a",

-          type: "a",

-          value: "1"

-        };

-        spyDataService.getVariableInstance.and.returnValue(of([activity2]));

-        detailsComponent.getVarInst("");

-        expect(detailsComponent.variableInstance.length).toEqual(1);

-      }));

-});

+/**
+============LICENSE_START=======================================================
+ Copyright (C) 2018 Ericsson. 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.
+
+SPDX-License-Identifier: Apache-2.0
+============LICENSE_END=========================================================
+
+@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com, andrei.barcovschi@ericsson.com
+*/
+
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DetailsComponent } from './details.component';
+import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
+import { RouterTestingModule } from '@angular/router/testing';
+import { MatTableModule } from '@angular/material';
+import { inject } from '@angular/core/testing';
+import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
+import { HttpClientModule } from '@angular/common/http';
+import { HttpClient } from '@angular/common/http';
+import { RouterModule } from '@angular/router';
+import { APP_BASE_HREF } from '@angular/common';
+import { ToastrNotificationService } from '../toastr-notification-service.service';
+import { DataService } from '../data.service';
+import { Observable, of, throwError } from 'rxjs';
+import { ACTINST } from '../model/activityInstance.model';
+import { PDI } from '../model/processDefinition.model';
+import { PII } from '../model/processInstance.model';
+import { VarInstance } from '../model/variableInstance.model';
+import { ActivatedRoute } from '@angular/router';
+import { Params } from '@angular/router';
+
+// Generate stub for toastr popup notifications
+class StubbedToastrNotificationService extends ToastrNotificationService {
+  toastrSettings() {}
+  info() {}
+  error() {}
+}
+
+const startActivity: ACTINST = {
+  activityId: "StartEvent_1",
+  processInstanceId: "processInstanceId-val-1234",
+  calledProcessInstanceId: "",
+  activityName: "",
+  activityType: "",
+  durationInMillis: "1",
+  endTime: "",
+  startTime: ""
+};
+
+const subProcessActivity: ACTINST = {
+  activityId: "CallActivity_14h26ae",
+  processInstanceId: "processInstanceId-val-1234",
+  calledProcessInstanceId: "1234",
+  activityName: "",
+  activityType: "",
+  durationInMillis: "1",
+  endTime: "",
+  startTime: ""
+};
+
+const processDefinition: PDI = {
+  processDefinitionId: "processDefinitionId-val-1234",
+  processDefinitionXml: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
+    "<bpmn:definitions xmlns:bpmn=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:di=\"http://www.omg.org/spec/DD/20100524/DI\" xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\" xmlns:camunda=\"http://camunda.org/schema/1.0/bpmn\" id=\"Definitions_01lwydo\" targetNamespace=\"http://bpmn.io/schema/bpmn\" exporter=\"Camunda Modeler\" exporterVersion=\"2.2.4\">" +
+    "  <bpmn:process id=\"Process_1\" isExecutable=\"true\">" +
+    "    <bpmn:startEvent id=\"StartEvent_1\">" +
+    "      <bpmn:outgoing>SequenceFlow_1rrp6qt</bpmn:outgoing>" +
+    "    </bpmn:startEvent>" +
+    "    <bpmn:callActivity id=\"CallActivity_14h26ae\" name=\"Sub Process\" calledElement=\"DecomposeService\">" +
+    "      <bpmn:incoming>SequenceFlow_1rrp6qt</bpmn:incoming>" +
+    "      <bpmn:outgoing>SequenceFlow_0yvdjct</bpmn:outgoing>" +
+    "    </bpmn:callActivity>" +
+    "    <bpmn:sequenceFlow id=\"SequenceFlow_1rrp6qt\" sourceRef=\"StartEvent_1\" targetRef=\"CallActivity_14h26ae\" />" +
+    "    <bpmn:endEvent id=\"EndEvent_039q5o1\">" +
+    "      <bpmn:incoming>SequenceFlow_0yvdjct</bpmn:incoming>" +
+    "    </bpmn:endEvent>" +
+    "    <bpmn:sequenceFlow id=\"SequenceFlow_0yvdjct\" sourceRef=\"CallActivity_14h26ae\" targetRef=\"EndEvent_039q5o1\" />" +
+    "  </bpmn:process>" +
+    "  <bpmndi:BPMNDiagram id=\"BPMNDiagram_1\">" +
+    "    <bpmndi:BPMNPlane id=\"BPMNPlane_1\" bpmnElement=\"Process_1\">" +
+    "      <bpmndi:BPMNShape id=\"_BPMNShape_StartEvent_2\" bpmnElement=\"StartEvent_1\">" +
+    "        <dc:Bounds x=\"173\" y=\"102\" width=\"36\" height=\"36\" />" +
+    "      </bpmndi:BPMNShape>" +
+    "      <bpmndi:BPMNShape id=\"CallActivity_14h26ae_di\" bpmnElement=\"CallActivity_14h26ae\">" +
+    "        <dc:Bounds x=\"267\" y=\"80\" width=\"100\" height=\"80\" />" +
+    "      </bpmndi:BPMNShape>" +
+    "      <bpmndi:BPMNEdge id=\"SequenceFlow_1rrp6qt_di\" bpmnElement=\"SequenceFlow_1rrp6qt\">" +
+    "        <di:waypoint x=\"209\" y=\"120\" />" +
+    "        <di:waypoint x=\"267\" y=\"120\" />" +
+    "      </bpmndi:BPMNEdge>" +
+    "      <bpmndi:BPMNShape id=\"EndEvent_039q5o1_di\" bpmnElement=\"EndEvent_039q5o1\">" +
+    "        <dc:Bounds x=\"451\" y=\"102\" width=\"36\" height=\"36\" />" +
+    "      </bpmndi:BPMNShape>" +
+    "      <bpmndi:BPMNEdge id=\"SequenceFlow_0yvdjct_di\" bpmnElement=\"SequenceFlow_0yvdjct\">" +
+    "        <di:waypoint x=\"367\" y=\"120\" />" +
+    "        <di:waypoint x=\"451\" y=\"120\" />" +
+    "      </bpmndi:BPMNEdge>" +
+    "    </bpmndi:BPMNPlane>" +
+    "  </bpmndi:BPMNDiagram>" +
+    "</bpmn:definitions>"
+};
+
+const emptyProcessDefinition: PDI = {
+  processDefinitionId: "processDefinitionId-val",
+  processDefinitionXml: ""
+};
+
+const processInstance: PII = {
+  processInstancId: "processInstanceId-val-1234",
+  processDefinitionId: "1",
+  processDefinitionName: "test",
+  superProcessInstanceId: "1"
+};
+
+const varInstanceObj: VarInstance = {
+  name: 'ABC',
+  type: 'Object',
+  value: '{value: 1234}'
+};
+
+const varInstanceStr: VarInstance = {
+  name: 'NameStr',
+  type: 'String',
+  value: 'valOfStr'
+};
+
+describe('DetailsComponent', (displayCamundaflow = {}) => {
+  // Create SPY Object for Jasmine tests to mock DataService
+  let spyDataService: jasmine.SpyObj<DataService>;
+  let component: DetailsComponent;
+  let fixture: ComponentFixture<DetailsComponent>;
+
+  beforeEach(async(() => {
+    spyDataService = jasmine.createSpyObj('DataService', ['getActivityInstance', 'getVariableInstance', 'getProcessDefinition', 'getProcessInstance']);
+
+    TestBed.configureTestingModule({
+      providers: [DetailsComponent, HttpClient, HttpTestingController,
+        { provide: APP_BASE_HREF, useValue: '/' },
+        { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService },
+        { provide: DataService, useValue: spyDataService },
+        { provide: ActivatedRoute, useValue: { params: of({ id: '1234' }) } }],
+      imports: [RouterTestingModule, MatTableModule, HttpClientModule, RouterModule.forRoot([])],
+      declarations: [DetailsComponent],
+      schemas: [
+        CUSTOM_ELEMENTS_SCHEMA
+      ]
+    });
+    fixture = TestBed.createComponent(DetailsComponent);
+    component = fixture.componentInstance;
+  }));
+
+  // Ensure creation of DetailsComponent component
+  it('component should be created', inject([DetailsComponent],
+    (detailsComponent: DetailsComponent) => {
+      expect(detailsComponent).toBeTruthy();
+    }));
+
+  // Create a processInstance and ensure it is defined
+  it('processInstance should be defined if PII populated', async(() => {
+    spyDataService.getActivityInstance.and.returnValue(Promise.resolve([startActivity, subProcessActivity]));
+    spyDataService.getProcessDefinition.and.returnValue(of(processDefinition));
+    spyDataService.getProcessInstance.and.returnValue(Promise.resolve(processInstance));
+    spyDataService.getVariableInstance.and.returnValue(of([varInstanceObj]));
+    component.ngOnInit();
+
+    fixture.whenStable().then(() => {
+      expect(component.processInstance).toBeDefined();
+    });
+  }));
+
+  it('should handle bpmnViewer.importXML error', () => {
+    spyDataService.getActivityInstance.and.returnValue(Promise.resolve([startActivity, subProcessActivity]));
+    spyDataService.getProcessDefinition.and.returnValue(of(emptyProcessDefinition));
+    spyDataService.getProcessInstance.and.returnValue(Promise.resolve(processInstance));
+    spyDataService.getVariableInstance.and.returnValue(of([varInstanceObj]));
+    component.ngOnInit();
+  });
+
+  it('should handle error when dataService.getProcessInstance returns an error', () => {
+    spyDataService.getVariableInstance.and.returnValue(of([varInstanceObj]));
+    spyDataService.getProcessInstance.and.returnValue(Promise.reject(new Error('getProcessInstance Promise should not be resolved')));
+    component.ngOnInit();
+  });
+
+  it('should handle error when data.getVariableInstance returns an error', () => {
+    spyDataService.getActivityInstance.and.returnValue(Promise.resolve([startActivity, subProcessActivity]));
+    spyDataService.getProcessDefinition.and.returnValue(of(processDefinition));
+    spyDataService.getProcessInstance.and.returnValue(Promise.resolve(processInstance));
+    spyDataService.getVariableInstance.and.callFake(() => {
+      return throwError(new Error('getVariableInstance error'));
+    });
+    component.ngOnInit();
+  });
+
+  it('should handle error when data.getActivityInstance and data.getProcessDefinition return errors', () => {
+    spyDataService.getProcessInstance.and.returnValue(Promise.resolve(processInstance));
+    spyDataService.getVariableInstance.and.returnValue(of([varInstanceObj]));
+    spyDataService.getProcessDefinition.and.returnValue(of(processDefinition));
+    spyDataService.getActivityInstance.and.returnValue(Promise.reject(new Error('getActivityInstance Promise should not be resolved')));
+    spyDataService.getProcessDefinition.and.callFake(() => {
+      return throwError(new Error('getProcessDefinition error'));
+    });
+    component.ngOnInit();
+  });
+});
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.html b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.html
index 0c0e1c0..39fcdcb 100644
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.html
+++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.html
@@ -30,7 +30,7 @@
     <!-- Dropdown Filter and TextBox for Service Instance Id -->
     <div class="container-home">
       <mat-form-field class="selectFilter">
-        <mat-select class="formatBox" [(ngModel)]="searchData.selectedValueSII" name="sel" placeholder="Select Filter">
+        <mat-select class="formatBox" [(value)]="searchData.selectedValueSII" placeholder="Select Filter">
           <mat-option *ngFor="let option of options" [value]="option.value">{{option.name}}</mat-option>
         </mat-select>
       </mat-form-field>
@@ -42,7 +42,7 @@
     <!-- Dropdown Filter and TextBox for Request Id -->
     <div class="container-home">
       <mat-form-field class="selectFilter">
-        <mat-select class="formatBox" [(ngModel)]="searchData.selectedValueRI" name="sel" placeholder="Select Filter">
+        <mat-select class="formatBox" [(value)]="searchData.selectedValueRI" placeholder="Select Filter">
           <mat-option *ngFor="let option of options" [value]="option.value">{{option.name}}</mat-option>
         </mat-select>
       </mat-form-field>
@@ -59,14 +59,14 @@
 
       <!-- Dropdown box for Start Hour selection -->
       <mat-form-field class="selectHour">
-        <mat-select class="formatBox" [(ngModel)]="searchData.selectedStartHour" name="hourFrom" placeholder="Select Hour">
+        <mat-select class="formatBox" [(value)]="searchData.selectedStartHour"  placeholder="Select Hour">
           <mat-option *ngFor="let option of hourOptions" [value]="option">{{option}}</mat-option>
         </mat-select>
       </mat-form-field>
 
       <!-- Dropdown box for Start Minute selection -->
       <mat-form-field class="selectMinute">
-        <mat-select class="formatBox" [(ngModel)]="searchData.selectedStartMinute" name="minuteFrom" placeholder="Select Minute">
+        <mat-select class="formatBox" [(value)]="searchData.selectedStartMinute" placeholder="Select Minute">
           <mat-option *ngFor="let option of minuteOptions" [value]="option">{{option}}</mat-option>
         </mat-select>
       </mat-form-field>
@@ -75,7 +75,7 @@
     <!-- Dropdown Filter and TextBox for Service Name -->
     <div class="container-home">
       <mat-form-field class="selectFilter">
-        <mat-select class="formatBox" [(ngModel)]="searchData.selectedValueSN" name="sel" placeholder="Select Filter">
+        <mat-select class="formatBox" [(value)]="searchData.selectedValueSN" placeholder="Select Filter">
           <mat-option *ngFor="let option of options" [value]="option.value">{{option.name}}</mat-option>
         </mat-select>
       </mat-form-field>
@@ -92,14 +92,14 @@
 
       <!-- Dropdown box for End Hour selection -->
       <mat-form-field class="selectHour">
-        <mat-select class="formatBox" [(ngModel)]="searchData.selectedEndHour" name="hourTo" placeholder="Select Hour">
+        <mat-select class="formatBox" [(value)]="searchData.selectedEndHour"  placeholder="Select Hour">
           <mat-option *ngFor="let option of hourOptions" [value]="option">{{option}}</mat-option>
         </mat-select>
       </mat-form-field>
 
       <!-- Dropdown box for End Minute selection -->
       <mat-form-field class="selectMinute">
-        <mat-select class="formatBox" [(ngModel)]="searchData.selectedEndMinute" name="minuteTo" placeholder="Select Minute">
+        <mat-select class="formatBox" [(value)]="searchData.selectedEndMinute"  placeholder="Select Minute">
           <mat-option *ngFor="let option of minuteOptions" [value]="option">{{option}}</mat-option>
         </mat-select>
       </mat-form-field>
@@ -108,7 +108,7 @@
     <!-- Dropdown Filter for Status -->
     <div class="container-home">
       <mat-form-field class="selectFilter">
-        <mat-select class="formatBox" [(ngModel)]="searchData.selectedValueSTATUS" name="sel" placeholder="Status">
+        <mat-select class="formatBox" [(value)]="searchData.selectedValueSTATUS" placeholder="Status">
           <mat-option *ngFor="let statusOption of statusOptions" [value]="statusOption.value">{{ statusOption.name }}</mat-option>
         </mat-select>
       </mat-form-field>
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.spec.ts
index 1e1485e..cc11ebc 100644
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.spec.ts
+++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.spec.ts
@@ -1,78 +1,178 @@
-/**

-============LICENSE_START=======================================================

- Copyright (C) 2018 Ericsson. 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.

-

-SPDX-License-Identifier: Apache-2.0

-============LICENSE_END=========================================================

-

-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com

-*/

-

-import { async, ComponentFixture, TestBed } from '@angular/core/testing';

-

-import { HomeComponent } from './home.component';

-import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';

-import { MatTableModule } from '@angular/material';

-import { FormsModule } from '@angular/forms';

-import { MatDatepickerModule } from '@angular/material/datepicker';

-import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';

-import { HttpClientModule } from '@angular/common/http';

-import { HttpClient } from '@angular/common/http';

-import { inject } from '@angular/core/testing';

-import { RouterModule } from '@angular/router';

-import { APP_BASE_HREF } from '@angular/common';

-import { ToastrNotificationService } from '../toastr-notification-service.service';

-import { environment } from '../../environments/environment.prod';

-

-class StubbedToastrNotificationService extends ToastrNotificationService {

-  toastrSettings() {

-  }

-}

-

-describe('HomeComponent', () => {

-  let component: HomeComponent;

-  let fixture: ComponentFixture<HomeComponent>;

-

-  beforeEach(async(() => {

-    TestBed.configureTestingModule({

-      providers: [HomeComponent, HttpClient, HttpTestingController,

-        { provide: APP_BASE_HREF, useValue: '/' },

-        { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService }],

-      imports: [MatTableModule, FormsModule, MatDatepickerModule, HttpClientModule, RouterModule.forRoot([])],

-      declarations: [HomeComponent],

-      schemas: [

-        CUSTOM_ELEMENTS_SCHEMA

-      ]

-    })

-      .compileComponents();

-  }));

-

-  // Ensure creation of HomeComponent component

-  it('component should be created', inject([HttpTestingController, HomeComponent],

-    (httpClient: HttpTestingController, service: HomeComponent) => {

-      expect(service).toBeTruthy();

-    }));

-

-  // Ensure all statistic variables are initialised to zero

-  it('ensure statistic variables are defaulted at zero', async(inject([HttpTestingController, HomeComponent],

-    (httpClient: HttpTestingController, service: HomeComponent) => {

-      expect(service.totalVal === 0 && service.completeVal === 0 &&

-        service.inProgressVal === 0 && service.failedVal === 0 &&

-        service.pendingVal === 0 && service.unlockedVal === 0 &&

-        service.percentageComplete === 0 && service.percentageFailed === 0 &&

-        service.percentageInProg === 0 && service.percentagePending === 0 &&

-        service.percentageUnlocked === 0).toBeTruthy();

-    })));

-});

+/**
+============LICENSE_START=======================================================
+ Copyright (C) 2018 Ericsson. 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.
+
+SPDX-License-Identifier: Apache-2.0
+============LICENSE_END=========================================================
+
+@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com, andrei.barcovschi@ericsson.com
+*/
+
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { HomeComponent } from './home.component';
+import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
+import { MatTableModule, MatNativeDateModule, MatTableDataSource, MatPaginatorModule } from '@angular/material';
+import { FormsModule } from '@angular/forms';
+import { MatDatepickerModule } from '@angular/material/datepicker';
+import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
+import { HttpClientModule } from '@angular/common/http';
+import { HttpClient } from '@angular/common/http';
+import { inject } from '@angular/core/testing';
+import { RouterModule } from '@angular/router';
+import { APP_BASE_HREF } from '@angular/common';
+import { ToastrNotificationService } from '../toastr-notification-service.service';
+import { environment } from '../../environments/environment.prod';
+import { Observable, of, throwError } from 'rxjs';
+import { SearchRequest } from '../model/SearchRequest.model';
+import { DataService } from '../data.service'; // may be able to remove
+import { Process } from '../model/process.model';
+import { By } from '@angular/platform-browser';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { ProcessInstanceId } from '../model/processInstanceId.model';
+import { HttpResponse } from '@angular/common/http';
+import { Router } from '@angular/router';
+import { Routes } from '@angular/router';
+import { RouterTestingModule } from '@angular/router/testing';
+import { DetailsComponent } from '../details/details.component';
+
+// Generate stub for toastr popup notifications
+class StubbedToastrNotificationService extends ToastrNotificationService {
+  toastrSettings() {}
+  info() {}
+  error() {}
+}
+
+const routes: Routes = [ { path: 'details/114e9ae4-4a32-11e9-8646-d663bd873d93' , component: DetailsComponent} ]
+
+describe('HomeComponent', () => {
+  let spyDataService: jasmine.SpyObj<DataService>;
+  let router: Router;
+  let component: HomeComponent;
+  let fixture: ComponentFixture<HomeComponent>;
+
+  beforeEach(() => {
+    spyDataService = jasmine.createSpyObj('DataService', ['retrieveInstance', 'getProcessInstanceId']);
+
+    TestBed.configureTestingModule({
+      providers: [
+        { provide: DataService, useValue: spyDataService },
+        { provide: APP_BASE_HREF, useValue: '/' },
+        { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService }],
+      imports: [MatPaginatorModule, BrowserAnimationsModule, MatTableModule, FormsModule, MatDatepickerModule, MatNativeDateModule, HttpClientModule, RouterTestingModule.withRoutes(routes)],
+      declarations: [HomeComponent, DetailsComponent],
+      schemas: [
+        CUSTOM_ELEMENTS_SCHEMA
+      ]
+    });
+
+    fixture = TestBed.createComponent(HomeComponent);
+    router = TestBed.get(Router);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  // Ensure creation of HomeComponent component
+  it('component should be created', () => {
+    expect(component).toBeTruthy();
+  });
+
+  // Ensure all statistic variables are initialised to zero
+  it('should ensure statistic variables are defaulted at zero', () => {
+    expect(component.totalVal === 0 && component.completeVal === 0 &&
+      component.inProgressVal === 0 && component.failedVal === 0 &&
+      component.pendingVal === 0 && component.unlockedVal === 0 &&
+      component.percentageComplete === 0 && component.percentageFailed === 0 &&
+      component.percentageInProg === 0 && component.percentagePending === 0 &&
+      component.percentageUnlocked === 0).toBeTruthy();
+  });
+
+  it('should should navigate to a process if response status is OK', async(() => {
+      spyDataService.getProcessInstanceId.and.returnValue(of(<HttpResponse<ProcessInstanceId>>{body: {processInstanceId: '114e9ae4-4a32-11e9-8646-d663bd873d93'}, status: 200}));
+      spyOn(router, 'navigate');
+      component.getProcessIsntanceId('e8a75940-4a32-11e9-8646-d663bd873d93');
+
+      fixture.whenStable().then(() => {
+        expect(router.navigate).toHaveBeenCalledWith(['/details/114e9ae4-4a32-11e9-8646-d663bd873d93']);
+      });
+    }));
+
+  it('should handle error if no process instance id found', () => {
+    spyDataService.getProcessInstanceId.and.returnValue(of(<HttpResponse<ProcessInstanceId>>{body: {processInstanceId: 'getProcessInstanceId error not found'}, status: 404}));
+    component.getProcessIsntanceId('e8a75940-4a32-11e9-8646-d663bd873d93');
+  });
+
+  it('should handle error when searchData.getSearchRequest returns an error', () => {
+      spyOn(component.searchData, 'getSearchRequest').and.callFake(() => {
+        return throwError(new Error('getSearchRequest error'));
+      });
+      component.makeCall();
+  });
+
+  it('should handle error when dataService.retrieveInstance returns an error', () => {
+      spyOn(component.searchData, 'getSearchRequest').and.returnValue(of(getSearchRequest("965d3c92-44e0-11e9-b210-d663bd873d93", "85a7c354-44e0-11e9-b210-d663bd873d93", undefined, undefined, undefined, undefined, undefined, undefined, "ALL")));
+      spyDataService.retrieveInstance.and.callFake(() => {
+        return throwError(new Error('retrieveInstance error'));
+      });
+      component.makeCall();
+  });
+
+  it('should calculate statistics correctly', async(() => {
+    let requestStatusTypes: string[] = ["COMPLETE", "IN_PROGRESS", "FAILED", "PENDING", "UNLOCKED"];
+    let processArr: Process[] = [];
+
+    // create 5 processes, one of each requestStatusType, with default time.
+    requestStatusTypes.forEach((status) => {
+      let serviceName = "service-" + status;
+      var process = getProcess("85a7c354-44e0-11e9-b210-d663bd873d93", "965d3c92-44e0-11e9-b210-d663bd873d93", serviceName, "048a6212-44e1-11e9-b210-d663bd873d93", status, "TestType", undefined, undefined);
+      processArr.push(process);
+    })
+
+      // search request has default filter.
+      spyOn(component.searchData, 'getSearchRequest').and.returnValue(of(getSearchRequest(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, "ALL")));
+      spyDataService.retrieveInstance.and.returnValue(of(processArr));
+      component.makeCall();
+
+      fixture.whenStable().then(() => {
+        fixture.detectChanges();
+
+        expect(
+          component.totalVal === 5 && component.completeVal === 1 &&
+          component.inProgressVal === 1 && component.failedVal === 1 &&
+          component.pendingVal === 1 && component.unlockedVal === 1 &&
+          component.percentageComplete === 20 &&
+          component.percentageFailed === 20 &&
+          component.percentageInProg === 20 &&
+          component.percentagePending === 20 &&
+          component.percentageUnlocked === 20)
+          .toBeTruthy();
+      });
+    }));
+
+  function getSearchRequest(selectedValueSII = "EQ", serviceInstanceIdVal: string, selectedValueRI = "EQ", requestIdVal: string, selectedValueSN = "EQ", serviceInstanceNameVal: string, startTimeInMilliseconds = 0, endTimeInMilliseconds = 4, selectedValueSTATUS?: string): SearchRequest {
+    if (startTimeInMilliseconds > endTimeInMilliseconds) {
+      console.error("End time cannot be greater than start time.");
+      return undefined;
+    }
+    if (typeof selectedValueSTATUS === "string")
+      return new SearchRequest({ serviceInstanceId: [selectedValueSII, serviceInstanceIdVal], requestId: [selectedValueRI, requestIdVal], serviceInstanceName: [selectedValueSN, serviceInstanceNameVal], requestStatus: ["EQ", selectedValueSTATUS] }, startTimeInMilliseconds, endTimeInMilliseconds);
+    else
+      return new SearchRequest({ serviceInstanceId: [selectedValueSII, serviceInstanceIdVal], requestId: [selectedValueRI, requestIdVal], serviceInstanceName: [selectedValueSN, serviceInstanceNameVal] }, startTimeInMilliseconds, endTimeInMilliseconds);
+  }
+
+  function getProcess(requestIdVal: string, serviceInstanceIdVal: string, serviceIstanceNameVal: string, networkIdVal: string, requestStatusVal: string, serviceTypeVal: string, startTimeVal = "1", endTimeVal = "2"): Process {
+    return <Process>{ requestId: requestIdVal, serviceInstanceId: serviceInstanceIdVal, serviceIstanceName: serviceIstanceNameVal, networkId: networkIdVal, requestStatus: requestStatusVal, serviceType: serviceTypeVal, startTime: startTimeVal, endTime: endTimeVal };
+  }
+});
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.spec.ts
new file mode 100644
index 0000000..5323cce
--- /dev/null
+++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.spec.ts
@@ -0,0 +1,78 @@
+/**
+============LICENSE_START=======================================================
+ Copyright (C) 2018 Ericsson. 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.
+
+SPDX-License-Identifier: Apache-2.0
+============LICENSE_END=========================================================
+
+@authors: andrei.barcovschi@ericsson.com
+*/
+
+import { SearchData } from './searchData.model';
+import { SearchRequest } from './SearchRequest.model';
+import { Observable, throwError } from 'rxjs';
+
+describe('SearchData', () => {
+  let searchRequest: SearchRequest;
+  let searchData: SearchData;
+
+  beforeEach(() => {
+    searchData = new SearchData();
+  });
+
+  it('should return a SearchRequest observable with selectedValueSTATUS != ALL', () => { // NOT ALL CHANGE TEST TO TEST THIS ISNTESASD
+    searchData.serviceInstanceId = "bd827d8c-4b07-11e9-8646-d663bd873d93";
+    searchData.requestId = "cf1343d8-4b07-11e9-8646-d663bd873d93";
+    searchData.serviceInstanceName = "service-123";
+    searchData.selectedValueSTATUS = "COMPLETE";
+
+    searchData.getSearchRequest().subscribe((request: SearchRequest) => {
+      searchRequest = request;
+    });
+    let filters = searchRequest.getFilters();
+    expect(searchRequest.getFilters()).toEqual({ serviceInstanceId: [ 'EQ', 'bd827d8c-4b07-11e9-8646-d663bd873d93' ],
+                                              requestId: [ 'EQ', 'cf1343d8-4b07-11e9-8646-d663bd873d93' ],
+                                              serviceInstanceName: [ 'EQ', 'service-123' ],
+                                              requestStatus: [ 'EQ', 'COMPLETE' ]
+                                              });
+    expect(searchRequest.getStartTimeInMilliseconds()).toBe(searchData.startDate.getTime());
+    expect(searchRequest.getEndTimeInMilliseconds()).toBe(searchData.endDate.getTime());
+  });
+
+  it('should throw an error if found incorrect start or end date', () => {
+    searchData.startDate = null;
+    searchData.endDate = undefined;
+    searchData.getSearchRequest().subscribe({
+      error: (err) => {
+        expect(err).toEqual('Found end or start date empty, Please enter start and end date')
+      }
+    });
+  });
+
+  it('should throw an error if startTimeInMilliseconds > endTimeInMilliseconds', () => {
+    searchData.startDate = new Date('March 20, 2019 02:00:00');
+    searchData.endDate = new Date('March 20, 2019 01:00:00');
+    searchData.selectedStartHour = '02';
+    searchData.selectedEndHour = '01';
+    searchData.selectedStartMinute = '00';
+    searchData.selectedEndMinute = '00';
+
+    searchData.getSearchRequest().subscribe({
+      error: (err) => {
+        expect(err).toEqual("End time: " + searchData.endDate + " can not be greater then start time: " + searchData.startDate)
+      }
+    });
+  });
+});