Merge "Reorder modifiers"
[so.git] / bpmn / MSOInfrastructureBPMN / src / main / groovy / org / openecomp / mso / bpmn / infrastructure / scripts / DoCreateVfModuleRollback.groovy
index 8ca749d..f862a00 100644 (file)
@@ -1,33 +1,33 @@
-/*-\r
- * ============LICENSE_START=======================================================\r
- * OPENECOMP - MSO\r
- * ================================================================================\r
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ============LICENSE_END=========================================================\r
- */\r
-
-package org.openecomp.mso.bpmn.infrastructure.scripts\r
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.bpmn.infrastructure.scripts
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
-import org.openecomp.mso.bpmn.common.scripts.AaiUtil\r
-import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor\r
-import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil\r
-import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils\r
-import org.openecomp.mso.bpmn.core.WorkflowException\r
-import org.openecomp.mso.rest.APIResponse\r
-import org.springframework.web.util.UriUtils\r
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.rest.APIResponse
+import org.springframework.web.util.UriUtils
 
 
 
@@ -36,90 +36,120 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
        def Prefix="DCVFMR_"
        ExceptionUtil exceptionUtil = new ExceptionUtil()
 
-       public void initProcessVariables(Execution execution) {
+       public void initProcessVariables(DelegateExecution execution) {
                execution.setVariable("prefix",Prefix)
        }
 
        // parse the incoming DELETE_VF_MODULE request for the Generic Vnf and Vf Module Ids
        // and formulate the outgoing request for PrepareUpdateAAIVfModuleRequest
-       public void preProcessRequest(Execution execution) {
+       public void preProcessRequest(DelegateExecution execution) {
                def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 
                initProcessVariables(execution)
 
-               def rollbackData = execution.getVariable("RollbackData")
-               String vnfId = rollbackData.get("VFMODULE", "vnfid")
-               execution.setVariable("DCVFMR_vnfId", vnfId)
-               String vfModuleId = rollbackData.get("VFMODULE", "vfmoduleid")
-               execution.setVariable("DCVFMR_vfModuleId", vfModuleId)
-               String source = rollbackData.get("VFMODULE", "source")
-               execution.setVariable("DCVFMR_source", source)
-               String serviceInstanceId = rollbackData.get("VFMODULE", "serviceInstanceId")
-               execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId)
-               String serviceId = rollbackData.get("VFMODULE", "service-id")
-               execution.setVariable("DCVFMR_serviceId", serviceId)
-               String vnfType = rollbackData.get("VFMODULE", "vnftype")
-               execution.setVariable("DCVFMR_vnfType", vnfType)
-               String vnfName = rollbackData.get("VFMODULE", "vnfname")
-               execution.setVariable("DCVFMR_vnfName", vnfName)
-               String tenantId = rollbackData.get("VFMODULE", "tenantid")
-               execution.setVariable("DCVFMR_tenantId", tenantId)
-               String vfModuleName = rollbackData.get("VFMODULE", "vfmodulename")
-               execution.setVariable("DCVFMR_vfModuleName", vfModuleName)
-               String vfModuleModelName = rollbackData.get("VFMODULE", "vfmodulemodelname")
-               execution.setVariable("DCVFMR_vfModuleModelName", vfModuleModelName)
-               String cloudSiteId = rollbackData.get("VFMODULE", "aiccloudregion")
-               execution.setVariable("DCVFMR_cloudSiteId", cloudSiteId)
-               String heatStackId = rollbackData.get("VFMODULE", "heatstackid")
-               execution.setVariable("DCVFMR_heatStackId", heatStackId)
-               String requestId = rollbackData.get("VFMODULE", "msorequestid")\r
-               execution.setVariable("DCVFMR_requestId", requestId)
-               List createdNetworkPolicyFqdnList = []
-               int i = 0
-               while (i < 100) {
-                       String fqdn = rollbackData.get("VFMODULE", "contrailNetworkPolicyFqdn" + i)
-                       if (fqdn == null) {
-                               break
-                       }
-                       createdNetworkPolicyFqdnList.add(fqdn)
-                       logDebug("got fqdn # " + i + ": " + fqdn, isDebugEnabled)
-                       i = i + 1
+               try {
 
+                       execution.setVariable("rolledBack", null)
+                       execution.setVariable("rollbackError", null)
+                       
+                       def rollbackData = execution.getVariable("rollbackData")
+                       utils.log("DEBUG", "RollbackData:" + rollbackData, isDebugEnabled)
+                       
+                       if (rollbackData != null) {
+                       String vnfId = rollbackData.get("VFMODULE", "vnfid")
+                       execution.setVariable("DCVFMR_vnfId", vnfId)
+                       String vfModuleId = rollbackData.get("VFMODULE", "vfmoduleid")
+                       execution.setVariable("DCVFMR_vfModuleId", vfModuleId)
+                       String source = rollbackData.get("VFMODULE", "source")
+                       execution.setVariable("DCVFMR_source", source)
+                       String serviceInstanceId = rollbackData.get("VFMODULE", "serviceInstanceId")
+                       execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId)
+                       String serviceId = rollbackData.get("VFMODULE", "service-id")
+                       execution.setVariable("DCVFMR_serviceId", serviceId)
+                       String vnfType = rollbackData.get("VFMODULE", "vnftype")
+                       execution.setVariable("DCVFMR_vnfType", vnfType)
+                       String vnfName = rollbackData.get("VFMODULE", "vnfname")
+                       execution.setVariable("DCVFMR_vnfName", vnfName)
+                       String tenantId = rollbackData.get("VFMODULE", "tenantid")
+                       execution.setVariable("DCVFMR_tenantId", tenantId)
+                       String vfModuleName = rollbackData.get("VFMODULE", "vfmodulename")
+                       execution.setVariable("DCVFMR_vfModuleName", vfModuleName)
+                       String vfModuleModelName = rollbackData.get("VFMODULE", "vfmodulemodelname")
+                       execution.setVariable("DCVFMR_vfModuleModelName", vfModuleModelName)
+                       String cloudSiteId = rollbackData.get("VFMODULE", "aiccloudregion")
+                       execution.setVariable("DCVFMR_cloudSiteId", cloudSiteId)
+                       String heatStackId = rollbackData.get("VFMODULE", "heatstackid")
+                       execution.setVariable("DCVFMR_heatStackId", heatStackId)
+                       String requestId = rollbackData.get("VFMODULE", "msorequestid")
+                       execution.setVariable("DCVFMR_requestId", requestId)
+                       // Set mso-request-id to request-id for VNF Adapter interface
+                       execution.setVariable("mso-request-id", requestId)
+                       List createdNetworkPolicyFqdnList = []
+                       int i = 0
+                       while (i < 100) {
+                               String fqdn = rollbackData.get("VFMODULE", "contrailNetworkPolicyFqdn" + i)
+                               if (fqdn == null) {
+                                       break
+                               }
+                               createdNetworkPolicyFqdnList.add(fqdn)
+                               logDebug("got fqdn # " + i + ": " + fqdn, isDebugEnabled)
+                               i = i + 1
+       
+                       }
+       
+                       execution.setVariable("DCVFMR_createdNetworkPolicyFqdnList", createdNetworkPolicyFqdnList)
+                       String oamManagementV4Address = rollbackData.get("VFMODULE", "oamManagementV4Address")
+                       execution.setVariable("DCVFMR_oamManagementV4Address", oamManagementV4Address)
+                       String oamManagementV6Address = rollbackData.get("VFMODULE", "oamManagementV6Address")
+                       execution.setVariable("DCVFMR_oamManagementV6Address", oamManagementV6Address)
+                       //String serviceInstanceId = rollbackData.get("VFMODULE", "msoserviceinstanceid")
+                       //execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId)
+                       execution.setVariable("DCVFMR_rollbackPrepareUpdateVfModule", rollbackData.get("VFMODULE", "rollbackPrepareUpdateVfModule"))
+                       execution.setVariable("DCVFMR_rollbackUpdateAAIVfModule", rollbackData.get("VFMODULE", "rollbackUpdateAAIVfModule"))
+                       execution.setVariable("DCVFMR_rollbackVnfAdapterCreate", rollbackData.get("VFMODULE", "rollbackVnfAdapterCreate"))
+                       execution.setVariable("DCVFMR_rollbackSDNCRequestAssign", rollbackData.get("VFMODULE", "rollbackSDNCRequestAssign"))
+                       execution.setVariable("DCVFMR_rollbackSDNCRequestActivate", rollbackData.get("VFMODULE", "rollbackSDNCRequestActivate"))
+                       execution.setVariable("DCVFMR_rollbackCreateAAIVfModule", rollbackData.get("VFMODULE", "rollbackCreateAAIVfModule"))
+                       execution.setVariable("DCVFMR_rollbackCreateNetworkPoliciesAAI", rollbackData.get("VFMODULE", "rollbackCreateNetworkPoliciesAAI"))
+                       execution.setVariable("DCVFMR_rollbackUpdateVnfAAI", rollbackData.get("VFMODULE", "rollbackUpdateVnfAAI"))
+       
+                       // formulate the request for PrepareUpdateAAIVfModule
+                       String request = """<PrepareUpdateAAIVfModuleRequest>
+                                                                       <vnf-id>${vnfId}</vnf-id>
+                                                                       <vf-module-id>${vfModuleId}</vf-module-id>
+                                                                       <orchestration-status>pending-delete</orchestration-status>
+                                                               </PrepareUpdateAAIVfModuleRequest>""" as String
+                       utils.log("DEBUG", "PrepareUpdateAAIVfModuleRequest :" + request, isDebugEnabled)
+                       utils.logAudit("DoCreateVfModuleRollback PrepareUpdateAAIVfModule Request: " + request)
+                       execution.setVariable("PrepareUpdateAAIVfModuleRequest", request)
+               } else {
+                       execution.setVariable("skipRollback", true)
+               }
+               
+               if (execution.getVariable("disableRollback").equals("true" )) {
+                       execution.setVariable("skipRollback", true)
+               }
+               
+               } catch (BpmnError e) {
+                       throw e;
+               } catch (Exception ex){
+                       def msg = "Exception in DoCreateVfModuleRollback preProcessRequest " + ex.getMessage()
+                       utils.log("DEBUG", msg, isDebugEnabled)
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
                }
-
-               execution.setVariable("DCVFMR_createdNetworkPolicyFqdnList", createdNetworkPolicyFqdnList)
-               String oamManagementV4Address = rollbackData.get("VFMODULE", "oamManagementV4Address")
-               execution.setVariable("DCVFMR_oamManagementV4Address", oamManagementV4Address)
-               String oamManagementV6Address = rollbackData.get("VFMODULE", "oamManagementV6Address")
-               execution.setVariable("DCVFMR_oamManagementV6Address", oamManagementV6Address)
-               //String serviceInstanceId = rollbackData.get("VFMODULE", "msoserviceinstanceid")\r
-               //execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId)
-               execution.setVariable("DCVFMR_rollbackPrepareUpdateVfModule", rollbackData.get("VFMODULE", "rollbackPrepareUpdateVfModule"))
-               execution.setVariable("DCVFMR_rollbackUpdateAAIVfModule", rollbackData.get("VFMODULE", "rollbackUpdateAAIVfModule"))
-               execution.setVariable("DCVFMR_rollbackVnfAdapterCreate", rollbackData.get("VFMODULE", "rollbackVnfAdapterCreate"))
-               execution.setVariable("DCVFMR_rollbackSDNCRequestAssign", rollbackData.get("VFMODULE", "rollbackSDNCRequestAssign"))
-               execution.setVariable("DCVFMR_rollbackSDNCRequestActivate", rollbackData.get("VFMODULE", "rollbackSDNCRequestActivate"))
-               execution.setVariable("DCVFMR_rollbackCreateAAIVfModule", rollbackData.get("VFMODULE", "rollbackCreateAAIVfModule"))
-               execution.setVariable("DCVFMR_rollbackCreateNetworkPoliciesAAI", rollbackData.get("VFMODULE", "rollbackCreateNetworkPoliciesAAI"))
-               execution.setVariable("DCVFMR_rollbackUpdateVnfAAI", rollbackData.get("VFMODULE", "rollbackUpdateVnfAAI"))
-
-               // formulate the request for PrepareUpdateAAIVfModule
-               String request = """<PrepareUpdateAAIVfModuleRequest>
-                                                               <vnf-id>${vnfId}</vnf-id>
-                                                               <vf-module-id>${vfModuleId}</vf-module-id>
-                                                               <orchestration-status>pending-delete</orchestration-status>
-                                                       </PrepareUpdateAAIVfModuleRequest>""" as String
-               utils.log("DEBUG", "PrepareUpdateAAIVfModuleRequest :" + request, isDebugEnabled)
-               utils.logAudit("DoCreateVfModuleRollback PrepareUpdateAAIVfModule Request: " + request)
-               execution.setVariable("PrepareUpdateAAIVfModuleRequest", request)
        }
 
        // build a SDNC vnf-topology-operation request for the specified action
        // (note: the action passed is expected to be 'changedelete' or 'delete')
-       public void prepSDNCAdapterRequest(Execution execution) {
+       public void prepSDNCAdapterRequest(DelegateExecution execution) {
                def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
                String srvInstId = execution.getVariable("DCVFMR_serviceInstanceId")
 
+               String uuid = execution.getVariable('testReqId') // for junits
+               if(uuid==null){
+                       uuid = execution.getVariable("DCVFMR_requestId") + "-" +        System.currentTimeMillis()
+               }
+               
                def callbackUrl = execution.getVariable("URN_mso_workflow_sdncadapter_callback")
 
                String source = execution.getVariable("DCVFMR_source")
@@ -159,11 +189,11 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
                        return
 
 
-               String request = """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"\r
-                                                                                               xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"\r
-                                                                                               xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">\r
+               String request = """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                                                                                                       xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                                                                                                       xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
                                                      <sdncadapter:RequestHeader>
-                                                        <sdncadapter:RequestId>${requestId}</sdncadapter:RequestId>
+                                                        <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId>
                                                         <sdncadapter:SvcInstanceId>${vfModuleId}</sdncadapter:SvcInstanceId>
                                                         <sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
                                                         <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>
@@ -202,9 +232,115 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
                execution.setVariable("sdncAdapterWorkflowRequest", request)
        }
 
+       public void preProcessSDNCDeactivateRequest(DelegateExecution execution){
+               def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+               execution.setVariable("prefix", Prefix)
+               logDebug(" ======== STARTED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
+               
+               def serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId")
+       
+               try{
+                       //Build SDNC Request
+                       
+                       String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate")
+       
+                       deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest)
+                       execution.setVariable("DCVFMR_deactivateSDNCRequest", deactivateSDNCRequest)
+                       logDebug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest, isDebugLogEnabled)
+                       utils.logAudit("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)
+       
+               }catch(Exception e){
+                       utils.log("ERROR", "Exception Occured Processing preProcessSDNCDeactivateRequest. Exception is:\n" + e, isDebugLogEnabled)
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage())
+               }
+               logDebug("======== COMPLETED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
+       }
+
+       public void preProcessSDNCUnassignRequest(DelegateExecution execution) {
+               def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
+                       'execution=' + execution.getId() +
+                       ')'
+               def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+               logDebug('Entered ' + method, isDebugLogEnabled)
+               execution.setVariable("prefix", Prefix)
+               logDebug(" ======== STARTED preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)
+               try{
+                       String serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId")
+       
+                       String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign")
+       
+                       execution.setVariable("DCVFMR_unassignSDNCRequest", unassignSDNCRequest)
+                       logDebug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest, isDebugLogEnabled)
+                       utils.logAudit("Outgoing UnassignSDNCRequest is: \n"  + unassignSDNCRequest)
+       
+               }catch(Exception e){
+                       log.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e, isDebugLogEnabled)
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCUnassignRequest Method:\n" + e.getMessage())
+               }
+               logDebug("======== COMPLETED  preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)
+       }
+
+       public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
+       
+                       String uuid = execution.getVariable('testReqId') // for junits
+                       if(uuid==null){
+                               uuid = execution.getVariable("DCVFMR_requestId") + "-" +        System.currentTimeMillis()
+                       }
+                       def callbackURL = execution.getVariable("URN_mso_workflow_sdncadapter_callback")
+                       def requestId = execution.getVariable("DCVFMR_requestId")
+                       def serviceId = execution.getVariable("DCVFMR_serviceId")
+                       def serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId")
+                       def vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+                       def source = execution.getVariable("DCVFMR_source")
+                       def vnfId = execution.getVariable("DCVFMR_vnfId")
+                               
+                       def sdncVersion = execution.getVariable("sdncVersion")
+                       
+                       String sdncRequest =
+                       """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                                                                                                       xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                                                                                                       xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+          <sdncadapter:RequestHeader>
+                               <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId>
+                               <sdncadapter:SvcInstanceId>${svcInstId}</sdncadapter:SvcInstanceId>
+                               <sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
+                               <sdncadapter:SvcOperation>vf-module-topology-operation</sdncadapter:SvcOperation>
+                               <sdncadapter:CallbackUrl>${callbackURL}</sdncadapter:CallbackUrl>
+                               <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+               </sdncadapter:RequestHeader>
+       <sdncadapterworkflow:SDNCRequestData>
+               <request-information>
+                       <request-id>${requestId}</request-id>
+                       <request-action>DeleteVfModuleInstance</request-action>
+                       <source>${source}</source>
+                       <notification-url/>
+                       <order-number/>
+                       <order-version/>
+               </request-information>
+               <service-information>
+                       <service-id/>
+                       <subscription-service-type/>                    
+                       <service-instance-id>${serviceInstanceId}</service-instance-id>
+                       <global-customer-id/>
+               </service-information>
+               <vnf-information>
+                       <vnf-id>${vnfId}</vnf-id>
+                       <vnf-type/>                     
+               </vnf-information>
+               <vf-module-information>
+                       <vf-module-id>${vfModuleId}</vf-module-id>
+               </vf-module-information>
+               <vf-module-request-input/>              
+       </sdncadapterworkflow:SDNCRequestData>
+       </sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+       
+               utils.logAudit("sdncRequest:  " + sdncRequest)
+               return sdncRequest
+       }
+       
        // parse the incoming DELETE_VF_MODULE request
        // and formulate the outgoing VnfAdapterDeleteV1 request
-       public void prepVNFAdapterRequest(Execution execution) {
+       public void prepVNFAdapterRequest(DelegateExecution execution) {
                def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
                String requestId = UUID.randomUUID().toString()
                String origRequestId = execution.getVariable("DCVFMR_requestId")
@@ -214,7 +350,7 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
                String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
                String vfModuleStackId = execution.getVariable("DCVFMR_heatStackId")
                String tenantId = execution.getVariable("DCVFMR_tenantId")
-               def messageId = execution.getVariable('mso-request-id') + '-' +\r
+               def messageId = execution.getVariable('mso-request-id') + '-' +
                        System.currentTimeMillis()
                def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
                def useQualifiedHostName = execution.getVariable("URN_mso_use_qualified_host")
@@ -246,7 +382,7 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
 
        // parse the incoming DELETE_VF_MODULE request
        // and formulate the outgoing UpdateAAIVfModuleRequest request
-       public void prepUpdateAAIVfModule(Execution execution) {
+       public void prepUpdateAAIVfModule(DelegateExecution execution) {
                def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
                String vnfId = execution.getVariable("DCVFMR_vnfId")
                String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
@@ -261,10 +397,28 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
                utils.logAudit("UpdateAAIVfModule Request: " + request)
                execution.setVariable("UpdateAAIVfModuleRequest", request)
        }
+       
+       // parse the incoming DELETE_VF_MODULE request
+       // and formulate the outgoing UpdateAAIVfModuleRequest request
+       public void prepUpdateAAIVfModuleToAssigned(DelegateExecution execution) {
+               def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+               String vnfId = execution.getVariable("DCVFMR_vnfId")
+               String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+               // formulate the request for UpdateAAIVfModule
+               String request = """<UpdateAAIVfModuleRequest>
+                                                               <vnf-id>${vnfId}</vnf-id>
+                                                               <vf-module-id>${vfModuleId}</vf-module-id>
+                                                               <heat-stack-id></heat-stack-id>
+                                                               <orchestration-status>Assigned</orchestration-status>
+                                                       </UpdateAAIVfModuleRequest>""" as String
+               utils.log("DEBUG", "UpdateAAIVfModuleRequest :" + request, isDebugEnabled)
+               utils.logAudit("UpdateAAIVfModule Request: " + request)
+               execution.setVariable("UpdateAAIVfModuleRequest", request)
+       }
 
        // parse the incoming DELETE_VF_MODULE request
        // and formulate the outgoing DeleteAAIVfModuleRequest request
-       public void prepDeleteAAIVfModule(Execution execution) {
+       public void prepDeleteAAIVfModule(DelegateExecution execution) {
                def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
                String vnfId = execution.getVariable("DCVFMR_vnfId")
                String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
@@ -280,7 +434,7 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
 
        // generates a WorkflowException if
        //              -
-       public void handleDoDeleteVfModuleFailure(Execution execution) {
+       public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
                def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
                utils.log("ERROR", "AAI error occurred deleting the Generic Vnf: "
                        + execution.getVariable("DoDVfMod_deleteGenericVnfResponse"), isDebugEnabled)
@@ -289,7 +443,7 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
 
        }
 
-       public void sdncValidateResponse(Execution execution, String response){
+       public void sdncValidateResponse(DelegateExecution execution, String response){
                def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
                execution.setVariable("prefix",Prefix)
 
@@ -306,7 +460,7 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
                }
        }
 
-       public void deleteNetworkPoliciesFromAAI(Execution execution) {
+       public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
                def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
                'execution=' + execution.getId() +
                ')'
@@ -440,7 +594,7 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
         *
         * @param execution The flow's execution instance.
         */
-       public void preProcessUpdateAAIGenericVnf(Execution execution) {
+       public void preProcessUpdateAAIGenericVnf(DelegateExecution execution) {
                def method = getClass().getSimpleName() + '.preProcessUpdateAAIGenericVnf((' +
                        'execution=' + execution.getId() +
                        ')'
@@ -484,4 +638,39 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
                        exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessUpdateAAIGenericVnf((): ' + e.getMessage())
                }
        }
+       
+       public void setSuccessfulRollbackStatus (DelegateExecution execution){
+               def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+               execution.setVariable("prefix", Prefix)
+               logDebug(" ======== STARTED setSuccessfulRollbackStatus ======== ", isDebugLogEnabled)
+       
+               try{
+                       // Set rolledBack to true, rollbackError to null
+                       execution.setVariable("rolledBack", true)
+                       execution.setVariable("rollbackError", null)
+       
+               }catch(Exception e){
+                       utils.log("ERROR", "Exception Occured Processing setSuccessfulRollbackStatus. Exception is:\n" + e, isDebugLogEnabled)
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setSuccessfulRollbackStatus Method:\n" + e.getMessage())
+               }
+               logDebug("======== COMPLETED setSuccessfulRollbackStatus ======== ", isDebugLogEnabled)
+       }
+       
+       public void setFailedRollbackStatus (DelegateExecution execution){
+               def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+               execution.setVariable("prefix", Prefix)
+               logDebug(" ======== STARTED setFailedRollbackStatus ======== ", isDebugLogEnabled)
+       
+               try{
+                       // Set rolledBack to false, rollbackError to actual value, rollbackData to null
+                       execution.setVariable("rolledBack", false)
+                       execution.setVariable("rollbackError", 'Caught exception in DoCreateVfModuleRollback')
+                       execution.setVariable("rollbackData", null)
+       
+               }catch(Exception e){
+                       utils.log("ERROR", "Exception Occured Processing setFailedRollbackStatus. Exception is:\n" + e, isDebugLogEnabled)
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setFailedRollbackStatus Method:\n" + e.getMessage())
+               }
+               logDebug("======== COMPLETED setFailedRollbackStatus ======== ", isDebugLogEnabled)
+       }
 }