Merge "Remove Swagger UI"
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / bpmn / infrastructure / workflow / tasks / WorkflowActionTest.java
index c27b5dd..5699c94 100644 (file)
@@ -25,8 +25,9 @@ import static org.hamcrest.CoreMatchers.equalTo;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
-import static org.mockito.Matchers.anyObject;
-import static org.mockito.Matchers.anyString;
+import static org.mockito.ArgumentMatchers.anyObject;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Matchers.isA;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.when;
 
@@ -36,7 +37,6 @@ import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Optional;
 import java.util.UUID;
@@ -49,17 +49,23 @@ import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
 import org.onap.aai.domain.yang.GenericVnf;
 import org.onap.aai.domain.yang.L3Network;
+import org.onap.aai.domain.yang.Relationship;
+import org.onap.aai.domain.yang.RelationshipList;
 import org.onap.aai.domain.yang.ServiceInstance;
 import org.onap.aai.domain.yang.VfModule;
 import org.onap.aai.domain.yang.VfModules;
 import org.onap.aai.domain.yang.VolumeGroup;
 import org.onap.so.bpmn.BaseTaskTest;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
+import org.onap.so.client.aai.entities.Relationships;
 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
 import org.onap.so.db.catalog.beans.CollectionResource;
 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
@@ -77,15 +83,19 @@ import org.onap.so.serviceinstancebeans.RequestDetails;
 import org.onap.so.serviceinstancebeans.RequestParameters;
 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
 import org.onap.so.serviceinstancebeans.SubscriberInfo;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 public class WorkflowActionTest extends BaseTaskTest {
-       @Autowired
-       protected WorkflowAction workflowAction;
        
+       
+       @Mock
+       protected Environment environment;
+       @InjectMocks
+       protected WorkflowAction workflowAction;
        private DelegateExecution execution;
+
        
        @Rule
        public ExpectedException thrown = ExpectedException.none();
@@ -113,27 +123,15 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("aLaCarte", true);
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/networks/123");
+               
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
+               List<OrchestrationFlow> orchFlows = createFlowList("AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
                northBoundRequest.setOrchestrationFlowList(orchFlows);
-               OrchestrationFlow orch1 = new OrchestrationFlow();
-               orch1.setFlowName("AssignNetwork1802BB");
-               orchFlows.add(orch1);
-               OrchestrationFlow orch2 = new OrchestrationFlow();
-               orch2.setFlowName("CreateNetworkBB");
-               orchFlows.add(orch2);
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("ActivateNetworkBB");
-               orchFlows.add(orch3);
 
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,true)).thenReturn(northBoundRequest);
-       
-               
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignNetwork1802BB");
-               assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
-               assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
+               assertEqualsBulkFlowName(ebbs,"AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
        }
        
        @Test
@@ -147,24 +145,15 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("aLaCarte", true);
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/networks/123");
+               
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
+               List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
                northBoundRequest.setOrchestrationFlowList(orchFlows);
-               OrchestrationFlow orch1 = new OrchestrationFlow();
-               orch1.setFlowName("DeactivateNetworkBB");
-               orchFlows.add(orch1);
-               OrchestrationFlow orch2 = new OrchestrationFlow();
-               orch2.setFlowName("DeleteNetworkBB");
-               orchFlows.add(orch2);
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("UnassignNetwork1802BB");
-               orchFlows.add(orch3);
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,true)).thenReturn(northBoundRequest);
+               
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
-               assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
-               assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignNetwork1802BB");
+               assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
        }
        
        @Test
@@ -179,20 +168,15 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/serviceInstances/123");
                
+               
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
-               northBoundRequest.setOrchestrationFlowList(orchFlows);          
-               OrchestrationFlow orch1 = new OrchestrationFlow();
-               orch1.setFlowName("AssignServiceInstanceBB");
-               orchFlows.add(orch1);
-               OrchestrationFlow orch2 = new OrchestrationFlow();
-               orch2.setFlowName("ActivateServiceInstanceBB");
-               orchFlows.add(orch2);
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,true)).thenReturn(northBoundRequest);
+               List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","ActivateServiceInstanceBB");
+               northBoundRequest.setOrchestrationFlowList(orchFlows);  
+               
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
-               assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"ActivateServiceInstanceBB");
+               assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
        }
        
        /**
@@ -210,24 +194,57 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/serviceInstances/123");
                
+               
+               NorthBoundRequest northBoundRequest = new NorthBoundRequest();
+               List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
+               northBoundRequest.setOrchestrationFlowList(orchFlows);
+               
+               VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
+               vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
+               HeatEnvironment volumeHeatEnv = new HeatEnvironment();
+               vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
+               org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
+               HeatTemplate volumeHeatTemplate = new HeatTemplate();
+               vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
+               vfModuleCustomization.setVfModule(vfModule);
+               
+               VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
+               vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
+               HeatEnvironment heatEnvironment = new HeatEnvironment();
+               vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
+               org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
+               HeatTemplate moduleHeatTemplate = new HeatTemplate();
+               vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
+               vfModuleCustomization2.setVfModule(vfModule2);
+               
+               VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
+               vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
+               
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
+               when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
+               when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
+               when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
+               workflowAction.selectExecutionList(execution);
+               List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
+               assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
+       }
+       
+       @Test
+       public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception{
+               String gAction = "assignInstance";
+               String resource = "Service";
+               execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
+               execution.setVariable("requestAction", gAction);
+               String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
+               execution.setVariable("bpmnRequest", bpmnRequest);
+               execution.setVariable("aLaCarte", false);
+               execution.setVariable("apiVersion", "7");
+               execution.setVariable("requestUri", "v6/serviceInstances/123");
+               
+               
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
+               List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
                northBoundRequest.setOrchestrationFlowList(orchFlows);
-               OrchestrationFlow orch1 = new OrchestrationFlow();
-               orch1.setFlowName("AssignServiceInstanceBB");
-               orchFlows.add(orch1);
-               OrchestrationFlow orch2 = new OrchestrationFlow();
-               orch2.setFlowName("AssignNetworkBB");
-               orchFlows.add(orch2);
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("AssignVnfBB");
-               orchFlows.add(orch3);
-               OrchestrationFlow orch4 = new OrchestrationFlow();
-               orch4.setFlowName("AssignVolumeGroupBB");
-               orchFlows.add(orch4);
-               OrchestrationFlow orch5 = new OrchestrationFlow();
-               orch5.setFlowName("AssignVfModuleBB");
-               orchFlows.add(orch5);
                
                VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
                vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
@@ -250,18 +267,14 @@ public class WorkflowActionTest extends BaseTaskTest {
                VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
                vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
                
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
+               when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"att-aic")).thenReturn(northBoundRequest);
                when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
                when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
                when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
-               assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"AssignVnfBB");
-               assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"AssignVolumeGroupBB");
-               assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
-               assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
-               assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
+               assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
        }
        
        @Test
@@ -275,34 +288,12 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("aLaCarte", false);
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/serviceInstances/si0");
+               
 
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
+               List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB"
+                               ,"ActivateVnfBB","ActivateServiceInstanceBB");
                northBoundRequest.setOrchestrationFlowList(orchFlows);  
-               OrchestrationFlow orch1 = new OrchestrationFlow();
-               orch1.setFlowName("CreateNetworkBB");
-               orchFlows.add(orch1);
-               OrchestrationFlow orch2 = new OrchestrationFlow();
-               orch2.setFlowName("ActivateNetworkBB");
-               orchFlows.add(orch2);
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("CreateVolumeGroupBB");
-               orchFlows.add(orch3);
-               OrchestrationFlow orch4 = new OrchestrationFlow();
-               orch4.setFlowName("ActivateVolumeGroupBB");
-               orchFlows.add(orch4);
-               OrchestrationFlow orch5 = new OrchestrationFlow();
-               orch5.setFlowName("CreateVfModuleBB");
-               orchFlows.add(orch5);
-               OrchestrationFlow orch6 = new OrchestrationFlow();
-               orch6.setFlowName("ActivateVfModuleBB");
-               orchFlows.add(orch6);
-               OrchestrationFlow orch7 = new OrchestrationFlow();
-               orch7.setFlowName("ActivateVnfBB");
-               orchFlows.add(orch7);
-               OrchestrationFlow orch8 = new OrchestrationFlow();
-               orch8.setFlowName("ActivateServiceInstanceBB");
-               orchFlows.add(orch8);
                
                ServiceInstance serviceInstanceAAI = new ServiceInstance();
                serviceInstanceAAI.setServiceInstanceId("si0");
@@ -325,24 +316,17 @@ public class WorkflowActionTest extends BaseTaskTest {
                
                doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
                doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               assertEquals("CreateVolumeGroupBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
+               assertEqualsBulkFlowName(ebbs,"CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
                assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
-               assertEquals("ActivateVolumeGroupBB", ebbs.get(1).getBuildingBlock().getBpmnFlowName());                
                assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
-               assertEquals("CreateVfModuleBB", ebbs.get(2).getBuildingBlock().getBpmnFlowName());
                assertEquals("vfModule0", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
-               assertEquals("CreateVfModuleBB", ebbs.get(3).getBuildingBlock().getBpmnFlowName());
                assertEquals("vfModule1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
-               assertEquals("ActivateVfModuleBB", ebbs.get(4).getBuildingBlock().getBpmnFlowName());
                assertEquals("vfModule0", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
-               assertEquals("ActivateVfModuleBB", ebbs.get(5).getBuildingBlock().getBpmnFlowName());   
                assertEquals("vfModule1", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
-               assertEquals("ActivateVnfBB", ebbs.get(6).getBuildingBlock().getBpmnFlowName());
                assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
-               assertEquals("ActivateServiceInstanceBB", ebbs.get(7).getBuildingBlock().getBpmnFlowName());            
                assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
 
        }
@@ -358,15 +342,13 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("aLaCarte", false);
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/serviceInstances/123");
-
+               
+               
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
-               northBoundRequest.setOrchestrationFlowList(orchFlows);
-               OrchestrationFlow orch = new OrchestrationFlow();
-               orch.setFlowName("DeactivateServiceInstanceBB");
-               orchFlows.add(orch);            
+               List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
+               northBoundRequest.setOrchestrationFlowList(orchFlows);  
                
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
                assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
@@ -384,69 +366,20 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/serviceInstances/123");
                
+               
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
                northBoundRequest.setIsToplevelflow(true);
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
+               List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
+                               ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
+                               ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
                northBoundRequest.setOrchestrationFlowList(orchFlows);                  
-               OrchestrationFlow orch1 = new OrchestrationFlow();
-               orch1.setFlowName("AssignServiceInstanceBB");
-               orchFlows.add(orch1);
-               OrchestrationFlow orch2 = new OrchestrationFlow();
-               orch2.setFlowName("CreateNetworkCollectionBB");
-               orchFlows.add(orch2);
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("AssignNetworkBB");
-               orchFlows.add(orch3);
-               OrchestrationFlow orch4 = new OrchestrationFlow();
-               orch4.setFlowName("AssignVnfBB");
-               orchFlows.add(orch4);
-               OrchestrationFlow orch5 = new OrchestrationFlow();
-               orch5.setFlowName("AssignVolumeGroupBB");
-               orchFlows.add(orch5);
-               OrchestrationFlow orch6 = new OrchestrationFlow();
-               orch6.setFlowName("AssignVfModuleBB");
-               orchFlows.add(orch6);
-               OrchestrationFlow orch7 = new OrchestrationFlow();
-               orch7.setFlowName("CreateNetworkBB");
-               orchFlows.add(orch7);
-               OrchestrationFlow orch8 = new OrchestrationFlow();
-               orch8.setFlowName("ActivateNetworkBB");
-               orchFlows.add(orch8);
-               OrchestrationFlow orch9 = new OrchestrationFlow();
-               orch9.setFlowName("CreateVolumeGroupBB");
-               orchFlows.add(orch9);
-               OrchestrationFlow orch10 = new OrchestrationFlow();
-               orch10.setFlowName("ActivateVolumeGroupBB");
-               orchFlows.add(orch10);
-               OrchestrationFlow orch11 = new OrchestrationFlow();
-               orch11.setFlowName("CreateVfModuleBB");
-               orchFlows.add(orch11);
-               OrchestrationFlow orch12 = new OrchestrationFlow();
-               orch12.setFlowName("ActivateVfModuleBB");
-               orchFlows.add(orch12);
-               OrchestrationFlow orch13 = new OrchestrationFlow();
-               orch13.setFlowName("AssignFabricConfigurationBB");
-               orchFlows.add(orch13);
-               OrchestrationFlow orch14 = new OrchestrationFlow();
-               orch14.setFlowName("ActivateFabricConfigurationBB");
-               orchFlows.add(orch14);
-               OrchestrationFlow orch15 = new OrchestrationFlow();
-               orch15.setFlowName("ActivateVnfBB");
-               orchFlows.add(orch15);
-               OrchestrationFlow orch16 = new OrchestrationFlow();
-               orch16.setFlowName("ActivateNetworkCollectionBB");
-               orchFlows.add(orch16);
-               OrchestrationFlow orch17 = new OrchestrationFlow();
-               orch17.setFlowName("ActivateServiceInstanceBB");
-               orchFlows.add(orch17);
                
                Service service = new Service();
                doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
-               assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"ActivateServiceInstanceBB");
+               assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
        }
        
        @Test
@@ -461,69 +394,23 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/serviceInstances/123");
                
+               
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
                northBoundRequest.setIsToplevelflow(true);
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
-               northBoundRequest.setOrchestrationFlowList(orchFlows);          
-               OrchestrationFlow orch1 = new OrchestrationFlow();
-               orch1.setFlowName("AssignServiceInstanceBB");
-               orchFlows.add(orch1);
-               OrchestrationFlow orch2 = new OrchestrationFlow();
-               orch2.setFlowName("CreateNetworkCollectionBB");
-               orchFlows.add(orch2);
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("AssignNetworkBB");
-               orchFlows.add(orch3);
-               OrchestrationFlow orch4 = new OrchestrationFlow();
-               orch4.setFlowName("AssignVnfBB");
-               orchFlows.add(orch4);
-               OrchestrationFlow orch5 = new OrchestrationFlow();
-               orch5.setFlowName("AssignVolumeGroupBB");
-               orchFlows.add(orch5);
-               OrchestrationFlow orch6 = new OrchestrationFlow();
-               orch6.setFlowName("AssignVfModuleBB");
-               orchFlows.add(orch6);
-               OrchestrationFlow orch7 = new OrchestrationFlow();
-               orch7.setFlowName("CreateNetworkBB");
-               orchFlows.add(orch7);
-               OrchestrationFlow orch8 = new OrchestrationFlow();
-               orch8.setFlowName("ActivateNetworkBB");
-               orchFlows.add(orch8);
-               OrchestrationFlow orch9 = new OrchestrationFlow();
-               orch9.setFlowName("CreateVolumeGroupBB");
-               orchFlows.add(orch9);
-               OrchestrationFlow orch10 = new OrchestrationFlow();
-               orch10.setFlowName("ActivateVolumeGroupBB");
-               orchFlows.add(orch10);
-               OrchestrationFlow orch11 = new OrchestrationFlow();
-               orch11.setFlowName("CreateVfModuleBB");
-               orchFlows.add(orch11);
-               OrchestrationFlow orch12 = new OrchestrationFlow();
-               orch12.setFlowName("ActivateVfModuleBB");
-               orchFlows.add(orch12);
-               OrchestrationFlow orch13 = new OrchestrationFlow();
-               orch13.setFlowName("ActivateVnfBB");
-               orchFlows.add(orch13);
-               OrchestrationFlow orch14 = new OrchestrationFlow();
-               orch14.setFlowName("ActivateNetworkCollectionBB");
-               orchFlows.add(orch14);
-               OrchestrationFlow orch15 = new OrchestrationFlow();
-               orch15.setFlowName("ActivateServiceInstanceBB");
-               orchFlows.add(orch15);
+               List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
+                               ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
+                               ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
+               northBoundRequest.setOrchestrationFlowList(orchFlows);                  
                
                Service service = new Service();
                NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
                networkCustomization.setModelCustomizationUUID("1234");
                service.getNetworkCustomizations().add(networkCustomization);
                doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
-               assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
-               assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
-               assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
-               assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"ActivateServiceInstanceBB");
+               assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateServiceInstanceBB");
        }
        
        @Test
@@ -538,55 +425,13 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/serviceInstances/123");
                
+               
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
                northBoundRequest.setIsToplevelflow(true);
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
-               northBoundRequest.setOrchestrationFlowList(orchFlows);          
-               OrchestrationFlow orch1 = new OrchestrationFlow();
-               orch1.setFlowName("AssignServiceInstanceBB");
-               orchFlows.add(orch1);
-               OrchestrationFlow orch2 = new OrchestrationFlow();
-               orch2.setFlowName("CreateNetworkCollectionBB");
-               orchFlows.add(orch2);
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("AssignNetworkBB");
-               orchFlows.add(orch3);
-               OrchestrationFlow orch4 = new OrchestrationFlow();
-               orch4.setFlowName("AssignVnfBB");
-               orchFlows.add(orch4);
-               OrchestrationFlow orch5 = new OrchestrationFlow();
-               orch5.setFlowName("AssignVolumeGroupBB");
-               orchFlows.add(orch5);
-               OrchestrationFlow orch6 = new OrchestrationFlow();
-               orch6.setFlowName("AssignVfModuleBB");
-               orchFlows.add(orch6);
-               OrchestrationFlow orch7 = new OrchestrationFlow();
-               orch7.setFlowName("CreateNetworkBB");
-               orchFlows.add(orch7);
-               OrchestrationFlow orch8 = new OrchestrationFlow();
-               orch8.setFlowName("ActivateNetworkBB");
-               orchFlows.add(orch8);
-               OrchestrationFlow orch9 = new OrchestrationFlow();
-               orch9.setFlowName("CreateVolumeGroupBB");
-               orchFlows.add(orch9);
-               OrchestrationFlow orch10 = new OrchestrationFlow();
-               orch10.setFlowName("ActivateVolumeGroupBB");
-               orchFlows.add(orch10);
-               OrchestrationFlow orch11 = new OrchestrationFlow();
-               orch11.setFlowName("CreateVfModuleBB");
-               orchFlows.add(orch11);
-               OrchestrationFlow orch12 = new OrchestrationFlow();
-               orch12.setFlowName("ActivateVfModuleBB");
-               orchFlows.add(orch12);
-               OrchestrationFlow orch13 = new OrchestrationFlow();
-               orch13.setFlowName("ActivateVnfBB");
-               orchFlows.add(orch13);
-               OrchestrationFlow orch14 = new OrchestrationFlow();
-               orch14.setFlowName("ActivateNetworkCollectionBB");
-               orchFlows.add(orch14);
-               OrchestrationFlow orch15 = new OrchestrationFlow();
-               orch15.setFlowName("ActivateServiceInstanceBB");
-               orchFlows.add(orch15);
+               List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
+                               ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
+                               ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
+               northBoundRequest.setOrchestrationFlowList(orchFlows);                  
                
                Service service = new Service();
                List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
@@ -619,40 +464,29 @@ public class WorkflowActionTest extends BaseTaskTest {
                service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
                doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
                doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
-               assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"CreateNetworkCollectionBB");
-               assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
+               assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB"
+                               ,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
                assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
-               assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
                assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
-               assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
                assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
                assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
                                ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds().getNetworkId() 
                                && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds().getNetworkId(), true);
-               assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
                assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
-               assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
                assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
-               assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
                assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
                assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
                                ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds().getNetworkId() 
                                && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds().getNetworkId(), true);
-               assertEquals(ebbs.get(8).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
                assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
-               assertEquals(ebbs.get(9).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
                assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
-               assertEquals(ebbs.get(10).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
                assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
                assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
                                ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds().getNetworkId() 
                                && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds().getNetworkId(), true);
-               assertEquals(ebbs.get(11).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkCollectionBB");
-               assertEquals(ebbs.get(12).getBuildingBlock().getBpmnFlowName(),"ActivateServiceInstanceBB");
        }
 
        @Test
@@ -667,54 +501,12 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/serviceInstances/123");
                
+               
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
-               northBoundRequest.setOrchestrationFlowList(orchFlows);          
-               OrchestrationFlow orch1 = new OrchestrationFlow();
-               orch1.setFlowName("AssignServiceInstanceBB");
-               orchFlows.add(orch1);
-               OrchestrationFlow orch2 = new OrchestrationFlow();
-               orch2.setFlowName("CreateNetworkCollectionBB");
-               orchFlows.add(orch2);
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("AssignNetworkBB");
-               orchFlows.add(orch3);
-               OrchestrationFlow orch4 = new OrchestrationFlow();
-               orch4.setFlowName("AssignVnfBB");
-               orchFlows.add(orch4);
-               OrchestrationFlow orch5 = new OrchestrationFlow();
-               orch5.setFlowName("AssignVolumeGroupBB");
-               orchFlows.add(orch5);
-               OrchestrationFlow orch6 = new OrchestrationFlow();
-               orch6.setFlowName("AssignVfModuleBB");
-               orchFlows.add(orch6);
-               OrchestrationFlow orch7 = new OrchestrationFlow();
-               orch7.setFlowName("CreateNetworkBB");
-               orchFlows.add(orch7);
-               OrchestrationFlow orch8 = new OrchestrationFlow();
-               orch8.setFlowName("ActivateNetworkBB");
-               orchFlows.add(orch8);
-               OrchestrationFlow orch9 = new OrchestrationFlow();
-               orch9.setFlowName("CreateVolumeGroupBB");
-               orchFlows.add(orch9);
-               OrchestrationFlow orch10 = new OrchestrationFlow();
-               orch10.setFlowName("ActivateVolumeGroupBB");
-               orchFlows.add(orch10);
-               OrchestrationFlow orch11 = new OrchestrationFlow();
-               orch11.setFlowName("CreateVfModuleBB");
-               orchFlows.add(orch11);
-               OrchestrationFlow orch12 = new OrchestrationFlow();
-               orch12.setFlowName("ActivateVfModuleBB");
-               orchFlows.add(orch12);
-               OrchestrationFlow orch13 = new OrchestrationFlow();
-               orch13.setFlowName("ActivateVnfBB");
-               orchFlows.add(orch13);
-               OrchestrationFlow orch14 = new OrchestrationFlow();
-               orch14.setFlowName("ActivateNetworkCollectionBB");
-               orchFlows.add(orch14);
-               OrchestrationFlow orch15 = new OrchestrationFlow();
-               orch15.setFlowName("ActivateServiceInstanceBB");
-               orchFlows.add(orch15);
+               List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
+                               ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
+                               ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
+               northBoundRequest.setOrchestrationFlowList(orchFlows);                  
                
                Service service = new Service();
                service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
@@ -740,45 +532,31 @@ public class WorkflowActionTest extends BaseTaskTest {
                VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
                vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
                
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
                when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
                when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
                when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               
-               assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
+               assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB","CreateVolumeGroupBB"
+                               ,"ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
                assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
-               assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"AssignVnfBB");
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
-               assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"AssignVolumeGroupBB");
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
-               assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
-               assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
-               assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
-               assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"CreateVolumeGroupBB");
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
-               assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"ActivateVolumeGroupBB");
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
-               assertEquals(ebbs.get(8).getBuildingBlock().getBpmnFlowName(),"CreateVfModuleBB");              
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
-               assertEquals(ebbs.get(9).getBuildingBlock().getBpmnFlowName(),"CreateVfModuleBB");
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
-               assertEquals(ebbs.get(10).getBuildingBlock().getBpmnFlowName(),"CreateVfModuleBB");
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
-               assertEquals(ebbs.get(11).getBuildingBlock().getBpmnFlowName(),"ActivateVfModuleBB");
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
-               assertEquals(ebbs.get(12).getBuildingBlock().getBpmnFlowName(),"ActivateVfModuleBB");
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
-               assertEquals(ebbs.get(13).getBuildingBlock().getBpmnFlowName(),"ActivateVfModuleBB");
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
-               assertEquals(ebbs.get(14).getBuildingBlock().getBpmnFlowName(),"ActivateVnfBB");
-               assertEquals(UUID.randomUUID().toString().length(),ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
-               assertEquals(ebbs.get(15).getBuildingBlock().getBpmnFlowName(),"ActivateServiceInstanceBB");
+               int randomUUIDLength = UUID.randomUUID().toString().length();
+               assertEquals(randomUUIDLength,ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
+               assertEquals(randomUUIDLength,ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
+               assertEquals(randomUUIDLength,ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
+               assertEquals(randomUUIDLength,ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
+               assertEquals(randomUUIDLength,ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
+               assertEquals(randomUUIDLength,ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
+               assertEquals(randomUUIDLength,ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
+               assertEquals(randomUUIDLength,ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
+               assertEquals(randomUUIDLength,ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
+               assertEquals(randomUUIDLength,ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
+               assertEquals(randomUUIDLength,ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
+               assertEquals(randomUUIDLength,ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
+               assertEquals(randomUUIDLength,ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
+               assertEquals(randomUUIDLength,ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
                assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
                assertEquals(true, execution.getVariable("homing"));
        }
@@ -794,52 +572,12 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("aLaCarte", false);
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/serviceInstances/123");
-
+               
+               
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
+               List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
+                               ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
                northBoundRequest.setOrchestrationFlowList(orchFlows);  
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("DeactivateVfModuleBB");
-               orchFlows.add(orch3);
-               OrchestrationFlow orch4 = new OrchestrationFlow();
-               orch4.setFlowName("DeleteVfModuleBB");
-               orchFlows.add(orch4);
-               OrchestrationFlow orch5 = new OrchestrationFlow();
-               orch5.setFlowName("DeactivateVolumeGroupBB");
-               orchFlows.add(orch5);
-               OrchestrationFlow orch6 = new OrchestrationFlow();
-               orch6.setFlowName("DeleteVolumeGroupBB");
-               orchFlows.add(orch6);
-               OrchestrationFlow orch7 = new OrchestrationFlow();
-               orch7.setFlowName("DeactivateVnfBB");
-               orchFlows.add(orch7);
-               OrchestrationFlow orch8 = new OrchestrationFlow();
-               orch8.setFlowName("DeactivateNetworkBB");
-               orchFlows.add(orch8);   
-               OrchestrationFlow orch9 = new OrchestrationFlow();
-               orch9.setFlowName("DeleteNetworkBB");
-               orchFlows.add(orch9);   
-               OrchestrationFlow orch10 = new OrchestrationFlow();
-               orch10.setFlowName("DeleteNetworkCollectionBB");
-               orchFlows.add(orch10);  
-               OrchestrationFlow orch11 = new OrchestrationFlow();
-               orch11.setFlowName("DeactivateServiceInstanceBB");
-               orchFlows.add(orch11);  
-               OrchestrationFlow orch12 = new OrchestrationFlow();
-               orch12.setFlowName("UnassignVfModuleBB");
-               orchFlows.add(orch12);  
-               OrchestrationFlow orch13 = new OrchestrationFlow();
-               orch13.setFlowName("UnassignVolumeGroupBB");
-               orchFlows.add(orch13);  
-               OrchestrationFlow orch14 = new OrchestrationFlow();
-               orch14.setFlowName("UnassignVnfBB");
-               orchFlows.add(orch14);  
-               OrchestrationFlow orch15 = new OrchestrationFlow();
-               orch15.setFlowName("UnassignNetworkBB");
-               orchFlows.add(orch15);  
-               OrchestrationFlow orch16 = new OrchestrationFlow();
-               orch16.setFlowName("UnassignServiceInstanceBB");
-               orchFlows.add(orch16);  
                
                ServiceInstance serviceInstanceAAI = new ServiceInstance();
                serviceInstanceAAI.setServiceInstanceId("aaisi123");
@@ -862,22 +600,11 @@ public class WorkflowActionTest extends BaseTaskTest {
                
                doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
                doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateVfModuleBB");
-               assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"DeactivateVfModuleBB");          
-               assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"DeleteVfModuleBB");
-               assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"DeleteVfModuleBB");
-               assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"DeactivateVolumeGroupBB");
-               assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"DeleteVolumeGroupBB");           
-               assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"DeactivateVnfBB");
-               assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
-               assertEquals(ebbs.get(8).getBuildingBlock().getBpmnFlowName(),"UnassignVfModuleBB");
-               assertEquals(ebbs.get(9).getBuildingBlock().getBpmnFlowName(),"UnassignVfModuleBB");
-               assertEquals(ebbs.get(10).getBuildingBlock().getBpmnFlowName(),"UnassignVolumeGroupBB");
-               assertEquals(ebbs.get(11).getBuildingBlock().getBpmnFlowName(),"UnassignVnfBB");
-               assertEquals(ebbs.get(12).getBuildingBlock().getBpmnFlowName(),"UnassignServiceInstanceBB");
+               assertEqualsBulkFlowName(ebbs,"DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB"
+                               ,"DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
        }
        
        @Test
@@ -892,24 +619,10 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/serviceInstances/123");
                
+               
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
+               List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
                northBoundRequest.setOrchestrationFlowList(orchFlows);          
-               OrchestrationFlow orch1 = new OrchestrationFlow();
-               orch1.setFlowName("UnassignVfModuleBB");
-               orchFlows.add(orch1);
-               OrchestrationFlow orch2 = new OrchestrationFlow();
-               orch2.setFlowName("UnassignVolumeGroupBB");
-               orchFlows.add(orch2);
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("UnassignVnfBB");
-               orchFlows.add(orch3);
-               OrchestrationFlow orch4 = new OrchestrationFlow();
-               orch4.setFlowName("UnassignNetworkBB");
-               orchFlows.add(orch4);
-               OrchestrationFlow orch5 = new OrchestrationFlow();
-               orch5.setFlowName("UnassignServiceInstanceBB");
-               orchFlows.add(orch5);
                
                ServiceInstance serviceInstanceAAI = new ServiceInstance();
                serviceInstanceAAI.setServiceInstanceId("aaisi123");
@@ -932,14 +645,10 @@ public class WorkflowActionTest extends BaseTaskTest {
                
                doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
                doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"UnassignVfModuleBB");
-               assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"UnassignVfModuleBB");            
-               assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignVolumeGroupBB");
-               assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"UnassignVnfBB");
-               assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"UnassignServiceInstanceBB");
+               assertEqualsBulkFlowName(ebbs,"UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
        }
        
        @Test
@@ -954,51 +663,11 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/serviceInstances/123");
                
+               
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
+               List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
+                               ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
                northBoundRequest.setOrchestrationFlowList(orchFlows);  
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("DeactivateVfModuleBB");
-               orchFlows.add(orch3);
-               OrchestrationFlow orch4 = new OrchestrationFlow();
-               orch4.setFlowName("DeleteVfModuleBB");
-               orchFlows.add(orch4);
-               OrchestrationFlow orch5 = new OrchestrationFlow();
-               orch5.setFlowName("DeactivateVolumeGroupBB");
-               orchFlows.add(orch5);
-               OrchestrationFlow orch6 = new OrchestrationFlow();
-               orch6.setFlowName("DeleteVolumeGroupBB");
-               orchFlows.add(orch6);
-               OrchestrationFlow orch7 = new OrchestrationFlow();
-               orch7.setFlowName("DeactivateVnfBB");
-               orchFlows.add(orch7);
-               OrchestrationFlow orch8 = new OrchestrationFlow();
-               orch8.setFlowName("DeactivateNetworkBB");
-               orchFlows.add(orch8);   
-               OrchestrationFlow orch9 = new OrchestrationFlow();
-               orch9.setFlowName("DeleteNetworkBB");
-               orchFlows.add(orch9);   
-               OrchestrationFlow orch10 = new OrchestrationFlow();
-               orch10.setFlowName("DeleteNetworkCollectionBB");
-               orchFlows.add(orch10);  
-               OrchestrationFlow orch11 = new OrchestrationFlow();
-               orch11.setFlowName("DeactivateServiceInstanceBB");
-               orchFlows.add(orch11);  
-               OrchestrationFlow orch12 = new OrchestrationFlow();
-               orch12.setFlowName("UnassignVfModuleBB");
-               orchFlows.add(orch12);  
-               OrchestrationFlow orch13 = new OrchestrationFlow();
-               orch13.setFlowName("UnassignVolumeGroupBB");
-               orchFlows.add(orch13);  
-               OrchestrationFlow orch14 = new OrchestrationFlow();
-               orch14.setFlowName("UnassignVnfBB");
-               orchFlows.add(orch14);  
-               OrchestrationFlow orch15 = new OrchestrationFlow();
-               orch15.setFlowName("UnassignNetworkBB");
-               orchFlows.add(orch15);  
-               OrchestrationFlow orch16 = new OrchestrationFlow();
-               orch16.setFlowName("UnassignServiceInstanceBB");
-               orchFlows.add(orch16);  
                
                ServiceInstance serviceInstanceAAI = new ServiceInstance();
                serviceInstanceAAI.setServiceInstanceId("aaisi123");
@@ -1016,20 +685,111 @@ public class WorkflowActionTest extends BaseTaskTest {
                
                doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
                doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
-               assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
-               assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
-               assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
-               assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
-               assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
-               assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkCollectionBB");
-               assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
-               assertEquals(ebbs.get(8).getBuildingBlock().getBpmnFlowName(),"UnassignServiceInstanceBB");
+               assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeleteNetworkCollectionBB"
+                               ,"DeactivateServiceInstanceBB","UnassignServiceInstanceBB");
        }
        
+    @Test
+    public void selectExecutionListVnfMacroRecreateTest() throws Exception{
+        String gAction = "recreateInstance";
+        String resource = "Vnf";
+        execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
+        execution.setVariable("requestAction", gAction);
+        String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
+        execution.setVariable("bpmnRequest", bpmnRequest);          
+        execution.setVariable("aLaCarte", false);
+        execution.setVariable("apiVersion", "7");
+        execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
+        execution.setVariable("serviceInstanceId", "123");
+        execution.setVariable("vnfId", "1234");
+        
+        NorthBoundRequest northBoundRequest = new NorthBoundRequest();
+        List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB"
+                ,"ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB","ActivateVnfBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
+        northBoundRequest.setOrchestrationFlowList(orchFlows);  
+        
+        ServiceInstance serviceInstanceAAI = new ServiceInstance();
+        serviceInstanceAAI.setServiceInstanceId("123");
+        org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
+        org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
+        vnf.setVnfId("1234");
+        
+        org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
+        vfModule.setVfModuleId("vfModule1");
+        vnf.getVfModules().add(vfModule);
+        org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
+        vfModule2.setVfModuleId("vfModule2");
+        vnf.getVfModules().add(vfModule2);
+        
+        serviceInstanceMSO.getVnfs().add(vnf);
+        
+        doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
+        doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
+        when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"cloud-owner")).thenReturn(northBoundRequest);
+        workflowAction.selectExecutionList(execution);
+        List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
+        assertEqualsBulkFlowName(ebbs,"AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB"
+                ,"CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
+    }
+    
+    @Test
+    public void selectExecutionListVnfMacroReplaceTest() throws Exception{
+        String gAction = "replaceInstance";
+        String resource = "Vnf";
+        execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
+        execution.setVariable("requestAction", gAction);
+        String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
+        execution.setVariable("bpmnRequest", bpmnRequest);          
+        execution.setVariable("aLaCarte", false);
+        execution.setVariable("apiVersion", "7");
+        execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
+        execution.setVariable("serviceInstanceId", "123");
+        execution.setVariable("vnfId", "1234");
+        
+        NorthBoundRequest northBoundRequest = new NorthBoundRequest();
+        List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateFabricConfigurationBB","UnassignFabricConfigurationBB","DeactivateVfModuleBB","DeleteVfModuleBB"
+                ,"DeactivateVnfBB","ChangeModelVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB","ChangeModelVnfBB","ActivateVnfBB","ChangeModelServiceInstanceBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
+        northBoundRequest.setOrchestrationFlowList(orchFlows);  
+
+        ServiceInstance serviceInstanceAAI = new ServiceInstance();
+        serviceInstanceAAI.setServiceInstanceId("123");
+        org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
+        org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
+        vnf.setVnfId("1234");
+        org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
+        vfModule.setVfModuleId("vfModule1");
+        vnf.getVfModules().add(vfModule);
+        org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
+        vfModule2.setVfModuleId("vfModule2");
+        vnf.getVfModules().add(vfModule2);
+        serviceInstanceMSO.getVnfs().add(vnf);
+        VfModule vfModuleAAI = new VfModule();
+        vfModuleAAI.setVfModuleId("vfModule2");
+        RelationshipList relationshipList = new RelationshipList();
+        Relationship relationship = new Relationship();
+        relationshipList.getRelationship().add(relationship);
+        vfModuleAAI.setRelationshipList(relationshipList);
+        Relationships relationships = new Relationships("abc");
+        Configuration config = new Configuration();
+        config.setConfigurationId("configId");
+        Optional<Configuration> configOp = Optional.of(config);
+        Optional<Relationships> relationshipsOp = Optional.of(relationships);
+        
+        doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
+        doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
+        doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
+        doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
+        doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
+        when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"cloud-owner")).thenReturn(northBoundRequest);
+        workflowAction.selectExecutionList(execution);
+        List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
+        assertEqualsBulkFlowName(ebbs,"AAICheckVnfInMaintBB","AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB"
+                ,"ChangeModelVfModuleBB" ,"ChangeModelVfModuleBB" , "CreateVfModuleBB","CreateVfModuleBB", "ActivateVfModuleBB","ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB","ChangeModelServiceInstanceBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
+    }
+       
        @Ignore
        @Test
        public void selectExecutionListNetworkCollectionMacroCreate() throws Exception{
@@ -1042,25 +802,11 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("aLaCarte", false);
                execution.setVariable("apiVersion", "7");
                execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
-
+               
+               
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
+               List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
                northBoundRequest.setOrchestrationFlowList(orchFlows);
-               OrchestrationFlow orch1 = new OrchestrationFlow();
-               orch1.setFlowName("CreateNetworkCollectionBB");
-               orchFlows.add(orch1);
-               OrchestrationFlow orch2 = new OrchestrationFlow();
-               orch2.setFlowName("AssignNetworkBB");
-               orchFlows.add(orch2);
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("CreateNetworkBB");
-               orchFlows.add(orch3);
-               OrchestrationFlow orch4 = new OrchestrationFlow();
-               orch4.setFlowName("ActivateNetworkBB");
-               orchFlows.add(orch4);
-               OrchestrationFlow orch5 = new OrchestrationFlow();
-               orch5.setFlowName("ActivateNetworkCollectionBB");
-               orchFlows.add(orch5);
                
                Service service = new Service();
                CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
@@ -1069,18 +815,11 @@ public class WorkflowActionTest extends BaseTaskTest {
                collectionResourceCustomization.setCollectionResource(collectionResource);
                service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
                
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"CreateNetworkCollectionBB");
-               assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
-               assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
-               assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
-               assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
-               assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
-               assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
-               assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkCollectionBB");
+               assertEqualsBulkFlowName(ebbs,"CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
        }
        
        @Ignore
@@ -1097,23 +836,8 @@ public class WorkflowActionTest extends BaseTaskTest {
                execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
                
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
+               List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB","DeleteNetworkCollectionBB");
                northBoundRequest.setOrchestrationFlowList(orchFlows);          
-               OrchestrationFlow orch1 = new OrchestrationFlow();
-               orch1.setFlowName("DeactivateNetworkBB");
-               orchFlows.add(orch1);
-               OrchestrationFlow orch2 = new OrchestrationFlow();
-               orch2.setFlowName("DeleteNetworkBB");
-               orchFlows.add(orch2);
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("UnassignNetworkBB");
-               orchFlows.add(orch3);
-               OrchestrationFlow orch4 = new OrchestrationFlow();
-               orch4.setFlowName("DeactivateNetworkCollectionBB");
-               orchFlows.add(orch4);
-               OrchestrationFlow orch5 = new OrchestrationFlow();
-               orch5.setFlowName("DeleteNetworkCollectionBB");
-               orchFlows.add(orch5);
                
                Service service = new Service();
                CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
@@ -1122,18 +846,12 @@ public class WorkflowActionTest extends BaseTaskTest {
                collectionResourceCustomization.setCollectionResource(collectionResource);
                service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
                
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
                workflowAction.selectExecutionList(execution);
                List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
-               assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
-               assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
-               assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
-               assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
-               assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
-               assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
-               assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkCollectionBB");
-               assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkCollectionBB");
+               assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB"
+                               ,"DeleteNetworkCollectionBB");
        }
        
        /**
@@ -1197,12 +915,7 @@ public class WorkflowActionTest extends BaseTaskTest {
                executeFlows.add(ebb6);
 
                List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"createInstance");
-               assertEquals(sorted.get(0).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
-               assertEquals(sorted.get(1).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
-               assertEquals(sorted.get(2).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
-               assertEquals(sorted.get(3).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
-               assertEquals(sorted.get(4).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
-               assertEquals(sorted.get(5).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
+               assertEqualsBulkFlowName(sorted,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB");
        }
        
        @Test
@@ -1246,57 +959,18 @@ public class WorkflowActionTest extends BaseTaskTest {
                executeFlows.add(ebb6);
                
                List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"deleteInstance");
-               assertEquals(sorted.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
-               assertEquals(sorted.get(1).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
-               assertEquals(sorted.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
-               assertEquals(sorted.get(3).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
-               assertEquals(sorted.get(4).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
-               assertEquals(sorted.get(5).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
+               assertEqualsBulkFlowName(sorted,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB");
        }
        @Test
        public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
                NorthBoundRequest northBoundRequest = new NorthBoundRequest();
-               List<OrchestrationFlow> orchFlows = new LinkedList<>();
-               OrchestrationFlow orch1 = new OrchestrationFlow();
-               orch1.setFlowName("AAICheckVnfInMaintBB");
-               orchFlows.add(orch1);
-               OrchestrationFlow orch2 = new OrchestrationFlow();
-               orch2.setFlowName("AAISetVnfInMaintBB");
-               orchFlows.add(orch2);
-               OrchestrationFlow orch3 = new OrchestrationFlow();
-               orch3.setFlowName("VNF-Macro-Replace");
-               orchFlows.add(orch3);
-               OrchestrationFlow orch4 = new OrchestrationFlow();
-               orch4.setFlowName("SDNOVnfHealthCheckBB");
-               orchFlows.add(orch4);
-               OrchestrationFlow orch5 = new OrchestrationFlow();
-               orch5.setFlowName("AAIUnsetVnfInMaintBB");
-               orchFlows.add(orch5);
+               List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","VNF-Macro-Replace","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
                northBoundRequest.setOrchestrationFlowList(orchFlows);
+               List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB");
                
-               List<OrchestrationFlow> macroFlows = new LinkedList<>();
-               OrchestrationFlow o1 = new OrchestrationFlow();
-               o1.setFlowName("DeactivateVfModuleBB");
-               macroFlows.add(o1);
-               OrchestrationFlow o2 = new OrchestrationFlow();
-               o2.setFlowName("DeleteVfModuleBB");
-               macroFlows.add(o2);
-               OrchestrationFlow o3 = new OrchestrationFlow();
-               o3.setFlowName("DeactivateVnfBB");
-               macroFlows.add(o3);
-               OrchestrationFlow o4 = new OrchestrationFlow();
-               o4.setFlowName("CreateVfModuleBB");
-               macroFlows.add(o4);
-               OrchestrationFlow o5 = new OrchestrationFlow();
-               o5.setFlowName("ActivateVfModuleBB");
-               macroFlows.add(o5);
-               OrchestrationFlow o6 = new OrchestrationFlow();
-               o6.setFlowName("ActivateVnfBB");
-               macroFlows.add(o6);
-               
-               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope("replaceInstance","Vnf",false)).thenReturn(northBoundRequest);
+               when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance","Vnf",false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
                when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
-               List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance", WorkflowType.VNF, false);
+               List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance", WorkflowType.VNF, false,"my-custom-cloud-owner");
                assertEquals(flows.get(0).getFlowName(),"AAICheckVnfInMaintBB");
                assertEquals(flows.get(1).getFlowName(),"AAISetVnfInMaintBB");
                assertEquals(flows.get(2).getFlowName(),"DeactivateVfModuleBB");
@@ -1473,6 +1147,7 @@ public class WorkflowActionTest extends BaseTaskTest {
                }
        }
        
+       @Ignore
        @Test
        public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException{
                execution.setVariable("testProcessKey", "testProcessKeyValue");
@@ -1524,4 +1199,20 @@ public class WorkflowActionTest extends BaseTaskTest {
                assertEquals("222",result.get(1).getResourceId());
                assertEquals("111",result.get(2).getResourceId());
        }
+       
+       private List<OrchestrationFlow> createFlowList (String... flowNames){
+               List<OrchestrationFlow> result = new ArrayList<>();
+               for(String flowName : flowNames){
+                       OrchestrationFlow orchFlow = new OrchestrationFlow();
+                       orchFlow.setFlowName(flowName);
+                       result.add(orchFlow);
+               }
+               return result;
+       }
+       
+       private void assertEqualsBulkFlowName (List<ExecuteBuildingBlock> ebbs, String... flowNames){
+               for(int i = 0; i<ebbs.size(); i++){
+                       assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(),flowNames[i]);
+               }
+       }
 }