if audit fails write sub interface data to a ai

added logic to write sub interface information
from openstack to a&ai when audit fails to find it

Change-Id: I24266812dc60eb69bfd90e3e5b34113e9fd8f4f4
Issue-ID: SO-1737
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
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 93460ff..850f16f 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
@@ -219,6 +219,7 @@
     public Optional<Port> getNeutronPort(String neutronPortId, String tenantId, String cloudSiteId)
 	{
 		try {
+			logger.debug("Finding Neutron port:" + neutronPortId);
 			  CloudSite cloudSite = cloudConfig.getCloudSite(cloudSiteId).orElseThrow(
 		                () -> new MsoCloudSiteNotFound(cloudSiteId));
 				Quantum neutronClient = getNeutronClient (cloudSite, tenantId);
@@ -525,6 +526,7 @@
 		}
 		catch (OpenStackResponseException e) {
 			if (e.getStatus() == 404) {
+				logger.warn("Neutron port not found: " + neutronPortId,"Neutron port not found: " + neutronPortId);
 				return null;
 			} else {
 				logger.error("{} {} Openstack Error, GET Neutron Port By ID ({}): ", MessageEnum.RA_CONNECTION_EXCEPTION,
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AAIObjectAudit.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AAIObjectAudit.java
new file mode 100644
index 0000000..a2c117b
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AAIObjectAudit.java
@@ -0,0 +1,56 @@
+package org.onap.so.adapters.audit;
+
+import java.io.Serializable;
+import java.net.URI;
+
+import org.onap.so.client.aai.AAIObjectType;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+public class AAIObjectAudit implements Serializable{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -4560928512855386021L;
+	private boolean doesObjectExist = false;
+	private Object aaiObject;
+	private URI resourceURI;
+	private String aaiObjectType;
+	
+	@Override
+	public String toString() {
+		return new ToStringBuilder(this).append("doesObjectExist", doesObjectExist).append("aaiObject", aaiObject)
+				.append("resourceURI", resourceURI).append("aaiObjectType", aaiObjectType).toString();
+	}
+
+	public String getAaiObjectType() {
+		return aaiObjectType;
+	}
+
+	public void setAaiObjectType(String aaiObjectType) {
+		this.aaiObjectType = aaiObjectType;
+	}
+
+	public boolean isDoesObjectExist() {
+		return doesObjectExist;
+	}
+	
+	public void setDoesObjectExist(boolean doesObjectExist) {
+		this.doesObjectExist = doesObjectExist;
+	}
+	
+	public Object getAaiObject() {
+		return aaiObject;
+	}
+	
+	public void setAaiObject(Object aaiObject) {
+		this.aaiObject = aaiObject;
+	}
+	
+	public URI getResourceURI() {
+		return resourceURI;
+	}
+	public void setResourceURI(URI resourceURI) {
+		this.resourceURI = resourceURI;
+	}
+}
\ No newline at end of file
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AAIObjectAuditList.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AAIObjectAuditList.java
new file mode 100644
index 0000000..a1a8d5b
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AAIObjectAuditList.java
@@ -0,0 +1,25 @@
+package org.onap.so.adapters.audit;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+public class AAIObjectAuditList implements Serializable{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 6712662349909726930L;
+	private List<AAIObjectAudit> auditList = new ArrayList<>();
+
+	@Override
+	public String toString() {
+		return new ToStringBuilder(this).append("auditList", auditList).toString();
+	}
+
+	public List<AAIObjectAudit> getAuditList() {
+		return auditList;
+	}
+
+}
\ No newline at end of file
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditDeleteStackService.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditDeleteStackService.java
deleted file mode 100644
index 66d8fbd..0000000
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditDeleteStackService.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017-2019 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.adapters.audit;
-
-import org.camunda.bpm.client.task.ExternalTask;
-import org.camunda.bpm.client.task.ExternalTaskService;
-import org.onap.logging.ref.slf4j.ONAPLogConstants;
-import org.onap.so.audit.beans.AuditInventory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.slf4j.MDC;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-import org.springframework.stereotype.Component;
-
-@Component
-public class AuditDeleteStackService {
-	
-	private static final String UNABLE_TO_FIND_ALL_V_SERVERS_AND_L_INTERACES_IN_A_AI = "All VServers have not been deleted in A&AI";
-	
-	private static final int[] RETRY_SEQUENCE = new int[] { 1, 1, 2, 3, 5, 8, 13, 20};
-
-	
-	private static final Logger logger = LoggerFactory.getLogger(AuditDeleteStackService.class);
-	
-	@Autowired
-	public HeatStackAudit heatStackAudit; 
-	
-	@Autowired
-	public Environment env;
-
-	protected void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService){
-		AuditInventory auditInventory = externalTask.getVariable("auditInventory");
-		setupMDC(externalTask);
-		boolean success = false;
-		try {
-			logger.info("Executing External Task Audit Inventory, Retry Number: {} \n {}", auditInventory,externalTask.getRetries());
-			success=heatStackAudit.auditHeatStackDeleted(auditInventory.getCloudRegion(), auditInventory.getCloudOwner(),
-					auditInventory.getTenantId(), auditInventory.getHeatStackName());
-		} catch (Exception e) {
-			logger.error("Error during audit of stack", e);
-		}
-		
-		if (success) {
-			externalTaskService.complete(externalTask);
-			logger.debug("The External Task Id: {}  Successful", externalTask.getId());
-		} else {
-			if(externalTask.getRetries() == null){
-				logger.debug("The External Task Id: {}  Failed, Setting Retries to Default Start Value: {}", externalTask.getId(),RETRY_SEQUENCE.length);
-				externalTaskService.handleFailure(externalTask, UNABLE_TO_FIND_ALL_V_SERVERS_AND_L_INTERACES_IN_A_AI, UNABLE_TO_FIND_ALL_V_SERVERS_AND_L_INTERACES_IN_A_AI, RETRY_SEQUENCE.length, 10000);			
-			}else if(externalTask.getRetries() != null &&
-					externalTask.getRetries()-1 == 0){
-				logger.debug("The External Task Id: {}  Failed, All Retries Exhausted", externalTask.getId());
-				externalTaskService.complete(externalTask);
-			}else{
-				logger.debug("The External Task Id: {}  Failed, Decrementing Retries: {} , Retry Delay: ", externalTask.getId(),externalTask.getRetries()-1, calculateRetryDelay(externalTask.getRetries()));
-				externalTaskService.handleFailure(externalTask, UNABLE_TO_FIND_ALL_V_SERVERS_AND_L_INTERACES_IN_A_AI, UNABLE_TO_FIND_ALL_V_SERVERS_AND_L_INTERACES_IN_A_AI, externalTask.getRetries()-1, calculateRetryDelay(externalTask.getRetries()));
-			}
-			logger.debug("The External Task Id: {} Failed", externalTask.getId());
-		}
-	}
-	private void setupMDC(ExternalTask externalTask) {
-		String msoRequestId = (String)externalTask.getVariable("mso-request-id");
-		if(msoRequestId != null && !msoRequestId.isEmpty())
-			MDC.put(ONAPLogConstants.MDCs.REQUEST_ID, msoRequestId);
-	}
-	protected long calculateRetryDelay(int currentRetries){
-		int retrySequence = RETRY_SEQUENCE.length - currentRetries;
-		long retryMultiplier = Long.parseLong(env.getProperty("mso.workflow.topics.retryMultiplier","6000"));
-		return RETRY_SEQUENCE[retrySequence] * retryMultiplier;
-	}
-}
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditStackService.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditStackService.java
index 6ea14dc..499c113 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditStackService.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditStackService.java
@@ -46,13 +46,10 @@
 	public Environment env;
 
 	@Autowired
-	private AuditCreateStackService auditCreateStack;
-	
-	@Autowired
-	private AuditDeleteStackService auditDeleteStack;
+	private AuditStackServiceData auditStack;
 
 	@PostConstruct
-	public void auditAddAAIInventory() {
+	public void auditAAIInventory() {
 		String auth = "";
 		try {
 			auth = CryptoUtils.decrypt(env.getRequiredProperty("mso.auth"), env.getRequiredProperty("mso.msoKey"));
@@ -63,26 +60,9 @@
 				auth);
 		ExternalTaskClient client = ExternalTaskClient.create()
 				.baseUrl(env.getRequiredProperty("mso.workflow.endpoint")).maxTasks(1).addInterceptor(interceptor)
-				.asyncResponseTimeout(120000).build();
-		client.subscribe("InventoryAddAudit").lockDuration(60000)
-				.handler(auditCreateStack::executeExternalTask).open();
-	}
-	
-	@PostConstruct
-	public void auditDeleteAAIInventory() {
-		String auth = "";
-		try {
-			auth = CryptoUtils.decrypt(env.getRequiredProperty("mso.auth"), env.getRequiredProperty("mso.msoKey"));
-		} catch (IllegalStateException | GeneralSecurityException e) {
-			logger.error("Error Decrypting Password", e);
-		}
-		ClientRequestInterceptor interceptor = new BasicAuthProvider(env.getRequiredProperty("mso.config.cadi.aafId"),
-				auth);
-		ExternalTaskClient client = ExternalTaskClient.create()
-				.baseUrl(env.getRequiredProperty("mso.workflow.endpoint")).maxTasks(1).addInterceptor(interceptor)
-				.asyncResponseTimeout(120000).build();
-		client.subscribe("InventoryDeleteAudit").lockDuration(60000)
-				.handler(auditDeleteStack::executeExternalTask).open();
+				.asyncResponseTimeout(120000).backoffStrategy(new ExponentialBackoffStrategy(10000, 2, 120000)).build();
+		client.subscribe("InventoryAudit").lockDuration(60000)
+				.handler(auditStack::executeExternalTask).open();
 	}
 
 }
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditCreateStackService.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditStackServiceData.java
similarity index 66%
rename from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditCreateStackService.java
rename to adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditStackServiceData.java
index 24980ae..da6bea7 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditCreateStackService.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditStackServiceData.java
@@ -22,26 +22,29 @@
 
 package org.onap.so.adapters.audit;
 
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
 import org.camunda.bpm.client.task.ExternalTask;
 import org.camunda.bpm.client.task.ExternalTaskService;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
 import org.onap.so.audit.beans.AuditInventory;
+import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
 
 @Component
-public class AuditCreateStackService {
+public class AuditStackServiceData {
 	
 	private static final String UNABLE_TO_FIND_ALL_V_SERVERS_AND_L_INTERACES_IN_A_AI = "Unable to find all VServers and L-Interaces in A&AI";
 	
-	private static final int[] RETRY_SEQUENCE = new int[] { 1, 1, 2, 3, 5, 8, 13, 20};
-
-	
-	private static final Logger logger = LoggerFactory.getLogger(AuditCreateStackService.class);
+	private static final Logger logger = LoggerFactory.getLogger(AuditStackServiceData.class);
 	
 	@Autowired
 	public HeatStackAudit heatStackAudit; 
@@ -51,35 +54,39 @@
 
 	protected void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService){
 		AuditInventory auditInventory = externalTask.getVariable("auditInventory");
+        Map<String, Object> variables = new HashMap<>();
 		setupMDC(externalTask);
 		boolean success = false;
 		try {
 			logger.info("Executing External Task Audit Inventory, Retry Number: {} \n {}", auditInventory,externalTask.getRetries());
-			success=heatStackAudit.auditHeatStackCreate(auditInventory.getCloudRegion(), auditInventory.getCloudOwner(),
+			Optional<AAIObjectAuditList> auditListOpt= heatStackAudit.auditHeatStack(auditInventory.getCloudRegion(), auditInventory.getCloudOwner(),
 					auditInventory.getTenantId(), auditInventory.getHeatStackName());
+	        if (auditListOpt.isPresent()) {
+	        	GraphInventoryCommonObjectMapperProvider objectMapper = new GraphInventoryCommonObjectMapperProvider();
+	        	variables.put("auditInventoryResult", objectMapper.getMapper().writeValueAsString(auditListOpt.get()));
+	        	success = !didAuditFail(auditListOpt);
+	        }
 		} catch (Exception e) {
 			logger.error("Error during audit of stack", e);
 		}
-		
+		variables.put("auditIsSuccessful", success);
 		if (success) {
-			externalTaskService.complete(externalTask);
+			externalTaskService.complete(externalTask,variables);
 			logger.debug("The External Task Id: {}  Successful", externalTask.getId());
 		} else {
 			if(externalTask.getRetries() == null){
-				logger.debug("The External Task Id: {}  Failed, Setting Retries to Default Start Value: {}", externalTask.getId(),RETRY_SEQUENCE.length);
-				externalTaskService.handleFailure(externalTask, UNABLE_TO_FIND_ALL_V_SERVERS_AND_L_INTERACES_IN_A_AI, UNABLE_TO_FIND_ALL_V_SERVERS_AND_L_INTERACES_IN_A_AI, RETRY_SEQUENCE.length, 10000);			
+				logger.debug("The External Task Id: {}  Failed, Setting Retries to Default Start Value: {}", externalTask.getId(),getRetrySequence().length);
+				externalTaskService.handleFailure(externalTask, UNABLE_TO_FIND_ALL_V_SERVERS_AND_L_INTERACES_IN_A_AI, UNABLE_TO_FIND_ALL_V_SERVERS_AND_L_INTERACES_IN_A_AI, getRetrySequence().length, 10000);			
 			}else if(externalTask.getRetries() != null &&
 					externalTask.getRetries()-1 == 0){
-				logger.debug("The External Task Id: {}  Failed, All Retries Exhausted", externalTask.getId());
-				externalTaskService.handleBpmnError(externalTask, "AuditAAIInventoryFailure", "Number of Retries Exceeded auditing inventory");
+				logger.debug("The External Task Id: {}  Failed, All Retries Exhausted", externalTask.getId());				 
+				externalTaskService.complete(externalTask, variables);
 			}else{
 				logger.debug("The External Task Id: {}  Failed, Decrementing Retries: {} , Retry Delay: ", externalTask.getId(),externalTask.getRetries()-1, calculateRetryDelay(externalTask.getRetries()));
 				externalTaskService.handleFailure(externalTask, UNABLE_TO_FIND_ALL_V_SERVERS_AND_L_INTERACES_IN_A_AI, UNABLE_TO_FIND_ALL_V_SERVERS_AND_L_INTERACES_IN_A_AI, externalTask.getRetries()-1, calculateRetryDelay(externalTask.getRetries()));
 			}
 			logger.debug("The External Task Id: {} Failed", externalTask.getId());
 		}
-		
-		
 	}
 	private void setupMDC(ExternalTask externalTask) {
 		String msoRequestId = externalTask.getVariable("mso-request-id");
@@ -87,8 +94,29 @@
 			MDC.put(ONAPLogConstants.MDCs.REQUEST_ID, msoRequestId);
 	}
 	protected long calculateRetryDelay(int currentRetries){
-		int retrySequence = RETRY_SEQUENCE.length - currentRetries;
+		int retrySequence = getRetrySequence().length - currentRetries;
 		long retryMultiplier = Long.parseLong(env.getProperty("mso.workflow.topics.retryMultiplier","6000"));
-		return RETRY_SEQUENCE[retrySequence] * retryMultiplier;
+		return Integer.parseInt(getRetrySequence()[retrySequence]) * retryMultiplier;
 	}
+	
+	/**
+	 * @param auditHeatStackFailed
+	 * @param auditList
+	 * @return
+	 */
+	protected boolean didAuditFail(Optional<AAIObjectAuditList> auditList) {
+		if (auditList.get().getAuditList() != null && !auditList.get().getAuditList().isEmpty()) {
+			if (logger.isInfoEnabled()) {
+				logger.info("Audit Results: {}", auditList.get().toString());
+			}
+			return auditList.get().getAuditList().stream().filter(auditObject -> !auditObject.isDoesObjectExist())
+					.findFirst().map(v -> true).orElse(false);
+		} else {
+			return false;
+		}
+	}
+	public String[] getRetrySequence() {
+		 return env.getProperty("mso.workflow.topics.retrySequence",String[].class);
+	}
+
 }
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditVServer.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditVServer.java
index c81dac7..519e1c9 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditVServer.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditVServer.java
@@ -24,97 +24,106 @@
 import java.util.Set;
 
 import org.onap.aai.domain.yang.LInterface;
-import org.onap.aai.domain.yang.LInterfaces;
 import org.onap.aai.domain.yang.Vserver;
-import org.onap.so.client.aai.AAIObjectPlurals;
 import org.onap.so.client.aai.AAIObjectType;
-import org.onap.so.client.aai.entities.AAIResultWrapper;
 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
+import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Component;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+
 @Component
 public class AuditVServer extends AbstractAudit {
 	private static final Logger logger = LoggerFactory.getLogger(AuditVServer.class);
 
-	public boolean auditAllVserversDoExist(Set<Vserver> vServersToAudit, String tenantId, String cloudOwner, String cloudRegion) {
+	public Optional<AAIObjectAuditList> auditVservers(Set<Vserver> vServersToAudit, String tenantId, String cloudOwner, String cloudRegion) {
 		if (vServersToAudit == null || vServersToAudit.isEmpty()){
-			return false;
+			return Optional.empty();
 		}
-		return vServersToAudit.stream()
-				.filter(vServer -> !doesVServerExistInAAI(vServer, tenantId, cloudOwner, cloudRegion,true)).findFirst()
-				.map(v -> false).orElse(true);
-	}
-	
-	public boolean auditAllVserversDoNotExist(Set<Vserver> vServersToAudit, String tenantId, String cloudOwner, String cloudRegion) {
-		if (vServersToAudit == null || vServersToAudit.isEmpty()){
-			return true;
-		}
-		return vServersToAudit.stream()
-				.filter(vServer -> doesVServerExistInAAI(vServer, tenantId, cloudOwner, cloudRegion,false)).findFirst()
-				.map(v -> false).orElse(true);
+		GraphInventoryCommonObjectMapperProvider objectMapper = new GraphInventoryCommonObjectMapperProvider();
+		vServersToAudit.stream().forEach(vserver -> {
+			try {
+				logger.debug("Vserver to Audit: {}",objectMapper.getMapper().writeValueAsString(vserver));
+			} catch (JsonProcessingException e) {
+				
+			}
+		});
+		AAIObjectAuditList auditList = new AAIObjectAuditList();		
+		vServersToAudit.stream()
+				.forEach(vServer -> auditList.getAuditList().addAll(doesVServerExistInAAI(vServer, tenantId, cloudOwner, cloudRegion).getAuditList()));
+		return Optional.of(auditList);
 	}
 
-	private boolean doesVServerExistInAAI(Vserver vServer, String tenantId, String cloudOwner, String cloudRegion, boolean checkLinterfaces) {
+	private AAIObjectAuditList doesVServerExistInAAI(Vserver vServer, String tenantId, String cloudOwner, String cloudRegion) {
+		AAIObjectAuditList auditList = new AAIObjectAuditList();
+		AAIObjectAudit vServerAudit = new AAIObjectAudit();
 		AAIResourceUri vserverURI = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER, cloudOwner, cloudRegion,
 				tenantId, vServer.getVserverId());
+		Vserver vServerShallow = new Vserver();
+		BeanUtils.copyProperties(vServer,vServerShallow,"LInterfaces");
 		boolean vServerExists = getAaiClient().exists(vserverURI);
-		boolean doesExist = getAaiClient().exists(vserverURI);
-		logger.info("v-server {} exists: {}", vServer.getVserverId(), doesExist);
-		boolean allNeutronNetworksExist = true;
-		if (vServerExists && vServer.getLInterfaces() != null && checkLinterfaces) {
-			allNeutronNetworksExist = vServer.getLInterfaces()
-					.getLInterface().stream().filter(lInterface -> !doesLinterfaceExistinAAI(lInterface,
-							vServer.getVserverId(), tenantId, cloudOwner, cloudRegion))
-					.findFirst().map(v -> false).orElse(true);
+		logger.info("v-server {} exists: {}", vServer.getVserverId(), vServerExists);
+		vServerAudit.setAaiObject(vServerShallow);
+		vServerAudit.setDoesObjectExist(vServerExists);
+		vServerAudit.setResourceURI(vserverURI.build());
+		vServerAudit.setAaiObjectType(AAIObjectType.VSERVER.typeName());
+		auditList.getAuditList().add(vServerAudit);
+		if (vServer.getLInterfaces() != null) {
+			vServer.getLInterfaces().getLInterface().stream().forEach(lInterface -> auditList.getAuditList().addAll(doesLinterfaceExistinAAI(lInterface,
+							vServer.getVserverId(), tenantId, cloudOwner, cloudRegion).getAuditList()));
 		}
-		return vServerExists && allNeutronNetworksExist;
+		return auditList;
 	}
 
-	private boolean doesLinterfaceExistinAAI(LInterface lInterface, String vServerId, String tenantId,
+	private AAIObjectAuditList doesLinterfaceExistinAAI(LInterface lInterface, String vServerId, String tenantId,
 			String cloudOwner, String cloudRegion) {
-		boolean doesLInterfaceExist = false;
-		boolean doSubInterfacesExist = true;
+		AAIObjectAuditList auditList = new AAIObjectAuditList();
+		AAIObjectAudit lInterfaceAudit = new AAIObjectAudit();
 		AAIResourceUri linterfaceURI = AAIUriFactory
-				.createResourceUri(AAIObjectPlurals.L_INTERFACE, cloudOwner, cloudRegion, tenantId, vServerId)
-				.queryParam("interface-id", lInterface.getInterfaceId());
-		Optional<LInterfaces> queriedLInterface = getAaiClient().get(LInterfaces.class, linterfaceURI);
+				.createResourceUri(AAIObjectType.L_INTERFACE, cloudOwner, cloudRegion, tenantId, vServerId, lInterface.getInterfaceName());
+		Optional<LInterface> queriedLInterface = getAaiClient().get(LInterface.class, linterfaceURI);
 		if (queriedLInterface.isPresent()) {
-			if (queriedLInterface.get().getLInterface().size() > 1) {
-				logger.error("Non-Unique LInterface Found stopping audit, L-Interface Id: " +lInterface.getInterfaceId());
-				doesLInterfaceExist = false;
-			} else {
-				doesLInterfaceExist = true;
-				lInterface.setInterfaceName(queriedLInterface.get().getLInterface().get(0).getInterfaceName());
-			}
+				lInterfaceAudit.setDoesObjectExist(true);
+				lInterface.setInterfaceName(lInterface.getInterfaceName());	
 		}
-		logger.info("l-interface id:{} name: {} exists: {}", lInterface.getInterfaceId(), lInterface.getInterfaceName(),
-				doesLInterfaceExist);
+		LInterface lInterfaceShallow = new LInterface();
+		BeanUtils.copyProperties(lInterface,lInterfaceShallow,"LInterfaces");
+		lInterfaceAudit.setAaiObject(lInterface);
+		lInterfaceAudit.setResourceURI(linterfaceURI.build());
+		lInterfaceAudit.setAaiObjectType(AAIObjectType.L_INTERFACE.typeName());
+		auditList.getAuditList().add(lInterfaceAudit);
+		logger.info("l-interface id:{} name: {} exists: {} ", lInterface.getInterfaceId(), lInterface.getInterfaceName(),
+				lInterfaceAudit.isDoesObjectExist());
 
-		if (doesLInterfaceExist && lInterface.getLInterfaces() != null) {
-			doSubInterfacesExist = lInterface.getLInterfaces().getLInterface()
-					.stream().filter(subInterface -> !doesSubInterfaceExistinAAI(subInterface,
-							lInterface.getInterfaceName(), vServerId, tenantId, cloudOwner, cloudRegion))
-					.findFirst().map(v -> false).orElse(true);
-		} else
-			logger.debug("l-interface {} does not contain any sub-iterfaces", lInterface.getInterfaceId());
+		if (lInterface.getLInterfaces() != null) {
+			lInterface.getLInterfaces().getLInterface().stream()
+					.forEach(subInterface -> auditList.getAuditList().add(doesSubInterfaceExistinAAI(subInterface,
+							lInterface.getInterfaceName(), vServerId, tenantId, cloudOwner, cloudRegion)));
+		}
+		logger.debug("l-interface {} does not contain any sub-iterfaces, skipping audit of sub-interfaces", lInterface.getInterfaceId());
 
-		return doesLInterfaceExist && doSubInterfacesExist;
+		return auditList;
 	}
 
-	private boolean doesSubInterfaceExistinAAI(LInterface subInterface, String linterfaceName, String vServerId,
+	private AAIObjectAudit doesSubInterfaceExistinAAI(LInterface subInterface, String linterfaceName, String vServerId,
 			String tenantId, String cloudOwner, String cloudRegion) {
 		logger.info("checking if sub-l-interface {} , linterfaceName: {} vserverId: {}  exists",
-				subInterface.getInterfaceId(), linterfaceName, vServerId);
-
-		AAIResourceUri linterfaceURI = AAIUriFactory.createResourceUri(AAIObjectPlurals.SUB_L_INTERFACE, cloudOwner,
-				cloudRegion, tenantId, vServerId, linterfaceName)
-				.queryParam("interface-id", subInterface.getInterfaceId());
-
-		boolean doesExist = getAaiClient().exists(linterfaceURI);
-		logger.info("sub-l-interface {} exists: {}", subInterface.getInterfaceId(), doesExist);
-		return doesExist;
+				subInterface.getInterfaceName(), linterfaceName, vServerId);
+		AAIObjectAudit subInterfaceAudit = new AAIObjectAudit();
+		
+		
+		AAIResourceUri subInterfaceURI = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE, cloudOwner,
+				cloudRegion, tenantId, vServerId, linterfaceName, subInterface.getInterfaceName());
+		subInterfaceAudit.setResourceURI(subInterfaceURI.build());
+		boolean doesExist = getAaiClient().exists(subInterfaceURI);
+		logger.info("sub-l-interface-id:{} exists: {}", subInterface.getInterfaceId(), doesExist);
+		subInterfaceAudit.setAaiObject(subInterface);
+		subInterfaceAudit.setDoesObjectExist(doesExist);
+		subInterfaceAudit.setAaiObjectType(AAIObjectType.SUB_L_INTERFACE.typeName());
+		return subInterfaceAudit;
 	}
 }
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 72dee07..31e913d 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
@@ -21,6 +21,7 @@
 package org.onap.so.adapters.audit;
 
 import java.net.URI;
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
@@ -32,6 +33,8 @@
 
 import org.onap.aai.domain.yang.LInterface;
 import org.onap.aai.domain.yang.LInterfaces;
+import org.onap.aai.domain.yang.Vlan;
+import org.onap.aai.domain.yang.Vlans;
 import org.onap.aai.domain.yang.Vserver;
 import org.onap.so.openstack.utils.MsoHeatUtils;
 import org.onap.so.openstack.utils.MsoNeutronUtils;
@@ -55,61 +58,38 @@
 
 	@Autowired
 	protected MsoHeatUtils heat;
-
+	
 	@Autowired
 	protected MsoNeutronUtils neutron;
 
 	@Autowired
 	protected AuditVServer auditVservers;
 
-	public boolean auditHeatStackCreate(String cloudRegion, String cloudOwner, String tenantId, String heatStackName) {
+	public Optional<AAIObjectAuditList> auditHeatStack(String cloudRegion, String cloudOwner, String tenantId, String heatStackName) {
 		try {
-			return auditStack(cloudRegion,cloudOwner,tenantId,heatStackName,true);
-		} catch (Exception e) {
-			logger.error("Error during auditing stack resources", e);
-			return false;
-		}
-	}
-	
-	public boolean auditHeatStackDeleted(String cloudRegion, String cloudOwner, String tenantId, String heatStackName) {
-		try {
-			return auditStack(cloudRegion,cloudOwner,tenantId,heatStackName,false);
-		} catch (Exception e) {
-			logger.error("Error during auditing stack resources", e);
-			return false;
-		}
-	}
-	
-	private boolean auditStack(String cloudRegion, String cloudOwner, String tenantId, String heatStackName,boolean isCreateAudit) throws Exception{
-		logger.debug("Fetching Top Level Stack Information");
-		Resources resources = heat.queryStackResources(cloudRegion, tenantId, heatStackName);
-		List<Resource> novaResources = extractNovaResources(resources);
-		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,neutronPortDetails);
-			Set<Vserver> vserversWithSubInterfaces = processSubInterfaces(cloudRegion, tenantId, resourceGroups,
-				vserversToAudit);
-			if(isCreateAudit){
-				return auditVservers.auditAllVserversDoExist(vserversWithSubInterfaces, tenantId, cloudOwner, cloudRegion);
-			}else{
-				return auditVservers.auditAllVserversDoNotExist(vserversWithSubInterfaces, tenantId, cloudOwner, cloudRegion);
+			logger.debug("Fetching Top Level Stack Information");
+			Resources resources = heat.queryStackResources(cloudRegion, tenantId, heatStackName);
+			List<Resource> novaResources = resources.getList().stream()
+					.filter(p -> "OS::Nova::Server".equals(p.getType())).collect(Collectors.toList());
+			List<Resource> resourceGroups = resources.getList().stream()
+					.filter(p -> "OS::Heat::ResourceGroup".equals(p.getType()) && p.getName().contains("subinterfaces"))
+					.collect(Collectors.toList());
+			List<Optional<Port>> neutronPortDetails = retrieveNeutronPortDetails(resources, cloudRegion, tenantId);
+			if (novaResources.isEmpty())
+				return Optional.of(new AAIObjectAuditList());
+			else {
+				Set<Vserver> vserversToAudit = createVserverSet(resources, novaResources, neutronPortDetails);
+				Set<Vserver> vserversWithSubInterfaces = processSubInterfaces(cloudRegion, tenantId, resourceGroups,
+						vserversToAudit);
+				 return auditVservers.auditVservers(vserversWithSubInterfaces,
+						tenantId, cloudOwner, cloudRegion);
 			}
+		} catch (Exception e) {
+			logger.error("Error during auditing stack resources", e);
+			return Optional.empty();
 		}
 	}
 
-	private List<Resource> extractResourceGroups(Resources resources) {
-		return resources.getList().stream()
-				.filter(p -> "OS::Heat::ResourceGroup".equals(p.getType()) && p.getName().contains("subinterfaces")).collect(Collectors.toList());
-	}
-
-	private List<Resource> extractNovaResources(Resources resources) {
-		return resources.getList().stream()
-				.filter(p -> "OS::Nova::Server".equals(p.getType())).collect(Collectors.toList());
-	} 
-
 	protected Set<Vserver> processSubInterfaces(String cloudRegion, String tenantId, List<Resource> resourceGroups,
 			Set<Vserver> vServersToAudit) throws Exception {
 		for (Resource resourceGroup : resourceGroups) {
@@ -137,7 +117,6 @@
 				logger.error("Error Parsing Link to obtain Path", e);
 				throw new Exception("Error finding Path from Self Link");
 			}
-
 		}
 	}
 
@@ -182,7 +161,24 @@
 					}
 					LInterface subInterface = new LInterface();
 					subInterface.setInterfaceId(contrailVm.getPhysicalResourceId());
+					subInterface.setIsPortMirrored(false);
+					subInterface.setInMaint(false);
+					subInterface.setIsIpUnnumbered(false);
+					String macAddr = (String) subinterfaceStack.getParameters().get("mac_address");
+					subInterface.setMacaddr(macAddr);
 					
+					String namePrefix = (String) subinterfaceStack.getParameters().get("subinterface_name_prefix");
+					Integer vlanIndex = Integer.parseInt((String) subinterfaceStack.getParameters().get("counter"));
+					String vlanTagList = (String) subinterfaceStack.getParameters().get("vlan_tag");
+					List<String> subInterfaceVlanTagList = Arrays.asList(vlanTagList.split(","));
+					subInterface.setInterfaceName(namePrefix+"_"+subInterfaceVlanTagList.get(vlanIndex));
+					subInterface.setVlans(new Vlans());
+					Vlan vlan = new Vlan();
+					vlan.setInMaint(false);
+					vlan.setIsIpUnnumbered(false);
+					vlan.setVlanIdInner(Long.parseLong(subInterfaceVlanTagList.get(vlanIndex)));
+					vlan.setVlanInterface(namePrefix+"_"+subInterfaceVlanTagList.get(vlanIndex));
+					subInterface.getVlans().getVlan().add(vlan);
 					if(lInterface.getLInterfaces() == null)
 						lInterface.setLInterfaces(new LInterfaces());
 					
@@ -197,11 +193,12 @@
 		for (Resource novaResource : novaResources) {
 			Vserver auditVserver = new Vserver();
 			auditVserver.setLInterfaces(new LInterfaces());
-			auditVserver.setVserverId(novaResource.getPhysicalResourceId());
+			auditVserver.setVserverId(novaResource.getPhysicalResourceId());			
 			Stream<Port> filteredNeutronPorts = filterNeutronPorts(novaResource, neutronPortDetails);
 			filteredNeutronPorts.forEach(port -> {
 				LInterface lInterface = new LInterface();
 				lInterface.setInterfaceId(port.getId());
+				lInterface.setInterfaceName(port.getName());
 				auditVserver.getLInterfaces().getLInterface().add(lInterface);
 			});
 			vserversToAudit.add(auditVserver);
@@ -228,9 +225,9 @@
 	 * @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()	
+		return resources.getList().parallelStream()	
 				.filter(resource -> "OS::Neutron::Port".equals(resource.getType()))
-				.map(resource -> neutron.getNeutronPort(resource.getPhysicalResourceId(),cloudSiteId,tenantId)).collect(Collectors.toList());
+				.map(resource -> neutron.getNeutronPort(resource.getPhysicalResourceId(),tenantId,cloudSiteId)).collect(Collectors.toList());
 
 	}
 
@@ -262,5 +259,6 @@
 		return Optional.empty();
 	}
 	
+	
 }
 
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateAAIInventory.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateAAIInventory.java
new file mode 100644
index 0000000..efced9d
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateAAIInventory.java
@@ -0,0 +1,68 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2019 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.adapters.inventory.create;
+
+import java.util.Optional;
+import java.util.stream.Stream;
+
+import org.onap.aai.domain.yang.LInterface;
+import org.onap.so.adapters.audit.AAIObjectAudit;
+import org.onap.so.adapters.audit.AAIObjectAuditList;
+import org.onap.so.client.aai.AAIObjectType;
+import org.onap.so.client.aai.AAIResourcesClient;
+import org.onap.so.client.aai.entities.uri.AAIUriFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CreateAAIInventory{
+	
+	private AAIResourcesClient aaiClient;
+
+	public void createInventory(AAIObjectAuditList auditList) throws InventoryException {	
+		if(didAuditFailVserverLInterfaces(auditList)){
+			throw new InventoryException("Audit failed for VServer or LInterface cannot write Sub-Interfaces");
+		}
+		auditList.getAuditList().parallelStream().filter(auditObject -> !auditObject.isDoesObjectExist() && AAIObjectType.SUB_L_INTERFACE.typeName().equals(auditObject.getAaiObjectType())).
+		forEach(auditObject -> getAaiClient().createIfNotExists(AAIUriFactory.createResourceFromExistingURI(AAIObjectType.fromTypeName(auditObject.getAaiObjectType()), auditObject.getResourceURI()), Optional.of(auditObject.getAaiObject())));
+	}
+	
+	
+	/**
+	 * @param auditHeatStackFailed
+	 * @param auditList
+	 * @return
+	 */
+	protected boolean didAuditFailVserverLInterfaces(AAIObjectAuditList auditList) {
+		Stream<AAIObjectAudit> issue = auditList.getAuditList().stream().filter(auditObject -> auditObject.getAaiObjectType().equals(AAIObjectType.VSERVER.typeName()) || auditObject.getAaiObjectType().equals(AAIObjectType.L_INTERFACE.typeName()));
+		
+		return issue.filter(auditObject -> !auditObject.isDoesObjectExist()).findFirst().map(v -> true).orElse(false);
+	}
+
+	protected AAIResourcesClient getAaiClient(){
+		if(aaiClient == null)
+			return new AAIResourcesClient();
+		else
+			return aaiClient;
+	}	
+	protected void setAaiClient(AAIResourcesClient aaiResource){
+		aaiClient = aaiResource;
+	}
+}
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateInventoryService.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateInventoryService.java
new file mode 100644
index 0000000..b2eadaf
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateInventoryService.java
@@ -0,0 +1,68 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2019 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.adapters.inventory.create;
+
+import java.security.GeneralSecurityException;
+
+import javax.annotation.PostConstruct;
+
+import org.camunda.bpm.client.ExternalTaskClient;
+import org.camunda.bpm.client.backoff.ExponentialBackoffStrategy;
+import org.camunda.bpm.client.interceptor.ClientRequestInterceptor;
+import org.camunda.bpm.client.interceptor.auth.BasicAuthProvider;
+import org.onap.so.utils.CryptoUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Profile;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
+
+@Component
+@Profile("!test")
+public class CreateInventoryService {
+
+	private static final Logger logger = LoggerFactory.getLogger(CreateInventoryService.class);
+
+	@Autowired
+	public Environment env;
+
+	@Autowired
+	private CreateInventoryTask createInventory;
+
+	@PostConstruct
+	public void auditAAIInventory() {
+		String auth = "";
+		try {
+			auth = CryptoUtils.decrypt(env.getRequiredProperty("mso.auth"), env.getRequiredProperty("mso.msoKey"));
+		} catch (IllegalStateException | GeneralSecurityException e) {
+			logger.error("Error Decrypting Password", e);
+		}
+		ClientRequestInterceptor interceptor = new BasicAuthProvider(env.getRequiredProperty("mso.config.cadi.aafId"),
+				auth);
+		ExternalTaskClient client = ExternalTaskClient.create()
+				.baseUrl(env.getRequiredProperty("mso.workflow.endpoint")).maxTasks(1).addInterceptor(interceptor)
+				.asyncResponseTimeout(120000).backoffStrategy(new ExponentialBackoffStrategy(10000, 2, 120000)).build();
+		client.subscribe("InventoryCreate").lockDuration(60000)
+				.handler(createInventory::executeExternalTask).open();
+	}
+
+}
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateInventoryTask.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateInventoryTask.java
new file mode 100644
index 0000000..4a14b14
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateInventoryTask.java
@@ -0,0 +1,114 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017-2019 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.adapters.inventory.create;
+
+import java.io.IOException;
+
+import org.camunda.bpm.client.task.ExternalTask;
+import org.camunda.bpm.client.task.ExternalTaskService;
+import org.onap.logging.ref.slf4j.ONAPLogConstants;
+import org.onap.so.adapters.audit.AAIObjectAuditList;
+import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CreateInventoryTask {
+
+	private static final String UNABLE_TO_WRITE_ALL_INVENTORY_TO_A_AI = "Unable to write all inventory to A&AI";
+
+	private static final Logger logger = LoggerFactory.getLogger(CreateInventoryTask.class);
+	
+	@Autowired
+	CreateAAIInventory createInventory;
+	
+	@Autowired
+	public Environment env;
+
+	protected void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService) {
+		boolean success = true;
+		String auditInventoryString = externalTask.getVariable("auditInventoryResult");
+		GraphInventoryCommonObjectMapperProvider objectMapper = new GraphInventoryCommonObjectMapperProvider();
+		AAIObjectAuditList auditInventory = null;
+		try {
+			auditInventory = objectMapper.getMapper().readValue(auditInventoryString, AAIObjectAuditList.class);
+		} catch (IOException e1) {
+			success = false;
+		}
+		setupMDC(externalTask);
+		
+		if (auditInventory != null) {
+			try {
+				logger.info("Executing External Task Create Inventory, Retry Number: {} \n {}", auditInventory,
+						externalTask.getRetries());
+				createInventory.createInventory(auditInventory);
+			} catch (Exception e) {
+				logger.error("Error during inventory of stack", e);
+				success = false;
+			}
+			if (success) {
+				externalTaskService.complete(externalTask);
+				logger.debug("The External Task Id: {}  Successful", externalTask.getId());
+			} else {
+				if (externalTask.getRetries() == null) {
+					logger.debug("The External Task Id: {}  Failed, Setting Retries to Default Start Value: {}",
+							externalTask.getId(), getRetrySequence().length);
+					externalTaskService.handleFailure(externalTask, UNABLE_TO_WRITE_ALL_INVENTORY_TO_A_AI,
+							UNABLE_TO_WRITE_ALL_INVENTORY_TO_A_AI, getRetrySequence().length, 10000);
+				} else if (externalTask.getRetries() != null && externalTask.getRetries() - 1 == 0) {
+					logger.debug("The External Task Id: {}  Failed, All Retries Exhausted", externalTask.getId());
+					externalTaskService.handleBpmnError(externalTask, "AAIInventoryFailure");
+				} else {
+					logger.debug("The External Task Id: {}  Failed, Decrementing Retries: {} , Retry Delay: ",
+							externalTask.getId(), externalTask.getRetries() - 1,
+							calculateRetryDelay(externalTask.getRetries()));
+					externalTaskService.handleFailure(externalTask, UNABLE_TO_WRITE_ALL_INVENTORY_TO_A_AI,
+							UNABLE_TO_WRITE_ALL_INVENTORY_TO_A_AI, externalTask.getRetries() - 1,
+							calculateRetryDelay(externalTask.getRetries()));
+				}
+				logger.debug("The External Task Id: {} Failed", externalTask.getId());
+			}
+		} else {
+			logger.debug("The External Task Id: {}  Failed, No Audit Results Written", externalTask.getId());
+			externalTaskService.handleBpmnError(externalTask, "AAIInventoryFailure");
+		}
+	}
+	
+	private void setupMDC(ExternalTask externalTask) {
+		String msoRequestId = (String)externalTask.getVariable("mso-request-id");
+		if(msoRequestId != null && !msoRequestId.isEmpty())
+			MDC.put(ONAPLogConstants.MDCs.REQUEST_ID, msoRequestId);
+	}
+	protected long calculateRetryDelay(int currentRetries){
+		int retrySequence = getRetrySequence().length - currentRetries;
+		long retryMultiplier = Long.parseLong(env.getProperty("mso.workflow.topics.retryMultiplier","6000"));
+		return Integer.parseInt(getRetrySequence()[retrySequence]) * retryMultiplier;
+	}
+	
+	public String[] getRetrySequence() {
+		 return env.getProperty("mso.workflow.topics.retrySequence",String[].class);
+	}
+}
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/InventoryException.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/InventoryException.java
new file mode 100644
index 0000000..22c6902
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/InventoryException.java
@@ -0,0 +1,14 @@
+package org.onap.so.adapters.inventory.create;
+
+public class InventoryException extends Exception {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 912652713891488731L;
+
+	public InventoryException(String errorMessage) {
+		super(errorMessage);
+	}
+
+}
diff --git a/adapters/mso-openstack-adapters/src/main/resources/application.yaml b/adapters/mso-openstack-adapters/src/main/resources/application.yaml
index cdd04b8..f66d77d 100644
--- a/adapters/mso-openstack-adapters/src/main/resources/application.yaml
+++ b/adapters/mso-openstack-adapters/src/main/resources/application.yaml
@@ -16,6 +16,7 @@
   workflow:
     topics:
       retryMultiplier: 60000
+      retrySequence: 1, 1, 2, 3, 5, 8, 13, 20
 spring:
   datasource:
     url: jdbc:mariadb://${DB_HOST}:${DB_PORT}/catalogdb
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditCreateStackServiceTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditStackServiceDataTest.java
similarity index 60%
rename from adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditCreateStackServiceTest.java
rename to adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditStackServiceDataTest.java
index bcf126d..29e672a 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditCreateStackServiceTest.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditStackServiceDataTest.java
@@ -20,16 +20,24 @@
 
 package org.onap.so.adapters.audit;
 
+import static org.hamcrest.CoreMatchers.isA;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.mockito.Mockito.doReturn;
 
+import java.io.File;
 import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Map;
 import java.util.Optional;
 
 import org.camunda.bpm.client.task.ExternalTask;
 import org.camunda.bpm.client.task.ExternalTaskService;
+import org.hamcrest.Matchers;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.ArgumentCaptor;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
@@ -39,48 +47,76 @@
 import org.springframework.core.env.Environment;
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 
-public class AuditCreateStackServiceTest extends AuditCreateStackService {
+public class AuditStackServiceDataTest extends AuditStackServiceData {
 
 	@InjectMocks
-	AuditCreateStackService auditStackService = new AuditCreateStackService();
+	private AuditStackServiceData auditStackService = new AuditStackServiceData();
 
 	@Mock
-	HeatStackAudit heatStackAuditMock;
+	private HeatStackAudit heatStackAuditMock;
 
 	@Mock
-	Environment mockEnv;
+	private Environment mockEnv;
 
 	@Mock
-	ExternalTask mockExternalTask;
+	private ExternalTask mockExternalTask;
 
 	@Mock
-	ExternalTaskService mockExternalTaskService;
+	private ExternalTaskService mockExternalTaskService;
 
-	AuditInventory auditInventory = new AuditInventory();
+	private ObjectMapper objectMapper = new ObjectMapper();
+	
+	private AuditInventory auditInventory = new AuditInventory();
 
+	Optional<AAIObjectAuditList> auditListOptSuccess;
+	
+	Optional<AAIObjectAuditList> auditListOptFailure;
+	
 	@Before
-	public void setup() {
+	public void setup() throws JsonParseException, JsonMappingException, IOException {
 		auditInventory.setCloudOwner("cloudOwner");
 		auditInventory.setCloudRegion("cloudRegion");
 		auditInventory.setTenantId("tenantId");
 		auditInventory.setHeatStackName("stackName");
 		MockitoAnnotations.initMocks(this);
+		
+		AAIObjectAuditList auditListSuccess = objectMapper.readValue(new File("src/test/resources/ExpectedVServerFound.json"), AAIObjectAuditList.class);
+		auditListOptSuccess = Optional.of(auditListSuccess);
+		
+		AAIObjectAuditList auditListFailure = objectMapper.readValue(new File("src/test/resources/Vserver2_Found_VServer1_Not_Found.json"), AAIObjectAuditList.class);
+		auditListOptFailure = Optional.of(auditListFailure);
+		String[] retrySequence = new String[8];
+		retrySequence[0] = "1";
+		retrySequence[1] = "1";
+		retrySequence[2] = "2";
+		retrySequence[3] = "3";
+		retrySequence[4] = "5";
+		retrySequence[5] = "8";
+		retrySequence[6] = "13";
+		retrySequence[7] = "20";
 		doReturn(auditInventory).when(mockExternalTask).getVariable("auditInventory");
 		doReturn("6000").when(mockEnv).getProperty("mso.workflow.topics.retryMultiplier","6000");
+		doReturn(retrySequence).when(mockEnv).getProperty("mso.workflow.topics.retrySequence",String[].class);
 		doReturn("aasdfasdf").when(mockExternalTask).getId();
 	}
 
 	@Test
 	public void execute_external_task_audit_success_Test() {
-		doReturn(true).when(heatStackAuditMock).auditHeatStackCreate("cloudRegion", "cloudOwner", "tenantId", "stackName");
+		doReturn(auditListOptSuccess).when(heatStackAuditMock).auditHeatStack("cloudRegion", "cloudOwner", "tenantId", "stackName");
 		auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);
-		Mockito.verify(mockExternalTaskService).complete(mockExternalTask);
+		ArgumentCaptor<Map> captor = ArgumentCaptor.forClass(Map.class);
+		ArgumentCaptor<ExternalTask> taskCaptor = ArgumentCaptor.forClass(ExternalTask.class);
+		Mockito.verify(mockExternalTaskService).complete(taskCaptor.capture(),captor.capture());
+		Map actualMap = captor.getValue();
+		assertEquals(true,actualMap.get("auditIsSuccessful"));
+		assertNotNull(actualMap.get("auditInventoryResult"));
 	}
 
 	@Test
 	public void execute_external_task_audit_first_failure_Test() {
-		doReturn(false).when(heatStackAuditMock).auditHeatStackCreate("cloudRegion", "cloudOwner", "tenantId", "stackName");
+		doReturn(auditListOptFailure).when(heatStackAuditMock).auditHeatStack("cloudRegion", "cloudOwner", "tenantId", "stackName");
 		doReturn(null).when(mockExternalTask).getRetries();
 		auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);
 		Mockito.verify(mockExternalTaskService).handleFailure(mockExternalTask,
@@ -90,7 +126,7 @@
 
 	@Test
 	public void execute_external_task_audit_intermediate_failure_Test() {
-		doReturn(false).when(heatStackAuditMock).auditHeatStackCreate("cloudRegion", "cloudOwner", "tenantId", "stackName");
+		doReturn(auditListOptFailure).when(heatStackAuditMock).auditHeatStack("cloudRegion", "cloudOwner", "tenantId", "stackName");
 		doReturn(6).when(mockExternalTask).getRetries();
 		auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);		
 		Mockito.verify(mockExternalTaskService).handleFailure(mockExternalTask,
@@ -101,11 +137,15 @@
 
 	@Test
 	public void execute_external_task_audit_final_failure_Test() {
-		doReturn(false).when(heatStackAuditMock).auditHeatStackCreate("cloudRegion", "cloudOwner", "tenantId", "stackName");
+		doReturn(auditListOptFailure).when(heatStackAuditMock).auditHeatStack("cloudRegion", "cloudOwner", "tenantId", "stackName");
 		doReturn(1).when(mockExternalTask).getRetries();
 		auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);		
-		Mockito.verify(mockExternalTaskService).handleBpmnError(mockExternalTask,
-				"AuditAAIInventoryFailure", "Number of Retries Exceeded auditing inventory");
+		ArgumentCaptor<Map> captor = ArgumentCaptor.forClass(Map.class);
+		ArgumentCaptor<ExternalTask> taskCaptor = ArgumentCaptor.forClass(ExternalTask.class);
+		Mockito.verify(mockExternalTaskService).complete(taskCaptor.capture(),captor.capture());
+		Map actualMap = captor.getValue();
+		assertEquals(false,actualMap.get("auditIsSuccessful"));
+		assertNotNull(actualMap.get("auditInventoryResult"));
 	}
 
 	@Test
@@ -147,4 +187,17 @@
 		long eigthRetry = auditStackService.calculateRetryDelay(1);
 		assertEquals(120000L, eigthRetry);
 	}
+	
+
+	@Test
+	public void determineAuditResult_Test() throws Exception{		
+		boolean actual = auditStackService.didAuditFail(auditListOptSuccess);
+		assertEquals(false, actual);
+	}
+	
+	@Test
+	public void determineAuditResult_Failure_Test() throws Exception{
+		boolean actual = auditStackService.didAuditFail(auditListOptFailure);
+		assertEquals(true, actual);
+	}
 }
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditVServerTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditVServerTest.java
index 9176b58..f0fce4d 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditVServerTest.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditVServerTest.java
@@ -13,7 +13,7 @@
  * 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
+ * See the License for the specific language governing perservice2sions and
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
@@ -27,6 +27,8 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
@@ -48,7 +50,9 @@
 import org.onap.so.client.aai.entities.AAIResultWrapper;
 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
+import org.skyscreamer.jsonassert.JSONAssert;
 
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -58,6 +62,8 @@
 @RunWith(MockitoJUnitRunner.Silent.class)
 public class AuditVServerTest extends AuditVServer {
 
+	private ObjectMapper objectMapper = new ObjectMapper();
+
 	@InjectMocks
 	private AuditVServer auditNova = new AuditVServer();
 
@@ -74,47 +80,44 @@
 	private AAIResourceUri vserverURI2 = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER, cloudOwner, cloudRegion,
 			tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz");
 
-	private AAIResourceUri ssc_1_trusted_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
-			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "dec8bdc7-5718-41dc-bfbb-561ff6eeb81c");
+	private AAIResourceUri ssc_1_trusted_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
+			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_trusted_port_0");
 
-	private AAIResourceUri ssc_1_service1_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
-			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "1c56a24b-5f03-435a-850d-31cd4252de56");
+	private AAIResourceUri ssc_1_service1_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
+			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_service1_port_0");
 
-	private AAIResourceUri ssc_1_mgmt_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
-			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "12afcd28-929f-4d80-8a5a-0833bfd5e20b");
+	private AAIResourceUri ssc_1_mgmt_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
+			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_mgmt_port_1");
 
-	private AAIResourceUri ssc_1_mgmt_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
-			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "80baec42-ffae-425f-ad8c-3f7b2c24bfff");
+	private AAIResourceUri ssc_1_mgmt_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
+			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_mgmt_port_0");
 
-	private AAIResourceUri ssc_1_service2_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
-			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "13eddf95-4cf3-45f2-823a-2d890a6549b4");
+	private AAIResourceUri ssc_1_service2_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
+			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_service2_port_0");
 
-	private AAIResourceUri ssc_1_int_ha_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
-			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "9cab2903-70f7-44fd-b681-491d6ae2adb8");
+	private AAIResourceUri ssc_1_int_ha_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
+			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_int_ha_port_0");
 
-	private AAIResourceUri test_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
-			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz").queryParam("interface-id", "9cab2903-70f7-44fd-b681-491d6ae2adz1");
+	private AAIResourceUri test_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
+			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz","test_port_1");
 
-
-	private AAIResourceUri test_port_2_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
-			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz").queryParam("interface-id", "9cab2903-70f7-44fd-b681-491d6ae2adz2");
-
+	private AAIResourceUri test_port_2_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
+			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz","test_port_2");	
 	
-	
-	private AAIResourceUri service2_sub_1_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.SUB_L_INTERFACE,
-			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","interface-name").queryParam("interface-id", "f711be16-2654-4a09-b89d-0511fda20e81");
+	private AAIResourceUri service2_sub_1_uri = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE,
+			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_service2_port_0","service2_sub_interface_1");
 
-	private AAIResourceUri service1_sub_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.SUB_L_INTERFACE,
-			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","interface-name").queryParam("interface-id", "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb");
+	private AAIResourceUri service1_sub_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE,
+			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_service1_port_0","service1_sub_interface_1");
 
-	private AAIResourceUri service1_sub_1_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.SUB_L_INTERFACE,
-			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","interface-name").queryParam("interface-id", "b7019dd0-2ee9-4447-bdef-ac25676b205a");
+	private AAIResourceUri service1_sub_1_uri = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE,
+			cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_service1_port_0","service1_sub_interface_2");
 
 	
 
+	
 	private Set<Vserver> vserversToAudit = new HashSet<>();
 	
-	
 	LInterface test_port_1 = new LInterface();
 	LInterface test_port_2 = new LInterface();
 	LInterface ssc_1_int_ha_port_0 = new LInterface();
@@ -126,22 +129,12 @@
 	LInterface service1_sub_interface_1 = new LInterface();
 	LInterface ssc_1_service1_port_0 = new LInterface();
 	LInterface ssc_1_trusted_port_0 = new LInterface();
-	
-	LInterfaces test_port_1_plural = new LInterfaces();	
-	LInterfaces test_port_2_plural = new LInterfaces();
-	LInterfaces ssc_1_int_ha_port_0_plural = new LInterfaces();
-	LInterfaces service2_sub_interface_1_plural = new LInterfaces();
-	LInterfaces ssc_1_service2_port_0_plural = new LInterfaces();
-	LInterfaces ssc_1_mgmt_port_0_plural = new LInterfaces();
-	LInterfaces ssc_1_mgmt_port_1_plural = new LInterfaces();
-	LInterfaces service1_sub_interface_2_plural = new LInterfaces();
-	LInterfaces service1_sub_interface_1_plural = new LInterfaces();
-	LInterfaces ssc_1_service1_port_0_plural = new LInterfaces();
-	LInterfaces ssc_1_trusted_port_0_plural = new LInterfaces();
+
 	
 	
 	@Before
 	public void setup() {
+		objectMapper.setSerializationInclusion(Include.NON_NULL);
 		auditNova.setAaiClient(aaiResourcesMock);
 
 		Vserver vServer1= new Vserver();
@@ -150,109 +143,97 @@
 		vServer1.setLInterfaces(vServer1Linterfaces);
 		
 		ssc_1_trusted_port_0.setInterfaceId("dec8bdc7-5718-41dc-bfbb-561ff6eeb81c");
-		ssc_1_trusted_port_0.setInterfaceName("interface-name");
+		ssc_1_trusted_port_0.setInterfaceName("ssc_1_trusted_port_0");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_trusted_port_0);
 		
 		
 		ssc_1_service1_port_0.setInterfaceId("1c56a24b-5f03-435a-850d-31cd4252de56");
-		ssc_1_service1_port_0.setInterfaceName("interface-name");
+		ssc_1_service1_port_0.setInterfaceName("ssc_1_service1_port_0");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_service1_port_0);
 		ssc_1_service1_port_0.setLInterfaces(new LInterfaces());	
 		
 		
 		service1_sub_interface_1.setInterfaceId("0d9cd813-2ae1-46c0-9ebb-48081f6cffbb");
+		service1_sub_interface_1.setInterfaceName("service1_sub_interface_1");
 		ssc_1_service1_port_0.getLInterfaces().getLInterface().add(service1_sub_interface_1);
 		
 		
 		service1_sub_interface_2.setInterfaceId("b7019dd0-2ee9-4447-bdef-ac25676b205a");
+		service1_sub_interface_2.setInterfaceName("service1_sub_interface_2");
 		ssc_1_service1_port_0.getLInterfaces().getLInterface().add(service1_sub_interface_2);
 		
 		
 		ssc_1_mgmt_port_1.setInterfaceId("12afcd28-929f-4d80-8a5a-0833bfd5e20b");
-		ssc_1_mgmt_port_1.setInterfaceName("interface-name");
+		ssc_1_mgmt_port_1.setInterfaceName("ssc_1_mgmt_port_1");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_1);
 
 		ssc_1_mgmt_port_0.setInterfaceId("80baec42-ffae-425f-ad8c-3f7b2c24bfff");
-		ssc_1_mgmt_port_0.setInterfaceName("interface-name");
+		ssc_1_mgmt_port_0.setInterfaceName("ssc_1_mgmt_port_0");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_0);
 		
 	
 		ssc_1_service2_port_0.setLInterfaces(new LInterfaces());
 		ssc_1_service2_port_0.setInterfaceId("13eddf95-4cf3-45f2-823a-2d890a6549b4");
-		ssc_1_service2_port_0.setInterfaceName("interface-name");
+		ssc_1_service2_port_0.setInterfaceName("ssc_1_service2_port_0");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_service2_port_0);
 		
 
-		service2_sub_interface_1.setInterfaceId("f711be16-2654-4a09-b89d-0511fda20e81");	
+		service2_sub_interface_1.setInterfaceId("f711be16-2654-4a09-b89d-0511fda20e81");
+		service2_sub_interface_1.setInterfaceName("service2_sub_interface_1");
 		ssc_1_service2_port_0.getLInterfaces().getLInterface().add(service2_sub_interface_1);
 		
 
 		ssc_1_int_ha_port_0.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adb8");	
+		ssc_1_int_ha_port_0.setInterfaceName("ssc_1_int_ha_port_0");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_int_ha_port_0);
 		
-		
 		Vserver vServer2= new Vserver();
 		vServer2.setVserverId("3a4c2ca5-27b3-4ecc-98c5-06804867c4dz");
 		LInterfaces vServer2Linterfaces = new LInterfaces();
 		vServer2.setLInterfaces(vServer2Linterfaces);
 	
 		test_port_1.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adz1");
-		test_port_1.setInterfaceName("interface-name");
+		test_port_1.setInterfaceName("test_port_1");
 		
 
 		test_port_2.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adz2");
-		test_port_2.setInterfaceName("interface-name");
+		test_port_2.setInterfaceName("test_port_2");
 		
 		vServer2.getLInterfaces().getLInterface().add(test_port_1);
 		vServer2.getLInterfaces().getLInterface().add(test_port_2);
 		
 		vserversToAudit.add(vServer1);
 		vserversToAudit.add(vServer2);
-		
-		
-		test_port_1_plural.getLInterface().add(test_port_1);
-		test_port_2_plural.getLInterface().add(test_port_2);
-		ssc_1_int_ha_port_0_plural.getLInterface().add(ssc_1_int_ha_port_0);
-		ssc_1_service2_port_0_plural.getLInterface().add(ssc_1_service2_port_0);
-		ssc_1_mgmt_port_0_plural.getLInterface().add(ssc_1_mgmt_port_0);
-		ssc_1_mgmt_port_1_plural.getLInterface().add(ssc_1_mgmt_port_1);
-		ssc_1_service1_port_0_plural.getLInterface().add(ssc_1_service1_port_0);
-		ssc_1_trusted_port_0_plural.getLInterface().add(ssc_1_trusted_port_0);
-
 	} 
 	
 	@Test
 	public void audit_Vserver_Empty_HashSet() throws JsonParseException, JsonMappingException, IOException {
-		boolean exists = auditNova.auditAllVserversDoExist(new HashSet<Vserver>(), tenantId, cloudOwner, cloudRegion);
-		assertEquals(false, exists);
-		
-		boolean doNotExist = auditNova.auditAllVserversDoNotExist(new HashSet<Vserver>(), tenantId, cloudOwner, cloudRegion);
-		assertEquals(true, doNotExist);
+		Optional<AAIObjectAuditList> actual = auditNova.auditVservers(new HashSet<Vserver>(), tenantId, cloudOwner, cloudRegion);		
+		assertEquals(Optional.empty(), actual);
 	}
-	
 
 	@Test
 	public void audit_Vserver_Found_Test() throws JsonParseException, JsonMappingException, IOException {
 		doReturn(true).when(aaiResourcesMock).exists(vserverURI);
 		doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
-		doReturn(Optional.of(ssc_1_trusted_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_trusted_port_0_uri);
-		doReturn(Optional.of(ssc_1_service1_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_service1_port_0_uri);
-		doReturn(Optional.of(ssc_1_mgmt_port_1_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mgmt_port_1_uri);
-		doReturn(Optional.of(ssc_1_mgmt_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mgmt_port_0_uri);
-		doReturn(Optional.of(ssc_1_service2_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_service2_port_0_uri);
-		doReturn(Optional.of(ssc_1_int_ha_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_int_ha_port_0_uri);
-		doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterfaces.class,test_port_1_uri);
-		doReturn(Optional.of(test_port_2_plural)).when(aaiResourcesMock).get(LInterfaces.class,test_port_2_uri);
+		doReturn(Optional.of(ssc_1_trusted_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
+		doReturn(Optional.of(ssc_1_service1_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service1_port_0_uri);
+		doReturn(Optional.of(ssc_1_mgmt_port_1)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
+		doReturn(Optional.of(ssc_1_mgmt_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
+		doReturn(Optional.of(ssc_1_service2_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service2_port_0_uri);
+		doReturn(Optional.of(service2_sub_interface_1)).when(aaiResourcesMock).get(LInterface.class,service1_sub_1_uri);
+		doReturn(Optional.of(ssc_1_int_ha_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
+		doReturn(Optional.of(test_port_1)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
+		doReturn(Optional.of(test_port_2)).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
 		
 		doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
 		doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
 		doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
 
-		boolean exists = auditNova.auditAllVserversDoExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);		
-		assertEquals(true, exists);
-		
-		boolean doNotExist = auditNova.auditAllVserversDoNotExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);		
-		assertEquals(false, doNotExist);
+		Optional<AAIObjectAuditList> actual = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
+		String actualString = objectMapper.writeValueAsString(actual.get());
+		String expected = getJson("ExpectedVServerFound.json");	
+		JSONAssert.assertEquals(expected,actualString, false);
 	}
 
 	@Test
@@ -260,24 +241,23 @@
 			throws JsonParseException, JsonMappingException, IOException {
 		doReturn(true).when(aaiResourcesMock).exists(vserverURI);
 		doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
-		doReturn(Optional.of(ssc_1_trusted_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_trusted_port_0_uri);
-		doReturn(Optional.of(ssc_1_service1_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_service1_port_0_uri);
-		doReturn(Optional.of(ssc_1_mgmt_port_1_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mgmt_port_1_uri);
-		doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mgmt_port_0_uri);
-		doReturn(Optional.of(ssc_1_service2_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_service2_port_0_uri);
-		doReturn(Optional.of(ssc_1_int_ha_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_int_ha_port_0_uri);
-		doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterfaces.class,test_port_1_uri);
-		doReturn(Optional.of(test_port_2_plural)).when(aaiResourcesMock).get(LInterfaces.class,test_port_2_uri);
+		doReturn(Optional.of(ssc_1_trusted_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
+		doReturn(Optional.of(ssc_1_service1_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service1_port_0_uri);
+		doReturn(Optional.of(ssc_1_mgmt_port_1)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
+		doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
+		doReturn(Optional.of(ssc_1_service2_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service2_port_0_uri);
+		doReturn(Optional.of(ssc_1_int_ha_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
+		doReturn(Optional.of(test_port_1)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
+		doReturn(Optional.of(test_port_2)).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
 		
 		doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
 		doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
 		doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
 
-		boolean exists = auditNova.auditAllVserversDoExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);		
-		assertEquals(false, exists);
-		
-		boolean doNotExist = auditNova.auditAllVserversDoNotExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);		
-		assertEquals(false, doNotExist);
+		Optional<AAIObjectAuditList> actual = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
+		String actualString = objectMapper.writeValueAsString(actual.get());
+		String expected = getJson("VServer_Found_network_Not_Found.json");
+		JSONAssert.assertEquals(expected,actualString, false);
 	}
 
 	@Test
@@ -285,70 +265,81 @@
 			throws JsonParseException, JsonMappingException, IOException {
 		doReturn(true).when(aaiResourcesMock).exists(vserverURI);
 		doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
-		doReturn(Optional.of(ssc_1_trusted_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
-		doReturn(Optional.of(ssc_1_service1_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service1_port_0_uri);
-		doReturn(Optional.of(ssc_1_mgmt_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
-		doReturn(Optional.of(ssc_1_mgmt_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
-		doReturn(Optional.of(ssc_1_service2_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service2_port_0_uri);
-		doReturn(Optional.of(ssc_1_int_ha_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
-		doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
+		doReturn(Optional.of(ssc_1_trusted_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
+		doReturn(Optional.of(ssc_1_service1_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service1_port_0_uri);
+		doReturn(Optional.of(ssc_1_mgmt_port_1)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
+		doReturn(Optional.of(ssc_1_mgmt_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
+		doReturn(Optional.of(ssc_1_service2_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service2_port_0_uri);
+		doReturn(Optional.of(ssc_1_int_ha_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
+		doReturn(Optional.of(test_port_1)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
 		doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);		
 		doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
 		doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
 		doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
-		boolean exists = auditNova.auditAllVserversDoExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
-		assertEquals(false, exists);
-		
-		boolean doNotExist = auditNova.auditAllVserversDoNotExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);		
-		assertEquals(false, doNotExist);
+		Optional<AAIObjectAuditList> actual = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
+		String actualString = objectMapper.writeValueAsString(actual.get());
+		String expected = getJson("VServer_Found_Network_Sec_Server_Not_Found.json");	
+		JSONAssert.assertEquals(expected,actualString, false);
 	}
 
 	@Test
-	public void audit_Vservers_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
+	public void audit_Vserver_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
 		doReturn(false).when(aaiResourcesMock).exists(vserverURI);
 		doReturn(false).when(aaiResourcesMock).exists(vserverURI2);
-		
-		boolean exists = auditNova.auditAllVserversDoExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);		
-		assertEquals(false, exists);
-		
-		boolean doNotExist = auditNova.auditAllVserversDoNotExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);		
-		assertEquals(true, doNotExist);
+		Optional<AAIObjectAuditList> actual = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
+		String actualString = objectMapper.writeValueAsString(actual.get());
+		String expected = getJson("Vservers_Not_Found.json");
+		JSONAssert.assertEquals(expected,actualString, false);
 	}
 
 	@Test
 	public void audit_Vserver_first_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
 		doReturn(false).when(aaiResourcesMock).exists(vserverURI);
 		doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
-		doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
-		doReturn(Optional.of(test_port_2_plural)).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
-		boolean exists = auditNova.auditAllVserversDoExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);		
-		assertEquals(false, exists);
+		doReturn(Optional.of(test_port_1)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
+		doReturn(Optional.of(test_port_2)).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
+		Optional<AAIObjectAuditList> actual = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
+		String actualString = objectMapper.writeValueAsString(actual.get());
+		String expected = getJson("Vserver2_Found_VServer1_Not_Found.json");
+		JSONAssert.assertEquals(expected,actualString, false);
+	}
+	
+	
+	@Test
+	public void doesSubInterfaceExistinAAI_Test(){
+		AAIResourceUri subInterfaceURI = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE, cloudOwner,
+				cloudRegion, tenantId, "vserverId", "l-interface", "sub-interface");
 		
-		boolean doNotExist = auditNova.auditAllVserversDoNotExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);		
-		assertEquals(false, doNotExist);
+		assertEquals("/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/vserverId/l-interfaces/l-interface/l-interface/l-interfaces/l-interface/sub-interface",subInterfaceURI.build().toString());
 	}
 
 	@Test
 	public void audit_Vserver_Second_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
 		doReturn(true).when(aaiResourcesMock).exists(vserverURI);
-		doReturn(Optional.of(ssc_1_trusted_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
-		doReturn(Optional.of(ssc_1_service1_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service1_port_0_uri);
-		doReturn(Optional.of(ssc_1_mgmt_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
-		doReturn(Optional.of(ssc_1_mgmt_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
-		doReturn(Optional.of(ssc_1_service2_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service2_port_0_uri);
-		doReturn(Optional.of(ssc_1_int_ha_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
-		doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
-		doReturn(Optional.of(test_port_2_plural)).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
+		doReturn(Optional.of(ssc_1_trusted_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
+		doReturn(Optional.of(ssc_1_service1_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service1_port_0_uri);
+		doReturn(Optional.of(ssc_1_mgmt_port_1)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
+		doReturn(Optional.of(ssc_1_mgmt_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
+		doReturn(Optional.of(ssc_1_service2_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service2_port_0_uri);
+		doReturn(Optional.of(ssc_1_int_ha_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
+		doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
+		doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
 		doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
 		doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
 		doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
+		
 		doReturn(false).when(aaiResourcesMock).exists(vserverURI2);
-		
-		boolean exists = auditNova.auditAllVserversDoExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
-		assertEquals(false, exists);
-		
-		boolean doNotExist = auditNova.auditAllVserversDoNotExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);		
-		assertEquals(false, doNotExist);
+		Optional<AAIObjectAuditList> actual = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
+		String actualString = objectMapper.writeValueAsString(actual.get());
+		String expected = getJson("VServer_Found_Sec_Server_Not_Found2.json");
+
+		JSONAssert.assertEquals(expected,actualString, false);
 	}
+	
+	private String getJson(String filename) throws IOException {
+		 return new String(Files.readAllBytes(Paths.get("src/test/resources/" + filename)));
+	}
+
+
 
 }
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 987e4cf..a7744a2 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,9 @@
 import static org.mockito.Mockito.doReturn;
 
 import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -46,6 +49,7 @@
 import org.onap.so.openstack.utils.MsoNeutronUtils;
 import org.skyscreamer.jsonassert.JSONAssert;
 
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.woorea.openstack.heat.model.Resource;
@@ -74,9 +78,9 @@
 	
 	private Resources resources = new Resources();
 	
-	private ObjectMapper objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+	private ObjectMapper objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).setSerializationInclusion(Include.NON_NULL);
 	
-	private ObjectMapper stackObjectMapper = new ObjectMapper().configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
+	private ObjectMapper stackObjectMapper = new ObjectMapper().configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true).setSerializationInclusion(Include.NON_NULL);
 
 	private List<Optional<Port>> portList = new ArrayList<>();
 	
@@ -131,62 +135,7 @@
 		
 		List<Resource> resourceGroups = resources.getList().stream()
 				.filter(p -> "OS::Heat::ResourceGroup".equals(p.getType())).collect(Collectors.toList());
-		
-		Set<Vserver> expectedVservers = new HashSet<>();
-		Vserver vServer1= new Vserver();
-		vServer1.setVserverId("92272b67-d23f-42ca-87fa-7b06a9ec81f3");
-		LInterfaces vServer1Linterfaces = new LInterfaces();
-		vServer1.setLInterfaces(vServer1Linterfaces);
-		
-		LInterface ssc_1_trusted_port_0 = new LInterface();
-		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("fdeedf37-c01e-4ab0-bdd6-8d5fc4913943");
-		vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_1);
-		
-		LInterface ssc_1_mgmt_port_0 = new LInterface();
-		ssc_1_mgmt_port_0.setInterfaceId("8d93f63e-e972-48c7-ad98-b2122da47315");
-		vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_0);
-		
-		LInterface ssc_1_service2_port_0 = new LInterface();
-		ssc_1_service2_port_0.setLInterfaces(new LInterfaces());
-		ssc_1_service2_port_0.setInterfaceId("0594a2f2-7ea4-42eb-abc2-48ea49677fca");	
-		vServer1.getLInterfaces().getLInterface().add(ssc_1_service2_port_0);
-		
-		LInterface service2_sub_interface_1 = new LInterface();
-		service2_sub_interface_1.setInterfaceId("2bbfa345-33bb-495a-94b2-fb514ee1cffc");	
-		ssc_1_service2_port_0.getLInterfaces().getLInterface().add(service2_sub_interface_1);
-		
-		LInterface ssc_1_int_ha_port_0 = new LInterface();
-		ssc_1_int_ha_port_0.setInterfaceId("00bb8407-650e-48b5-b919-33b88d6f8fe3");
-		vServer1.getLInterfaces().getLInterface().add(ssc_1_int_ha_port_0);		
-		
-		
-		LInterface ssc_1_service1_port_0 = new LInterface();
-		ssc_1_service1_port_0.setInterfaceId("27391d94-33af-474a-927d-d409249e8fd3");
-		vServer1.getLInterfaces().getLInterface().add(ssc_1_service1_port_0);		
-		ssc_1_service1_port_0.setLInterfaces(new LInterfaces());		
-		
-		LInterface service1_sub_interface_0 = new LInterface();
-		service1_sub_interface_0.setInterfaceId("d54dfd09-75c6-4e04-b204-909455b8f933");
-		ssc_1_service1_port_0.getLInterfaces().getLInterface().add(service1_sub_interface_0);
-		
-		LInterface service1_sub_interface_1 = new LInterface();
-		service1_sub_interface_1.setInterfaceId("f7a998c0-8939-4b07-bf4a-0862e9c325e1");
-		ssc_1_service1_port_0.getLInterfaces().getLInterface().add(service1_sub_interface_1);
-		
-		LInterface service1_sub_interface_2 = new LInterface();
-		service1_sub_interface_2.setInterfaceId("621c1fea-60b8-44ee-aede-c01b8b1aaa70");
-		ssc_1_service1_port_0.getLInterfaces().getLInterface().add(service1_sub_interface_2);
-
-		
-		expectedVservers.add(vServer1);
-		
-		
 		Resources service1QueryResponse = objectMapper.readValue(new File("src/test/resources/Service1ResourceGroupResponse.json"), Resources.class);
 		doReturn(service1QueryResponse).when(msoHeatUtilsMock).executeHeatClientRequest("/stacks/tsbc0005vm002ssc001-ssc_1_subint_service1_port_0_subinterfaces-dtmxjmny7yjz/31d0647a-6043-49a4-81b6-ccab29380672/resources", cloudRegion,	tenantId, Resources.class);
 		
@@ -219,20 +168,18 @@
 		Set<Vserver> vserversWithSubInterfaces = heatStackAudit.processSubInterfaces(cloudRegion,tenantId,resourceGroups, vServersToAudit);
 		
 		String actualValue = objectMapper.writeValueAsString(vserversWithSubInterfaces);
-		String expectedValue = objectMapper.writeValueAsString(expectedVservers);
-		
+		String expectedValue = getJson("ExpectedVserversToAudit.json");
+		System.out.println(actualValue);
 		JSONAssert.assertEquals(expectedValue, actualValue, false);
 	}
 	
 	@Test
 	public void auditHeatStackNoServers_Test() throws Exception{
-
-		
 		Resources getResource = objectMapper.readValue(new File("src/test/resources/Service1ResourceGroupResponse.json"), Resources.class);
 		doReturn(getResource).when(msoHeatUtilsMock).queryStackResources(cloudRegion,	tenantId, "heatStackName");
 		
-		boolean actual = heatStackAudit.auditHeatStackCreate(cloudRegion, "cloudOwner", tenantId, "heatStackName");
-		assertEquals(true, actual);
+		Optional<AAIObjectAuditList> actual = heatStackAudit.auditHeatStack(cloudRegion, "cloudOwner", tenantId, "heatStackName");
+		assertEquals(true, actual.get().getAuditList().isEmpty());
 	}
 	
 
@@ -248,26 +195,32 @@
 		
 		LInterface ssc_1_trusted_port_0 = new LInterface();
 		ssc_1_trusted_port_0.setInterfaceId("7ee06d9d-3d18-411c-9d3e-aec930f70413");
+		ssc_1_trusted_port_0.setInterfaceName("ibcx0026v_ibcx0026vm003_untrusted_port");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_trusted_port_0);
 		
-		LInterface ssc_1_service1_port_0 = new LInterface();
-		ssc_1_service1_port_0.setInterfaceId("27391d94-33af-474a-927d-d409249e8fd3");
-		vServer1.getLInterfaces().getLInterface().add(ssc_1_service1_port_0);
+		LInterface ssc_1_svc2_port_0 = new LInterface();
+		ssc_1_svc2_port_0.setInterfaceId("27391d94-33af-474a-927d-d409249e8fd3");
+		ssc_1_svc2_port_0.setInterfaceName("ibcx0026v_ibcx0026vm003_untrusted_port");
+		vServer1.getLInterfaces().getLInterface().add(ssc_1_svc2_port_0);
 		
 		LInterface ssc_1_mgmt_port_1 = new LInterface();
 		ssc_1_mgmt_port_1.setInterfaceId("fdeedf37-c01e-4ab0-bdd6-8d5fc4913943");
+		ssc_1_mgmt_port_1.setInterfaceName("ibcx0026v_ibcx0026vm003_untrusted_port");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_1);
 		
 		LInterface ssc_1_mgmt_port_0 = new LInterface();
 		ssc_1_mgmt_port_0.setInterfaceId("8d93f63e-e972-48c7-ad98-b2122da47315");
+		ssc_1_mgmt_port_0.setInterfaceName("ibcx0026v_ibcx0026vm003_untrusted_port");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_0);
 		
-		LInterface ssc_1_service2_port_0 = new LInterface();
-		ssc_1_service2_port_0.setInterfaceId("0594a2f2-7ea4-42eb-abc2-48ea49677fca");
-		vServer1.getLInterfaces().getLInterface().add(ssc_1_service2_port_0);
+		LInterface ssc_1_svc1_port_0 = new LInterface();
+		ssc_1_svc1_port_0.setInterfaceId("0594a2f2-7ea4-42eb-abc2-48ea49677fca");
+		ssc_1_svc1_port_0.setInterfaceName("ibcx0026v_ibcx0026vm003_untrusted_port");
+		vServer1.getLInterfaces().getLInterface().add(ssc_1_svc1_port_0);
 		
 		LInterface ssc_1_int_ha_port_0 = new LInterface();
 		ssc_1_int_ha_port_0.setInterfaceId("00bb8407-650e-48b5-b919-33b88d6f8fe3");
+		ssc_1_int_ha_port_0.setInterfaceName("ibcx0026v_ibcx0026vm003_untrusted_port");
 		vServer1.getLInterfaces().getLInterface().add(ssc_1_int_ha_port_0);		
 		
 		expectedVservers.add(vServer1);
@@ -277,5 +230,7 @@
 		assertThat(actualVservers, sameBeanAs(expectedVservers));
 	}
 
-
+	private String getJson(String filename) throws IOException {
+		 return new String(Files.readAllBytes(Paths.get("src/test/resources/" + filename)));
+	}
 }
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/inventory/create/CreateAAIInventoryTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/inventory/create/CreateAAIInventoryTest.java
new file mode 100644
index 0000000..4d34d18
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/inventory/create/CreateAAIInventoryTest.java
@@ -0,0 +1,122 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017-2019 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.adapters.inventory.create;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.times;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+import org.camunda.bpm.client.task.ExternalTask;
+import org.hamcrest.Matchers;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.onap.so.adapters.audit.AAIObjectAuditList;
+import org.onap.so.audit.beans.AuditInventory;
+import org.onap.so.client.aai.AAIObjectType;
+import org.onap.so.client.aai.AAIResourcesClient;
+import org.onap.so.client.aai.entities.uri.AAIResourceUri;
+import org.onap.so.client.aai.entities.uri.AAIUriFactory;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class CreateAAIInventoryTest extends CreateAAIInventory {
+
+	@InjectMocks
+	private CreateAAIInventory createAAIInventory = new CreateAAIInventory();
+
+	@Mock
+	private ExternalTask mockExternalTask;
+	
+	@Mock
+	private AAIResourcesClient mockClient;
+
+	private ObjectMapper objectMapper = new ObjectMapper();
+	
+	private AuditInventory auditInventory = new AuditInventory();
+
+	AAIObjectAuditList auditListSuccess;
+	
+	AAIObjectAuditList auditListFailure;
+	
+	AAIObjectAuditList missingSubInterfaces;
+	
+	@Before
+	public void setup() throws JsonParseException, JsonMappingException, IOException {
+		auditInventory.setCloudOwner("cloudOwner");
+		auditInventory.setCloudRegion("cloudRegion");
+		auditInventory.setTenantId("tenantId");
+		auditInventory.setHeatStackName("stackName");
+		MockitoAnnotations.initMocks(this);
+		auditListSuccess = objectMapper.readValue(new File("src/test/resources/ExpectedVServerFound.json"), AAIObjectAuditList.class);
+		auditListFailure = objectMapper.readValue(new File("src/test/resources/Vserver2_Found_VServer1_Not_Found.json"), AAIObjectAuditList.class);
+		missingSubInterfaces = objectMapper.readValue(new File("src/test/resources/AuditResultsMissSub.json"), AAIObjectAuditList.class);
+		doReturn(auditInventory).when(mockExternalTask).getVariable("auditInventory");
+	}
+
+	@Test
+	public void determineAuditResult_Test() throws Exception{
+		boolean actual = createAAIInventory.didAuditFailVserverLInterfaces(auditListSuccess);
+		assertEquals(false, actual);
+	}
+	
+	@Test
+	public void determineAuditResult_Failure_Test() throws Exception{
+		boolean actual = createAAIInventory.didAuditFailVserverLInterfaces(auditListFailure);
+		assertEquals(true, actual);
+	}
+	
+	@Test
+	public void missing_Sub_Interfaces_Test() throws Exception{
+		AAIResourceUri aaiURI2 = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE,
+				"cloudOwner", "regionOne", "0422ffb57ba042c0800a29dc85ca70f8", "92272b67-d23f-42ca-87fa-7b06a9ec81f3",
+				"tsbc0005v_tsbc0005vm002_svc1_port_0","tsbc0005v_tsbc0005vm002_subint_untrusted_svc1_81");
+		AAIResourceUri aaiURI1 = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE,
+				"cloudOwner", "regionOne", "0422ffb57ba042c0800a29dc85ca70f8", "92272b67-d23f-42ca-87fa-7b06a9ec81f3",
+				"tsbc0005v_tsbc0005vm002_svc2_port_0","tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_103");
+		ArgumentCaptor<Optional> captor = ArgumentCaptor.forClass(Optional.class);
+		ArgumentCaptor<AAIResourceUri> uriCaptor = ArgumentCaptor.forClass(AAIResourceUri.class);
+
+		createAAIInventory.setAaiClient(mockClient);
+		createAAIInventory.createInventory(missingSubInterfaces);		
+		Mockito.verify(mockClient,times(2)).createIfNotExists(uriCaptor.capture(),captor.capture());
+		
+		List<AAIResourceUri> capturedURI = uriCaptor.getAllValues();
+		assertTrue(capturedURI.stream().anyMatch(item -> aaiURI1.build().toString().equals(item.build().toString())));
+		assertTrue(capturedURI.stream().anyMatch(item -> aaiURI2.build().toString().equals(item.build().toString())));
+
+
+		
+	}
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/AuditResultsMissSub.json b/adapters/mso-openstack-adapters/src/test/resources/AuditResultsMissSub.json
new file mode 100644
index 0000000..13b0d6a
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/AuditResultsMissSub.json
@@ -0,0 +1,604 @@
+{
+  "auditList": [
+    {
+      "aaiObject": {
+        "inMaint": null, 
+        "isClosedLoopDisabled": null, 
+        "linterfaces": null, 
+        "provStatus": null, 
+        "relationshipList": null, 
+        "resourceVersion": null, 
+        "volumes": null, 
+        "vserverId": "92272b67-d23f-42ca-87fa-7b06a9ec81f3", 
+        "vserverName": null, 
+        "vserverName2": null, 
+        "vserverSelflink": null
+      }, 
+      "aaiObjectType": "vserver", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/regionOne/tenants/tenant/0422ffb57ba042c0800a29dc85ca70f8/vservers/vserver/92272b67-d23f-42ca-87fa-7b06a9ec81f3"
+    }, 
+    {
+      "aaiObject": {
+        "adminStatus": null, 
+        "allowedAddressPairs": null, 
+        "inMaint": null, 
+        "interfaceDescription": null, 
+        "interfaceId": "d2f51f82-0ec2-4581-bd1a-d2a82073e52b", 
+        "interfaceName": "tsbc0005v_tsbc0005vm002_trusted_port", 
+        "interfaceRole": null, 
+        "isIpUnnumbered": null, 
+        "isPortMirrored": null, 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": null, 
+        "macaddr": null, 
+        "managementOption": null, 
+        "networkName": null, 
+        "priority": null, 
+        "provStatus": null, 
+        "relationshipList": null, 
+        "resourceVersion": null, 
+        "selflink": null, 
+        "sriovVfs": null, 
+        "v6WanLinkIp": null, 
+        "vlans": null
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/regionOne/tenants/tenant/0422ffb57ba042c0800a29dc85ca70f8/vservers/vserver/92272b67-d23f-42ca-87fa-7b06a9ec81f3/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_trusted_port"
+    }, 
+    {
+      "aaiObject": {
+        "adminStatus": null, 
+        "allowedAddressPairs": null, 
+        "inMaint": null, 
+        "interfaceDescription": null, 
+        "interfaceId": "27391d94-33af-474a-927d-d409249e8fd3", 
+        "interfaceName": "tsbc0005v_tsbc0005vm002_svc2_port_0", 
+        "interfaceRole": null, 
+        "isIpUnnumbered": null, 
+        "isPortMirrored": null, 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "adminStatus": null, 
+              "allowedAddressPairs": null, 
+              "inMaint": false, 
+              "interfaceDescription": null, 
+              "interfaceId": "d54dfd09-75c6-4e04-b204-909455b8f933", 
+              "interfaceName": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_101", 
+              "interfaceRole": null, 
+              "isIpUnnumbered": false, 
+              "isPortMirrored": false, 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": [], 
+              "linterfaces": null, 
+              "macaddr": "02:27:39:1d:94:33", 
+              "managementOption": null, 
+              "networkName": null, 
+              "priority": null, 
+              "provStatus": null, 
+              "relationshipList": null, 
+              "resourceVersion": null, 
+              "selflink": null, 
+              "sriovVfs": null, 
+              "v6WanLinkIp": null, 
+              "vlans": {
+                "vlan": [
+                  {
+                    "backdoorConnection": null, 
+                    "inMaint": false, 
+                    "isIpUnnumbered": false, 
+                    "isPrivate": null, 
+                    "l3InterfaceIpv4AddressList": [], 
+                    "l3InterfaceIpv6AddressList": [], 
+                    "orchestrationStatus": null, 
+                    "provStatus": null, 
+                    "relationshipList": null, 
+                    "resourceVersion": null, 
+                    "speedUnits": null, 
+                    "speedValue": null, 
+                    "vlanDescription": null, 
+                    "vlanIdInner": 101, 
+                    "vlanIdOuter": null, 
+                    "vlanInterface": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_101", 
+                    "vpnKey": null
+                  }
+                ]
+              }
+            }, 
+            {
+              "adminStatus": null, 
+              "allowedAddressPairs": null, 
+              "inMaint": false, 
+              "interfaceDescription": null, 
+              "interfaceId": "f7a998c0-8939-4b07-bf4a-0862e9c325e1", 
+              "interfaceName": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_101", 
+              "interfaceRole": null, 
+              "isIpUnnumbered": false, 
+              "isPortMirrored": false, 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": [], 
+              "linterfaces": null, 
+              "macaddr": "02:27:39:1d:94:33", 
+              "managementOption": null, 
+              "networkName": null, 
+              "priority": null, 
+              "provStatus": null, 
+              "relationshipList": null, 
+              "resourceVersion": null, 
+              "selflink": null, 
+              "sriovVfs": null, 
+              "v6WanLinkIp": null, 
+              "vlans": {
+                "vlan": [
+                  {
+                    "backdoorConnection": null, 
+                    "inMaint": false, 
+                    "isIpUnnumbered": false, 
+                    "isPrivate": null, 
+                    "l3InterfaceIpv4AddressList": [], 
+                    "l3InterfaceIpv6AddressList": [], 
+                    "orchestrationStatus": null, 
+                    "provStatus": null, 
+                    "relationshipList": null, 
+                    "resourceVersion": null, 
+                    "speedUnits": null, 
+                    "speedValue": null, 
+                    "vlanDescription": null, 
+                    "vlanIdInner": 101, 
+                    "vlanIdOuter": null, 
+                    "vlanInterface": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_101", 
+                    "vpnKey": null
+                  }
+                ]
+              }
+            }, 
+            {
+              "adminStatus": null, 
+              "allowedAddressPairs": null, 
+              "inMaint": false, 
+              "interfaceDescription": null, 
+              "interfaceId": "621c1fea-60b8-44ee-aede-c01b8b1aaa70", 
+              "interfaceName": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_103", 
+              "interfaceRole": null, 
+              "isIpUnnumbered": false, 
+              "isPortMirrored": false, 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": [], 
+              "linterfaces": null, 
+              "macaddr": "02:27:39:1d:94:33", 
+              "managementOption": null, 
+              "networkName": null, 
+              "priority": null, 
+              "provStatus": null, 
+              "relationshipList": null, 
+              "resourceVersion": null, 
+              "selflink": null, 
+              "sriovVfs": null, 
+              "v6WanLinkIp": null, 
+              "vlans": {
+                "vlan": [
+                  {
+                    "backdoorConnection": null, 
+                    "inMaint": false, 
+                    "isIpUnnumbered": false, 
+                    "isPrivate": null, 
+                    "l3InterfaceIpv4AddressList": [], 
+                    "l3InterfaceIpv6AddressList": [], 
+                    "orchestrationStatus": null, 
+                    "provStatus": null, 
+                    "relationshipList": null, 
+                    "resourceVersion": null, 
+                    "speedUnits": null, 
+                    "speedValue": null, 
+                    "vlanDescription": null, 
+                    "vlanIdInner": 103, 
+                    "vlanIdOuter": null, 
+                    "vlanInterface": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_103", 
+                    "vpnKey": null
+                  }
+                ]
+              }
+            }
+          ]
+        }, 
+        "macaddr": null, 
+        "managementOption": null, 
+        "networkName": null, 
+        "priority": null, 
+        "provStatus": null, 
+        "relationshipList": null, 
+        "resourceVersion": null, 
+        "selflink": null, 
+        "sriovVfs": null, 
+        "v6WanLinkIp": null, 
+        "vlans": null
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/regionOne/tenants/tenant/0422ffb57ba042c0800a29dc85ca70f8/vservers/vserver/92272b67-d23f-42ca-87fa-7b06a9ec81f3/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_svc2_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "adminStatus": null, 
+        "allowedAddressPairs": null, 
+        "inMaint": false, 
+        "interfaceDescription": null, 
+        "interfaceId": "d54dfd09-75c6-4e04-b204-909455b8f933", 
+        "interfaceName": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_101", 
+        "interfaceRole": null, 
+        "isIpUnnumbered": false, 
+        "isPortMirrored": false, 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": null, 
+        "macaddr": "02:27:39:1d:94:33", 
+        "managementOption": null, 
+        "networkName": null, 
+        "priority": null, 
+        "provStatus": null, 
+        "relationshipList": null, 
+        "resourceVersion": null, 
+        "selflink": null, 
+        "sriovVfs": null, 
+        "v6WanLinkIp": null, 
+        "vlans": {
+          "vlan": [
+            {
+              "backdoorConnection": null, 
+              "inMaint": false, 
+              "isIpUnnumbered": false, 
+              "isPrivate": null, 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": [], 
+              "orchestrationStatus": null, 
+              "provStatus": null, 
+              "relationshipList": null, 
+              "resourceVersion": null, 
+              "speedUnits": null, 
+              "speedValue": null, 
+              "vlanDescription": null, 
+              "vlanIdInner": 101, 
+              "vlanIdOuter": null, 
+              "vlanInterface": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_101", 
+              "vpnKey": null
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/regionOne/tenants/tenant/0422ffb57ba042c0800a29dc85ca70f8/vservers/vserver/92272b67-d23f-42ca-87fa-7b06a9ec81f3/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_svc2_port_0/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_101"
+    }, 
+    {
+      "aaiObject": {
+        "adminStatus": null, 
+        "allowedAddressPairs": null, 
+        "inMaint": false, 
+        "interfaceDescription": null, 
+        "interfaceId": "f7a998c0-8939-4b07-bf4a-0862e9c325e1", 
+        "interfaceName": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_101", 
+        "interfaceRole": null, 
+        "isIpUnnumbered": false, 
+        "isPortMirrored": false, 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": null, 
+        "macaddr": "02:27:39:1d:94:33", 
+        "managementOption": null, 
+        "networkName": null, 
+        "priority": null, 
+        "provStatus": null, 
+        "relationshipList": null, 
+        "resourceVersion": null, 
+        "selflink": null, 
+        "sriovVfs": null, 
+        "v6WanLinkIp": null, 
+        "vlans": {
+          "vlan": [
+            {
+              "backdoorConnection": null, 
+              "inMaint": false, 
+              "isIpUnnumbered": false, 
+              "isPrivate": null, 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": [], 
+              "orchestrationStatus": null, 
+              "provStatus": null, 
+              "relationshipList": null, 
+              "resourceVersion": null, 
+              "speedUnits": null, 
+              "speedValue": null, 
+              "vlanDescription": null, 
+              "vlanIdInner": 101, 
+              "vlanIdOuter": null, 
+              "vlanInterface": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_101", 
+              "vpnKey": null
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/regionOne/tenants/tenant/0422ffb57ba042c0800a29dc85ca70f8/vservers/vserver/92272b67-d23f-42ca-87fa-7b06a9ec81f3/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_svc2_port_0/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_101"
+    }, 
+    {
+      "aaiObject": {
+        "adminStatus": null, 
+        "allowedAddressPairs": null, 
+        "inMaint": false, 
+        "interfaceDescription": null, 
+        "interfaceId": "621c1fea-60b8-44ee-aede-c01b8b1aaa70", 
+        "interfaceName": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_103", 
+        "interfaceRole": null, 
+        "isIpUnnumbered": false, 
+        "isPortMirrored": false, 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": null, 
+        "macaddr": "02:27:39:1d:94:33", 
+        "managementOption": null, 
+        "networkName": null, 
+        "priority": null, 
+        "provStatus": null, 
+        "relationshipList": null, 
+        "resourceVersion": null, 
+        "selflink": null, 
+        "sriovVfs": null, 
+        "v6WanLinkIp": null, 
+        "vlans": {
+          "vlan": [
+            {
+              "backdoorConnection": null, 
+              "inMaint": false, 
+              "isIpUnnumbered": false, 
+              "isPrivate": null, 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": [], 
+              "orchestrationStatus": null, 
+              "provStatus": null, 
+              "relationshipList": null, 
+              "resourceVersion": null, 
+              "speedUnits": null, 
+              "speedValue": null, 
+              "vlanDescription": null, 
+              "vlanIdInner": 103, 
+              "vlanIdOuter": null, 
+              "vlanInterface": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_103", 
+              "vpnKey": null
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/regionOne/tenants/tenant/0422ffb57ba042c0800a29dc85ca70f8/vservers/vserver/92272b67-d23f-42ca-87fa-7b06a9ec81f3/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_svc2_port_0/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_subint_untrusted_svc2_103"
+    }, 
+    {
+      "aaiObject": {
+        "adminStatus": null, 
+        "allowedAddressPairs": null, 
+        "inMaint": null, 
+        "interfaceDescription": null, 
+        "interfaceId": "07f5b14c-147a-4d14-8c94-a9e94dbc097b", 
+        "interfaceName": "tsbc0005v_tsbc0005vm002_mgmt_port_1", 
+        "interfaceRole": null, 
+        "isIpUnnumbered": null, 
+        "isPortMirrored": null, 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": null, 
+        "macaddr": null, 
+        "managementOption": null, 
+        "networkName": null, 
+        "priority": null, 
+        "provStatus": null, 
+        "relationshipList": null, 
+        "resourceVersion": null, 
+        "selflink": null, 
+        "sriovVfs": null, 
+        "v6WanLinkIp": null, 
+        "vlans": null
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/regionOne/tenants/tenant/0422ffb57ba042c0800a29dc85ca70f8/vservers/vserver/92272b67-d23f-42ca-87fa-7b06a9ec81f3/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_mgmt_port_1"
+    }, 
+    {
+      "aaiObject": {
+        "adminStatus": null, 
+        "allowedAddressPairs": null, 
+        "inMaint": null, 
+        "interfaceDescription": null, 
+        "interfaceId": "8d93f63e-e972-48c7-ad98-b2122da47315", 
+        "interfaceName": "tsbc0005v_tsbc0005vm002_mgmt_port_0", 
+        "interfaceRole": null, 
+        "isIpUnnumbered": null, 
+        "isPortMirrored": null, 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": null, 
+        "macaddr": null, 
+        "managementOption": null, 
+        "networkName": null, 
+        "priority": null, 
+        "provStatus": null, 
+        "relationshipList": null, 
+        "resourceVersion": null, 
+        "selflink": null, 
+        "sriovVfs": null, 
+        "v6WanLinkIp": null, 
+        "vlans": null
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/regionOne/tenants/tenant/0422ffb57ba042c0800a29dc85ca70f8/vservers/vserver/92272b67-d23f-42ca-87fa-7b06a9ec81f3/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_mgmt_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "adminStatus": null, 
+        "allowedAddressPairs": null, 
+        "inMaint": null, 
+        "interfaceDescription": null, 
+        "interfaceId": "0594a2f2-7ea4-42eb-abc2-48ea49677fca", 
+        "interfaceName": "tsbc0005v_tsbc0005vm002_svc1_port_0", 
+        "interfaceRole": null, 
+        "isIpUnnumbered": null, 
+        "isPortMirrored": null, 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "adminStatus": null, 
+              "allowedAddressPairs": null, 
+              "inMaint": false, 
+              "interfaceDescription": null, 
+              "interfaceId": "2bbfa345-33bb-495a-94b2-fb514ee1cffc", 
+              "interfaceName": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc1_81", 
+              "interfaceRole": null, 
+              "isIpUnnumbered": false, 
+              "isPortMirrored": false, 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": [], 
+              "linterfaces": null, 
+              "macaddr": "02:05:94:a2:f2:7e", 
+              "managementOption": null, 
+              "networkName": null, 
+              "priority": null, 
+              "provStatus": null, 
+              "relationshipList": null, 
+              "resourceVersion": null, 
+              "selflink": null, 
+              "sriovVfs": null, 
+              "v6WanLinkIp": null, 
+              "vlans": {
+                "vlan": [
+                  {
+                    "backdoorConnection": null, 
+                    "inMaint": false, 
+                    "isIpUnnumbered": false, 
+                    "isPrivate": null, 
+                    "l3InterfaceIpv4AddressList": [], 
+                    "l3InterfaceIpv6AddressList": [], 
+                    "orchestrationStatus": null, 
+                    "provStatus": null, 
+                    "relationshipList": null, 
+                    "resourceVersion": null, 
+                    "speedUnits": null, 
+                    "speedValue": null, 
+                    "vlanDescription": null, 
+                    "vlanIdInner": 81, 
+                    "vlanIdOuter": null, 
+                    "vlanInterface": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc1_81", 
+                    "vpnKey": null
+                  }
+                ]
+              }
+            }
+          ]
+        }, 
+        "macaddr": null, 
+        "managementOption": null, 
+        "networkName": null, 
+        "priority": null, 
+        "provStatus": null, 
+        "relationshipList": null, 
+        "resourceVersion": null, 
+        "selflink": null, 
+        "sriovVfs": null, 
+        "v6WanLinkIp": null, 
+        "vlans": null
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/regionOne/tenants/tenant/0422ffb57ba042c0800a29dc85ca70f8/vservers/vserver/92272b67-d23f-42ca-87fa-7b06a9ec81f3/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_svc1_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "adminStatus": null, 
+        "allowedAddressPairs": null, 
+        "inMaint": false, 
+        "interfaceDescription": null, 
+        "interfaceId": "2bbfa345-33bb-495a-94b2-fb514ee1cffc", 
+        "interfaceName": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc1_81", 
+        "interfaceRole": null, 
+        "isIpUnnumbered": false, 
+        "isPortMirrored": false, 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": null, 
+        "macaddr": "02:05:94:a2:f2:7e", 
+        "managementOption": null, 
+        "networkName": null, 
+        "priority": null, 
+        "provStatus": null, 
+        "relationshipList": null, 
+        "resourceVersion": null, 
+        "selflink": null, 
+        "sriovVfs": null, 
+        "v6WanLinkIp": null, 
+        "vlans": {
+          "vlan": [
+            {
+              "backdoorConnection": null, 
+              "inMaint": false, 
+              "isIpUnnumbered": false, 
+              "isPrivate": null, 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": [], 
+              "orchestrationStatus": null, 
+              "provStatus": null, 
+              "relationshipList": null, 
+              "resourceVersion": null, 
+              "speedUnits": null, 
+              "speedValue": null, 
+              "vlanDescription": null, 
+              "vlanIdInner": 81, 
+              "vlanIdOuter": null, 
+              "vlanInterface": "tsbc0005v_tsbc0005vm002_subint_untrusted_svc1_81", 
+              "vpnKey": null
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/regionOne/tenants/tenant/0422ffb57ba042c0800a29dc85ca70f8/vservers/vserver/92272b67-d23f-42ca-87fa-7b06a9ec81f3/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_svc1_port_0/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_subint_untrusted_svc1_81"
+    }, 
+    {
+      "aaiObject": {
+        "adminStatus": null, 
+        "allowedAddressPairs": null, 
+        "inMaint": null, 
+        "interfaceDescription": null, 
+        "interfaceId": "00bb8407-650e-48b5-b919-33b88d6f8fe3", 
+        "interfaceName": "tsbc0005v_tsbc0005vm002_int_ha_port_0", 
+        "interfaceRole": null, 
+        "isIpUnnumbered": null, 
+        "isPortMirrored": null, 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": null, 
+        "macaddr": null, 
+        "managementOption": null, 
+        "networkName": null, 
+        "priority": null, 
+        "provStatus": null, 
+        "relationshipList": null, 
+        "resourceVersion": null, 
+        "selflink": null, 
+        "sriovVfs": null, 
+        "v6WanLinkIp": null, 
+        "vlans": null
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/regionOne/tenants/tenant/0422ffb57ba042c0800a29dc85ca70f8/vservers/vserver/92272b67-d23f-42ca-87fa-7b06a9ec81f3/l-interfaces/l-interface/tsbc0005v_tsbc0005vm002_int_ha_port_0"
+    }
+  ]
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/ExpectedVServerFound.json b/adapters/mso-openstack-adapters/src/test/resources/ExpectedVServerFound.json
new file mode 100644
index 0000000..1f8e58a
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/ExpectedVServerFound.json
@@ -0,0 +1,167 @@
+{
+  "auditList": [
+    {
+      "aaiObject": {
+        "vserverId": "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz"
+      }, 
+      "aaiObjectType": "vserver", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adz1", 
+        "interfaceName": "test_port_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz/l-interfaces/l-interface/test_port_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adz2", 
+        "interfaceName": "test_port_2", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz/l-interfaces/l-interface/test_port_2"
+    }, 
+    {
+      "aaiObject": {
+        "vserverId": "3a4c2ca5-27b3-4ecc-98c5-06804867c4db"
+      }, 
+      "aaiObjectType": "vserver", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "dec8bdc7-5718-41dc-bfbb-561ff6eeb81c", 
+        "interfaceName": "ssc_1_trusted_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_trusted_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "1c56a24b-5f03-435a-850d-31cd4252de56", 
+        "interfaceName": "ssc_1_service1_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "interfaceId": "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb", 
+              "interfaceName": "service1_sub_interface_1", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }, 
+            {
+              "interfaceId": "b7019dd0-2ee9-4447-bdef-ac25676b205a", 
+              "interfaceName": "service1_sub_interface_2", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb", 
+        "interfaceName": "service1_sub_interface_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0/l-interfaces/l-interface/service1_sub_interface_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "b7019dd0-2ee9-4447-bdef-ac25676b205a", 
+        "interfaceName": "service1_sub_interface_2", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0/l-interfaces/l-interface/service1_sub_interface_2"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "12afcd28-929f-4d80-8a5a-0833bfd5e20b", 
+        "interfaceName": "ssc_1_mgmt_port_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_mgmt_port_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "80baec42-ffae-425f-ad8c-3f7b2c24bfff", 
+        "interfaceName": "ssc_1_mgmt_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_mgmt_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "13eddf95-4cf3-45f2-823a-2d890a6549b4", 
+        "interfaceName": "ssc_1_service2_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "interfaceId": "f711be16-2654-4a09-b89d-0511fda20e81", 
+              "interfaceName": "service2_sub_interface_1", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service2_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "f711be16-2654-4a09-b89d-0511fda20e81", 
+        "interfaceName": "service2_sub_interface_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service2_port_0/l-interfaces/l-interface/service2_sub_interface_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adb8", 
+        "interfaceName": "ssc_1_int_ha_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_int_ha_port_0"
+    }
+  ]
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/ExpectedVserversToAudit.json b/adapters/mso-openstack-adapters/src/test/resources/ExpectedVserversToAudit.json
new file mode 100644
index 0000000..96fe500
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/ExpectedVserversToAudit.json
@@ -0,0 +1,135 @@
+[
+  {
+    "linterfaces": {
+      "linterface": [
+        {
+          "interfaceId": "7ee06d9d-3d18-411c-9d3e-aec930f70413", 
+          "l3InterfaceIpv4AddressList": [], 
+          "l3InterfaceIpv6AddressList": []
+        }, 
+        {
+          "interfaceId": "27391d94-33af-474a-927d-d409249e8fd3", 
+          "l3InterfaceIpv4AddressList": [], 
+          "l3InterfaceIpv6AddressList": [], 
+          "linterfaces": {
+            "linterface": [
+              {
+                "inMaint": false, 
+                "interfaceId": "d54dfd09-75c6-4e04-b204-909455b8f933", 
+                "interfaceName": "tsbc0005v_tsbc0005vm002_subint_untrusted_service1_101", 
+                "isIpUnnumbered": false, 
+                "isPortMirrored": false, 
+                "l3InterfaceIpv4AddressList": [], 
+                "l3InterfaceIpv6AddressList": [], 
+                "macaddr": "02:27:39:1d:94:33", 
+                "vlans": {
+                  "vlan": [
+                    {
+                      "inMaint": false, 
+                      "isIpUnnumbered": false, 
+                      "l3InterfaceIpv4AddressList": [], 
+                      "l3InterfaceIpv6AddressList": [], 
+                      "vlanIdInner": 101, 
+                      "vlanInterface": "tsbc0005v_tsbc0005vm002_subint_untrusted_service1_101"
+                    }
+                  ]
+                }
+              }, 
+              {
+                "inMaint": false, 
+                "interfaceId": "f7a998c0-8939-4b07-bf4a-0862e9c325e1", 
+                "interfaceName": "tsbc0005v_tsbc0005vm002_subint_untrusted_service1_101", 
+                "isIpUnnumbered": false, 
+                "isPortMirrored": false, 
+                "l3InterfaceIpv4AddressList": [], 
+                "l3InterfaceIpv6AddressList": [], 
+                "macaddr": "02:27:39:1d:94:33", 
+                "vlans": {
+                  "vlan": [
+                    {
+                      "inMaint": false, 
+                      "isIpUnnumbered": false, 
+                      "l3InterfaceIpv4AddressList": [], 
+                      "l3InterfaceIpv6AddressList": [], 
+                      "vlanIdInner": 101, 
+                      "vlanInterface": "tsbc0005v_tsbc0005vm002_subint_untrusted_service1_101"
+                    }
+                  ]
+                }
+              }, 
+              {
+                "inMaint": false, 
+                "interfaceId": "621c1fea-60b8-44ee-aede-c01b8b1aaa70", 
+                "interfaceName": "tsbc0005v_tsbc0005vm002_subint_untrusted_service1_103", 
+                "isIpUnnumbered": false, 
+                "isPortMirrored": false, 
+                "l3InterfaceIpv4AddressList": [], 
+                "l3InterfaceIpv6AddressList": [], 
+                "macaddr": "02:27:39:1d:94:33", 
+                "vlans": {
+                  "vlan": [
+                    {
+                      "inMaint": false, 
+                      "isIpUnnumbered": false, 
+                      "l3InterfaceIpv4AddressList": [], 
+                      "l3InterfaceIpv6AddressList": [], 
+                      "vlanIdInner": 103, 
+                      "vlanInterface": "tsbc0005v_tsbc0005vm002_subint_untrusted_service1_103"
+                    }
+                  ]
+                }
+              }
+            ]
+          }
+        }, 
+        {
+          "interfaceId": "fdeedf37-c01e-4ab0-bdd6-8d5fc4913943", 
+          "l3InterfaceIpv4AddressList": [], 
+          "l3InterfaceIpv6AddressList": []
+        }, 
+        {
+          "interfaceId": "8d93f63e-e972-48c7-ad98-b2122da47315", 
+          "l3InterfaceIpv4AddressList": [], 
+          "l3InterfaceIpv6AddressList": []
+        }, 
+        {
+          "interfaceId": "0594a2f2-7ea4-42eb-abc2-48ea49677fca", 
+          "l3InterfaceIpv4AddressList": [], 
+          "l3InterfaceIpv6AddressList": [], 
+          "linterfaces": {
+            "linterface": [
+              {
+                "inMaint": false, 
+                "interfaceId": "2bbfa345-33bb-495a-94b2-fb514ee1cffc", 
+                "interfaceName": "tsbc0005v_tsbc0005vm002_subint_untrusted_service2_81", 
+                "isIpUnnumbered": false, 
+                "isPortMirrored": false, 
+                "l3InterfaceIpv4AddressList": [], 
+                "l3InterfaceIpv6AddressList": [], 
+                "macaddr": "02:05:94:a2:f2:7e", 
+                "vlans": {
+                  "vlan": [
+                    {
+                      "inMaint": false, 
+                      "isIpUnnumbered": false, 
+                      "l3InterfaceIpv4AddressList": [], 
+                      "l3InterfaceIpv6AddressList": [], 
+                      "vlanIdInner": 81, 
+                      "vlanInterface": "tsbc0005v_tsbc0005vm002_subint_untrusted_service2_81"
+                    }
+                  ]
+                }
+              }
+            ]
+          }
+        }, 
+        {
+          "interfaceId": "00bb8407-650e-48b5-b919-33b88d6f8fe3", 
+          "l3InterfaceIpv4AddressList": [], 
+          "l3InterfaceIpv6AddressList": []
+        }
+      ]
+    }, 
+    "vserverId": "92272b67-d23f-42ca-87fa-7b06a9ec81f3"
+  }
+]
diff --git a/adapters/mso-openstack-adapters/src/test/resources/Service1SubInterface0Resources.json b/adapters/mso-openstack-adapters/src/test/resources/Service1SubInterface0Resources.json
index 0f3f354..d4745be 100644
--- a/adapters/mso-openstack-adapters/src/test/resources/Service1SubInterface0Resources.json
+++ b/adapters/mso-openstack-adapters/src/test/resources/Service1SubInterface0Resources.json
@@ -4,23 +4,23 @@
     "resources": [
         {
             "parent_resource": "0",
-            "resource_name": "ssc_subint_mis_vmi_0",
+            "resource_name": "ssc_subint_svc1_vmi_0",
             "links": [
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_mis_vmi_0",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_svc1_vmi_0",
                     "rel": "self"
                 },
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
                     "rel": "stack"
                 }
             ],
-            "logical_resource_id": "ssc_subint_mis_vmi_0",
+            "logical_resource_id": "ssc_subint_svc1_vmi_0",
             "resource_status": "CREATE_COMPLETE",
             "updated_time": "2019-01-23T19:34:56Z",
             "required_by": [
-                "ssc_subint_mis_vmi_0_v6_ip_0",
-                "ssc_subint_mis_vmi_0_ip_0"
+                "ssc_subint_svc1_vmi_0_v6_ip_0",
+                "ssc_subint_svc1_vmi_0_ip_0"
             ],
             "resource_status_reason": "state changed",
             "physical_resource_id": "d54dfd09-75c6-4e04-b204-909455b8f933",
@@ -28,18 +28,18 @@
         },
         {
             "parent_resource": "0",
-            "resource_name": "ssc_subint_mis_vmi_0_v6_ip_0",
+            "resource_name": "ssc_subint_svc1_vmi_0_v6_ip_0",
             "links": [
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_mis_vmi_0_v6_ip_0",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_svc1_vmi_0_v6_ip_0",
                     "rel": "self"
                 },
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
                     "rel": "stack"
                 }
             ],
-            "logical_resource_id": "ssc_subint_mis_vmi_0_v6_ip_0",
+            "logical_resource_id": "ssc_subint_svc1_vmi_0_v6_ip_0",
             "resource_status": "CREATE_COMPLETE",
             "updated_time": "2019-01-23T19:34:56Z",
             "required_by": [],
@@ -49,18 +49,18 @@
         },
         {
             "parent_resource": "0",
-            "resource_name": "ssc_subint_mis_vmi_0_ip_0",
+            "resource_name": "ssc_subint_svc1_vmi_0_ip_0",
             "links": [
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_mis_vmi_0_ip_0",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_svc1_vmi_0_ip_0",
                     "rel": "self"
                 },
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
                     "rel": "stack"
                 }
             ],
-            "logical_resource_id": "ssc_subint_mis_vmi_0_ip_0",
+            "logical_resource_id": "ssc_subint_svc1_vmi_0_ip_0",
             "resource_status": "CREATE_COMPLETE",
             "updated_time": "2019-01-23T19:34:56Z",
             "required_by": [],
diff --git a/adapters/mso-openstack-adapters/src/test/resources/Service1SubInterface1Resources.json b/adapters/mso-openstack-adapters/src/test/resources/Service1SubInterface1Resources.json
index cfc4d7f..68d3e0f 100644
--- a/adapters/mso-openstack-adapters/src/test/resources/Service1SubInterface1Resources.json
+++ b/adapters/mso-openstack-adapters/src/test/resources/Service1SubInterface1Resources.json
@@ -4,23 +4,23 @@
     "resources": [
         {
             "parent_resource": "0",
-            "resource_name": "ssc_subint_mis_vmi_0",
+            "resource_name": "ssc_subint_svc1_vmi_0",
             "links": [
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_mis_vmi_0",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_svc1_vmi_0",
                     "rel": "self"
                 },
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
                     "rel": "stack"
                 }
             ],
-            "logical_resource_id": "ssc_subint_mis_vmi_0",
+            "logical_resource_id": "ssc_subint_svc1_vmi_0",
             "resource_status": "CREATE_COMPLETE",
             "updated_time": "2019-01-23T19:34:56Z",
             "required_by": [
-                "ssc_subint_mis_vmi_0_v6_ip_0",
-                "ssc_subint_mis_vmi_0_ip_0"
+                "ssc_subint_svc1_vmi_0_v6_ip_0",
+                "ssc_subint_svc1_vmi_0_ip_0"
             ],
             "resource_status_reason": "state changed",
             "physical_resource_id": "f7a998c0-8939-4b07-bf4a-0862e9c325e1",
@@ -28,18 +28,18 @@
         },
         {
             "parent_resource": "0",
-            "resource_name": "ssc_subint_mis_vmi_0_v6_ip_0",
+            "resource_name": "ssc_subint_svc1_vmi_0_v6_ip_0",
             "links": [
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_mis_vmi_0_v6_ip_0",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_svc1_vmi_0_v6_ip_0",
                     "rel": "self"
                 },
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
                     "rel": "stack"
                 }
             ],
-            "logical_resource_id": "ssc_subint_mis_vmi_0_v6_ip_0",
+            "logical_resource_id": "ssc_subint_svc1_vmi_0_v6_ip_0",
             "resource_status": "CREATE_COMPLETE",
             "updated_time": "2019-01-23T19:34:56Z",
             "required_by": [],
@@ -49,18 +49,18 @@
         },
         {
             "parent_resource": "0",
-            "resource_name": "ssc_subint_mis_vmi_0_ip_0",
+            "resource_name": "ssc_subint_svc1_vmi_0_ip_0",
             "links": [
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_mis_vmi_0_ip_0",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_svc1_vmi_0_ip_0",
                     "rel": "self"
                 },
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
                     "rel": "stack"
                 }
             ],
-            "logical_resource_id": "ssc_subint_mis_vmi_0_ip_0",
+            "logical_resource_id": "ssc_subint_svc1_vmi_0_ip_0",
             "resource_status": "CREATE_COMPLETE",
             "updated_time": "2019-01-23T19:34:56Z",
             "required_by": [],
diff --git a/adapters/mso-openstack-adapters/src/test/resources/Service1SubInterface2Resources.json b/adapters/mso-openstack-adapters/src/test/resources/Service1SubInterface2Resources.json
index e8aa80e..4f4d25d 100644
--- a/adapters/mso-openstack-adapters/src/test/resources/Service1SubInterface2Resources.json
+++ b/adapters/mso-openstack-adapters/src/test/resources/Service1SubInterface2Resources.json
@@ -4,23 +4,23 @@
     "resources": [
         {
             "parent_resource": "0",
-            "resource_name": "ssc_subint_mis_vmi_0",
+            "resource_name": "ssc_subint_svc1_vmi_0",
             "links": [
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_mis_vmi_0",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_svc1_vmi_0",
                     "rel": "self"
                 },
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
                     "rel": "stack"
                 }
             ],
-            "logical_resource_id": "ssc_subint_mis_vmi_0",
+            "logical_resource_id": "ssc_subint_svc1_vmi_0",
             "resource_status": "CREATE_COMPLETE",
             "updated_time": "2019-01-23T19:34:56Z",
             "required_by": [
-                "ssc_subint_mis_vmi_0_v6_ip_0",
-                "ssc_subint_mis_vmi_0_ip_0"
+                "ssc_subint_svc1_vmi_0_v6_ip_0",
+                "ssc_subint_svc1_vmi_0_ip_0"
             ],
             "resource_status_reason": "state changed",
             "physical_resource_id": "621c1fea-60b8-44ee-aede-c01b8b1aaa70",
@@ -28,18 +28,18 @@
         },
         {
             "parent_resource": "0",
-            "resource_name": "ssc_subint_mis_vmi_0_v6_ip_0",
+            "resource_name": "ssc_subint_svc1_vmi_0_v6_ip_0",
             "links": [
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_mis_vmi_0_v6_ip_0",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_svc1_vmi_0_v6_ip_0",
                     "rel": "self"
                 },
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
                     "rel": "stack"
                 }
             ],
-            "logical_resource_id": "ssc_subint_mis_vmi_0_v6_ip_0",
+            "logical_resource_id": "ssc_subint_svc1_vmi_0_v6_ip_0",
             "resource_status": "CREATE_COMPLETE",
             "updated_time": "2019-01-23T19:34:56Z",
             "required_by": [],
@@ -49,18 +49,18 @@
         },
         {
             "parent_resource": "0",
-            "resource_name": "ssc_subint_mis_vmi_0_ip_0",
+            "resource_name": "ssc_subint_svc1_vmi_0_ip_0",
             "links": [
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_mis_vmi_0_ip_0",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81/resources/ssc_subint_svc1_vmi_0_ip_0",
                     "rel": "self"
                 },
                 {
-                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_mis_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
+                    "href": "https://orchestration.com:8004/v1/ea2d13cc98b44d60a6f94bdcb2738f9e/stacks/tsbc0005vm002ssc001-ssc_1_subint_svc1_port_0_subinterfaces-hlzdigtimzst-0-upfi5nhurk7y/f711be16-2654-4a09-b89d-0511fda20e81",
                     "rel": "stack"
                 }
             ],
-            "logical_resource_id": "ssc_subint_mis_vmi_0_ip_0",
+            "logical_resource_id": "ssc_subint_svc1_vmi_0_ip_0",
             "resource_status": "CREATE_COMPLETE",
             "updated_time": "2019-01-23T19:34:56Z",
             "required_by": [],
diff --git a/adapters/mso-openstack-adapters/src/test/resources/VServer_Found_Network_Sec_Server_Not_Found.json b/adapters/mso-openstack-adapters/src/test/resources/VServer_Found_Network_Sec_Server_Not_Found.json
new file mode 100644
index 0000000..d13b4b7
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/VServer_Found_Network_Sec_Server_Not_Found.json
@@ -0,0 +1,167 @@
+{
+  "auditList": [
+    {
+      "aaiObject": {
+        "vserverId": "3a4c2ca5-27b3-4ecc-98c5-06804867c4db"
+      }, 
+      "aaiObjectType": "vserver", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "dec8bdc7-5718-41dc-bfbb-561ff6eeb81c", 
+        "interfaceName": "ssc_1_trusted_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_trusted_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "1c56a24b-5f03-435a-850d-31cd4252de56", 
+        "interfaceName": "ssc_1_service1_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "interfaceId": "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb", 
+              "interfaceName": "service1_sub_interface_1", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }, 
+            {
+              "interfaceId": "b7019dd0-2ee9-4447-bdef-ac25676b205a", 
+              "interfaceName": "service1_sub_interface_2", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb", 
+        "interfaceName": "service1_sub_interface_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0/l-interfaces/l-interface/service1_sub_interface_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "b7019dd0-2ee9-4447-bdef-ac25676b205a", 
+        "interfaceName": "service1_sub_interface_2", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0/l-interfaces/l-interface/service1_sub_interface_2"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "12afcd28-929f-4d80-8a5a-0833bfd5e20b", 
+        "interfaceName": "ssc_1_mgmt_port_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_mgmt_port_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "80baec42-ffae-425f-ad8c-3f7b2c24bfff", 
+        "interfaceName": "ssc_1_mgmt_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_mgmt_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "13eddf95-4cf3-45f2-823a-2d890a6549b4", 
+        "interfaceName": "ssc_1_service2_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "interfaceId": "f711be16-2654-4a09-b89d-0511fda20e81", 
+              "interfaceName": "service2_sub_interface_1", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service2_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "f711be16-2654-4a09-b89d-0511fda20e81", 
+        "interfaceName": "service2_sub_interface_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service2_port_0/l-interfaces/l-interface/service2_sub_interface_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adb8", 
+        "interfaceName": "ssc_1_int_ha_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_int_ha_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "vserverId": "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz"
+      }, 
+      "aaiObjectType": "vserver", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adz1", 
+        "interfaceName": "test_port_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz/l-interfaces/l-interface/test_port_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adz2", 
+        "interfaceName": "test_port_2", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz/l-interfaces/l-interface/test_port_2"
+    }
+  ]
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/VServer_Found_Sec_Server_Not_Found2.json b/adapters/mso-openstack-adapters/src/test/resources/VServer_Found_Sec_Server_Not_Found2.json
new file mode 100644
index 0000000..eb0fb7c
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/VServer_Found_Sec_Server_Not_Found2.json
@@ -0,0 +1,167 @@
+{
+  "auditList": [
+    {
+      "aaiObject": {
+        "vserverId": "3a4c2ca5-27b3-4ecc-98c5-06804867c4db"
+      }, 
+      "aaiObjectType": "vserver", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "dec8bdc7-5718-41dc-bfbb-561ff6eeb81c", 
+        "interfaceName": "ssc_1_trusted_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_trusted_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "1c56a24b-5f03-435a-850d-31cd4252de56", 
+        "interfaceName": "ssc_1_service1_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "interfaceId": "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb", 
+              "interfaceName": "service1_sub_interface_1", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }, 
+            {
+              "interfaceId": "b7019dd0-2ee9-4447-bdef-ac25676b205a", 
+              "interfaceName": "service1_sub_interface_2", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb", 
+        "interfaceName": "service1_sub_interface_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0/l-interfaces/l-interface/service1_sub_interface_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "b7019dd0-2ee9-4447-bdef-ac25676b205a", 
+        "interfaceName": "service1_sub_interface_2", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0/l-interfaces/l-interface/service1_sub_interface_2"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "12afcd28-929f-4d80-8a5a-0833bfd5e20b", 
+        "interfaceName": "ssc_1_mgmt_port_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_mgmt_port_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "80baec42-ffae-425f-ad8c-3f7b2c24bfff", 
+        "interfaceName": "ssc_1_mgmt_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_mgmt_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "13eddf95-4cf3-45f2-823a-2d890a6549b4", 
+        "interfaceName": "ssc_1_service2_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "interfaceId": "f711be16-2654-4a09-b89d-0511fda20e81", 
+              "interfaceName": "service2_sub_interface_1", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service2_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "f711be16-2654-4a09-b89d-0511fda20e81", 
+        "interfaceName": "service2_sub_interface_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service2_port_0/l-interfaces/l-interface/service2_sub_interface_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adb8", 
+        "interfaceName": "ssc_1_int_ha_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_int_ha_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "vserverId": "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz"
+      }, 
+      "aaiObjectType": "vserver", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adz1", 
+        "interfaceName": "test_port_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz/l-interfaces/l-interface/test_port_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adz2", 
+        "interfaceName": "test_port_2", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz/l-interfaces/l-interface/test_port_2"
+    }
+  ]
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/VServer_Found_network_Not_Found.json b/adapters/mso-openstack-adapters/src/test/resources/VServer_Found_network_Not_Found.json
new file mode 100644
index 0000000..0cb47dc
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/VServer_Found_network_Not_Found.json
@@ -0,0 +1,167 @@
+{
+  "auditList": [
+    {
+      "aaiObject": {
+        "vserverId": "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz"
+      }, 
+      "aaiObjectType": "vserver", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adz1", 
+        "interfaceName": "test_port_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz/l-interfaces/l-interface/test_port_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adz2", 
+        "interfaceName": "test_port_2", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz/l-interfaces/l-interface/test_port_2"
+    }, 
+    {
+      "aaiObject": {
+        "vserverId": "3a4c2ca5-27b3-4ecc-98c5-06804867c4db"
+      }, 
+      "aaiObjectType": "vserver", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "dec8bdc7-5718-41dc-bfbb-561ff6eeb81c", 
+        "interfaceName": "ssc_1_trusted_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_trusted_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "1c56a24b-5f03-435a-850d-31cd4252de56", 
+        "interfaceName": "ssc_1_service1_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "interfaceId": "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb", 
+              "interfaceName": "service1_sub_interface_1", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }, 
+            {
+              "interfaceId": "b7019dd0-2ee9-4447-bdef-ac25676b205a", 
+              "interfaceName": "service1_sub_interface_2", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb", 
+        "interfaceName": "service1_sub_interface_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0/l-interfaces/l-interface/service1_sub_interface_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "b7019dd0-2ee9-4447-bdef-ac25676b205a", 
+        "interfaceName": "service1_sub_interface_2", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0/l-interfaces/l-interface/service1_sub_interface_2"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "12afcd28-929f-4d80-8a5a-0833bfd5e20b", 
+        "interfaceName": "ssc_1_mgmt_port_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_mgmt_port_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "80baec42-ffae-425f-ad8c-3f7b2c24bfff", 
+        "interfaceName": "ssc_1_mgmt_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_mgmt_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "13eddf95-4cf3-45f2-823a-2d890a6549b4", 
+        "interfaceName": "ssc_1_service2_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "interfaceId": "f711be16-2654-4a09-b89d-0511fda20e81", 
+              "interfaceName": "service2_sub_interface_1", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service2_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "f711be16-2654-4a09-b89d-0511fda20e81", 
+        "interfaceName": "service2_sub_interface_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service2_port_0/l-interfaces/l-interface/service2_sub_interface_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adb8", 
+        "interfaceName": "ssc_1_int_ha_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_int_ha_port_0"
+    }
+  ]
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/Vserver2_Found_VServer1_Not_Found.json b/adapters/mso-openstack-adapters/src/test/resources/Vserver2_Found_VServer1_Not_Found.json
new file mode 100644
index 0000000..f3dc38d
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/Vserver2_Found_VServer1_Not_Found.json
@@ -0,0 +1,167 @@
+{
+  "auditList": [
+    {
+      "aaiObject": {
+        "vserverId": "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz"
+      }, 
+      "aaiObjectType": "vserver", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adz1", 
+        "interfaceName": "test_port_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz/l-interfaces/l-interface/test_port_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adz2", 
+        "interfaceName": "test_port_2", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": true, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz/l-interfaces/l-interface/test_port_2"
+    }, 
+    {
+      "aaiObject": {
+        "vserverId": "3a4c2ca5-27b3-4ecc-98c5-06804867c4db"
+      }, 
+      "aaiObjectType": "vserver", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "dec8bdc7-5718-41dc-bfbb-561ff6eeb81c", 
+        "interfaceName": "ssc_1_trusted_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_trusted_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "1c56a24b-5f03-435a-850d-31cd4252de56", 
+        "interfaceName": "ssc_1_service1_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "interfaceId": "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb", 
+              "interfaceName": "service1_sub_interface_1", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }, 
+            {
+              "interfaceId": "b7019dd0-2ee9-4447-bdef-ac25676b205a", 
+              "interfaceName": "service1_sub_interface_2", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb", 
+        "interfaceName": "service1_sub_interface_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0/l-interfaces/l-interface/service1_sub_interface_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "b7019dd0-2ee9-4447-bdef-ac25676b205a", 
+        "interfaceName": "service1_sub_interface_2", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0/l-interfaces/l-interface/service1_sub_interface_2"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "12afcd28-929f-4d80-8a5a-0833bfd5e20b", 
+        "interfaceName": "ssc_1_mgmt_port_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_mgmt_port_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "80baec42-ffae-425f-ad8c-3f7b2c24bfff", 
+        "interfaceName": "ssc_1_mgmt_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_mgmt_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "13eddf95-4cf3-45f2-823a-2d890a6549b4", 
+        "interfaceName": "ssc_1_service2_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "interfaceId": "f711be16-2654-4a09-b89d-0511fda20e81", 
+              "interfaceName": "service2_sub_interface_1", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service2_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "f711be16-2654-4a09-b89d-0511fda20e81", 
+        "interfaceName": "service2_sub_interface_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service2_port_0/l-interfaces/l-interface/service2_sub_interface_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adb8", 
+        "interfaceName": "ssc_1_int_ha_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_int_ha_port_0"
+    }
+  ]
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/Vservers_Not_Found.json b/adapters/mso-openstack-adapters/src/test/resources/Vservers_Not_Found.json
new file mode 100644
index 0000000..d9089dc
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/Vservers_Not_Found.json
@@ -0,0 +1,167 @@
+{
+  "auditList": [
+    {
+      "aaiObject": {
+        "vserverId": "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz"
+      }, 
+      "aaiObjectType": "vserver", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adz1", 
+        "interfaceName": "test_port_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz/l-interfaces/l-interface/test_port_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adz2", 
+        "interfaceName": "test_port_2", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4dz/l-interfaces/l-interface/test_port_2"
+    }, 
+    {
+      "aaiObject": {
+        "vserverId": "3a4c2ca5-27b3-4ecc-98c5-06804867c4db"
+      }, 
+      "aaiObjectType": "vserver", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "dec8bdc7-5718-41dc-bfbb-561ff6eeb81c", 
+        "interfaceName": "ssc_1_trusted_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_trusted_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "1c56a24b-5f03-435a-850d-31cd4252de56", 
+        "interfaceName": "ssc_1_service1_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "interfaceId": "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb", 
+              "interfaceName": "service1_sub_interface_1", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }, 
+            {
+              "interfaceId": "b7019dd0-2ee9-4447-bdef-ac25676b205a", 
+              "interfaceName": "service1_sub_interface_2", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb", 
+        "interfaceName": "service1_sub_interface_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0/l-interfaces/l-interface/service1_sub_interface_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "b7019dd0-2ee9-4447-bdef-ac25676b205a", 
+        "interfaceName": "service1_sub_interface_2", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service1_port_0/l-interfaces/l-interface/service1_sub_interface_2"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "12afcd28-929f-4d80-8a5a-0833bfd5e20b", 
+        "interfaceName": "ssc_1_mgmt_port_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_mgmt_port_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "80baec42-ffae-425f-ad8c-3f7b2c24bfff", 
+        "interfaceName": "ssc_1_mgmt_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_mgmt_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "13eddf95-4cf3-45f2-823a-2d890a6549b4", 
+        "interfaceName": "ssc_1_service2_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": [], 
+        "linterfaces": {
+          "linterface": [
+            {
+              "interfaceId": "f711be16-2654-4a09-b89d-0511fda20e81", 
+              "interfaceName": "service2_sub_interface_1", 
+              "l3InterfaceIpv4AddressList": [], 
+              "l3InterfaceIpv6AddressList": []
+            }
+          ]
+        }
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service2_port_0"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "f711be16-2654-4a09-b89d-0511fda20e81", 
+        "interfaceName": "service2_sub_interface_1", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "sub-l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_service2_port_0/l-interfaces/l-interface/service2_sub_interface_1"
+    }, 
+    {
+      "aaiObject": {
+        "interfaceId": "9cab2903-70f7-44fd-b681-491d6ae2adb8", 
+        "interfaceName": "ssc_1_int_ha_port_0", 
+        "l3InterfaceIpv4AddressList": [], 
+        "l3InterfaceIpv6AddressList": []
+      }, 
+      "aaiObjectType": "l-interface", 
+      "doesObjectExist": false, 
+      "resourceURI": "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/3a4c2ca5-27b3-4ecc-98c5-06804867c4db/l-interfaces/l-interface/ssc_1_int_ha_port_0"
+    }
+  ]
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/application-test.yaml b/adapters/mso-openstack-adapters/src/test/resources/application-test.yaml
index 8da26e9..694aeda 100644
--- a/adapters/mso-openstack-adapters/src/test/resources/application-test.yaml
+++ b/adapters/mso-openstack-adapters/src/test/resources/application-test.yaml
@@ -77,6 +77,10 @@
     core-pool-size: 50
     max-pool-size: 50
     queue-capacity: 500
+    workflow:
+  topics:
+    retryMultiplier: 60000
+    retrySequence: 1, 1, 2, 3, 5, 8, 13, 20
 spring:
   datasource:
     url: jdbc:mariadb://localhost:3307/catalogdb
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateVfModuleBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateVfModuleBB.bpmn
index c841da3..289ab6e 100644
--- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateVfModuleBB.bpmn
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateVfModuleBB.bpmn
@@ -10,7 +10,8 @@
     </bpmn:endEvent>
     <bpmn:serviceTask id="ActivateVfModule" name="&#10;SDNC&#10;Activate&#10;(vf module)&#10;" camunda:expression="${SDNCActivateTasks.activateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_07ybdik</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_0ee42yq</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_109oxx2</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0arwo1o</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1a495wm</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:serviceTask id="UpdateVfModuleActiveStatus" name="&#10;AAI&#10;Update&#10;(vf module)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActivateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
@@ -39,14 +40,6 @@
       <bpmn:incoming>SequenceFlow_0xndboi</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0ee42yq</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:boundaryEvent id="BoundaryEvent_1nb1hw4" attachedToRef="Audit_AAI_Inventory">
-      <bpmn:outgoing>SequenceFlow_1t99ceh</bpmn:outgoing>
-      <bpmn:errorEventDefinition />
-    </bpmn:boundaryEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_1t99ceh" sourceRef="BoundaryEvent_1nb1hw4" targetRef="Task_0swpw3v" />
-    <bpmn:serviceTask id="Task_0swpw3v" name="Throw Exception" camunda:expression="${ExceptionBuilder.buildAndThrowWorkflowException(execution, &#34;AuditAAIInventoryFailure&#34;, &#34;Error Auditing Cloud Inventory in A&#38;AI&#34;)}" camunda:resultVariable="ExceptionBuilder">
-      <bpmn:incoming>SequenceFlow_1t99ceh</bpmn:incoming>
-    </bpmn:serviceTask>
     <bpmn:exclusiveGateway id="ExclusiveGateway_1v8bmbu" default="SequenceFlow_07ybdik">
       <bpmn:incoming>SequenceFlow_1xqyur9</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_07ybdik</bpmn:outgoing>
@@ -56,12 +49,26 @@
     <bpmn:sequenceFlow id="SequenceFlow_0ghzwlo" sourceRef="ExclusiveGateway_1v8bmbu" targetRef="Setup_AAI_Inventory_Audit">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("auditInventoryNeeded") == true}]]></bpmn:conditionExpression>
     </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_0ee42yq" sourceRef="Audit_AAI_Inventory" targetRef="ActivateVfModule" />
+    <bpmn:sequenceFlow id="SequenceFlow_0ee42yq" sourceRef="Audit_AAI_Inventory" targetRef="ExclusiveGateway_1h8avxn" />
     <bpmn:serviceTask id="CheckAuditVariable" name="Check Audit Variable" camunda:expression="${AuditTasks.isAuditNeeded(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0ieafii</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1xqyur9</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_1xqyur9" sourceRef="CheckAuditVariable" targetRef="ExclusiveGateway_1v8bmbu" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1h8avxn" default="SequenceFlow_1bo83qk">
+      <bpmn:incoming>SequenceFlow_0ee42yq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_109oxx2</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1bo83qk</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_109oxx2" sourceRef="ExclusiveGateway_1h8avxn" targetRef="ActivateVfModule">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("auditIsSuccessful")== true }]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1bo83qk" name="If Audit Fails" sourceRef="ExclusiveGateway_1h8avxn" targetRef="Create_AAI_Inventory" />
+    <bpmn:sequenceFlow id="SequenceFlow_0arwo1o" sourceRef="Create_AAI_Inventory" targetRef="ActivateVfModule" />
+    <bpmn:serviceTask id="Create_AAI_Inventory" name="Create A&#38;AI Inventory" camunda:type="external" camunda:topic="InventoryCreate">
+      <bpmn:incoming>SequenceFlow_1bo83qk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0arwo1o</bpmn:outgoing>
+    </bpmn:serviceTask>
   </bpmn:process>
   <bpmn:error id="Error_0q258vt" errorCode="7000" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
@@ -86,7 +93,7 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0hawa84_di" bpmnElement="ActivateVfModule">
-        <dc:Bounds x="539" y="80" width="100" height="80" />
+        <dc:Bounds x="647" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_175e9ul_di" bpmnElement="UpdateVfModuleActiveStatus">
         <dc:Bounds x="952" y="80" width="100" height="80" />
@@ -102,10 +109,10 @@
         <dc:Bounds x="794" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1a495wm_di" bpmnElement="SequenceFlow_1a495wm">
-        <di:waypoint xsi:type="dc:Point" x="639" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="747" y="120" />
         <di:waypoint xsi:type="dc:Point" x="794" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="671.5" y="99" width="90" height="12" />
+          <dc:Bounds x="725.5" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1j4x1ej_di" bpmnElement="SequenceFlow_1j4x1ej">
@@ -117,36 +124,16 @@
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0xndboi_di" bpmnElement="SequenceFlow_0xndboi">
         <di:waypoint xsi:type="dc:Point" x="365" y="256" />
-        <di:waypoint xsi:type="dc:Point" x="452" y="256" />
-        <di:waypoint xsi:type="dc:Point" x="452" y="256" />
-        <di:waypoint xsi:type="dc:Point" x="539" y="256" />
+        <di:waypoint xsi:type="dc:Point" x="408" y="256" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="422" y="249.5" width="90" height="13" />
+          <dc:Bounds x="341.5" y="234.5" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0krf1ur_di" bpmnElement="Setup_AAI_Inventory_Audit">
         <dc:Bounds x="265" y="216" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_08rxjeb_di" bpmnElement="Audit_AAI_Inventory">
-        <dc:Bounds x="539" y="216" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="BoundaryEvent_0s7rszu_di" bpmnElement="BoundaryEvent_1nb1hw4">
-        <dc:Bounds x="575" y="278" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="548" y="317" width="90" height="13" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1t99ceh_di" bpmnElement="SequenceFlow_1t99ceh">
-        <di:waypoint xsi:type="dc:Point" x="593" y="314" />
-        <di:waypoint xsi:type="dc:Point" x="593" y="348" />
-        <di:waypoint xsi:type="dc:Point" x="593" y="348" />
-        <di:waypoint xsi:type="dc:Point" x="593" y="371" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="563" y="341.5" width="90" height="13" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ServiceTask_0eujimg_di" bpmnElement="Task_0swpw3v">
-        <dc:Bounds x="543" y="371" width="100" height="80" />
+        <dc:Bounds x="408" y="216" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_1v8bmbu_di" bpmnElement="ExclusiveGateway_1v8bmbu" isMarkerVisible="true">
         <dc:Bounds x="290" y="95" width="50" height="50" />
@@ -156,9 +143,9 @@
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_07ybdik_di" bpmnElement="SequenceFlow_07ybdik">
         <di:waypoint xsi:type="dc:Point" x="340" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="539" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="647" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="439.5" y="98.5" width="0" height="13" />
+          <dc:Bounds x="448.5" y="98.5" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0ghzwlo_di" bpmnElement="SequenceFlow_0ghzwlo">
@@ -169,12 +156,10 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0ee42yq_di" bpmnElement="SequenceFlow_0ee42yq">
-        <di:waypoint xsi:type="dc:Point" x="589" y="216" />
-        <di:waypoint xsi:type="dc:Point" x="589" y="193" />
-        <di:waypoint xsi:type="dc:Point" x="589" y="193" />
-        <di:waypoint xsi:type="dc:Point" x="589" y="160" />
+        <di:waypoint xsi:type="dc:Point" x="508" y="256" />
+        <di:waypoint xsi:type="dc:Point" x="566" y="256" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="604" y="186.5" width="0" height="13" />
+          <dc:Bounds x="492" y="234.5" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1eg5ryx_di" bpmnElement="CheckAuditVariable">
@@ -187,6 +172,38 @@
           <dc:Bounds x="275.5" y="98.5" width="0" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1h8avxn_di" bpmnElement="ExclusiveGateway_1h8avxn" isMarkerVisible="true">
+        <dc:Bounds x="566" y="231" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="591" y="284" width="0" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_109oxx2_di" bpmnElement="SequenceFlow_109oxx2">
+        <di:waypoint xsi:type="dc:Point" x="616" y="256" />
+        <di:waypoint xsi:type="dc:Point" x="670" y="256" />
+        <di:waypoint xsi:type="dc:Point" x="670" y="160" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="643" y="234.5" width="0" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bo83qk_di" bpmnElement="SequenceFlow_1bo83qk">
+        <di:waypoint xsi:type="dc:Point" x="591" y="281" />
+        <di:waypoint xsi:type="dc:Point" x="591" y="345" />
+        <di:waypoint xsi:type="dc:Point" x="656" y="345" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="560" y="358" width="61" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0arwo1o_di" bpmnElement="SequenceFlow_0arwo1o">
+        <di:waypoint xsi:type="dc:Point" x="706" y="305" />
+        <di:waypoint xsi:type="dc:Point" x="706" y="160" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="721" y="226" width="0" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_1eb09gr_di" bpmnElement="Create_AAI_Inventory">
+        <dc:Bounds x="656" y="305" width="100" height="80" />
+      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
diff --git a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/ActivateVfModuleBBTest.java b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/ActivateVfModuleBBTest.java
index 2dae117..deac50c 100644
--- a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/ActivateVfModuleBBTest.java
+++ b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/ActivateVfModuleBBTest.java
@@ -40,6 +40,7 @@
 	public void before() {
 		variables.put("vfModuleActivateTimerDuration", "PT2S");
 		variables.put("auditInventoryNeeded", "true");
+		variables.put("auditIsSuccessful", "true");	
 	}
 
 	@Test
diff --git a/common/src/main/java/org/onap/so/client/aai/AAIObjectType.java b/common/src/main/java/org/onap/so/client/aai/AAIObjectType.java
index 44b00e4..1807a0b 100644
--- a/common/src/main/java/org/onap/so/client/aai/AAIObjectType.java
+++ b/common/src/main/java/org/onap/so/client/aai/AAIObjectType.java
@@ -138,6 +138,7 @@
 	public static final AAIObjectType EXT_AAI_NETWORK = new AAIObjectType(AAINamespaceConstants.NETWORK, ExtAaiNetwork.class);
 	public static final AAIObjectType AGGREGATE_ROUTE = new AAIObjectType(AAINamespaceConstants.NETWORK, AggregateRoute.class);
 	public static final AAIObjectType L_INTERFACE = new AAIObjectType(AAIObjectType.VSERVER.uriTemplate(), LInterface.class);
+	public static final AAIObjectType SUB_L_INTERFACE = new AAIObjectType(AAIObjectType.L_INTERFACE.uriTemplate(), "/l-interfaces/l-interface/{sub-interface-name}", "sub-l-interface");
 	public static final AAIObjectType IMAGE = new AAIObjectType(AAIObjectType.CLOUD_REGION.uriTemplate(), Image.class);
 	public static final AAIObjectType FLAVOR = new AAIObjectType(AAIObjectType.CLOUD_REGION.uriTemplate(), Flavor.class);
 	public static final AAIObjectType UNKNOWN = new AAIObjectType("", "", "unknown");