* Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 package org.onap.so.bpmn.infrastructure.workflow.tasks;
 
-import java.util.EnumSet;
-import java.util.Set;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
 import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
 import org.onap.so.client.exception.BBObjectNotFoundException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.HttpClientErrorException;
+import java.util.EnumSet;
+import java.util.Set;
 
 @Component
 public class OrchestrationStatusValidator {
     private static final String ORCHESTRATION_VALIDATION_FAIL =
             "Orchestration Status Validation failed. ResourceType=(%s), TargetAction=(%s), OrchestrationStatus=(%s)";
     private static final String ORCHESTRATION_STATUS_VALIDATION_RESULT = "orchestrationStatusValidationResult";
-    private static final String ALACARTE = "aLaCarte";
-    private static final String MULTI_STAGE_DESIGN_OFF = "false";
-    private static final String MULTI_STAGE_DESIGN_ON = "true";
     private static final String RESOURCE_EXIST_STATUS_MESSAGE =
             "The %s was found to already exist, thus no new %s was created in the cloud via this request";
     private static final String RESOURCE_NOT_EXIST_STATUS_MESSAGE =
 
     /**
      * This method validate's the status of the OrchestrationStatus against the buildingBlockDetail ResourceType
-     *
-     * @param execution
      */
     public void validateOrchestrationStatus(BuildingBlockExecution execution) {
         try {
-            OrchestrationStatusValidationDirective previousOrchestrationStatusValidationResult =
-                    execution.getVariable(ORCHESTRATION_STATUS_VALIDATION_RESULT);
-
             execution.setVariable(ORCHESTRATION_STATUS_VALIDATION_RESULT, null);
-
-            boolean aLaCarte = (boolean) execution.getVariable(ALACARTE);
-
             String buildingBlockFlowName = execution.getFlowToBeCalled();
-
             BuildingBlockDetail buildingBlockDetail = catalogDbClient.getBuildingBlockDetail(buildingBlockFlowName);
 
             if (buildingBlockDetail == null) {
                         String.format(BUILDING_BLOCK_DETAIL_NOT_FOUND, buildingBlockFlowName));
             }
 
-            OrchestrationStatus orchestrationStatus;
-
-            switch (buildingBlockDetail.getResourceType()) {
-                case SERVICE:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
-                    orchestrationStatus = serviceInstance.getOrchestrationStatus();
-                    break;
-                case VNF:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf genericVnf =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
-                    orchestrationStatus = genericVnf.getOrchestrationStatus();
-                    break;
-                case VF_MODULE:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
-                    orchestrationStatus = vfModule.getOrchestrationStatus();
-                    break;
-                case VOLUME_GROUP:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
-                    orchestrationStatus = volumeGroup.getOrchestrationStatus();
-                    break;
-                case NETWORK:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
-                    orchestrationStatus = network.getOrchestrationStatus();
-                    break;
-                case NETWORK_COLLECTION:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInst =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.Collection networkCollection =
-                            serviceInst.getCollection();
-                    orchestrationStatus = networkCollection.getOrchestrationStatus();
-                    break;
-                case CONFIGURATION:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration configuration =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID);
-                    orchestrationStatus = configuration.getOrchestrationStatus();
-                    break;
-                case INSTANCE_GROUP:
-                    org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup instanceGroup =
-                            extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID);
-                    orchestrationStatus = instanceGroup.getOrchestrationStatus();
-                    break;
-                case NO_VALIDATE:
-                    // short circuit and exit method
-                    execution.setVariable(ORCHESTRATION_STATUS_VALIDATION_RESULT,
-                            OrchestrationStatusValidationDirective.VALIDATION_SKIPPED);
-                    return;
-                default:
-                    // can't currently get here, so not tested. Added in case enum is expanded
-                    // without a change to this
-                    // code
-                    throw new OrchestrationStatusValidationException(
-                            String.format(UNKNOWN_RESOURCE_TYPE, buildingBlockFlowName,
-                                    buildingBlockDetail.getResourceType(), buildingBlockDetail.getTargetAction()));
+            OrchestrationStatus orchestrationStatus =
+                    getOrchestrationStatus(execution, buildingBlockFlowName, buildingBlockDetail);
+            if (buildingBlockDetail.getResourceType().equals(ResourceType.NO_VALIDATE)) {
+                return;
             }
 
             if (orchestrationStatus == null) {
         }
     }
 
+    private OrchestrationStatus getOrchestrationStatus(BuildingBlockExecution execution, String buildingBlockFlowName,
+            BuildingBlockDetail buildingBlockDetail)
+            throws BBObjectNotFoundException, OrchestrationStatusValidationException {
+        OrchestrationStatus orchestrationStatus = null;
+
+        switch (buildingBlockDetail.getResourceType()) {
+            case SERVICE:
+                ServiceInstance serviceInstance =
+                        extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+                orchestrationStatus = serviceInstance.getOrchestrationStatus();
+                break;
+            case VNF:
+                GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+                orchestrationStatus = genericVnf.getOrchestrationStatus();
+                break;
+            case VF_MODULE:
+                VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+                orchestrationStatus = vfModule.getOrchestrationStatus();
+                break;
+            case VOLUME_GROUP:
+                VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
+                orchestrationStatus = volumeGroup.getOrchestrationStatus();
+                break;
+            case NETWORK:
+                L3Network network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
+                orchestrationStatus = network.getOrchestrationStatus();
+                break;
+            case NETWORK_COLLECTION:
+                Collection networkCollection = getNetworkCollection(execution);
+                orchestrationStatus = networkCollection.getOrchestrationStatus();
+                break;
+            case CONFIGURATION:
+                Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID);
+                orchestrationStatus = configuration.getOrchestrationStatus();
+                break;
+            case INSTANCE_GROUP:
+                InstanceGroup instanceGroup = extractPojosForBB.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID);
+                orchestrationStatus = instanceGroup.getOrchestrationStatus();
+                break;
+            case NO_VALIDATE:
+                // short circuit and exit method
+                execution.setVariable(ORCHESTRATION_STATUS_VALIDATION_RESULT,
+                        OrchestrationStatusValidationDirective.VALIDATION_SKIPPED);
+                break;
+            default:
+                // can't currently get here, so not tested. Added in case enum is expanded
+                // without a change to this
+                // code
+                throw new OrchestrationStatusValidationException(
+                        String.format(UNKNOWN_RESOURCE_TYPE, buildingBlockFlowName,
+                                buildingBlockDetail.getResourceType(), buildingBlockDetail.getTargetAction()));
+        }
+        return orchestrationStatus;
+    }
+
+    private Collection getNetworkCollection(BuildingBlockExecution execution) throws BBObjectNotFoundException {
+        ServiceInstance serviceInst = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+        return serviceInst.getCollection();
+    }
+
     private void updatedResourceStatus(BuildingBlockExecution execution, BuildingBlockDetail buildingBlockDetail) {
 
         if (cloudResources.contains(buildingBlockDetail.getResourceType())) {
 
  * ================================================================================
  * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Copyright (C) 2020 Nokia Intellectual Property. All rights reserved.
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 package org.onap.so.bpmn.infrastructure.workflow.tasks;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.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;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.ArgumentMatchers;
 import org.mockito.InjectMocks;
+import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.onap.so.bpmn.BaseTaskTest;
-import org.onap.so.bpmn.common.BuildingBlockExecution;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.onap.so.client.exception.OrchestrationStatusValidationException;
 import org.onap.so.db.catalog.beans.BuildingBlockDetail;
 import org.onap.so.db.catalog.beans.OrchestrationAction;
 import org.onap.so.db.catalog.beans.OrchestrationStatus;
 import org.onap.so.db.catalog.beans.OrchestrationStatusValidationDirective;
 import org.onap.so.db.catalog.beans.ResourceType;
 import org.onap.so.db.request.beans.InfraActiveRequests;
-import org.springframework.beans.factory.annotation.Autowired;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 public class OrchestrationStatusValidatorTest extends BaseTaskTest {
 
     private static final String vfModuleNotExistExpectedMessage =
             "The VfModule was not found, thus no VfModule was deleted in the cloud via this request";
 
+    @Mock
+    private ExceptionBuilder exceptionBuilder;
+
     @InjectMocks
     protected OrchestrationStatusValidator orchestrationStatusValidator = new OrchestrationStatusValidator();
 
         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);
+        BuildingBlockDetail buildingBlockDetail =
+                getBuildingBlockDetail("AssignServiceInstanceBB", ResourceType.SERVICE, OrchestrationAction.ASSIGN);
 
         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
 
                 .thenReturn(serviceInstance);
 
         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
-                new OrchestrationStatusStateTransitionDirective();
-        orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.CONTINUE);
-        orchestrationStatusStateTransitionDirective.setId(1);
-        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
-        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
-        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
+                getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.CONTINUE,
+                        OrchestrationStatus.PRECREATED, ResourceType.SERVICE, OrchestrationAction.ASSIGN);
 
         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
                 .getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED,
         Mockito.verifyZeroInteractions(requestsDbClient);
     }
 
+    private OrchestrationStatusStateTransitionDirective getOrchestrationStatusStateTransitionDirective(
+            OrchestrationStatusValidationDirective aContinue, OrchestrationStatus precreated, ResourceType service,
+            OrchestrationAction assign) {
+        OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
+                new OrchestrationStatusStateTransitionDirective();
+        orchestrationStatusStateTransitionDirective.setFlowDirective(aContinue);
+        orchestrationStatusStateTransitionDirective.setId(1);
+        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(precreated);
+        orchestrationStatusStateTransitionDirective.setResourceType(service);
+        orchestrationStatusStateTransitionDirective.setTargetAction(assign);
+        return orchestrationStatusStateTransitionDirective;
+    }
+
     @Test
     public void test_validateOrchestrationStatusConfiguration() throws Exception {
         lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId");
         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);
+        BuildingBlockDetail buildingBlockDetail = getBuildingBlockDetail("UnassignFabricConfigurationBB",
+                ResourceType.CONFIGURATION, OrchestrationAction.UNASSIGN);
 
         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
 
                 .thenReturn(configuration);
 
         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
-                new OrchestrationStatusStateTransitionDirective();
-        orchestrationStatusStateTransitionDirective
-                .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
-        orchestrationStatusStateTransitionDirective.setId(1);
-        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
-        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.CONFIGURATION);
-        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.UNASSIGN);
+                getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                        OrchestrationStatus.PRECREATED, ResourceType.CONFIGURATION, OrchestrationAction.UNASSIGN);
 
         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
                 .getOrchestrationStatusStateTransitionDirective(ResourceType.CONFIGURATION,
         Mockito.verifyZeroInteractions(requestsDbClient);
     }
 
-    @Ignore
     @Test
-    public void test_validateOrchestrationStatus_buildingBlockDetailNotFound() throws Exception {
-        expectedException.expect(BpmnError.class);
-
+    public void test_validateOrchestrationStatus_buildingBlockDetailNotFound() {
         String flowToBeCalled = "AssignServiceInstanceBB";
-
         execution.setVariable("flowToBeCalled", flowToBeCalled);
-
         doReturn(null).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
 
         orchestrationStatusValidator.validateOrchestrationStatus(execution);
+
+        verify(exceptionBuilder).buildAndThrowWorkflowException(eq(execution), eq(7000),
+                any(OrchestrationStatusValidationException.class));
     }
 
-    @Ignore
     @Test
-    public void test_validateOrchestrationStatus_orchestrationValidationFail() throws Exception {
-        expectedException.expect(BpmnError.class);
-
+    public void test_validateOrchestrationStatus_orchestrationValidationFail() {
         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);
+        BuildingBlockDetail buildingBlockDetail =
+                getBuildingBlockDetail("AssignServiceInstanceBB", ResourceType.SERVICE, 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);
+                getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.FAIL,
+                        OrchestrationStatus.PRECREATED, ResourceType.SERVICE, OrchestrationAction.ASSIGN);
 
         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
                 .getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED,
         orchestrationStatusValidator.validateOrchestrationStatus(execution);
 
         Mockito.verifyZeroInteractions(requestsDbClient);
+        verify(exceptionBuilder).buildAndThrowWorkflowException(eq(execution), eq(7000),
+                any(NullPointerException.class));
     }
 
-    @Ignore
     @Test
-    public void test_validateOrchestrationStatus_orchestrationValidationNotFound() throws Exception {
-        expectedException.expect(BpmnError.class);
-
+    public void test_validateOrchestrationStatus_orchestrationValidationNotFound() {
         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);
+        BuildingBlockDetail buildingBlockDetail =
+                getBuildingBlockDetail("AssignServiceInstanceBB", ResourceType.SERVICE, 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);
+                getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.FAIL,
+                        OrchestrationStatus.PRECREATED, ResourceType.SERVICE, OrchestrationAction.ASSIGN);
 
         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
                 .getOrchestrationStatusStateTransitionDirective(ResourceType.NETWORK, OrchestrationStatus.PRECREATED,
         orchestrationStatusValidator.validateOrchestrationStatus(execution);
 
         Mockito.verifyZeroInteractions(requestsDbClient);
+        verify(exceptionBuilder).buildAndThrowWorkflowException(eq(execution), eq(7000),
+                any(NullPointerException.class));
+    }
+
+    private BuildingBlockDetail getBuildingBlockDetail(String assignServiceInstanceBB, ResourceType service,
+            OrchestrationAction assign) {
+        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
+        buildingBlockDetail.setBuildingBlockName(assignServiceInstanceBB);
+        buildingBlockDetail.setId(1);
+        buildingBlockDetail.setResourceType(service);
+        buildingBlockDetail.setTargetAction(assign);
+        return buildingBlockDetail;
     }
 
     @Test
-    public void test_validateOrchestrationStatus_unassignNotFound() throws Exception {
+    public void test_validateOrchestrationStatus_unassignNotFound() {
         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);
+        BuildingBlockDetail buildingBlockDetail =
+                getBuildingBlockDetail("UnassignServiceInstanceBB", ResourceType.SERVICE, OrchestrationAction.UNASSIGN);
 
         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
 
-        lookupKeyMap = new HashMap<ResourceKey, String>();
+        lookupKeyMap = new HashMap<>();
 
         orchestrationStatusValidator.validateOrchestrationStatus(execution);
 
         vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 
-        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-        buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
-        buildingBlockDetail.setId(1);
-        buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
-        buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
+        BuildingBlockDetail buildingBlockDetail =
+                getBuildingBlockDetail("CreateVfModuleBB", ResourceType.VF_MODULE, OrchestrationAction.CREATE);
 
         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
 
         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
-                new OrchestrationStatusStateTransitionDirective();
-        orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.CONTINUE);
-        orchestrationStatusStateTransitionDirective.setId(1);
-        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
-        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
-        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
+                getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.CONTINUE,
+                        OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.CREATE);
 
         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
         vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 
-        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-        buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
-        buildingBlockDetail.setId(1);
-        buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
-        buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
+        BuildingBlockDetail buildingBlockDetail =
+                getBuildingBlockDetail("CreateVfModuleBB", ResourceType.VF_MODULE, 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);
+                getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                        OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.CREATE);
 
         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
         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);
+        BuildingBlockDetail buildingBlockDetail =
+                getBuildingBlockDetail("CreateVfModuleBB", ResourceType.VF_MODULE, OrchestrationAction.CREATE);
 
         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
 
         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 
         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);
+                getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                        OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.CREATE);
 
         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
         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);
+        BuildingBlockDetail buildingBlockDetail =
+                getBuildingBlockDetail("CreateVfModuleBB", ResourceType.VF_MODULE, OrchestrationAction.CREATE);
 
         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
 
         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 
         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);
+                getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                        OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.CREATE);
 
         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.ASSIGNED,
         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);
+        BuildingBlockDetail buildingBlockDetail =
+                getBuildingBlockDetail("CreateVfModuleBB", ResourceType.VF_MODULE, OrchestrationAction.ACTIVATE);
 
         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
 
         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 
         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);
+                getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                        OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.ACTIVATE);
 
         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
         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);
+        BuildingBlockDetail buildingBlockDetail =
+                getBuildingBlockDetail("CreateVfModuleBB", ResourceType.VF_MODULE, OrchestrationAction.CREATE);
 
         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
 
         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 
         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);
+                getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                        OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.ACTIVATE);
 
         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
     @Test
     public void continueValidationActivatedTest() throws Exception {
         String flowToBeCalled = "DeactivateVnfBB";
-        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-        buildingBlockDetail.setBuildingBlockName(flowToBeCalled);
-        buildingBlockDetail.setId(1);
-        buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
-        buildingBlockDetail.setTargetAction(OrchestrationAction.DEACTIVATE);
+        BuildingBlockDetail buildingBlockDetail =
+                getBuildingBlockDetail(flowToBeCalled, ResourceType.VF_MODULE, OrchestrationAction.DEACTIVATE);
         when(catalogDbClient.getBuildingBlockDetail(flowToBeCalled)).thenReturn(buildingBlockDetail);
 
         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 
         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
-                new OrchestrationStatusStateTransitionDirective();
-        orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.CONTINUE);
-        orchestrationStatusStateTransitionDirective.setId(1);
-        orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.ACTIVATED);
-        orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
-        orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.DEACTIVATE);
+                getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.CONTINUE,
+                        OrchestrationStatus.ACTIVATED, ResourceType.VF_MODULE, OrchestrationAction.DEACTIVATE);
         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.ACTIVATED,
                         OrchestrationAction.DEACTIVATE);
         vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
 
-        BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
-        buildingBlockDetail.setBuildingBlockName("DeleteVfModuleBB");
-        buildingBlockDetail.setId(1);
-        buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
-        buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
+        BuildingBlockDetail buildingBlockDetail =
+                getBuildingBlockDetail("DeleteVfModuleBB", ResourceType.VF_MODULE, 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);
+                getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+                        OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.CREATE);
 
         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,