diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy
index 5390ee9..1ec1df1 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy
@@ -238,7 +238,7 @@
         }
         String globalSubscriberId = execution.getVariable("globalSubscriberId")
         String serviceType = execution.getVariable("serviceType")
-        String serviceId = execution.getVariable("serviceId")
+        String serviceId = execution.getVariable("serviceInstanceId")
         String addRelationPayload = """<relationship xmlns="http://org.openecomp.aai.inventory/v11">
                                             <related-to>service-instance</related-to>
                                             <related-link>/aai/v11/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${nsInstanceId}</related-link>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy
index 3943e30..9a12a69 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy
@@ -83,7 +83,7 @@
             String resourceModelName = resourceInputObj.getResourceModelInfo().getModelName()            
             //For sdnc requestAction default is "NetworkInstance"
             String operationType = "Network"    
-            if(!StringUtils.isBlank(recipeParamsFromRequest)){
+            if(!StringUtils.isBlank(recipeParamsFromRequest) && "null" != recipeParamsFromRequest){
                 //the operationType from worflow(first node) is second priority.
                 operationType = jsonUtil.getJsonValue(recipeParamsFromRequest, "operationType")
             }
@@ -227,13 +227,13 @@
         ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput")
         String operType = resourceInputObj.getOperationType()
         String resourceCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid()
-        String ServiceInstanceId = resourceInputObj.getServiceInstanceId()
+        String serviceInstanceId = resourceInputObj.getServiceInstanceId()
         String operationId = resourceInputObj.getOperationId()
         String progress = "20"
         String status = "processing"
         String statusDescription = "SDCN resource delete invoked"
 
-        execution.getVariable("operationId")
+        //String operationId = execution.getVariable("operationId")
 
         String body = """
                 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
@@ -245,7 +245,7 @@
                                <operationId>${operationId}</operationId>
                                <progress>${progress}</progress>
                                <resourceTemplateUUID>${resourceCustomizationUuid}</resourceTemplateUUID>
-                               <serviceId>${ServiceInstanceId}</serviceId>
+                               <serviceId>${serviceInstanceId}</serviceId>
                                <status>${status}</status>
                                <statusDescription>${statusDescription}</statusDescription>
                     </ns:updateResourceOperationStatus>
@@ -256,17 +256,17 @@
 
     }
 
-    public void prepareUpdateAfterDeleteSDNCResource(execution) {
+    public void prepareUpdateAfterDeleteSDNCResource(DelegateExecution execution) {
         ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput")
         String operType = resourceInputObj.getOperationType()
         String resourceCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid()
-        String ServiceInstanceId = resourceInputObj.getServiceInstanceId()
+        String serviceInstanceId = resourceInputObj.getServiceInstanceId()
         String operationId = resourceInputObj.getOperationId()
         String progress = "100"
         String status = "finished"
         String statusDescription = "SDCN resource delete completed"
 
-        execution.getVariable("operationId")
+        //String operationId = execution.getVariable("operationId")
 
         String body = """
                 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
@@ -278,7 +278,7 @@
                                <operationId>${operationId}</operationId>
                                <progress>${progress}</progress>
                                <resourceTemplateUUID>${resourceCustomizationUuid}</resourceTemplateUUID>
-                               <serviceId>${ServiceInstanceId}</serviceId>
+                               <serviceId>${serviceInstanceId}</serviceId>
                                <status>${status}</status>
                                <statusDescription>${statusDescription}</statusDescription>
                     </ns:updateResourceOperationStatus>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy
index f08a769..8e05f8d 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy
@@ -273,7 +273,7 @@
         utils.log("INFO", "======== COMPLETED parseNextResource Process ======== ", isDebugEnabled)
     }
     
-    public void prepareFinishedProgressForResource(execution) {
+    public void prepareFinishedProgressForResource(DelegateExecution execution) {
 
         String serviceInstanceId = execution.getVariable("serviceInstanceId")
         String serviceType = execution.getVariable("serviceType")
@@ -297,7 +297,7 @@
                                <operationId>${operationId}</operationId>
                                <progress>${progress}</progress>
                                <resourceTemplateUUID>${resourceCustomizationUuid}</resourceTemplateUUID>
-                               <serviceId>${ServiceInstanceId}</serviceId>
+                               <serviceId>${serviceInstanceId}</serviceId>
                                <status>${status}</status>
                                <statusDescription>${statusDescription}</statusDescription>
                     </ns:updateResourceOperationStatus>
