('CONFIGURATION', 'PENDING CREATE', 'DEACTIVATE', 'FAIL'),
 ('CONFIGURATION', 'PENDING DELETE', 'DEACTIVATE', 'FAIL'),
 ('CONFIGURATION', 'PENDING ACTIVATION', 'DEACTIVATE', 'FAIL'),
-('CONFIGURATION', 'PENDING', 'DEACTIVATE', 'FAIL');
+('CONFIGURATION', 'PENDING', 'DEACTIVATE', 'FAIL'),
+('VNF','CONFIGDEPLOYED','ACTIVATE','CONTINUE');
 
 UPDATE orchestration_flow_reference
 SET SEQ_NO = SEQ_NO + 2 WHERE COMPOSITE_ACTION = 'Service-Macro-Create' AND SEQ_NO > 12;
 INSERT INTO building_block_detail(BUILDING_BLOCK_NAME, RESOURCE_TYPE, TARGET_ACTION)
 VALUES
 ('ConfigAssignVnfBB', 'NO_VALIDATE', 'CUSTOM'),
-('ConfigDeployVnfBB', 'NO_VALIDATE', 'CUSTOM');
+('ConfigDeployVnfBB', 'NO_VALIDATE', 'CUSTOM'),
+('ControllerExecutionBB', 'NO_VALIDATE', 'CUSTOM');
 
 UPDATE rainy_day_handler_macro SET reg_ex_error_message = '*' WHERE reg_ex_error_message IS null;
 
 ('SDNOVnfHealthCheckBB','*','*','*','*','Manual','Abort','*', '*'),
 ('VNFUnsetInMaintFlagActivity','*','*','*','*','Manual','Abort','*', '*'),
 ('VNFUnsetClosedLoopDisabledActivity','*','*','*','*','Manual','Abort','*', '*');
+
 
  * ================================================================================
  * Modifications Copyright (C) 2020 Nordix
  * ================================================================================
+ * Modifications Copyright (c) 2020 Tech Mahindra
+ * ================================================================================
  * 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
     public static final String SEPARATOR = "-";
     public static final String PNF_SCOPE = "pnf";
     public static final String VNF_SCOPE = "vnf";
-    public static final String VF_MODULE_SCOPE = "vfModule";
+    public static final String VF_MODULE_SCOPE = "vfmodule";
     public static final String SERVICE_SCOPE = "service";
     public static final String RESOLUTION_KEY = "resolution-key";
     public static final String CDS_ACTOR = "cds";
 
  * ================================================================================
  * Copyright (C) 2019 Bell Canada
  * ================================================================================
+ * Modifications Copyright (c) 2020 Tech Mahindra
+ * ================================================================================
  * 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
 
             final String modelCustomizationUuidForVnf = genericVnf.getModelInfoGenericVnf().getModelCustomizationUuid();
 
-            blueprintName = genericVnf.getBlueprintName();
-            blueprintVersion = genericVnf.getBlueprintVersion();
+            blueprintName = genericVnf.getModelInfoGenericVnf().getBlueprintName();
+            blueprintVersion = genericVnf.getModelInfoGenericVnf().getBlueprintVersion();
 
             VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
             vfModuleName = vfModule.getVfModuleName();
 
  * ================================================================================
  * Copyright (C) 2019 Bell Canada
  * ================================================================================
+ * Modifications Copyright (c) 2020 Tech Mahindra
+ * ================================================================================
  * 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
             final String modelCustomizationUuid = genericVnf.getModelInfoGenericVnf().getModelCustomizationUuid();
 
             resolutionKey = genericVnf.getVnfName();
-            blueprintName = genericVnf.getBlueprintName();
-            blueprintVersion = genericVnf.getBlueprintVersion();
+            blueprintName = genericVnf.getModelInfoGenericVnf().getBlueprintName();
+            blueprintVersion = genericVnf.getModelInfoGenericVnf().getBlueprintVersion();
 
             vnfObject.addProperty("service-instance-id", serviceInstance.getServiceInstanceId());
             vnfObject.addProperty("service-model-uuid", serviceInstance.getModelInfoServiceInstance().getModelUuid());
 
  * ================================================================================
  * Copyright (C) 2019 Bell Canada.
  * ================================================================================
+ * Modifications Copyright (c) 2020 Tech Mahindra
+ * ================================================================================
  * 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
     private static final String VNF_SCOPE = "vnf";
     private static final String SERVICE_SCOPE = "service";
     private static final String SERVICE_ACTION = "create";
-    private static final String VF_SCOPE = "vfModule";
+    private static final String VF_SCOPE = "vfmodule";
     private static final String ASSIGN_ACTION = "configAssign";
     private static final String DEPLOY_ACTION = "configDeploy";
     private static final String DOWNLOAD_ACTION = "downloadNESw";
 
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1ahlzqg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.14.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1ahlzqg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="ControllerExecutionBB" name="ControllerExecutionBB" isExecutable="true">
     <bpmn:startEvent id="StartEvent_1">
       <bpmn:outgoing>SequenceFlow_0gmfit3</bpmn:outgoing>
       <bpmn:incoming>SequenceFlow_0no1qag</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_1mkhog2" sourceRef="Task_1hs1mn0" targetRef="EndEvent_0lgvk82" />
-    <bpmn:callActivity id="CallActivity_1gfzi2g" name="Abstract CDS
(CDS Call)
" calledElement="AbstractCDSProcessingBB">
-      <bpmn:extensionElements>
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:out source="ControllerStatus" target="ControllerStatus" />
-        <camunda:in source="executionObject" target="executionObject" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_05qembo</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0cvsnuu</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:serviceTask id="Task_1hs1mn0" name="Update AAI" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatus(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")),InjectExecution.execute(execution, execution.getVariable("scope")),InjectExecution.execute(execution, execution.getVariable("action")))}">
+    <bpmn:serviceTask id="Task_1hs1mn0" name="Update AAI" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatus(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")), execution.getVariable("scope"), execution.getVariable("action"))}">
       <bpmn:incoming>SequenceFlow_07tqu82</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1mkhog2</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:sequenceFlow id="SequenceFlow_05qembo" sourceRef="Task_0bhf6tp" targetRef="CallActivity_1gfzi2g" />
-    <bpmn:serviceTask id="Task_0bhf6tp" name="PreProcess Abstract CDS Processing" camunda:expression="${GenericCDSProcessing.buildPayloadBasedOnScopeAndAction(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}">
+    <bpmn:sequenceFlow id="SequenceFlow_05qembo" sourceRef="Task_0bhf6tp" targetRef="ExclusiveGateway_13q340y" />
+    <bpmn:serviceTask id="Task_0bhf6tp" name="Call ControllerExecutionBB" camunda:expression="${ControllerExecutionBB.execute(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}">
       <bpmn:incoming>SequenceFlow_0vzx2yr</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_05qembo</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:exclusiveGateway id="ExclusiveGateway_13q340y" default="SequenceFlow_15gxql1">
-      <bpmn:incoming>SequenceFlow_0cvsnuu</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_05qembo</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_07tqu82</bpmn:outgoing>
       <bpmn:outgoing>SequenceFlow_15gxql1</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_0cvsnuu" sourceRef="CallActivity_1gfzi2g" targetRef="ExclusiveGateway_13q340y" />
     <bpmn:sequenceFlow id="SequenceFlow_07tqu82" name="success" sourceRef="ExclusiveGateway_13q340y" targetRef="Task_1hs1mn0">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("ControllerStatus").equals("Success")}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_0op5irz" sourceRef="BBToExecute" targetRef="EndEvent_1lxwuh2" />
     <bpmn:sequenceFlow id="SequenceFlow_0vzx2yr" name="Actor= CDS" sourceRef="ExclusiveGateway_0plxwkg" targetRef="Task_0bhf6tp">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${execution.getVariable("controller_actor") == "CDS"}</bpmn:conditionExpression>
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${execution.getVariable("actor") == "CDS"}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
   </bpmn:process>
   <bpmn:error id="Error_0aovtfv" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0gmfit3_di" bpmnElement="SequenceFlow_0gmfit3">
-        <di:waypoint x="196" y="341" />
-        <di:waypoint x="259" y="341" />
+        <di:waypoint xsi:type="dc:Point" x="196" y="341" />
+        <di:waypoint xsi:type="dc:Point" x="259" y="341" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="32.5" y="236" width="90" height="20" />
         </bpmndi:BPMNLabel>
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1mkhog2_di" bpmnElement="SequenceFlow_1mkhog2">
-        <di:waypoint x="1079" y="462" />
-        <di:waypoint x="1147" y="462" />
-        <di:waypoint x="1147" y="359" />
+        <di:waypoint xsi:type="dc:Point" x="1079" y="462" />
+        <di:waypoint xsi:type="dc:Point" x="1147" y="462" />
+        <di:waypoint xsi:type="dc:Point" x="1147" y="359" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="918" y="357" width="90" height="20" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="CallActivity_1gfzi2g_di" bpmnElement="CallActivity_1gfzi2g">
-        <dc:Bounds x="725" y="422" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0404s6a_di" bpmnElement="Task_1hs1mn0">
         <dc:Bounds x="979" y="422" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_05qembo_di" bpmnElement="SequenceFlow_05qembo">
-        <di:waypoint x="672" y="462" />
-        <di:waypoint x="725" y="462" />
+        <di:waypoint xsi:type="dc:Point" x="672" y="462" />
+        <di:waypoint xsi:type="dc:Point" x="868" y="462" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="503.5" y="357" width="90" height="20" />
+          <dc:Bounds x="725" y="437" width="90" height="20" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_01mv1si_di" bpmnElement="Task_0bhf6tp">
           <dc:Bounds x="698" y="327" width="90" height="20" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0cvsnuu_di" bpmnElement="SequenceFlow_0cvsnuu">
-        <di:waypoint x="825" y="462" />
-        <di:waypoint x="868" y="462" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="651.5" y="357" width="90" height="20" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_07tqu82_di" bpmnElement="SequenceFlow_07tqu82">
-        <di:waypoint x="918" y="462" />
-        <di:waypoint x="979" y="462" />
+        <di:waypoint xsi:type="dc:Point" x="918" y="462" />
+        <di:waypoint xsi:type="dc:Point" x="979" y="462" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="856" y="409" width="41" height="14" />
         </bpmndi:BPMNLabel>
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_15gxql1_di" bpmnElement="SequenceFlow_15gxql1">
-        <di:waypoint x="893" y="487" />
-        <di:waypoint x="893" y="565" />
+        <di:waypoint xsi:type="dc:Point" x="893" y="487" />
+        <di:waypoint xsi:type="dc:Point" x="893" y="565" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="713" y="436" width="90" height="20" />
         </bpmndi:BPMNLabel>
         <dc:Bounds x="259" y="301" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_05j6hg6_di" bpmnElement="SequenceFlow_05j6hg6">
-        <di:waypoint x="359" y="341" />
-        <di:waypoint x="399" y="341" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="341" />
+        <di:waypoint xsi:type="dc:Point" x="399" y="341" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="184" y="240" width="90" height="12" />
         </bpmndi:BPMNLabel>
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1lspfyy_di" bpmnElement="SequenceFlow_1lspfyy">
-        <di:waypoint x="359" y="341" />
-        <di:waypoint x="399" y="341" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="341" />
+        <di:waypoint xsi:type="dc:Point" x="399" y="341" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="229" y="240" width="0" height="12" />
         </bpmndi:BPMNLabel>
         <dc:Bounds x="824" y="168" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1t7hs4k_di" bpmnElement="SequenceFlow_1t7hs4k">
-        <di:waypoint x="424" y="316" />
-        <di:waypoint x="424" y="208" />
-        <di:waypoint x="572" y="208" />
+        <di:waypoint xsi:type="dc:Point" x="424" y="316" />
+        <di:waypoint xsi:type="dc:Point" x="424" y="208" />
+        <di:waypoint xsi:type="dc:Point" x="572" y="208" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="271" y="89" width="83" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0no1qag_di" bpmnElement="SequenceFlow_0no1qag">
-        <di:waypoint x="924" y="208" />
-        <di:waypoint x="1147" y="208" />
-        <di:waypoint x="1147" y="323" />
+        <di:waypoint xsi:type="dc:Point" x="924" y="208" />
+        <di:waypoint xsi:type="dc:Point" x="1147" y="208" />
+        <di:waypoint xsi:type="dc:Point" x="1147" y="323" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="840.5" y="107" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0fv03vt_di" bpmnElement="SequenceFlow_0fv03vt">
-        <di:waypoint x="672" y="208" />
-        <di:waypoint x="824" y="208" />
+        <di:waypoint xsi:type="dc:Point" x="672" y="208" />
+        <di:waypoint xsi:type="dc:Point" x="824" y="208" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="598" y="107" width="0" height="12" />
         </bpmndi:BPMNLabel>
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0op5irz_di" bpmnElement="SequenceFlow_0op5irz">
-        <di:waypoint x="874" y="168" />
-        <di:waypoint x="874" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="874" y="168" />
+        <di:waypoint xsi:type="dc:Point" x="874" y="120" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="739" y="58" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0vzx2yr_di" bpmnElement="SequenceFlow_0vzx2yr">
-        <di:waypoint x="424" y="366" />
-        <di:waypoint x="424" y="462" />
-        <di:waypoint x="572" y="462" />
+        <di:waypoint xsi:type="dc:Point" x="424" y="366" />
+        <di:waypoint xsi:type="dc:Point" x="424" y="462" />
+        <di:waypoint xsi:type="dc:Point" x="572" y="462" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="455" y="436" width="60" height="12" />
         </bpmndi:BPMNLabel>
 
  * Modifications Copyright (c) 2019 Samsung
  *  Modifications Copyright (c) 2019 Bell Canada.
  * Modifications Copyright (c) 2020 Nokia
+ * Modifications Copyright (c) 2020 Tech Mahindra
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
         updateOrchestrationStatusForVnf(execution, OrchestrationStatus.CONFIGURED);
     }
 
+    /**
+     * BPMN access method to update status of Vnf/vfmodule to configAssigned/ConfigDeployed in AAI
+     */
+    public void updateOrchestrationStatus(BuildingBlockExecution execution, String scope, String action) {
+        if (scope.equalsIgnoreCase("vnf") && action.equalsIgnoreCase("config-assign")) {
+            updateOrchestrationStatusForVnf(execution, OrchestrationStatus.CONFIGASSIGNED);
+        } else if (scope.equalsIgnoreCase("vnf") && action.equalsIgnoreCase("config-deploy")) {
+            updateOrchestrationStatusForVnf(execution, OrchestrationStatus.CONFIGDEPLOYED);
+        } else if (scope.equalsIgnoreCase("vfModule") && action.equalsIgnoreCase("config-assign")) {
+            updateOrchestrationStatusForVfModule(execution, OrchestrationStatus.CONFIGASSIGNED);
+        } else if (scope.equalsIgnoreCase("vfModule") && action.equalsIgnoreCase("config-deploy")) {
+            updateOrchestrationStatusForVfModule(execution, OrchestrationStatus.CONFIGDEPLOYED);
+        }
+    }
+
     private void updateOrchestrationStatusForService(BuildingBlockExecution execution, OrchestrationStatus status) {
         try {
             ServiceInstance serviceInstance =
 
 @Component
 public class ControllerExecution {
     private static final Logger logger = LoggerFactory.getLogger(ControllerExecution.class);
-    private static final String CONTROLLER_ACTOR = "controllerActor";
+    private static final String CONTROLLER_ACTOR = "actor";
     private static final String BUILDING_BLOCK = "buildingBlock";
     private static final String SCOPE = "scope";
     private static final String ACTION = "action";
     public void setControllerActorScopeAction(BuildingBlockExecution execution) {
         try {
             GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
-            String modleUuid = genericVnf.getModelInfoGenericVnf().getModelCustomizationUuid();
+            String modelUuid = genericVnf.getModelInfoGenericVnf().getModelCustomizationUuid();
             VnfResourceCustomization vnfResourceCustomization =
-                    catalogDbClient.getVnfResourceCustomizationByModelCustomizationUUID(modleUuid);
+                    catalogDbClient.getVnfResourceCustomizationByModelCustomizationUUID(modelUuid);
 
             // Fetching Controller Actor at VNF level if null then Controller Actor is set as "APPC"
             String controllerActor = Optional.ofNullable(vnfResourceCustomization.getControllerActor()).orElse("APPC");
 
  * ================================================================================
  * Copyright (C) 2019 Bell Canada
  * ================================================================================
+ * Modifications Copyright (c) 2020 Tech Mahindra
+ * ================================================================================
  * 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
 import org.springframework.stereotype.Component;
 
 /**
- * For Vnf/Vf-Module/Service BuildingBlockExecution is being used.
+ * This class is used in context of Building Block flow for configuration of vnf/vfmodule/service.
  *
  * @param - BuildingBlockExecution
  */
     private static final String EXECUTION_OBJECT = "executionObject";
     public static final String CDS_ACTOR = "cds";
     public static final String VNF_SCOPE = "vnf";
-    public static final String VF_MODULE_SCOPE = "vf-module";
+    public static final String VF_MODULE_SCOPE = "vfmodule";
 
     @Autowired
     private ExceptionBuilder exceptionBuilder;
 
-    @Autowired
-    private ExtractPojosForBB extractPojosForBB;
-
     @Autowired
     private AbstractCDSProcessingBBUtils cdsDispather;
 
 
  * ================================================================================
  * Modifications Copyright (c) 2020 Nokia
  * ================================================================================
+ * Modifications Copyright (c) 2020 Tech Mahindra
+ * ================================================================================
  * 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
     private static final String ACTIVATENETWORKBB = "ActivateNetworkBB";
     private static final String VOLUMEGROUP_DELETE_PATTERN = "(Un|De)(.*)Volume(.*)";
     private static final String VOLUMEGROUP_CREATE_PATTERN = "(A|C)(.*)Volume(.*)";
+    private static final String CONTROLLER = "Controller";
 
     @Autowired
     protected BBInputSetup bbInputSetup;
             resourceId = UUID.randomUUID().toString();
         }
         for (ExecuteBuildingBlock ebb : flowsToExecute) {
-            if (key != null && key.equalsIgnoreCase(ebb.getBuildingBlock().getKey())
-                    && ebb.getBuildingBlock().getBpmnFlowName().contains(resourceType.toString())) {
+            if (key != null && key.equalsIgnoreCase(ebb.getBuildingBlock().getKey()) && (ebb.getBuildingBlock()
+                    .getBpmnFlowName().contains(resourceType.toString())
+                    || (ebb.getBuildingBlock().getBpmnFlowName().contains(CONTROLLER)
+                            && ebb.getBuildingBlock().getBpmnScope().equalsIgnoreCase(resourceType.toString())))) {
                 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
                 workflowResourceIds.setServiceInstanceId(serviceInstanceId);
                 WorkflowResourceIdsUtils.setResourceIdByWorkflowType(workflowResourceIds, resourceType, resourceId);
                 addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.SERVICE, orchFlow, requestId,
                         apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, false,
                         false);
-            } else if (orchFlow.getFlowName().contains(VNF)) {
+            } else if (orchFlow.getFlowName().contains(VNF) || (orchFlow.getFlowName().contains(CONTROLLER)
+                    && (VNF).equalsIgnoreCase(orchFlow.getBpmnScope()))) {
                 addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.VNF, orchFlow, requestId,
                         apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, false,
                         false);
                 addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.VIRTUAL_LINK, orchFlow,
                         requestId, apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails,
                         true, false);
-            } else if (orchFlow.getFlowName().contains(VFMODULE)) {
+            } else if (orchFlow.getFlowName().contains(VFMODULE) || (orchFlow.getFlowName().contains(CONTROLLER)
+                    && (VFMODULE).equalsIgnoreCase(orchFlow.getBpmnScope()))) {
                 List<Resource> vfModuleResourcesSorted = null;
                 if (requestAction.equals(CREATEINSTANCE) || requestAction.equals(ASSIGNINSTANCE)
                         || requestAction.equals("activateInstance")) {
 
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright (c) 2020 Tech Mahindra
+ * ================================================================================
  * 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
         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.PNF))).thenReturn(pnf);
         return pnf;
     }
+
+    @Test
+    public void updateOrchestrationStatusVnfConfigAssignedTest() throws Exception {
+        doNothing().when(aaiVnfResources).updateOrchestrationStatusVnf(genericVnf, OrchestrationStatus.CONFIGASSIGNED);
+
+        aaiUpdateTasks.updateOrchestrationStatus(execution, "vnf", "config-assign");
+
+        verify(aaiVnfResources, times(1)).updateOrchestrationStatusVnf(genericVnf, OrchestrationStatus.CONFIGASSIGNED);
+    }
+
+    @Test
+    public void updateOrchestrationStatusVnfConfigDeployedTest() throws Exception {
+        doNothing().when(aaiVnfResources).updateOrchestrationStatusVnf(genericVnf, OrchestrationStatus.CONFIGDEPLOYED);
+
+        aaiUpdateTasks.updateOrchestrationStatus(execution, "vnf", "config-deploy");
+
+        verify(aaiVnfResources, times(1)).updateOrchestrationStatusVnf(genericVnf, OrchestrationStatus.CONFIGDEPLOYED);
+    }
+
+    @Test
+    public void updateOrchestrationStatusVfModuleConfigDeployedTest() throws Exception {
+        doNothing().when(aaiVfModuleResources).updateOrchestrationStatusVfModule(vfModule, genericVnf,
+                OrchestrationStatus.CONFIGDEPLOYED);
+        aaiUpdateTasks.updateOrchestrationStatus(execution, "vfmodule", "config-deploy");
+        verify(aaiVfModuleResources, times(1)).updateOrchestrationStatusVfModule(vfModule, genericVnf,
+                OrchestrationStatus.CONFIGDEPLOYED);
+    }
+
+    @Test
+    public void updateOrchestrationStatusVfModuleConfigAssignedTest() throws Exception {
+        doNothing().when(aaiVfModuleResources).updateOrchestrationStatusVfModule(vfModule, genericVnf,
+                OrchestrationStatus.CONFIGASSIGNED);
+        aaiUpdateTasks.updateOrchestrationStatus(execution, "vfmodule", "config-assign");
+        verify(aaiVfModuleResources, times(1)).updateOrchestrationStatusVfModule(vfModule, genericVnf,
+                OrchestrationStatus.CONFIGASSIGNED);
+    }
 }
 
         controllerExecution.setControllerActorScopeAction(execution);
         assertEquals(TEST_SCOPE, execution.getVariable("scope"));
         assertEquals(TEST_ACTION, execution.getVariable("action"));
-        assertEquals(TEST_CONTROLLER_ACTOR, execution.getVariable("controllerActor"));
+        assertEquals(TEST_CONTROLLER_ACTOR, execution.getVariable("actor"));
 
     }
 
         bbNameSelectionReference.setScope(TEST_SCOPE);
         doReturn(bbNameSelectionReference).when(catalogDbClient).getBBNameSelectionReference(TEST_CONTROLLER_ACTOR,
                 TEST_SCOPE, TEST_ACTION);
-        execution.setVariable("controllerActor", TEST_CONTROLLER_ACTOR);
+        execution.setVariable("actor", TEST_CONTROLLER_ACTOR);
         execution.setVariable("scope", TEST_SCOPE);
         execution.setVariable("action", TEST_ACTION);
 
 
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright (c) 2020 Tech Mahindra
+ * ================================================================================
  * 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
     PENDING_DELETE("PendingDelete", "pending.?delete"),
     PRECREATED("PreCreated", "pre.?created"),
     CONFIGASSIGNED("ConfigAssigned", "config.?assigned"),
+    CONFIGDEPLOYED("ConfigDeployed", "config.?deployed"),
     CONFIGURE("Configure", "configure"),
     CONFIGURED("Configured", "configured"),
     REGISTER("Register", "register"),