Replaced all tabs with spaces in java and pom.xml
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / bpmn / infrastructure / workflow / tasks / OrchestrationStatusValidatorTest.java
index 60d456e..b371e3a 100644 (file)
@@ -26,11 +26,9 @@ import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.when;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
-
 import org.camunda.bpm.engine.delegate.BpmnError;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -54,384 +52,434 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 @Ignore
 public class OrchestrationStatusValidatorTest extends BaseTaskTest {
-       @InjectMocks
-       protected OrchestrationStatusValidator orchestrationStatusValidator = new OrchestrationStatusValidator();
-       
-
-       
-       @Test
-       public void test_validateOrchestrationStatus() throws Exception {
-               String flowToBeCalled = "AssignServiceInstanceBB";
-               setServiceInstance().setOrchestrationStatus(OrchestrationStatus.PRECREATED);
-               execution.setVariable("aLaCarte", true);
-               execution.setVariable("flowToBeCalled", flowToBeCalled);
-               
-               BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-               buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
-               buildingBlockDetail.setId(1);
-               buildingBlockDetail.setResourceType(ResourceType.SERVICE);
-               buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
-               
-               doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
-               
-               OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
-               orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.CONTINUE);
-               orchestrationStatusStateTransitionDirective.setId(1);
-               orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
-               orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
-               orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
-               
-               doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED, OrchestrationAction.ASSIGN);
-               
-               orchestrationStatusValidator.validateOrchestrationStatus(execution);
-               
-               assertEquals(OrchestrationStatusValidationDirective.CONTINUE, execution.getVariable("orchestrationStatusValidationResult"));
-       }
-       
-       @Test
-       public void test_validateOrchestrationStatusConfiguration() throws Exception {
-               lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId");
-               String flowToBeCalled = "UnassignFabricConfigurationBB";  
-               ServiceInstance si = setServiceInstance();
-               List<Configuration> configurations = new ArrayList<>();
-               Configuration config = new Configuration();
-               
-               si.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
-               config.setConfigurationId("configurationId");
-               config.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
-               configurations.add(config);
-               si.setConfigurations(configurations);
-               
-               execution.setVariable("flowToBeCalled", flowToBeCalled);
-               execution.setVariable("aLaCarte", true);
-               
-               BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-               buildingBlockDetail.setBuildingBlockName("UnassignFabricConfigurationBB");
-               buildingBlockDetail.setId(1);
-               buildingBlockDetail.setResourceType(ResourceType.CONFIGURATION);
-               buildingBlockDetail.setTargetAction(OrchestrationAction.UNASSIGN);
-               
-               doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
-               
-               OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
-               orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
-               orchestrationStatusStateTransitionDirective.setId(1);
-               orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
-               orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.CONFIGURATION);
-               orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.UNASSIGN);
-               
-               doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.CONFIGURATION, OrchestrationStatus.PRECREATED, OrchestrationAction.UNASSIGN);
-               
-               orchestrationStatusValidator.validateOrchestrationStatus(execution);
-               
-               assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS, execution.getVariable("orchestrationStatusValidationResult"));
-       }
-       
-       @Test
-       public void test_validateOrchestrationStatus_buildingBlockDetailNotFound() throws Exception {
-               expectedException.expect(BpmnError.class);
-               
-               String flowToBeCalled = "AssignServiceInstanceBB";
-               
-               execution.setVariable("flowToBeCalled", flowToBeCalled);
-               
-               doReturn(null).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
-               
-               orchestrationStatusValidator.validateOrchestrationStatus(execution);
-       }
-       
-       @Test
-       public void test_validateOrchestrationStatus_orchestrationValidationFail() throws Exception {
-               expectedException.expect(BpmnError.class);
-               
-               String flowToBeCalled = "AssignServiceInstanceBB";
-               
-               execution.setVariable("flowToBeCalled", flowToBeCalled);
-               
-               BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-               buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
-               buildingBlockDetail.setId(1);
-               buildingBlockDetail.setResourceType(ResourceType.SERVICE);
-               buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
-               
-               doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
-               
-               OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
-               orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.FAIL);
-               orchestrationStatusStateTransitionDirective.setId(1);
-               orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
-               orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
-               orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
-               
-               doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED, OrchestrationAction.ASSIGN);
-               
-               orchestrationStatusValidator.validateOrchestrationStatus(execution);
-       }
-       
-       @Test
-       public void test_validateOrchestrationStatus_orchestrationValidationNotFound() throws Exception {
-               expectedException.expect(BpmnError.class);
-               
-               String flowToBeCalled = "AssignServiceInstanceBB";
-               
-               execution.setVariable("flowToBeCalled", flowToBeCalled);
-               
-               BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-               buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
-               buildingBlockDetail.setId(1);
-               buildingBlockDetail.setResourceType(ResourceType.SERVICE);
-               buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
-               
-               doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
-               
-               OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
-               orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.FAIL);
-               orchestrationStatusStateTransitionDirective.setId(1);
-               orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
-               orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
-               orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
-               
-               doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.NETWORK, OrchestrationStatus.PRECREATED, OrchestrationAction.ASSIGN);
-               
-               orchestrationStatusValidator.validateOrchestrationStatus(execution);
-       }
-       
-       @Test
-       public void test_validateOrchestrationStatus_unassignNotFound() throws Exception{
-               String flowToBeCalled = "UnassignServiceInstanceBB";
-               
-               execution.setVariable("flowToBeCalled", flowToBeCalled);
-               execution.setVariable("aLaCarte", true);
-               
-               BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-               buildingBlockDetail.setBuildingBlockName("UnassignServiceInstanceBB");
-               buildingBlockDetail.setId(1);
-               buildingBlockDetail.setResourceType(ResourceType.SERVICE);
-               buildingBlockDetail.setTargetAction(OrchestrationAction.UNASSIGN);
-               
-               doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
-               
-               lookupKeyMap = new HashMap<ResourceKey, String>();
-               
-               orchestrationStatusValidator.validateOrchestrationStatus(execution);
-               
-               assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,execution.getVariable("orchestrationStatusValidationResult"));
-       }
-       
-       @Test
-       public void test_validateOrchestrationStatusSecondStageOfMultiStageEnabledVfModule() throws Exception {
-               String flowToBeCalled = "CreateVfModuleBB";
-                               
-               execution.setVariable("orchestrationStatusValidationResult", OrchestrationStatusValidationDirective.SILENT_SUCCESS);
-               execution.setVariable("aLaCarte", true);
-               execution.setVariable("flowToBeCalled", flowToBeCalled);
-               
-               GenericVnf genericVnf = buildGenericVnf();
-               ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
-               modelInfoGenericVnf.setMultiStageDesign("true");
-               setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
-               setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
-               
-               BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-               buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
-               buildingBlockDetail.setId(1);
-               buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
-               buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
-               
-               doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
-               
-               OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
-               orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.FAIL);
-               orchestrationStatusStateTransitionDirective.setId(1);
-               orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
-               orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
-               orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
-               
-               doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
-               
-               orchestrationStatusValidator.validateOrchestrationStatus(execution);
-               
-               assertEquals(OrchestrationStatusValidationDirective.CONTINUE, execution.getVariable("orchestrationStatusValidationResult"));
-       }
-       
-
-       @Test
-       public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongPrevStatusVfModule() throws Exception {
-               String flowToBeCalled = "CreateVfModuleBB";
-               
-               execution.setVariable("orchestrationStatusValidationResult", OrchestrationStatusValidationDirective.CONTINUE);
-               execution.setVariable("aLaCarte", true);
-               execution.setVariable("flowToBeCalled", flowToBeCalled);
-               
-               GenericVnf genericVnf = buildGenericVnf();
-               ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
-               modelInfoGenericVnf.setMultiStageDesign("true");
-               setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
-               setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
-               
-               BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-               buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
-               buildingBlockDetail.setId(1);
-               buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
-               buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
-               
-               doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
-               
-               OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
-               orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
-               orchestrationStatusStateTransitionDirective.setId(1);
-               orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
-               orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
-               orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
-               
-               doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
-               
-               orchestrationStatusValidator.validateOrchestrationStatus(execution);
-               
-               assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS, execution.getVariable("orchestrationStatusValidationResult"));
-       }
-       
-       @Test
-       public void test_validateOrchestrationStatusSecondStageOfMultiStageDisabledVfModule() throws Exception {
-               String flowToBeCalled = "CreateVfModuleBB";             
-               
-               execution.setVariable("orchestrationStatusValidationResult", OrchestrationStatusValidationDirective.SILENT_SUCCESS);
-               execution.setVariable("aLaCarte", true);
-               execution.setVariable("flowToBeCalled", flowToBeCalled);
-               
-               GenericVnf genericVnf = buildGenericVnf();
-               ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
-               modelInfoGenericVnf.setMultiStageDesign("false");
-               setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
-               setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
-               
-               BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-               buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
-               buildingBlockDetail.setId(1);
-               buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
-               buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
-               
-               doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
-               
-               OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
-               orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
-               orchestrationStatusStateTransitionDirective.setId(1);
-               orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
-               orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
-               orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
-               
-               doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
-               
-               orchestrationStatusValidator.validateOrchestrationStatus(execution);
-               
-               assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS, execution.getVariable("orchestrationStatusValidationResult"));
-       }
-       
-       @Test
-       public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongOrchStatusVfModule() throws Exception {
-               String flowToBeCalled = "CreateVfModuleBB";
-                               
-               execution.setVariable("orchestrationStatusValidationResult", OrchestrationStatusValidationDirective.SILENT_SUCCESS);
-               execution.setVariable("aLaCarte", true);
-               execution.setVariable("flowToBeCalled", flowToBeCalled);
-               
-               GenericVnf genericVnf = buildGenericVnf();
-               ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
-               modelInfoGenericVnf.setMultiStageDesign("true");
-               setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
-               setVfModule().setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
-               
-               BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-               buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
-               buildingBlockDetail.setId(1);
-               buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
-               buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
-               
-               doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
-               
-               OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
-               orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
-               orchestrationStatusStateTransitionDirective.setId(1);
-               orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
-               orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
-               orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
-               
-               doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.ASSIGNED, OrchestrationAction.CREATE);
-               
-               orchestrationStatusValidator.validateOrchestrationStatus(execution);
-               
-               assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS, execution.getVariable("orchestrationStatusValidationResult"));
-       }
-       
-       @Test
-       public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongTargetActionVfModule() throws Exception {
-               String flowToBeCalled = "CreateVfModuleBB";
-                               
-               execution.setVariable("orchestrationStatusValidationResult", OrchestrationStatusValidationDirective.SILENT_SUCCESS);
-               execution.setVariable("aLaCarte", true);
-               execution.setVariable("flowToBeCalled", flowToBeCalled);
-               
-               GenericVnf genericVnf = buildGenericVnf();
-               ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
-               modelInfoGenericVnf.setMultiStageDesign("true");
-               setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
-               setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
-               
-               BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-               buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
-               buildingBlockDetail.setId(1);
-               buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
-               buildingBlockDetail.setTargetAction(OrchestrationAction.ACTIVATE);
-               
-               doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
-               
-               OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
-               orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
-               orchestrationStatusStateTransitionDirective.setId(1);
-               orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
-               orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
-               orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ACTIVATE);
-               
-               doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.ACTIVATE);
-               
-               orchestrationStatusValidator.validateOrchestrationStatus(execution);
-               
-               assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS, execution.getVariable("orchestrationStatusValidationResult"));
-       }
-       
-       @Test
-       public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongAlacarteValueVfModule() throws Exception {
-               String flowToBeCalled = "CreateVfModuleBB";
-                               
-               execution.setVariable("orchestrationStatusValidationResult", OrchestrationStatusValidationDirective.SILENT_SUCCESS);
-               execution.setVariable("aLaCarte", false);
-               execution.setVariable("flowToBeCalled", flowToBeCalled);
-               
-               GenericVnf genericVnf = buildGenericVnf();
-               ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
-               modelInfoGenericVnf.setMultiStageDesign("true");
-               setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
-               setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
-               
-               BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-               buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
-               buildingBlockDetail.setId(1);
-               buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
-               buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
-               
-               doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
-               
-               OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
-               orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
-               orchestrationStatusStateTransitionDirective.setId(1);
-               orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
-               orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
-               orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ACTIVATE);
-               
-               doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
-               
-               orchestrationStatusValidator.validateOrchestrationStatus(execution);
-               
-               assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS, execution.getVariable("orchestrationStatusValidationResult"));
-       }
+    @InjectMocks
+    protected OrchestrationStatusValidator orchestrationStatusValidator = new OrchestrationStatusValidator();
+
+
+
+    @Test
+    public void test_validateOrchestrationStatus() throws Exception {
+        String flowToBeCalled = "AssignServiceInstanceBB";
+        setServiceInstance().setOrchestrationStatus(OrchestrationStatus.PRECREATED);
+        execution.setVariable("aLaCarte", true);
+        execution.setVariable("flowToBeCalled", flowToBeCalled);
+
+        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
+        buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
+        buildingBlockDetail.setId(1);
+        buildingBlockDetail.setResourceType(ResourceType.SERVICE);
+        buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
+
+        doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
+
+        OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
+                new OrchestrationStatusStateTransitionDirective();
+        orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.CONTINUE);
+        orchestrationStatusStateTransitionDirective.setId(1);
+        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
+        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
+        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
+
+        doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
+                .getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED,
+                        OrchestrationAction.ASSIGN);
+
+        orchestrationStatusValidator.validateOrchestrationStatus(execution);
+
+        assertEquals(OrchestrationStatusValidationDirective.CONTINUE,
+                execution.getVariable("orchestrationStatusValidationResult"));
+    }
+
+    @Test
+    public void test_validateOrchestrationStatusConfiguration() throws Exception {
+        lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId");
+        String flowToBeCalled = "UnassignFabricConfigurationBB";
+        ServiceInstance si = setServiceInstance();
+        List<Configuration> configurations = new ArrayList<>();
+        Configuration config = new Configuration();
+
+        si.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
+        config.setConfigurationId("configurationId");
+        config.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
+        configurations.add(config);
+        si.setConfigurations(configurations);
+
+        execution.setVariable("flowToBeCalled", flowToBeCalled);
+        execution.setVariable("aLaCarte", true);
+
+        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
+        buildingBlockDetail.setBuildingBlockName("UnassignFabricConfigurationBB");
+        buildingBlockDetail.setId(1);
+        buildingBlockDetail.setResourceType(ResourceType.CONFIGURATION);
+        buildingBlockDetail.setTargetAction(OrchestrationAction.UNASSIGN);
+
+        doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
+
+        OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
+                new OrchestrationStatusStateTransitionDirective();
+        orchestrationStatusStateTransitionDirective
+                .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
+        orchestrationStatusStateTransitionDirective.setId(1);
+        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
+        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.CONFIGURATION);
+        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.UNASSIGN);
+
+        doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
+                .getOrchestrationStatusStateTransitionDirective(ResourceType.CONFIGURATION,
+                        OrchestrationStatus.PRECREATED, OrchestrationAction.UNASSIGN);
+
+        orchestrationStatusValidator.validateOrchestrationStatus(execution);
+
+        assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                execution.getVariable("orchestrationStatusValidationResult"));
+    }
+
+    @Test
+    public void test_validateOrchestrationStatus_buildingBlockDetailNotFound() throws Exception {
+        expectedException.expect(BpmnError.class);
+
+        String flowToBeCalled = "AssignServiceInstanceBB";
+
+        execution.setVariable("flowToBeCalled", flowToBeCalled);
+
+        doReturn(null).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
+
+        orchestrationStatusValidator.validateOrchestrationStatus(execution);
+    }
+
+    @Test
+    public void test_validateOrchestrationStatus_orchestrationValidationFail() throws Exception {
+        expectedException.expect(BpmnError.class);
+
+        String flowToBeCalled = "AssignServiceInstanceBB";
+
+        execution.setVariable("flowToBeCalled", flowToBeCalled);
+
+        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
+        buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
+        buildingBlockDetail.setId(1);
+        buildingBlockDetail.setResourceType(ResourceType.SERVICE);
+        buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
+
+        doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
+
+        OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
+                new OrchestrationStatusStateTransitionDirective();
+        orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.FAIL);
+        orchestrationStatusStateTransitionDirective.setId(1);
+        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
+        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
+        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
+
+        doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
+                .getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED,
+                        OrchestrationAction.ASSIGN);
+
+        orchestrationStatusValidator.validateOrchestrationStatus(execution);
+    }
+
+    @Test
+    public void test_validateOrchestrationStatus_orchestrationValidationNotFound() throws Exception {
+        expectedException.expect(BpmnError.class);
+
+        String flowToBeCalled = "AssignServiceInstanceBB";
+
+        execution.setVariable("flowToBeCalled", flowToBeCalled);
+
+        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
+        buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
+        buildingBlockDetail.setId(1);
+        buildingBlockDetail.setResourceType(ResourceType.SERVICE);
+        buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
+
+        doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
+
+        OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
+                new OrchestrationStatusStateTransitionDirective();
+        orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.FAIL);
+        orchestrationStatusStateTransitionDirective.setId(1);
+        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
+        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
+        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
+
+        doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
+                .getOrchestrationStatusStateTransitionDirective(ResourceType.NETWORK, OrchestrationStatus.PRECREATED,
+                        OrchestrationAction.ASSIGN);
+
+        orchestrationStatusValidator.validateOrchestrationStatus(execution);
+    }
+
+    @Test
+    public void test_validateOrchestrationStatus_unassignNotFound() throws Exception {
+        String flowToBeCalled = "UnassignServiceInstanceBB";
+
+        execution.setVariable("flowToBeCalled", flowToBeCalled);
+        execution.setVariable("aLaCarte", true);
+
+        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
+        buildingBlockDetail.setBuildingBlockName("UnassignServiceInstanceBB");
+        buildingBlockDetail.setId(1);
+        buildingBlockDetail.setResourceType(ResourceType.SERVICE);
+        buildingBlockDetail.setTargetAction(OrchestrationAction.UNASSIGN);
+
+        doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
+
+        lookupKeyMap = new HashMap<ResourceKey, String>();
+
+        orchestrationStatusValidator.validateOrchestrationStatus(execution);
+
+        assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                execution.getVariable("orchestrationStatusValidationResult"));
+    }
+
+    @Test
+    public void test_validateOrchestrationStatusSecondStageOfMultiStageEnabledVfModule() throws Exception {
+        String flowToBeCalled = "CreateVfModuleBB";
+
+        execution.setVariable("orchestrationStatusValidationResult",
+                OrchestrationStatusValidationDirective.SILENT_SUCCESS);
+        execution.setVariable("aLaCarte", true);
+        execution.setVariable("flowToBeCalled", flowToBeCalled);
+
+        GenericVnf genericVnf = buildGenericVnf();
+        ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
+        modelInfoGenericVnf.setMultiStageDesign("true");
+        setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
+        setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+
+        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
+        buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
+        buildingBlockDetail.setId(1);
+        buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
+        buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
+
+        doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
+
+        OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
+                new OrchestrationStatusStateTransitionDirective();
+        orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.FAIL);
+        orchestrationStatusStateTransitionDirective.setId(1);
+        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
+        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
+
+        doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
+                .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
+                        OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
+
+        orchestrationStatusValidator.validateOrchestrationStatus(execution);
+
+        assertEquals(OrchestrationStatusValidationDirective.CONTINUE,
+                execution.getVariable("orchestrationStatusValidationResult"));
+    }
+
+
+    @Test
+    public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongPrevStatusVfModule() throws Exception {
+        String flowToBeCalled = "CreateVfModuleBB";
+
+        execution.setVariable("orchestrationStatusValidationResult", OrchestrationStatusValidationDirective.CONTINUE);
+        execution.setVariable("aLaCarte", true);
+        execution.setVariable("flowToBeCalled", flowToBeCalled);
+
+        GenericVnf genericVnf = buildGenericVnf();
+        ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
+        modelInfoGenericVnf.setMultiStageDesign("true");
+        setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
+        setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+
+        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
+        buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
+        buildingBlockDetail.setId(1);
+        buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
+        buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
+
+        doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
+
+        OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
+                new OrchestrationStatusStateTransitionDirective();
+        orchestrationStatusStateTransitionDirective
+                .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
+        orchestrationStatusStateTransitionDirective.setId(1);
+        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
+        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
+
+        doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
+                .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
+                        OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
+
+        orchestrationStatusValidator.validateOrchestrationStatus(execution);
+
+        assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                execution.getVariable("orchestrationStatusValidationResult"));
+    }
+
+    @Test
+    public void test_validateOrchestrationStatusSecondStageOfMultiStageDisabledVfModule() throws Exception {
+        String flowToBeCalled = "CreateVfModuleBB";
+
+        execution.setVariable("orchestrationStatusValidationResult",
+                OrchestrationStatusValidationDirective.SILENT_SUCCESS);
+        execution.setVariable("aLaCarte", true);
+        execution.setVariable("flowToBeCalled", flowToBeCalled);
+
+        GenericVnf genericVnf = buildGenericVnf();
+        ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
+        modelInfoGenericVnf.setMultiStageDesign("false");
+        setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
+        setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+
+        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
+        buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
+        buildingBlockDetail.setId(1);
+        buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
+        buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
+
+        doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
+
+        OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
+                new OrchestrationStatusStateTransitionDirective();
+        orchestrationStatusStateTransitionDirective
+                .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
+        orchestrationStatusStateTransitionDirective.setId(1);
+        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
+        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
+
+        doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
+                .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
+                        OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
+
+        orchestrationStatusValidator.validateOrchestrationStatus(execution);
+
+        assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                execution.getVariable("orchestrationStatusValidationResult"));
+    }
+
+    @Test
+    public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongOrchStatusVfModule() throws Exception {
+        String flowToBeCalled = "CreateVfModuleBB";
+
+        execution.setVariable("orchestrationStatusValidationResult",
+                OrchestrationStatusValidationDirective.SILENT_SUCCESS);
+        execution.setVariable("aLaCarte", true);
+        execution.setVariable("flowToBeCalled", flowToBeCalled);
+
+        GenericVnf genericVnf = buildGenericVnf();
+        ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
+        modelInfoGenericVnf.setMultiStageDesign("true");
+        setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
+        setVfModule().setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
+
+        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
+        buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
+        buildingBlockDetail.setId(1);
+        buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
+        buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
+
+        doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
+
+        OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
+                new OrchestrationStatusStateTransitionDirective();
+        orchestrationStatusStateTransitionDirective
+                .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
+        orchestrationStatusStateTransitionDirective.setId(1);
+        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
+        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
+
+        doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
+                .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.ASSIGNED,
+                        OrchestrationAction.CREATE);
+
+        orchestrationStatusValidator.validateOrchestrationStatus(execution);
+
+        assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                execution.getVariable("orchestrationStatusValidationResult"));
+    }
+
+    @Test
+    public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongTargetActionVfModule() throws Exception {
+        String flowToBeCalled = "CreateVfModuleBB";
+
+        execution.setVariable("orchestrationStatusValidationResult",
+                OrchestrationStatusValidationDirective.SILENT_SUCCESS);
+        execution.setVariable("aLaCarte", true);
+        execution.setVariable("flowToBeCalled", flowToBeCalled);
+
+        GenericVnf genericVnf = buildGenericVnf();
+        ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
+        modelInfoGenericVnf.setMultiStageDesign("true");
+        setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
+        setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+
+        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
+        buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
+        buildingBlockDetail.setId(1);
+        buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
+        buildingBlockDetail.setTargetAction(OrchestrationAction.ACTIVATE);
+
+        doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
+
+        OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
+                new OrchestrationStatusStateTransitionDirective();
+        orchestrationStatusStateTransitionDirective
+                .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
+        orchestrationStatusStateTransitionDirective.setId(1);
+        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
+        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ACTIVATE);
+
+        doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
+                .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
+                        OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.ACTIVATE);
+
+        orchestrationStatusValidator.validateOrchestrationStatus(execution);
+
+        assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                execution.getVariable("orchestrationStatusValidationResult"));
+    }
+
+    @Test
+    public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongAlacarteValueVfModule() throws Exception {
+        String flowToBeCalled = "CreateVfModuleBB";
+
+        execution.setVariable("orchestrationStatusValidationResult",
+                OrchestrationStatusValidationDirective.SILENT_SUCCESS);
+        execution.setVariable("aLaCarte", false);
+        execution.setVariable("flowToBeCalled", flowToBeCalled);
+
+        GenericVnf genericVnf = buildGenericVnf();
+        ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
+        modelInfoGenericVnf.setMultiStageDesign("true");
+        setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
+        setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+
+        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
+        buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
+        buildingBlockDetail.setId(1);
+        buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
+        buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
+
+        doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
+
+        OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
+                new OrchestrationStatusStateTransitionDirective();
+        orchestrationStatusStateTransitionDirective
+                .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
+        orchestrationStatusStateTransitionDirective.setId(1);
+        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
+        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ACTIVATE);
+
+        doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
+                .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
+                        OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
+
+        orchestrationStatusValidator.validateOrchestrationStatus(execution);
+
+        assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                execution.getVariable("orchestrationStatusValidationResult"));
+    }
 }