2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.bpmn.infrastructure.scripts
23 import org.camunda.bpm.engine.delegate.BpmnError
24 import org.camunda.bpm.engine.delegate.DelegateExecution
25 import org.onap.aai.domain.yang.L3Network
26 import org.onap.so.bpmn.common.scripts.AaiUtil
27 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
28 import org.onap.so.bpmn.common.scripts.ExceptionUtil
29 import org.onap.so.bpmn.common.scripts.MsoUtils
30 import org.onap.so.bpmn.common.scripts.NetworkUtils
31 import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
32 import org.onap.so.bpmn.common.scripts.VidUtils
33 import org.onap.so.bpmn.core.UrnPropertiesReader
34 import org.onap.so.bpmn.core.WorkflowException
35 import org.onap.so.bpmn.core.json.JsonUtils
36 import org.onap.so.client.HttpClient
37 import org.onap.so.client.HttpClientFactory
38 import org.onap.so.client.aai.AAIObjectType
39 import org.onap.so.client.aai.entities.AAIResultWrapper
40 import org.onap.so.client.aai.entities.Relationships
41 import org.onap.so.client.aai.entities.uri.AAIResourceUri
42 import org.onap.so.client.aai.entities.uri.AAIUriFactory
43 import org.onap.so.client.graphinventory.entities.uri.Depth
44 import org.onap.so.constants.Defaults
45 import org.onap.so.logger.MessageEnum
46 import org.onap.so.logger.MsoLogger
48 import org.springframework.web.util.UriUtils
49 import org.onap.so.utils.TargetEntity
51 import groovy.json.JsonOutput
52 import javax.ws.rs.core.Response
54 public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor {
55 private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteNetworkInstance.class);
57 String Prefix= "DELNWKI_"
58 String groovyClassName = "DoDeleteNetworkInstance"
59 ExceptionUtil exceptionUtil = new ExceptionUtil()
60 JsonUtils jsonUtil = new JsonUtils()
61 VidUtils vidUtils = new VidUtils(this)
62 NetworkUtils networkUtils = new NetworkUtils()
63 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
65 public InitializeProcessVariables(DelegateExecution execution){
66 /* Initialize all the process variables in this block */
68 execution.setVariable(Prefix + "networkRequest", "")
69 execution.setVariable(Prefix + "isSilentSuccess", false)
70 execution.setVariable(Prefix + "Success", false)
72 execution.setVariable(Prefix + "requestId", "")
73 execution.setVariable(Prefix + "source", "")
74 execution.setVariable(Prefix + "lcpCloudRegion", "")
75 execution.setVariable(Prefix + "networkInputs", "")
76 execution.setVariable(Prefix + "tenantId", "")
78 execution.setVariable(Prefix + "queryAAIResponse", "")
79 execution.setVariable(Prefix + "aaiReturnCode", "")
80 execution.setVariable(Prefix + "isAAIGood", false)
81 execution.setVariable(Prefix + "isVfRelationshipExist", false)
83 // AAI query Cloud Region
84 execution.setVariable(Prefix + "queryCloudRegionRequest","")
85 execution.setVariable(Prefix + "queryCloudRegionReturnCode","")
86 execution.setVariable(Prefix + "queryCloudRegionResponse","")
87 execution.setVariable(Prefix + "cloudRegionPo","")
88 execution.setVariable(Prefix + "cloudRegionSdnc","")
90 execution.setVariable(Prefix + "deleteNetworkRequest", "")
91 execution.setVariable(Prefix + "deleteNetworkResponse", "")
92 execution.setVariable(Prefix + "networkReturnCode", "")
93 execution.setVariable(Prefix + "rollbackNetworkRequest", "")
95 execution.setVariable(Prefix + "deleteSDNCRequest", "")
96 execution.setVariable(Prefix + "deleteSDNCResponse", "")
97 execution.setVariable(Prefix + "sdncReturnCode", "")
98 execution.setVariable(Prefix + "sdncResponseSuccess", false)
100 execution.setVariable(Prefix + "deactivateSDNCRequest", "")
101 execution.setVariable(Prefix + "deactivateSDNCResponse", "")
102 execution.setVariable(Prefix + "deactivateSdncReturnCode", "")
103 execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", "")
105 execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", "")
106 execution.setVariable(Prefix + "isException", false)
111 // **************************************************
112 // Pre or Prepare Request Section
113 // **************************************************
115 public void preProcessRequest (DelegateExecution execution) {
117 execution.setVariable("prefix",Prefix)
119 msoLogger.trace("Inside preProcessRequest() of " + groovyClassName + " Request ")
121 // initialize flow variables
122 InitializeProcessVariables(execution)
125 // get incoming message/input
126 execution.setVariable("action", "DELETE")
127 String deleteNetwork = execution.getVariable("bpmnRequest")
128 if (deleteNetwork != null) {
129 if (deleteNetwork.contains("requestDetails")) {
130 // JSON format request is sent, create xml
132 def prettyJson = JsonOutput.prettyPrint(deleteNetwork.toString())
133 msoLogger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson)
134 deleteNetwork = vidUtils.createXmlNetworkRequestInfra(execution, deleteNetwork)
136 } catch (Exception ex) {
137 String dataErrorMessage = " Invalid json format Request - " + ex.getMessage()
138 msoLogger.debug(dataErrorMessage)
139 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
142 // XML format request is sent
146 // vIPR format request is sent, create xml from individual variables
147 deleteNetwork = vidUtils.createXmlNetworkRequestInstance(execution)
150 deleteNetwork = utils.formatXml(deleteNetwork)
151 msoLogger.debug(deleteNetwork)
152 execution.setVariable(Prefix + "networkRequest", deleteNetwork)
153 msoLogger.debug(Prefix + "networkRequest - " + '\n' + deleteNetwork)
155 // validate 'backout-on-failure' to override 'mso.rollback'
156 boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, deleteNetwork)
157 execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled)
158 msoLogger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled)
160 String networkInputs = utils.getNodeXml(deleteNetwork, "network-inputs", false).replace("tag0:","").replace(":tag0","")
161 execution.setVariable(Prefix + "networkInputs", networkInputs)
164 String messageId = execution.getVariable("testMessageId") // for testing
165 if (messageId == null || messageId == "") {
166 messageId = UUID.randomUUID()
167 msoLogger.debug(Prefix + "messageId, random generated: " + messageId)
169 msoLogger.debug(Prefix + "messageId, pre-assigned: " + messageId)
171 execution.setVariable(Prefix + "messageId", messageId)
173 String source = utils.getNodeText(deleteNetwork, "source")
174 execution.setVariable(Prefix + "source", source)
175 msoLogger.debug(Prefix + "source - " + source)
177 String networkId = ""
178 if (utils.nodeExists(networkInputs, "network-id")) {
179 networkId = utils.getNodeText(networkInputs, "network-id")
180 if (networkId == null || networkId == "" || networkId == 'null' ) {
181 sendSyncError(execution)
182 // missing value of network-id
183 String dataErrorMessage = "network-request has missing 'network-id' element/value."
184 msoLogger.debug(" Invalid Request - " + dataErrorMessage)
185 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
189 // lcpCloudRegion or tenantId not sent, will be extracted from query AA&I
190 def lcpCloudRegion = null
191 if (utils.nodeExists(networkInputs, "aic-cloud-region")) {
192 lcpCloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
193 if (lcpCloudRegion == 'null') {
194 lcpCloudRegion = null
197 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
198 msoLogger.debug("lcpCloudRegion : " + lcpCloudRegion)
200 String tenantId = null
201 if (utils.nodeExists(networkInputs, "tenant-id")) {
202 tenantId = utils.getNodeText(networkInputs, "tenant-id")
203 if (tenantId == 'null') {
208 execution.setVariable(Prefix + "tenantId", tenantId)
209 msoLogger.debug("tenantId : " + tenantId)
211 String sdncVersion = execution.getVariable("sdncVersion")
212 msoLogger.debug("sdncVersion? : " + sdncVersion)
214 // PO Authorization Info / headers Authorization=
215 String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution)
218 def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
219 execution.setVariable("BasicAuthHeaderValuePO",encodedString)
220 execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
222 } catch (IOException ex) {
223 String dataErrorMessage = " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
224 msoLogger.debug(dataErrorMessage )
225 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
228 } catch (BpmnError e) {
231 } catch (Exception ex){
233 String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, PreProcessRequest() - " + ex.getMessage()
234 msoLogger.debug(exceptionMessage)
235 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
242 public void callRESTQueryAAI (DelegateExecution execution) {
244 execution.setVariable("prefix",Prefix)
246 msoLogger.debug(" ***** Inside callRESTQueryAAI() of DoDoDeleteNetworkInstance ***** " )
249 String networkInputs = execution.getVariable(Prefix + "networkInputs")
250 String networkId = utils.getNodeText(networkInputs, "network-id")
251 networkId = UriUtils.encode(networkId,"UTF-8")
252 ExceptionUtil exceptionUtil = new ExceptionUtil()
253 Boolean isVfRelationshipExist = false
255 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ALL)
256 Optional<L3Network> l3Network = getAAIClient().get(L3Network.class,uri);
257 AAIResultWrapper wrapper = getAAIClient().get(uri);
258 Optional<Relationships> relationships = wrapper.getRelationships()
260 if (l3Network.isPresent()) {
261 execution.setVariable(Prefix + "aaiReturnCode", 200)
262 execution.setVariable(Prefix + "queryAAIResponse", l3Network.get())
263 execution.setVariable(Prefix + "isAAIGood", true)
264 if (relationships.isPresent()){
265 if(relationships.get().getRelatedAAIUris(AAIObjectType.VF_MODULE).isEmpty()){
266 execution.setVariable(Prefix + "isVfRelationshipExist", true)
267 isVfRelationshipExist = true
268 String relationshipMessage = "AAI Query Success Response but 'vf-module' relationship exist, not allowed to delete: network Id: " + networkId
269 exceptionUtil.buildWorkflowException(execution, 2500, relationshipMessage)
271 List<AAIResourceUri> tenantURIList = relationships.get().getRelatedAAIUris(AAIObjectType.TENANT)
272 for(AAIResourceUri tenantURI: tenantURIList){
273 if(execution.getVariable(Prefix + "tenantId") == null) {
274 String tenantId = tenantURI.getURIKeys().get("tenant-id")
275 execution.setVariable(Prefix + "tenantId", tenantId)
276 msoLogger.debug(" Get AAI getTenantId() : " + tenantId)
279 List<AAIResourceUri> cloudRegionURIList = relationships.get().getRelatedAAIUris(AAIObjectType.CLOUD_REGION)
280 for(AAIResourceUri tenantURI: cloudRegionURIList){
281 if(execution.getVariable(Prefix + "lcpCloudRegion") == null) {
282 String lcpCloudRegion = tenantURI.getURIKeys().get("cloud-region-id")
283 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
284 msoLogger.debug(" Get AAI getCloudRegion() : " + lcpCloudRegion)
289 msoLogger.debug(Prefix + "isVfRelationshipExist - " + isVfRelationshipExist)
291 // not found // empty aai response
292 execution.setVariable(Prefix + "aaiReturnCode", 404)
293 execution.setVariable(Prefix + "isAAIGood", false)
294 execution.setVariable(Prefix + "isSilentSuccess", true)
295 msoLogger.debug(" AAI Query is Silent Success")
297 msoLogger.debug(" AAI Query call, isAAIGood? : " + execution.getVariable(Prefix + "isAAIGood"))
298 } catch (Exception ex) {
300 String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, callRESTQueryAAI() - " + ex.getMessage()
301 msoLogger.debug(exceptionMessage)
302 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
308 public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
310 execution.setVariable("prefix", Prefix)
312 msoLogger.debug(" ***** Inside callRESTQueryAAICloudRegion of DoDeleteNetworkInstance ***** " )
315 String networkInputs = execution.getVariable(Prefix + "networkInputs")
316 // String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
317 String cloudRegion = execution.getVariable(Prefix + "lcpCloudRegion")
319 AaiUtil aaiUtil = new AaiUtil(this)
321 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion)
322 def queryCloudRegionRequest = aaiUtil.createAaiUri(uri)
324 execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
326 String cloudRegionPo = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion)
327 String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "SDNC", cloudRegion)
329 if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) {
330 execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo)
331 execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc)
334 String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode")
335 msoLogger.debug(dataErrorMessage)
336 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
340 } catch (BpmnError e) {
343 } catch (Exception ex) {
345 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, callRESTQueryAAICloudRegion(). Unexpected Response from AAI - " + ex.getMessage()
346 msoLogger.debug(exceptionMessage)
347 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
353 public void prepareNetworkRequest (DelegateExecution execution) {
355 execution.setVariable("prefix", Prefix)
357 msoLogger.trace("Inside prepareNetworkRequest of DoDeleteNetworkInstance ")
358 ExceptionUtil exceptionUtil = new ExceptionUtil()
361 String networkRequest = execution.getVariable(Prefix + "networkRequest")
362 String cloudSiteId = execution.getVariable(Prefix + "cloudRegionPo")
363 String tenantId = execution.getVariable(Prefix + "tenantId")
365 L3Network l3Network = execution.getVariable(Prefix + "queryAAIResponse")
366 String networkType = l3Network.getNetworkType()
367 String networkId = l3Network.getNetworkId()
369 String networkStackId = ""
370 networkStackId = l3Network.getHeatStackId()
371 if (networkStackId == 'null' || networkStackId == "" || networkStackId == null) {
372 networkStackId = "force_delete"
375 String requestId = execution.getVariable("msoRequestId")
376 if (requestId != null) {
377 execution.setVariable("mso-request-id", requestId)
379 requestId = execution.getVariable("mso-request-id")
381 String serviceInstanceId = execution.getVariable("serviceInstanceId")
383 // Added new Elements
384 String messageId = execution.getVariable(Prefix + "messageId")
385 String notificationUrl = "" //TODO - is this coming from URN? What variable/value to use?
386 //String notificationUrl = execution.getVariable("URN_?????") //TODO - is this coming from URN? What variable/value to use?
388 String modelCustomizationUuid = ""
389 if (utils.nodeExists(networkRequest, "networkModelInfo")) {
390 String networkModelInfo = utils.getNodeXml(networkRequest, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
391 modelCustomizationUuid = utils.getNodeText(networkModelInfo, "modelCustomizationUuid")
393 modelCustomizationUuid = utils.getNodeText(networkRequest, "modelCustomizationId")
396 String deleteNetworkRequest = """
397 <deleteNetworkRequest>
398 <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
399 <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
400 <networkId>${MsoUtils.xmlEscape(networkId)}</networkId>
401 <networkStackId>${MsoUtils.xmlEscape(networkStackId)}</networkStackId>
402 <networkType>${MsoUtils.xmlEscape(networkType)}</networkType>
403 <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid>
404 <skipAAI>true</skipAAI>
406 <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
407 <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
409 <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
410 <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
411 </deleteNetworkRequest>
414 msoLogger.debug(Prefix + "deleteNetworkRequest - " + "\n" + deleteNetworkRequest)
416 String buildDeleteNetworkRequestAsString = utils.formatXml(deleteNetworkRequest)
417 msoLogger.debug(buildDeleteNetworkRequestAsString)
418 msoLogger.debug(Prefix + "deleteNetworkRequestAsString - " + "\n" + buildDeleteNetworkRequestAsString)
420 String restURL = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)
421 execution.setVariable("mso.adapters.network.rest.endpoint", restURL + "/" + networkId)
422 msoLogger.debug("mso.adapters.network.rest.endpoint - " + "\n" + restURL + "/" + networkId)
424 execution.setVariable(Prefix + "deleteNetworkRequest", buildDeleteNetworkRequestAsString)
425 msoLogger.debug(Prefix + "deleteNetworkRequest - " + "\n" + buildDeleteNetworkRequestAsString)
427 catch (Exception ex) {
429 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareNetworkRequest(). Unexpected Response from AAI - " + ex.getMessage()
430 msoLogger.debug(exceptionMessage)
431 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
437 * This method is used instead of an HTTP Connector task because the
438 * connector does not allow DELETE with a body.
440 public void sendRequestToVnfAdapter(DelegateExecution execution) {
441 def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' +
442 'execution=' + execution.getId() +
445 msoLogger.trace('Entered ' + method)
449 String vnfAdapterUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution)
450 String vnfAdapterRequest = execution.getVariable(Prefix + "deleteNetworkRequest")
452 URL url = new URL(vnfAdapterUrl)
453 HttpClient httpClient = new HttpClientFactory().newXmlClient(url, TargetEntity.OPENSTACK_ADAPTER)
454 httpClient.accept = "application/xml"
455 httpClient.addAdditionalHeader("Authorization", execution.getVariable("BasicAuthHeaderValuePO"))
456 Response response = httpClient.delete(vnfAdapterRequest)
458 execution.setVariable(Prefix + "deleteNetworkResponse", response.readEntity(String.class))
459 execution.setVariable(Prefix + "networkReturnCode", response.getStatus())
461 } catch (Exception ex) {
463 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, sendRequestToVnfAdapter() - " + ex.getMessage()
464 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
465 msoLogger.debug(exceptionMessage)
466 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
472 public void prepareSDNCRequest (DelegateExecution execution) {
474 execution.setVariable("prefix", Prefix)
476 msoLogger.trace("Inside prepareSDNCRequest of DoDeleteNetworkInstance ")
480 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
481 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
483 String networkId = ""
484 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
485 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
487 if (networkId == 'null') {networkId = ""}
489 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
491 // get/set 'msoRequestId' and 'mso-request-id'
492 String requestId = execution.getVariable("msoRequestId")
493 if (requestId != null) {
494 execution.setVariable("mso-request-id", requestId)
496 requestId = execution.getVariable("mso-request-id")
498 execution.setVariable(Prefix + "requestId", requestId)
499 msoLogger.debug(Prefix + "requestId " + requestId)
500 L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
502 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
503 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
504 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
505 String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "delete", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
506 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
507 msoLogger.debug(sndcTopologyDeleteRequesAsString)
508 execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
509 msoLogger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
511 } catch (Exception ex) {
513 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
514 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
515 msoLogger.debug(exceptionMessage)
516 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
522 public void prepareRpcSDNCRequest (DelegateExecution execution) {
524 execution.setVariable("prefix", Prefix)
526 msoLogger.trace("Inside prepareRpcSDNCRequest of DoDeleteNetworkInstance ")
530 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
531 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
533 String networkId = ""
534 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
535 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
537 if (networkId == 'null') {networkId = ""}
539 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
541 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
542 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
543 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
544 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null)
545 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
546 msoLogger.debug(sndcTopologyDeleteRequesAsString)
547 execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
548 msoLogger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
550 } catch (Exception ex) {
552 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
553 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
554 msoLogger.debug(exceptionMessage)
555 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
562 public void prepareRpcSDNCDeactivate(DelegateExecution execution) {
564 execution.setVariable("prefix",Prefix)
566 msoLogger.trace("Inside prepareRpcSDNCDeactivate() of DoDeleteNetworkInstance ")
571 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
572 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
573 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
574 String networkId = ""
575 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
576 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
578 if (networkId == 'null') {networkId = ""}
579 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
581 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null)
582 String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
583 execution.setVariable(Prefix + "deactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
584 msoLogger.debug(" Preparing request for RPC SDNC Topology deactivate - " + "\n" + sndcTopologyRollbackRpcRequestAsString)
587 } catch (Exception ex) {
588 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage()
589 msoLogger.debug(exceptionMessage)
590 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
596 // **************************************************
597 // Post or Validate Response Section
598 // **************************************************
600 public void validateNetworkResponse (DelegateExecution execution) {
602 execution.setVariable("prefix", Prefix)
604 msoLogger.trace("Inside validateNetworkResponse of DoDeleteNetworkInstance ")
607 String returnCode = execution.getVariable(Prefix + "networkReturnCode")
608 String networkResponse = execution.getVariable(Prefix + "deleteNetworkResponse")
610 msoLogger.debug(" Network Adapter responseCode: " + returnCode)
611 msoLogger.debug("Network Adapter Response - " + "\n" + networkResponse)
612 msoLogger.debug(networkResponse)
614 String errorMessage = ""
615 if (returnCode == "200") {
616 msoLogger.debug(" Network Adapter Response is successful - " + "\n" + networkResponse)
618 // prepare rollback data
619 String rollbackData = utils.getNodeXml(networkResponse, "rollback", false).replace("tag0:","").replace(":tag0","")
620 if ((rollbackData == null) || (rollbackData.isEmpty())) {
621 msoLogger.debug(" Network Adapter 'rollback' data is not Sent: " + "\n" + networkResponse)
622 execution.setVariable(Prefix + "rollbackNetworkRequest", "")
624 String rollbackNetwork =
625 """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.onap.so/network">
627 </NetworkAdapter:rollbackNetwork>"""
628 String rollbackNetworkXml = utils.formatXml(rollbackNetwork)
629 execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkXml)
630 msoLogger.debug(" Network Adapter rollback data - " + "\n" + rollbackNetworkXml)
634 } else { // network error
635 if (returnCode.toInteger() > 399 && returnCode.toInteger() < 600) { //4xx, 5xx
636 if (networkResponse.contains("deleteNetworkError") ) {
637 networkResponse = networkResponse.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '')
638 errorMessage = utils.getNodeText(networkResponse, "message")
639 errorMessage = "Received error from Network Adapter: " + errorMessage
640 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
642 } else { // CatchAll exception
643 if (returnCode == "500") {
644 errorMessage = "JBWEB000065: HTTP Status 500."
646 errorMessage = "Return code is " + returnCode
648 errorMessage = "Received error from Network Adapter: " + errorMessage
649 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
653 } else { // CatchAll exception
654 String dataErrorMessage = "Received error from Network Adapter. Return code is: " + returnCode
655 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
661 } catch (BpmnError e) {
664 } catch (Exception ex) {
666 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, validateNetworkResponse() - " + ex.getMessage()
667 msoLogger.debug(exceptionMessage)
668 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
674 public void validateSDNCResponse (DelegateExecution execution) {
676 execution.setVariable("prefix", Prefix)
678 msoLogger.trace("Inside validateSDNCResponse of DoDeleteNetworkInstance ")
680 String response = execution.getVariable(Prefix + "deleteSDNCResponse")
681 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
682 WorkflowException workflowException = execution.getVariable("WorkflowException")
684 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
685 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
687 String deleteSDNCResponseDecodeXml = execution.getVariable(Prefix + "deleteSDNCResponse")
688 deleteSDNCResponseDecodeXml = deleteSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
689 execution.setVariable(Prefix + "deleteSDNCResponse", deleteSDNCResponseDecodeXml)
691 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, prefix+'sdncResponseSuccess'
692 execution.setVariable(Prefix + "isSdncRollbackNeeded", true) //
693 execution.setVariable(Prefix + "isPONR", true)
694 msoLogger.debug("Successfully Validated SDNC Response")
696 msoLogger.debug("Did NOT Successfully Validated SDNC Response")
697 throw new BpmnError("MSOWorkflowException")
702 public void validateRpcSDNCDeactivateResponse (DelegateExecution execution) {
704 execution.setVariable("prefix",Prefix)
706 msoLogger.trace("Inside validateRpcSDNCDeactivateResponse() of DoDeleteNetworkInstance ")
708 String response = execution.getVariable(Prefix + "deactivateSDNCResponse")
709 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
710 WorkflowException workflowException = execution.getVariable("WorkflowException")
712 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
713 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
715 String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "deactivateSDNCResponse")
716 assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
717 execution.setVariable(Prefix + "deactivateSDNCResponse", assignSDNCResponseDecodeXml)
719 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, Prefix+'sdncResponseSuccess'
720 execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", true)
721 msoLogger.debug("Successfully Validated Rpc SDNC Activate Response")
724 msoLogger.debug("Did NOT Successfully Validated Rpc SDNC Deactivate Response")
725 throw new BpmnError("MSOWorkflowException")
730 public void prepareRpcSDNCDeactivateRollback(DelegateExecution execution) {
732 execution.setVariable("prefix",Prefix)
734 msoLogger.trace("Inside prepareRpcSDNCDeactivateRollback() of DoDeleteNetworkInstance ")
739 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
740 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
741 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
742 String deactivateSDNCResponse = execution.getVariable(Prefix + "deactivateSDNCResponse")
743 String networkId = utils.getNodeText(deactivateSDNCResponse, "network-id")
744 if (networkId == 'null') {networkId = ""}
745 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
747 // 2. prepare rollback topology via SDNC Adapter SUBFLOW call
748 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null)
749 String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
750 execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
751 msoLogger.debug(" Preparing request for RPC SDNC Topology 'activate-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyRollbackRpcRequestAsString)
754 } catch (Exception ex) {
755 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCDeactivateRollback() - " + ex.getMessage()
756 msoLogger.debug(exceptionMessage)
757 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
763 public void prepareRollbackData(DelegateExecution execution) {
765 execution.setVariable("prefix",Prefix)
767 msoLogger.trace("Inside prepareRollbackData() of DoDeleteNetworkInstance ")
771 Map<String, String> rollbackData = new HashMap<String, String>();
772 String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
773 if (rollbackNetworkRequest != null) {
774 if (rollbackNetworkRequest != "") {
775 rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
778 String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
779 if (rollbackDeactivateSDNCRequest != null) {
780 if (rollbackDeactivateSDNCRequest != "") {
781 rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
784 execution.setVariable("rollbackData", rollbackData)
785 msoLogger.debug("** rollbackData : " + rollbackData)
787 execution.setVariable("WorkflowException", execution.getVariable("WorkflowException"))
788 msoLogger.debug("** WorkflowException : " + execution.getVariable("WorkflowException"))
790 } catch (Exception ex) {
791 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRollbackData() - " + ex.getMessage()
792 msoLogger.debug(exceptionMessage)
793 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
799 public void postProcessResponse (DelegateExecution execution) {
801 execution.setVariable("prefix", Prefix)
803 msoLogger.trace("Inside postProcessResponse of DoDeleteNetworkInstance ")
807 msoLogger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException"))
808 if (execution.getVariable(Prefix + "isException") == false) {
809 execution.setVariable(Prefix + "Success", true)
810 execution.setVariable("WorkflowException", null)
811 if (execution.getVariable(Prefix + "isSilentSuccess") == true) {
812 execution.setVariable("rolledBack", false)
814 execution.setVariable("rolledBack", true)
816 prepareSuccessRollbackData(execution) // populate rollbackData
819 execution.setVariable(Prefix + "Success", false)
820 execution.setVariable("rollbackData", null)
821 String exceptionMessage = " Exception encountered in MSO Bpmn. "
822 if (execution.getVariable("workflowException") != null) { // Output of Rollback flow.
823 msoLogger.debug(" ***** workflowException: " + execution.getVariable("workflowException"))
824 WorkflowException wfex = execution.getVariable("workflowException")
825 exceptionMessage = wfex.getErrorMessage()
827 if (execution.getVariable(Prefix + "WorkflowException") != null) {
828 WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException")
829 exceptionMessage = pwfex.getErrorMessage()
831 if (execution.getVariable("WorkflowException") != null) {
832 WorkflowException pwfex = execution.getVariable("WorkflowException")
833 exceptionMessage = pwfex.getErrorMessage()
838 // going to the Main flow: a-la-carte or macro
839 msoLogger.debug(" ***** postProcessResponse(), BAD !!!")
840 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
841 throw new BpmnError("MSOWorkflowException")
845 } catch(BpmnError b){
846 msoLogger.debug("Rethrowing MSOWorkflowException")
849 } catch (Exception ex) {
851 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, postProcessResponse() - " + ex.getMessage()
852 msoLogger.debug(exceptionMessage)
853 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
854 throw new BpmnError("MSOWorkflowException")
860 public void prepareSuccessRollbackData(DelegateExecution execution) {
862 execution.setVariable("prefix",Prefix)
864 msoLogger.trace("Inside prepareSuccessRollbackData() of DoDeleteNetworkInstance ")
868 if (execution.getVariable("sdncVersion") != '1610') {
869 prepareRpcSDNCDeactivateRollback(execution)
870 prepareRpcSDNCUnassignRollback(execution)
872 prepareSDNCRollback(execution)
875 Map<String, String> rollbackData = new HashMap<String, String>();
876 String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
877 if (rollbackSDNCRequest != null) {
878 if (rollbackSDNCRequest != "") {
879 rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest"))
882 String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
883 if (rollbackNetworkRequest != null) {
884 if (rollbackNetworkRequest != "") {
885 rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
888 String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
889 if (rollbackDeactivateSDNCRequest != null) {
890 if (rollbackDeactivateSDNCRequest != "") {
891 rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
894 execution.setVariable("rollbackData", rollbackData)
896 msoLogger.debug("** rollbackData : " + rollbackData)
897 execution.setVariable("WorkflowException", null)
900 } catch (Exception ex) {
901 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage()
902 msoLogger.debug(exceptionMessage)
903 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
909 public void prepareRpcSDNCUnassignRollback(DelegateExecution execution) {
911 execution.setVariable("prefix",Prefix)
913 msoLogger.trace("Inside prepareRpcSDNCUnassignRollbac() of DoDeleteNetworkInstance ")
918 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
919 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
921 String deleteSDNCResponse = execution.getVariable(Prefix + "deleteSDNCResponse")
922 String networkId = utils.getNodeText(deleteSDNCResponse, "network-id")
923 if (networkId == 'null') {networkId = ""}
924 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
926 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
927 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
928 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
929 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null)
930 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
931 msoLogger.debug(sndcTopologyDeleteRequesAsString)
932 execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
933 msoLogger.debug(Prefix + "rollbackSDNCRequest" + "\n" + sndcTopologyDeleteRequesAsString)
934 msoLogger.debug(" Preparing request for RPC SDNC Topology 'assign-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString)
937 } catch (Exception ex) {
938 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCUnassignRollback() - " + ex.getMessage()
939 msoLogger.debug(exceptionMessage)
940 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
946 public void prepareSDNCRollback (DelegateExecution execution) {
948 execution.setVariable("prefix", Prefix)
950 msoLogger.trace("Inside prepareSDNCRollback of DoDeleteNetworkInstance ")
955 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
956 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
958 String networkId = ""
959 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
960 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
962 if (networkId == 'null') {networkId = ""}
964 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
966 // get/set 'msoRequestId' and 'mso-request-id'
967 String requestId = execution.getVariable("msoRequestId")
968 if (requestId != null) {
969 execution.setVariable("mso-request-id", requestId)
971 requestId = execution.getVariable("mso-request-id")
973 execution.setVariable(Prefix + "requestId", requestId)
975 L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
977 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
978 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
979 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
980 String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "rollback", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
981 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
982 msoLogger.debug(sndcTopologyDeleteRequesAsString)
983 execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
984 msoLogger.debug(Prefix + "rollbackSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
985 msoLogger.debug(" Preparing request for RPC SDNC Topology 'rollback-DisconnectNetworkRequest' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString)
988 } catch (Exception ex) {
990 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRollback() - " + ex.getMessage()
991 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
992 msoLogger.debug(exceptionMessage)
993 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
999 public void setExceptionFlag(DelegateExecution execution){
1001 execution.setVariable("prefix",Prefix)
1003 msoLogger.trace("Inside setExceptionFlag() of DoDeleteNetworkInstance ")
1007 execution.setVariable(Prefix + "isException", true)
1009 if (execution.getVariable("SavedWorkflowException1") != null) {
1010 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
1012 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
1014 msoLogger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException"))
1016 } catch(Exception ex){
1017 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance flow. setExceptionFlag(): " + ex.getMessage()
1018 msoLogger.debug(exceptionMessage)
1019 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
1025 // *******************************
1026 // Build Error Section
1027 // *******************************
1029 public void processJavaException(DelegateExecution execution){
1031 execution.setVariable("prefix",Prefix)
1033 msoLogger.debug("Caught a Java Exception")
1034 msoLogger.debug("Started processJavaException Method")
1035 msoLogger.debug("Variables List: " + execution.getVariables())
1036 execution.setVariable("UnexpectedError", "Caught a Java Lang Exception") // Adding this line temporarily until this flows error handling gets updated
1037 exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
1039 }catch(Exception e){
1040 msoLogger.debug("Caught Exception during processJavaException Method: " + e)
1041 execution.setVariable("UnexpectedError", "Exception in processJavaException method") // Adding this line temporarily until this flows error handling gets updated
1042 exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method")
1044 msoLogger.debug("Completed processJavaException Method of " + Prefix)