DoUpdateE2EServiceInstance groovy optimization 69/43669/1
authorYulian Han <elaine.hanyulian@huawei.com>
Thu, 19 Apr 2018 02:59:38 +0000 (10:59 +0800)
committerYulian Han <elaine.hanyulian@huawei.com>
Thu, 19 Apr 2018 02:59:38 +0000 (10:59 +0800)
Change-Id: Idaa55084f5ecb0dd3636c232cebc14fa5f0642f9
Issue-ID: SO-578
Signed-off-by: Yulian Han <elaine.hanyulian@huawei.com>
bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy
bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy

index 44e3b73..9540508 100644 (file)
@@ -22,6 +22,7 @@ package org.openecomp.mso.bpmn.infrastructure.scripts;
 import static org.apache.commons.lang3.StringUtils.*;\r
 import groovy.xml.XmlUtil\r
 import groovy.json.*\r
+import groovy.util.XmlParser\r
 \r
 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition\r
 import org.openecomp.mso.bpmn.core.domain.ServiceInstance\r
@@ -50,11 +51,7 @@ import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;\r
 import org.springframework.web.util.UriUtils;\r
 \r
-import org.w3c.dom.Document\r
-import org.w3c.dom.Element\r
-import org.w3c.dom.Node\r
-import org.w3c.dom.NodeList\r
-import org.xml.sax.InputSource\r
+\r
 /**\r
  * This groovy class supports the <class>DoUpdateE2EServiceInstance.bpmn</class> process.\r
  *\r
@@ -89,18 +86,12 @@ public class DoUpdateE2EServiceInstance extends AbstractServiceTaskProcessor {
        JsonUtils jsonUtil = new JsonUtils()\r
 \r
        public void preProcessRequest (DelegateExecution execution) {\r
-           //only for dug\r
-               execution.setVariable("isDebugLogEnabled","true")\r
-               execution.setVariable("unit_test", "true")\r
-               execution.setVariable("skipVFC", "true")\r
-               \r
-               def method = getClass().getSimpleName() + '.preProcessRequest(' +'execution=' + execution.getId() +')'\r
                def isDebugEnabled = execution.getVariable("isDebugLogEnabled")\r
+               \r
+               def method = getClass().getSimpleName() + '.preProcessRequest(' +'execution=' + execution.getId() +')'          \r
                utils.log("INFO","Entered " + method, isDebugEnabled)\r
                String msg = ""\r
                utils.log("INFO"," ***** Enter DoUpdateE2EServiceInstance preProcessRequest *****",  isDebugEnabled)\r
-               \r
-               utils.log("INFO","  unit test : " + execution.getVariable("unit_test"),  isDebugEnabled)        \r
 \r
                try {\r
                        execution.setVariable("prefix", Prefix)\r
@@ -139,89 +130,28 @@ public class DoUpdateE2EServiceInstance extends AbstractServiceTaskProcessor {
                        if (productFamilyId == null) {\r
                                execution.setVariable("productFamilyId", "")\r
                        }\r
-                       \r
-                       String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')\r
-                       if (isBlank(sdncCallbackUrl)) {\r
-                               msg = "URN_mso_workflow_sdncadapter_callback is null"\r
-                               utils.log("INFO", msg, isDebugEnabled)\r
-                               exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)\r
-                       }\r
-                       execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)\r
-                       utils.log("INFO","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled)\r
 \r
-                       //requestDetails.modelInfo.for AAI PUT servieInstanceData                       \r
-                       //requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData \r
                        String serviceInstanceName = execution.getVariable("serviceInstanceName")\r
-                       //String serviceInstanceId = execution.getVariable("serviceInstanceId")\r
                        String uuiRequest = execution.getVariable("uuiRequest")\r
                        utils.log("INFO","uuiRequest: " + uuiRequest, isDebugEnabled)\r
                        \r
-                       String modelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceDefId")\r
+                       String modelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceInvariantUuid")\r
                        utils.log("INFO","modelInvariantUuid: " + modelInvariantUuid, isDebugEnabled)\r
+                       execution.setVariable("modelInvariantUuid", modelInvariantUuid)\r
+                       execution.setVariable("model-invariant-id-target", modelInvariantUuid)\r
                        \r
-                       String modelUuid = jsonUtil.getJsonValue(uuiRequest, "service.templateId")\r
+                       String modelUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceUuid")\r
                        utils.log("INFO","modelUuid: " + modelUuid, isDebugEnabled)\r
+                       execution.setVariable("modelUuid", modelUuid)\r
+                       execution.setVariable("model-version-id-target", modelUuid)\r
                        \r
                        String serviceModelName = jsonUtil.getJsonValue(uuiRequest, "service.parameters.templateName")\r
                        utils.log("INFO","serviceModelName: " + serviceModelName, isDebugEnabled)\r
-                       execution.setVariable("serviceModelName", serviceModelName)\r
-                       \r
-            //aai serviceType and Role can be setted as fixed value now.\r
-                       String aaiServiceType = serviceType\r
-                       String aaiServiceRole = serviceType+"Role"\r
-                       \r
-                       execution.setVariable("modelInvariantUuid", modelInvariantUuid)\r
-                       execution.setVariable("model-invariant-id-target", modelInvariantUuid)\r
-                       execution.setVariable("modelUuid", modelUuid)\r
-                       execution.setVariable("model-version-id-target", modelUuid)\r
-\r
-                       //AAI PUT\r
-                       String oStatus = execution.getVariable("initialStatus") ?: ""\r
-                       utils.log("INFO","oStatus: " + oStatus, isDebugEnabled)\r
-                       if ("TRANSPORT".equalsIgnoreCase(serviceType))\r
-                       {\r
-                               oStatus = "Update"\r
+                       if(serviceModelName == null) {\r
+                               serviceModelName = ""\r
                        }\r
-\r
-                       String statusLine = isBlank(oStatus) ? "" : "<orchestration-status>${oStatus}</orchestration-status>"\r
-                       utils.log("INFO","statusLine: " + statusLine, isDebugEnabled)   \r
-                       AaiUtil aaiUriUtil = new AaiUtil(this)\r
-                       utils.log("INFO","start create aai uri: " + aaiUriUtil, isDebugEnabled) \r
-                       String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution)\r
-                       utils.log("INFO","aai_uri: " + aai_uri, isDebugEnabled)\r
-                       String namespace = aaiUriUtil.getNamespaceFromUri(aai_uri)\r
-                       utils.log("INFO","namespace: " + namespace, isDebugEnabled)\r
-                       /*\r
-                       String serviceInstanceData =\r
-                                       """<service-instance xmlns=\"${namespace}\">\r
-                               <service-instance-id>${serviceInstanceId}</service-instance-id>\r
-                               <service-instance-name>${serviceInstanceName}</service-instance-name>\r
-                                       <service-type>${aaiServiceType}</service-type>\r
-                                       <service-role>${aaiServiceRole}</service-role>\r
-                                       ${statusLine}\r
-                                   <model-invariant-id>${modelInvariantUuid}</model-invariant-id>\r
-                                   <model-version-id>${modelUuid}</model-version-id>\r
-                                       </service-instance>""".trim()\r
-            */\r
-            //begin only for test\r
-                       String serviceInstanceData =\r
-                                       """<service-instance xmlns=\"${namespace}\">\r
-                               <service-instance-id>${serviceInstanceId}</service-instance-id>\r
-                               <service-instance-name>${serviceInstanceName}</service-instance-name>\r
-                                       <service-type>${aaiServiceType}</service-type>\r
-                                       <service-role>${aaiServiceRole}</service-role>\r
-                                       ${statusLine}\r
-                                       </service-instance>""".trim()\r
-                       //end only for test\r
-                       execution.setVariable("serviceInstanceData", serviceInstanceData)\r
-                       utils.log("INFO","serviceInstanceData: " + serviceInstanceData, isDebugEnabled)\r
-                       utils.logAudit(serviceInstanceData)\r
-                       utils.log("INFO", " aai_uri " + aai_uri + " namespace:" + namespace, isDebugEnabled)\r
-                       utils.log("INFO", " 'payload' to create Service Instance in AAI - " + "\n" + serviceInstanceData, isDebugEnabled)\r
-                       \r
-                       execution.setVariable("serviceSDNCCreate", "false")\r
-                       execution.setVariable("operationStatus", "Waiting deploy resource...")                  \r
-\r
+                       execution.setVariable("serviceModelName", serviceModelName)\r
+                               \r
                } catch (BpmnError e) {\r
                        throw e;\r
                } catch (Exception ex){\r
@@ -253,101 +183,38 @@ public class DoUpdateE2EServiceInstance extends AbstractServiceTaskProcessor {
                                        utils.log("INFO", msg, isDebugEnabled)\r
                                        exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)\r
                                }\r
-                               else\r
-                               {\r
-                                       utils.log("INFO", "SI Data" + siData, isDebugEnabled)\r
-                                       \r
-                                       InputSource source = new InputSource(new StringReader(siData));\r
-                                       DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();\r
-                                       DocumentBuilder docBuilder = docFactory.newDocumentBuilder()\r
-                                       Document serviceXml = docBuilder.parse(source)\r
-                                       serviceXml.getDocumentElement().normalize()\r
-                                       \r
-                                       // Get Template uuid and version\r
-                                       if (utils.nodeExists(siData, "model-invariant-id") && utils.nodeExists(siData, "model-version-id") ) {\r
-                                           utils.log("INFO", "SI Data model-invariant-id and model-version-id exist:", isDebugEnabled)\r
-                                           def modelInvariantId  = serviceXml.getElementsByTagName("model-invariant-id").item(0).getTextContent()\r
-                                           def modelVersionId  = serviceXml.getElementsByTagName("model-version-id").item(0).getTextContent()\r
-                                           \r
-                                           // Set Original Template info\r
-                                           execution.setVariable("model-invariant-id-original", modelInvariantId)\r
-                                           execution.setVariable("model-version-id-original", modelVersionId)                                  \r
-                                       }\r
-                                       \r
-                                       //Confirm there are no related service instances (vnf/network or volume)\r
-                                       if (utils.nodeExists(siData, "relationship-list")) {\r
-                                               utils.log("INFO", "SI Data relationship-list exists:", isDebugEnabled)\r
-                                               \r
-                                               //test(siData)\r
-                                               NodeList nodeList = serviceXml.getElementsByTagName("relationship")\r
-                           JSONArray jArray = new JSONArray()\r
-                                               for (int x = 0; x < nodeList.getLength(); x++) {\r
-                                                       Node node = nodeList.item(x)\r
-                                                       if (node.getNodeType() == Node.ELEMENT_NODE) {\r
-                                                               Element eElement = (Element) node\r
-                                                               def e = eElement.getElementsByTagName("related-to").item(0).getTextContent()                                                                    //for ns\r
-                                                               if(e.equals("service-instance")){\r
-                                                                   def relatedObject = eElement.getElementsByTagName("related-link").item(0).getTextContent()\r
-                                                                       utils.log("INFO", "ServiceInstance Related NS :" + relatedObject, isDebugEnabled)\r
-                                    NodeList dataList = node.getChildNodes()\r
-                                    if(null != dataList) {\r
-                                        JSONObject jObj = new JSONObject()\r
-                                        for (int i = 0; i < dataList.getLength(); i++) {\r
-                                            Node dNode = dataList.item(i)\r
-                                            if(dNode.getNodeName() == "relationship-data") {\r
-                                                Element rDataEle = (Element)dNode\r
-                                                def eKey =  rDataEle.getElementsByTagName("relationship-key").item(0).getTextContent()\r
-                                                def eValue = rDataEle.getElementsByTagName("relationship-value").item(0).getTextContent()\r
-                                                if(eKey.equals("service-instance.service-instance-id")){\r
-                                                    jObj.put("resourceInstanceId", eValue)\r
-                                                }\r
-                                            }\r
-                                            else if(dNode.getNodeName() == "related-to-property"){\r
-                                                 Element rDataEle = (Element)dNode\r
-                                                 def eKey =  rDataEle.getElementsByTagName("property-key").item(0).getTextContent()\r
-                                                 def eValue = rDataEle.getElementsByTagName("property-value").item(0).getTextContent()\r
-                                                 if(eKey.equals("service-instance.service-instance-name")){\r
-                                                        jObj.put("resourceType", eValue)\r
-                                                    }\r
-                                            }\r
-                                        }\r
-                                        utils.log("INFO", "Relationship related to Resource:" + jObj.toString(), isDebugEnabled)\r
-                                        jArray.put(jObj)\r
-                                    }\r
-                                                       //for overlay/underlay\r
-                                                               }else if (e.equals("configuration")){\r
-                                    def relatedObject = eElement.getElementsByTagName("related-link").item(0).getTextContent()\r
-                                    utils.log("INFO", "ServiceInstance Related Configuration :" + relatedObject, isDebugEnabled)\r
-                                                                       NodeList dataList = node.getChildNodes()\r
-                                                                       if(null != dataList) {\r
-                                                                               JSONObject jObj = new JSONObject()\r
-                                                                               for (int i = 0; i < dataList.getLength(); i++) {\r
-                                                                                       Node dNode = dataList.item(i)\r
-                                                                                       if(dNode.getNodeName() == "relationship-data") {\r
-                                                                                               Element rDataEle = (Element)dNode\r
-                                                                                               def eKey =  rDataEle.getElementsByTagName("relationship-key").item(0).getTextContent()\r
-                                                                                               def eValue = rDataEle.getElementsByTagName("relationship-value").item(0).getTextContent()\r
-                                                                                               if(eKey.equals("configuration.configuration-id")){\r
-                                                                                                   jObj.put("resourceInstanceId", eValue)\r
-                                                                                               }\r
-                                                                                       }\r
-                                                                                       else if(dNode.getNodeName() == "related-to-property"){\r
-                                                    Element rDataEle = (Element)dNode\r
-                                                    def eKey =  rDataEle.getElementsByTagName("property-key").item(0).getTextContent()\r
-                                                    def eValue = rDataEle.getElementsByTagName("property-value").item(0).getTextContent()\r
-                                                    if(eKey.equals("configuration.configuration-type")){\r
-                                                           jObj.put("resourceType", eValue)\r
-                                                       }\r
-                                                                                       }\r
-                                                                               }\r
-                                                                               utils.log("INFO", "Relationship related to Resource:" + jObj.toString(), isDebugEnabled)\r
-                                        jArray.put(jObj)\r
-                                                                       }                                                                       \r
-                                                               }\r
-                                                       }\r
-                                               }\r
-                        execution.setVariable("serviceRelationShip", jArray.toString())\r
+\r
+                               utils.log("INFO", "SI Data" + siData, isDebugEnabled)                           \r
+\r
+                               // Get Template uuid and version\r
+                               if (utils.nodeExists(siData, "model-invariant-id") && utils.nodeExists(siData, "model-version-id") ) {\r
+                                       utils.log("INFO", "SI Data model-invariant-id and model-version-id exist:", isDebugEnabled)\r
+\r
+                                       def modelInvariantId  = utils.getNodeText1(siData, "model-invariant-id")\r
+                                       def modelVersionId  = utils.getNodeText1(siData, "model-version-id")\r
+\r
+                                       // Set Original Template info\r
+                                       execution.setVariable("model-invariant-id-original", modelInvariantId)\r
+                                       execution.setVariable("model-version-id-original", modelVersionId)\r
+                               }\r
+                               \r
+                               //get related service instances (vnf/network or volume) for delete\r
+                               if (utils.nodeExists(siData, "relationship-list")) {\r
+                                       utils.log("INFO", "SI Data relationship-list exists:", isDebugEnabled)\r
+\r
+                                       JSONArray jArray = new JSONArray()\r
+\r
+                                       XmlParser xmlParser = new XmlParser()\r
+                                       Node root = xmlParser.parseText(siData)\r
+                                       def relation_list = utils.getChildNode(root, 'relationship-list')\r
+                                       def relationships = utils.getIdenticalChildren(relation_list, 'relationship')                                   \r
+\r
+                                       for (def relation: relationships) {\r
+                                               def jObj = getRelationShipData(relation, isDebugEnabled)\r
+                                               jArray.put(jObj)\r
                                        }\r
+\r
+                                       execution.setVariable("serviceRelationShip", jArray.toString())\r
                                }\r
                        }else{\r
                                boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")\r
@@ -378,6 +245,42 @@ public class DoUpdateE2EServiceInstance extends AbstractServiceTaskProcessor {
                utils.log("INFO"," *** Exit postProcessAAIGET *** ", isDebugEnabled)\r
        }\r
        \r
+       private JSONObject getRelationShipData(node, isDebugEnabled){           \r
+               JSONObject jObj = new JSONObject()\r
+               \r
+               def relation  = utils.nodeToString(node)\r
+               def rt  = utils.getNodeText1(relation, "related-to")\r
+               \r
+               def rl  = utils.getNodeText1(relation, "related-link")\r
+               utils.log("INFO", "ServiceInstance Related NS/Configuration :" + rl, isDebugEnabled)\r
+               \r
+               def rl_datas = utils.getIdenticalChildren(node, "relationship-data")    \r
+               for(def rl_data : rl_datas) {\r
+                       def eKey =  utils.getChildNodeText(rl_data, "relationship-key")\r
+                       def eValue = utils.getChildNodeText(rl_data, "relationship-value")\r
+\r
+                       if ((rt == "service-instance" && eKey.equals("service-instance.service-instance-id"))\r
+                       //for overlay/underlay\r
+                       || (rt == "configuration" && eKey.equals("configuration.configuration-id"))){\r
+                               jObj.put("resourceInstanceId", eValue)\r
+                       }\r
+               }\r
+\r
+               def rl_props = utils.getIdenticalChildren(node, "related-to-property")\r
+               for(def rl_prop : rl_props) {\r
+                       def eKey =  utils.getChildNodeText(rl_prop, "property-key")\r
+                       def eValue = utils.getChildNodeText(rl_prop, "property-value")\r
+                       if((rt == "service-instance" && eKey.equals("service-instance.service-instance-name"))\r
+                       //for overlay/underlay\r
+                       || (rt == "configuration" && eKey.equals("configuration.configuration-type"))){\r
+                               jObj.put("resourceType", eValue)\r
+                       }\r
+               }\r
+\r
+               utils.log("INFO", "Relationship related to Resource:" + jObj.toString(), isDebugEnabled)                \r
+\r
+               return jObj\r
+       }\r
        \r
        public void preInitResourcesOperStatus(DelegateExecution execution){\r
         def isDebugEnabled = execution.getVariable("isDebugLogEnabled")\r
@@ -400,7 +303,7 @@ public class DoUpdateE2EServiceInstance extends AbstractServiceTaskProcessor {
 \r
                        List<Resource> resourceList = new ArrayList<String>()\r
                        List<Resource> addResourceList =  execution.getVariable("addResourceList")\r
-                       List<Resource> delResourceList =  execution.setVariable("delResourceList")\r
+                       List<Resource> delResourceList =  execution.getVariable("delResourceList")\r
                        resourceList.addAll(addResourceList)\r
                        resourceList.addAll(delResourceList)\r
                        for(Resource resource : resourceList){\r
@@ -520,27 +423,39 @@ public class DoUpdateE2EServiceInstance extends AbstractServiceTaskProcessor {
     \r
     public void preProcessForAddResource(DelegateExecution execution) {\r
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")\r
-\r
+               utils.log("INFO"," ***** preProcessForAddResource ***** ", isDebugEnabled)\r
+               \r
+           execution.setVariable("operationType", "create")\r
+       \r
+               utils.log("INFO"," *** Exit preProcessForAddResource *** ", isDebugEnabled)\r
     }\r
 \r
     public void postProcessForAddResource(DelegateExecution execution) {\r
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")\r
                utils.log("INFO"," ***** postProcessForAddResource ***** ", isDebugEnabled)\r
                \r
-               ServiceDecomposition serviceDecomposition_Target = execution.getVariable("serviceDecomposition_Target")\r
-               execution.setVariable("serviceDecomposition", serviceDecomposition_Target)\r
-    \r
+               execution.setVariable("operationType", "update")\r
+\r
                utils.log("INFO"," *** Exit postProcessForAddResource *** ", isDebugEnabled)\r
     }\r
     \r
     public void preProcessForDeleteResource(DelegateExecution execution) {\r
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")\r
+               utils.log("INFO"," ***** preProcessForDeleteResource ***** ", isDebugEnabled)\r
+               \r
+               execution.setVariable("operationType", "delete")\r
+               \r
+               utils.log("INFO"," *** Exit preProcessForDeleteResource *** ", isDebugEnabled)\r
 \r
     }\r
 \r
     public void postProcessForDeleteResource(DelegateExecution execution) {\r
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")\r
-    \r
+               utils.log("INFO"," ***** postProcessForDeleteResource ***** ", isDebugEnabled)\r
+               \r
+               execution.setVariable("operationType", "update")\r
+\r
+               utils.log("INFO"," *** Exit postProcessForDeleteResource *** ", isDebugEnabled)\r
     } \r
     \r
        public void preProcessAAIGET2(DelegateExecution execution) {\r
index 240b8d0..adea23a 100644 (file)
@@ -109,8 +109,8 @@ public class UpdateCustomE2EServiceInstance extends AbstractServiceTaskProcessor
 
                        utils.log("INFO", "uuiRequest:\n" + uuiRequest,  isDebugEnabled)
 
-                       //requestParameters
-                       String serviceType = jsonUtil.getJsonValue(uuiRequest, "service.parameters.serviceType")
+                       //serviceType for aai
+                       String serviceType = jsonUtil.getJsonValue(uuiRequest, "service.serviceType")
                        if (isBlank(serviceType)) {
                                msg = "Input serviceType is null"
                                utils.log("INFO", msg, isDebugEnabled)
@@ -119,6 +119,29 @@ public class UpdateCustomE2EServiceInstance extends AbstractServiceTaskProcessor
                                execution.setVariable("serviceType", serviceType)
                        }
                        
+                       /*
+                        * Extracting User Parameters from incoming Request and converting into a Map
+                        */
+                       def jsonSlurper = new JsonSlurper()
+                       def jsonOutput = new JsonOutput()
+
+                       Map reqMap = jsonSlurper.parseText(siRequest)
+
+                       //InputParams
+                       def userParamsList = reqMap.requestDetails?.requestParameters?.userParams
+
+                       Map<String, String> inputMap = [:]
+                       if (userParamsList) {
+                               for (def i=0; i<userParamsList.size(); i++) {
+                                       def userParams1 = userParamsList.get(i)
+                                       userParams1.each { param -> inputMap.put(param.key, param.value)}
+                               }
+                       }
+                       
+                       utils.log("DEBUG", "User Input Parameters map: " + inputMap.toString(), isDebugEnabled)
+                       execution.setVariable("serviceInputParams", inputMap)
+                       execution.setVariable("uuiRequest", inputMap.get("UUIRequest"))
+                       
                        //operationId
                        String operationId = jsonUtil.getJsonValue(siRequest, "operationId")
                        if (isBlank(operationId)) {
@@ -147,7 +170,7 @@ public class UpdateCustomE2EServiceInstance extends AbstractServiceTaskProcessor
                utils.log("DEBUG", " ======== STARTED prepareInitServiceOperationStatus Process ======== ", isDebugEnabled)
                try{
                        String serviceId = execution.getVariable("serviceInstanceId")
-                       String operationId = UUID.randomUUID().toString()
+                       String operationId = execution.getVariable("operationId")
                        String operationType = execution.getVariable("operationType")
                        String userId = ""
                        String result = "processing"
@@ -202,9 +225,9 @@ public class UpdateCustomE2EServiceInstance extends AbstractServiceTaskProcessor
                        String operationId = execution.getVariable("operationId")
                        String serviceInstanceId = execution.getVariable("serviceInstanceId")
                        // RESTResponse for API Handler (APIH) Reply Task
-                       String updateServiceRestRequest = """{"service":{"serviceId":"${serviceInstanceId}","operationId":"${operationId}"}}""".trim()
-                       utils.log("INFO", " sendSyncResponse to APIH:" + "\n" + updateServiceRestRequest, isDebugEnabled)
-                       sendWorkflowResponse(execution, 202, updateServiceRestRequest)
+                       String updateServiceResp = """{"operationId":"${operationId}"}""".trim()
+                       utils.log("INFO", " sendSyncResponse to APIH:" + "\n" + updateServiceResp, isDebugEnabled)
+                       sendWorkflowResponse(execution, 202, updateServiceResp)
                        execution.setVariable("sentSyncResponse", true)
 
                } catch (Exception ex) {