2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 
   6  * ================================================================================
 
   7  * Modifications Copyright (c) 2019 Samsung
 
   8  * ================================================================================
 
   9  * Licensed under the Apache License, Version 2.0 (the "License");
 
  10  * you may not use this file except in compliance with the License.
 
  11  * You may obtain a copy of the License at
 
  13  *      http://www.apache.org/licenses/LICENSE-2.0
 
  15  * Unless required by applicable law or agreed to in writing, software
 
  16  * distributed under the License is distributed on an "AS IS" BASIS,
 
  17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  18  * See the License for the specific language governing permissions and
 
  19  * limitations under the License.
 
  20  * ============LICENSE_END=========================================================
 
  23 package org.onap.so.bpmn.infrastructure.scripts
 
  25 import org.onap.so.logger.LoggingAnchor
 
  26 import org.camunda.bpm.engine.delegate.BpmnError
 
  27 import org.camunda.bpm.engine.delegate.DelegateExecution
 
  28 import org.onap.aai.domain.yang.L3Network
 
  29 import org.onap.so.bpmn.common.scripts.AaiUtil
 
  30 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
 
  31 import org.onap.so.bpmn.common.scripts.ExceptionUtil
 
  32 import org.onap.so.bpmn.common.scripts.MsoUtils
 
  33 import org.onap.so.bpmn.common.scripts.NetworkUtils
 
  34 import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
 
  35 import org.onap.so.bpmn.common.scripts.VidUtils
 
  36 import org.onap.so.bpmn.core.UrnPropertiesReader
 
  37 import org.onap.so.bpmn.core.WorkflowException
 
  38 import org.onap.so.bpmn.core.json.JsonUtils
 
  39 import org.onap.so.client.HttpClient
 
  40 import org.onap.so.client.HttpClientFactory
 
  41 import org.onap.so.client.aai.AAIObjectType
 
  42 import org.onap.so.client.aai.entities.AAIResultWrapper
 
  43 import org.onap.so.client.aai.entities.Relationships
 
  44 import org.onap.so.client.aai.entities.uri.AAIResourceUri
 
  45 import org.onap.so.client.aai.entities.uri.AAIUriFactory
 
  46 import org.onap.so.client.graphinventory.entities.uri.Depth
 
  47 import org.onap.so.constants.Defaults
 
  48 import org.onap.logging.filter.base.ErrorCode
 
  49 import org.onap.so.logger.MessageEnum
 
  50 import org.slf4j.Logger
 
  51 import org.slf4j.LoggerFactory
 
  53 import org.springframework.web.util.UriUtils
 
  54 import org.onap.logging.filter.base.ONAPComponents;
 
  56 import groovy.json.JsonOutput
 
  57 import javax.ws.rs.core.Response
 
  59 public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor {
 
  60     private static final Logger logger = LoggerFactory.getLogger( DoDeleteNetworkInstance.class);
 
  62     String Prefix= "DELNWKI_"
 
  63     String groovyClassName = "DoDeleteNetworkInstance"
 
  64     ExceptionUtil exceptionUtil = new ExceptionUtil()
 
  65     JsonUtils jsonUtil = new JsonUtils()
 
  66     VidUtils vidUtils = new VidUtils(this)
 
  67     NetworkUtils networkUtils = new NetworkUtils()
 
  68     SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
 
  70     public InitializeProcessVariables(DelegateExecution execution){
 
  71         /* Initialize all the process variables in this block */
 
  73         execution.setVariable(Prefix + "networkRequest", "")
 
  74         execution.setVariable(Prefix + "isSilentSuccess", false)
 
  75         execution.setVariable(Prefix + "Success", false)
 
  77         execution.setVariable(Prefix + "requestId", "")
 
  78         execution.setVariable(Prefix + "source", "")
 
  79         execution.setVariable(Prefix + "lcpCloudRegion", "")
 
  80         execution.setVariable(Prefix + "networkInputs", "")
 
  81         execution.setVariable(Prefix + "tenantId", "")
 
  83         execution.setVariable(Prefix + "queryAAIResponse", "")
 
  84         execution.setVariable(Prefix + "aaiReturnCode", "")
 
  85         execution.setVariable(Prefix + "isAAIGood", false)
 
  86         execution.setVariable(Prefix + "isVfRelationshipExist", false)
 
  88         // AAI query Cloud Region
 
  89         execution.setVariable(Prefix + "queryCloudRegionRequest","")
 
  90         execution.setVariable(Prefix + "queryCloudRegionReturnCode","")
 
  91         execution.setVariable(Prefix + "queryCloudRegionResponse","")
 
  92         execution.setVariable(Prefix + "cloudRegionPo","")
 
  93         execution.setVariable(Prefix + "cloudRegionSdnc","")
 
  95         execution.setVariable(Prefix + "deleteNetworkRequest", "")
 
  96         execution.setVariable(Prefix + "deleteNetworkResponse", "")
 
  97         execution.setVariable(Prefix + "networkReturnCode", "")
 
  98         execution.setVariable(Prefix + "rollbackNetworkRequest", "")
 
 100         execution.setVariable(Prefix + "deleteSDNCRequest", "")
 
 101         execution.setVariable(Prefix + "deleteSDNCResponse", "")
 
 102         execution.setVariable(Prefix + "sdncReturnCode", "")
 
 103         execution.setVariable(Prefix + "sdncResponseSuccess", false)
 
 105         execution.setVariable(Prefix + "deactivateSDNCRequest", "")
 
 106         execution.setVariable(Prefix + "deactivateSDNCResponse", "")
 
 107         execution.setVariable(Prefix + "deactivateSdncReturnCode", "")
 
 108         execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", "")
 
 110         execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", "")
 
 111         execution.setVariable(Prefix + "isException", false)
 
 116     // **************************************************
 
 117     //     Pre or Prepare Request Section
 
 118     // **************************************************
 
 120     public void preProcessRequest (DelegateExecution execution) {
 
 122         execution.setVariable("prefix",Prefix)
 
 124         logger.trace("Inside preProcessRequest() of " + groovyClassName + " Request ")
 
 126         // initialize flow variables
 
 127         InitializeProcessVariables(execution)
 
 130             // get incoming message/input
 
 131             execution.setVariable("action", "DELETE")
 
 132             String deleteNetwork = execution.getVariable("bpmnRequest")
 
 133             if (deleteNetwork != null) {
 
 134                 if (deleteNetwork.contains("requestDetails")) {
 
 135                     // JSON format request is sent, create xml
 
 137                         def prettyJson = JsonOutput.prettyPrint(deleteNetwork.toString())
 
 138                         logger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson)
 
 139                         deleteNetwork =  vidUtils.createXmlNetworkRequestInfra(execution, deleteNetwork)
 
 141                     } catch (Exception ex) {
 
 142                         String dataErrorMessage = " Invalid json format Request - " + ex.getMessage()
 
 143                         logger.debug(dataErrorMessage)
 
 144                         exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 147                     // XML format request is sent
 
 151                 // vIPR format request is sent, create xml from individual variables
 
 152                 deleteNetwork = vidUtils.createXmlNetworkRequestInstance(execution)
 
 155             deleteNetwork = utils.formatXml(deleteNetwork)
 
 156             logger.debug(deleteNetwork)
 
 157             execution.setVariable(Prefix + "networkRequest", deleteNetwork)
 
 158             logger.debug(Prefix + "networkRequest - " + '\n' + deleteNetwork)
 
 160             // validate 'backout-on-failure' to override 'mso.rollback'
 
 161             boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, deleteNetwork)
 
 162             execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled)
 
 163             logger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled)
 
 165             String networkInputs = utils.getNodeXml(deleteNetwork, "network-inputs", false).replace("tag0:","").replace(":tag0","")
 
 166             execution.setVariable(Prefix + "networkInputs", networkInputs)
 
 169             String messageId = execution.getVariable("testMessageId")  // for testing
 
 170             if (messageId == null || messageId == "") {
 
 171                 messageId = UUID.randomUUID()
 
 172                 logger.debug(Prefix + "messageId, random generated: " + messageId)
 
 174                 logger.debug(Prefix + "messageId, pre-assigned: " + messageId)
 
 176             execution.setVariable(Prefix + "messageId", messageId)
 
 178             String source = utils.getNodeText(deleteNetwork, "source")
 
 179             execution.setVariable(Prefix + "source", source)
 
 180             logger.debug(Prefix + "source - " + source)
 
 182             String networkId = ""
 
 183             if (utils.nodeExists(networkInputs, "network-id")) {
 
 184                 networkId = utils.getNodeText(networkInputs, "network-id")
 
 185                 if (networkId == null || networkId == "" || networkId == 'null' ) {
 
 186                     sendSyncError(execution)
 
 187                     // missing value of network-id
 
 188                     String dataErrorMessage = "network-request has missing 'network-id' element/value."
 
 189                     logger.debug(" Invalid Request - " + dataErrorMessage)
 
 190                     exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 194             // lcpCloudRegion or tenantId not sent, will be extracted from query AA&I
 
 195             def lcpCloudRegion = null
 
 196             if (utils.nodeExists(networkInputs, "aic-cloud-region")) {
 
 197                 lcpCloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
 
 198                 if (lcpCloudRegion == 'null') {
 
 199                     lcpCloudRegion = null
 
 202             execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
 
 203             logger.debug("lcpCloudRegion : " + lcpCloudRegion)
 
 205             String tenantId = null
 
 206             if (utils.nodeExists(networkInputs, "tenant-id")) {
 
 207                 tenantId = utils.getNodeText(networkInputs, "tenant-id")
 
 208                 if (tenantId == 'null') {
 
 213             execution.setVariable(Prefix + "tenantId", tenantId)
 
 214             logger.debug("tenantId : " + tenantId)
 
 216             String sdncVersion = execution.getVariable("sdncVersion")
 
 217             logger.debug("sdncVersion? : " + sdncVersion)
 
 219             // PO Authorization Info / headers Authorization=
 
 220             String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution)
 
 223                 def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
 
 224                 execution.setVariable("BasicAuthHeaderValuePO",encodedString)
 
 225                 execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
 
 227             } catch (IOException ex) {
 
 228                 String dataErrorMessage = " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
 
 229                 logger.debug(dataErrorMessage )
 
 230                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 233         } catch (BpmnError e) {
 
 236         } catch (Exception ex){
 
 238             String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, PreProcessRequest() - " + ex.getMessage()
 
 239             logger.debug(exceptionMessage)
 
 240             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 247     public void callRESTQueryAAI (DelegateExecution execution) {
 
 249         execution.setVariable("prefix",Prefix)
 
 251         logger.debug(" ***** Inside callRESTQueryAAI() of DoDoDeleteNetworkInstance ***** " )
 
 254         String networkInputs  = execution.getVariable(Prefix + "networkInputs")
 
 255         String networkId   = utils.getNodeText(networkInputs, "network-id")
 
 256         networkId = UriUtils.encode(networkId,"UTF-8")
 
 257         ExceptionUtil exceptionUtil = new ExceptionUtil()
 
 258         Boolean isVfRelationshipExist = false
 
 260             AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ALL)
 
 261             Optional<L3Network> l3Network = getAAIClient().get(L3Network.class,uri);
 
 262             AAIResultWrapper wrapper = getAAIClient().get(uri);
 
 263             Optional<Relationships> relationships = wrapper.getRelationships()
 
 265             if (l3Network.isPresent()) {
 
 266                 execution.setVariable(Prefix + "aaiReturnCode", 200)
 
 267                 execution.setVariable(Prefix + "queryAAIResponse", l3Network.get())
 
 268                 execution.setVariable(Prefix + "isAAIGood", true)
 
 269                 if (relationships.isPresent()){
 
 270                     if(!relationships.get().getRelatedAAIUris(AAIObjectType.VF_MODULE).isEmpty()){
 
 271                         execution.setVariable(Prefix + "isVfRelationshipExist", true)
 
 272                         isVfRelationshipExist = true
 
 273                         String relationshipMessage = "AAI Query Success Response but 'vf-module' relationship exist, not allowed to delete: network Id: " + networkId
 
 274                         exceptionUtil.buildWorkflowException(execution, 2500, relationshipMessage)
 
 276                         List<AAIResourceUri> tenantURIList = relationships.get().getRelatedAAIUris(AAIObjectType.TENANT)
 
 277                         for(AAIResourceUri tenantURI: tenantURIList){
 
 278                             if(execution.getVariable(Prefix + "tenantId") == null) {
 
 279                                 String tenantId = tenantURI.getURIKeys().get("tenant-id")
 
 280                                 execution.setVariable(Prefix + "tenantId", tenantId)
 
 281                                 logger.debug(" Get AAI getTenantId()  : " + tenantId)
 
 284                         List<AAIResourceUri> cloudRegionURIList = relationships.get().getRelatedAAIUris(AAIObjectType.CLOUD_REGION)
 
 285                         for(AAIResourceUri tenantURI: cloudRegionURIList){
 
 286                             if(execution.getVariable(Prefix + "lcpCloudRegion") == null) {
 
 287                                 String lcpCloudRegion = tenantURI.getURIKeys().get("cloud-region-id")
 
 288                                 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
 
 289                                 logger.debug(" Get AAI getCloudRegion()  : " + lcpCloudRegion)
 
 294                 logger.debug(Prefix + "isVfRelationshipExist - " + isVfRelationshipExist)
 
 296                 // not found // empty aai response
 
 297                 execution.setVariable(Prefix + "aaiReturnCode", 404)
 
 298                 execution.setVariable(Prefix + "isAAIGood", false)
 
 299                 execution.setVariable(Prefix + "isSilentSuccess", true)
 
 300                 logger.debug(" AAI Query is Silent Success")
 
 302             logger.debug(" AAI Query call, isAAIGood? : " + execution.getVariable(Prefix + "isAAIGood"))
 
 303         } catch (Exception ex) {
 
 305             String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, callRESTQueryAAI() - " + ex.getMessage()
 
 306             logger.debug(exceptionMessage)
 
 307             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 313     public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
 
 315         execution.setVariable("prefix", Prefix)
 
 317         logger.debug(" ***** Inside callRESTQueryAAICloudRegion of DoDeleteNetworkInstance ***** " )
 
 320             String networkInputs  = execution.getVariable(Prefix + "networkInputs")
 
 321             // String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
 
 322             String cloudRegion = execution.getVariable(Prefix + "lcpCloudRegion")
 
 324             AaiUtil aaiUtil = new AaiUtil(this)
 
 326             AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion)
 
 327             def queryCloudRegionRequest = aaiUtil.createAaiUri(uri)
 
 329             execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
 
 331             String cloudRegionPo = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "PO", cloudRegion)
 
 332             String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "SDNC", cloudRegion)
 
 334             if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) {
 
 335                 execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo)
 
 336                 execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc)
 
 339                 String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode")
 
 340                 logger.debug(dataErrorMessage)
 
 341                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 345         } catch (BpmnError e) {
 
 348         } catch (Exception ex) {
 
 350             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, callRESTQueryAAICloudRegion(). Unexpected Response from AAI - " + ex.getMessage()
 
 351             logger.debug(exceptionMessage)
 
 352             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 358     public void prepareNetworkRequest (DelegateExecution execution) {
 
 360         execution.setVariable("prefix", Prefix)
 
 362         logger.trace("Inside prepareNetworkRequest of DoDeleteNetworkInstance ")
 
 363         ExceptionUtil exceptionUtil = new ExceptionUtil()
 
 366             String networkRequest = execution.getVariable(Prefix + "networkRequest")
 
 367             String cloudSiteId = execution.getVariable(Prefix + "cloudRegionPo")
 
 368             String tenantId = execution.getVariable(Prefix + "tenantId")
 
 370             L3Network l3Network = execution.getVariable(Prefix + "queryAAIResponse")
 
 371             String networkType = l3Network.getNetworkType()
 
 372             String networkId = l3Network.getNetworkId()
 
 374             String networkStackId = ""
 
 375             networkStackId = l3Network.getHeatStackId()
 
 376             if (networkStackId == 'null' || networkStackId == "" || networkStackId == null) {
 
 377                 networkStackId = "force_delete"
 
 380             String requestId = execution.getVariable("msoRequestId")
 
 381             if (requestId != null) {
 
 382                 execution.setVariable("mso-request-id", requestId)
 
 384                 requestId = execution.getVariable("mso-request-id")
 
 386             String serviceInstanceId = execution.getVariable("serviceInstanceId")
 
 388             // Added new Elements
 
 389             String messageId = execution.getVariable(Prefix + "messageId")
 
 390             String notificationUrl = ""                                   //TODO - is this coming from URN? What variable/value to use?
 
 391             //String notificationUrl = execution.getVariable("URN_?????") //TODO - is this coming from URN? What variable/value to use?
 
 393             String modelCustomizationUuid = ""
 
 394             if (utils.nodeExists(networkRequest, "networkModelInfo")) {
 
 395                 String networkModelInfo = utils.getNodeXml(networkRequest, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
 
 396                 modelCustomizationUuid = utils.getNodeText(networkModelInfo, "modelCustomizationUuid")
 
 398                 modelCustomizationUuid = utils.getNodeText(networkRequest, "modelCustomizationId")
 
 401             String deleteNetworkRequest = """
 
 402                                           <deleteNetworkRequest>
 
 403                                             <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
 
 404                                             <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
 
 405                                             <networkId>${MsoUtils.xmlEscape(networkId)}</networkId>
 
 406                                                 <networkStackId>${MsoUtils.xmlEscape(networkStackId)}</networkStackId>
 
 407                                             <networkType>${MsoUtils.xmlEscape(networkType)}</networkType>
 
 408                                                 <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid>
 
 409                                                 <skipAAI>true</skipAAI>
 
 411                                                <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
 
 412                                                <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
 
 414                                                 <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
 
 415                                                 <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
 
 416                                           </deleteNetworkRequest>
 
 419             logger.debug(Prefix + "deleteNetworkRequest - " + "\n" +  deleteNetworkRequest)
 
 421             String buildDeleteNetworkRequestAsString = utils.formatXml(deleteNetworkRequest)
 
 422             logger.debug(buildDeleteNetworkRequestAsString)
 
 423             logger.debug(Prefix + "deleteNetworkRequestAsString - " + "\n" +  buildDeleteNetworkRequestAsString)
 
 425             String restURL = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)
 
 426             execution.setVariable("mso.adapters.network.rest.endpoint", restURL + "/" + networkId)
 
 427             logger.debug("mso.adapters.network.rest.endpoint - " + "\n" +  restURL + "/" + networkId)
 
 429             execution.setVariable(Prefix + "deleteNetworkRequest", buildDeleteNetworkRequestAsString)
 
 430             logger.debug(Prefix + "deleteNetworkRequest - " + "\n" +  buildDeleteNetworkRequestAsString)
 
 432         catch (Exception ex) {
 
 434             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareNetworkRequest(). Unexpected Response from AAI - " + ex.getMessage()
 
 435             logger.debug(exceptionMessage)
 
 436             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 442      * This method is used instead of an HTTP Connector task because the
 
 443      * connector does not allow DELETE with a body.
 
 445     public void sendRequestToVnfAdapter(DelegateExecution execution) {
 
 446         def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' +
 
 447                 'execution=' + execution.getId() +
 
 450         logger.trace('Entered ' + method)
 
 454             String vnfAdapterUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution)
 
 455             String vnfAdapterRequest = execution.getVariable(Prefix + "deleteNetworkRequest")
 
 457             URL url = new URL(vnfAdapterUrl)
 
 458             HttpClient httpClient = new HttpClientFactory().newXmlClient(url, ONAPComponents.OPENSTACK_ADAPTER)
 
 459             httpClient.accept = "application/xml"
 
 460             httpClient.addAdditionalHeader("Authorization", execution.getVariable("BasicAuthHeaderValuePO"))
 
 461             Response response = httpClient.delete(vnfAdapterRequest)
 
 463             execution.setVariable(Prefix + "deleteNetworkResponse", response.readEntity(String.class))
 
 464             execution.setVariable(Prefix + "networkReturnCode", response.getStatus())
 
 466         } catch (Exception ex) {
 
 468             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, sendRequestToVnfAdapter() - " + ex.getMessage()
 
 469             logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
 
 470                     "BPMN", ErrorCode.UnknownError.getValue(),
 
 471                     "Exception is:\n" + ex);
 
 472             logger.debug(exceptionMessage)
 
 473             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 479     public void prepareSDNCRequest (DelegateExecution execution) {
 
 481         execution.setVariable("prefix", Prefix)
 
 483         logger.trace("Inside prepareSDNCRequest of DoDeleteNetworkInstance ")
 
 487             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
 
 488             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
 
 490             String networkId = ""
 
 491             if (utils.nodeExists(deleteNetworkInput, "network-id")) {
 
 492                 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
 
 494             if (networkId == 'null') {networkId = ""}
 
 496             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
 
 498             // get/set 'msoRequestId' and 'mso-request-id'
 
 499             String requestId = execution.getVariable("msoRequestId")
 
 500             if (requestId != null) {
 
 501                 execution.setVariable("mso-request-id", requestId)
 
 503                 requestId = execution.getVariable("mso-request-id")
 
 505             execution.setVariable(Prefix + "requestId", requestId)
 
 506             logger.debug(Prefix + "requestId " + requestId)
 
 507             L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
 
 509             SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
 
 510             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
 
 511             // 1. prepare delete topology via SDNC Adapter SUBFLOW call
 
 512             String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "delete", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
 
 513             String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
 
 514             logger.debug(sndcTopologyDeleteRequesAsString)
 
 515             execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
 
 516             logger.debug(Prefix + "deleteSDNCRequest - " + "\n" +  sndcTopologyDeleteRequesAsString)
 
 518         } catch (Exception ex) {
 
 520             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
 
 521             logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
 
 522                     "BPMN", ErrorCode.UnknownError.getValue(),
 
 523                     "Exception is:\n" + ex);
 
 524             logger.debug(exceptionMessage)
 
 525             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 531     public void prepareRpcSDNCRequest (DelegateExecution execution) {
 
 533         execution.setVariable("prefix", Prefix)
 
 535         logger.trace("Inside prepareRpcSDNCRequest of DoDeleteNetworkInstance ")
 
 539             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
 
 540             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
 
 542             String networkId = ""
 
 543             if (utils.nodeExists(deleteNetworkInput, "network-id")) {
 
 544                 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
 
 546             if (networkId == 'null') {networkId = ""}
 
 548             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
 
 550             SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
 
 551             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
 
 552             // 1. prepare delete topology via SDNC Adapter SUBFLOW call
 
 553             String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null)
 
 554             String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
 
 555             logger.debug(sndcTopologyDeleteRequesAsString)
 
 556             execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
 
 557             logger.debug(Prefix + "deleteSDNCRequest - " + "\n" +  sndcTopologyDeleteRequesAsString)
 
 559         } catch (Exception ex) {
 
 561             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
 
 562             logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
 
 563                     "BPMN", ErrorCode.UnknownError.getValue(),
 
 564                     "Exception is:\n" + ex);
 
 565             logger.debug(exceptionMessage)
 
 566             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 573     public void prepareRpcSDNCDeactivate(DelegateExecution execution) {
 
 575         execution.setVariable("prefix",Prefix)
 
 577         logger.trace("Inside prepareRpcSDNCDeactivate() of DoDeleteNetworkInstance ")
 
 582             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
 
 583             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
 
 584             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
 
 585             String networkId = ""
 
 586             if (utils.nodeExists(deleteNetworkInput, "network-id")) {
 
 587                 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
 
 589             if (networkId == 'null') {networkId = ""}
 
 590             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
 
 592             String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null)
 
 593             String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
 
 594             execution.setVariable(Prefix + "deactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
 
 595             logger.debug(" Preparing request for RPC SDNC Topology deactivate - " + "\n" +  sndcTopologyRollbackRpcRequestAsString)
 
 598         } catch (Exception ex) {
 
 599             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage()
 
 600             logger.debug(exceptionMessage)
 
 601             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
 607     public void validateSDNCResponse (DelegateExecution execution) {
 
 609         execution.setVariable("prefix", Prefix)
 
 611         logger.trace("Inside validateSDNCResponse of DoDeleteNetworkInstance ")
 
 613         String response = execution.getVariable(Prefix + "deleteSDNCResponse")
 
 614         boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
 
 615         WorkflowException workflowException = execution.getVariable("WorkflowException")
 
 617         SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
 
 618         sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
 620         String deleteSDNCResponseDecodeXml = execution.getVariable(Prefix + "deleteSDNCResponse")
 
 621         deleteSDNCResponseDecodeXml = deleteSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
 
 622         execution.setVariable(Prefix + "deleteSDNCResponse", deleteSDNCResponseDecodeXml)
 
 624         if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) {  // from sdnc util, prefix+'sdncResponseSuccess'
 
 625             execution.setVariable(Prefix + "isSdncRollbackNeeded", true)      //
 
 626             execution.setVariable(Prefix + "isPONR", true)
 
 627             logger.debug("Successfully Validated SDNC Response")
 
 629             logger.debug("Did NOT Successfully Validated SDNC Response")
 
 630             throw new BpmnError("MSOWorkflowException")
 
 635     public void validateRpcSDNCDeactivateResponse (DelegateExecution execution) {
 
 637         execution.setVariable("prefix",Prefix)
 
 639         logger.trace("Inside validateRpcSDNCDeactivateResponse() of DoDeleteNetworkInstance ")
 
 641         String response = execution.getVariable(Prefix + "deactivateSDNCResponse")
 
 642         boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
 
 643         WorkflowException workflowException = execution.getVariable("WorkflowException")
 
 645         SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
 
 646         sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
 648         String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "deactivateSDNCResponse")
 
 649         assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
 
 650         execution.setVariable(Prefix + "deactivateSDNCResponse", assignSDNCResponseDecodeXml)
 
 652         if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) {  // from sdnc util, Prefix+'sdncResponseSuccess'
 
 653             execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", true)
 
 654             logger.debug("Successfully Validated Rpc SDNC Activate Response")
 
 657             logger.debug("Did NOT Successfully Validated Rpc SDNC Deactivate Response")
 
 658             throw new BpmnError("MSOWorkflowException")
 
 663     public void prepareRpcSDNCDeactivateRollback(DelegateExecution execution) {
 
 665         execution.setVariable("prefix",Prefix)
 
 667         logger.trace("Inside prepareRpcSDNCDeactivateRollback() of DoDeleteNetworkInstance ")
 
 672             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
 
 673             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
 
 674             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
 
 675             String deactivateSDNCResponse = execution.getVariable(Prefix + "deactivateSDNCResponse")
 
 676             String networkId = utils.getNodeText(deactivateSDNCResponse, "network-id")
 
 677             if (networkId == 'null') {networkId = ""}
 
 678             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
 
 680             // 2. prepare rollback topology via SDNC Adapter SUBFLOW call
 
 681             String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null)
 
 682             String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
 
 683             execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
 
 684             logger.debug(" Preparing request for RPC SDNC Topology 'activate-CreateNetworkInstance' rollback . . . - " + "\n" +  sndcTopologyRollbackRpcRequestAsString)
 
 687         } catch (Exception ex) {
 
 688             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCDeactivateRollback() - " + ex.getMessage()
 
 689             logger.debug(exceptionMessage)
 
 690             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
 696     public void prepareRollbackData(DelegateExecution execution) {
 
 698         execution.setVariable("prefix",Prefix)
 
 700         logger.trace("Inside prepareRollbackData() of DoDeleteNetworkInstance ")
 
 704             Map<String, String> rollbackData = new HashMap<String, String>();
 
 705             String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
 
 706             if (rollbackNetworkRequest != null) {
 
 707                 if (rollbackNetworkRequest != "") {
 
 708                     rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
 
 711             String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
 
 712             if (rollbackDeactivateSDNCRequest != null) {
 
 713                 if (rollbackDeactivateSDNCRequest != "") {
 
 714                     rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
 
 717             execution.setVariable("rollbackData", rollbackData)
 
 718             logger.debug("** rollbackData : " + rollbackData)
 
 720             execution.setVariable("WorkflowException", execution.getVariable("WorkflowException"))
 
 721             logger.debug("** WorkflowException : " + execution.getVariable("WorkflowException"))
 
 723         } catch (Exception ex) {
 
 724             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRollbackData() - " + ex.getMessage()
 
 725             logger.debug(exceptionMessage)
 
 726             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
 732     public void postProcessResponse (DelegateExecution execution) {
 
 734         execution.setVariable("prefix", Prefix)
 
 736         logger.trace("Inside postProcessResponse of DoDeleteNetworkInstance ")
 
 740             logger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException"))
 
 741             if (execution.getVariable(Prefix + "isException") == false) {
 
 742                 execution.setVariable(Prefix + "Success", true)
 
 743                 execution.setVariable("WorkflowException", null)
 
 744                 if (execution.getVariable(Prefix + "isSilentSuccess") == true) {
 
 745                     execution.setVariable("rolledBack", false)
 
 747                     execution.setVariable("rolledBack", true)
 
 749                 prepareSuccessRollbackData(execution) // populate rollbackData
 
 752                 execution.setVariable(Prefix + "Success", false)
 
 753                 execution.setVariable("rollbackData", null)
 
 754                 String exceptionMessage = " Exception encountered in MSO Bpmn. "
 
 755                 if (execution.getVariable("workflowException") != null) {  // Output of Rollback flow.
 
 756                     logger.debug(" ***** workflowException: " + execution.getVariable("workflowException"))
 
 757                     WorkflowException wfex = execution.getVariable("workflowException")
 
 758                     exceptionMessage = wfex.getErrorMessage()
 
 760                     if (execution.getVariable(Prefix + "WorkflowException") != null) {
 
 761                         WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException")
 
 762                         exceptionMessage = pwfex.getErrorMessage()
 
 764                         if (execution.getVariable("WorkflowException") != null) {
 
 765                             WorkflowException pwfex = execution.getVariable("WorkflowException")
 
 766                             exceptionMessage = pwfex.getErrorMessage()
 
 771                 // going to the Main flow: a-la-carte or macro
 
 772                 logger.debug(" ***** postProcessResponse(), BAD !!!")
 
 773                 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
 774                 throw new BpmnError("MSOWorkflowException")
 
 778         } catch(BpmnError b){
 
 779             logger.debug("Rethrowing MSOWorkflowException")
 
 782         } catch (Exception ex) {
 
 784             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, postProcessResponse() - " + ex.getMessage()
 
 785             logger.debug(exceptionMessage)
 
 786             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
 787             throw new BpmnError("MSOWorkflowException")
 
 793     public void prepareSuccessRollbackData(DelegateExecution execution) {
 
 795         execution.setVariable("prefix",Prefix)
 
 797         logger.trace("Inside prepareSuccessRollbackData() of DoDeleteNetworkInstance ")
 
 801             if (execution.getVariable("sdncVersion") != '1610') {
 
 802                 prepareRpcSDNCDeactivateRollback(execution)
 
 803                 prepareRpcSDNCUnassignRollback(execution)
 
 805                 prepareSDNCRollback(execution)
 
 808             Map<String, String> rollbackData = new HashMap<String, String>();
 
 809             String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
 
 810             if (rollbackSDNCRequest != null) {
 
 811                 if (rollbackSDNCRequest != "") {
 
 812                     rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest"))
 
 815             String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
 
 816             if (rollbackNetworkRequest != null) {
 
 817                 if (rollbackNetworkRequest != "") {
 
 818                     rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
 
 821             String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
 
 822             if (rollbackDeactivateSDNCRequest != null) {
 
 823                 if (rollbackDeactivateSDNCRequest != "") {
 
 824                     rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
 
 827             execution.setVariable("rollbackData", rollbackData)
 
 829             logger.debug("** rollbackData : " + rollbackData)
 
 830             execution.setVariable("WorkflowException", null)
 
 833         } catch (Exception ex) {
 
 834             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage()
 
 835             logger.debug(exceptionMessage)
 
 836             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
 842     public void prepareRpcSDNCUnassignRollback(DelegateExecution execution) {
 
 844         execution.setVariable("prefix",Prefix)
 
 846         logger.trace("Inside prepareRpcSDNCUnassignRollbac() of DoDeleteNetworkInstance ")
 
 851             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
 
 852             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
 
 854             String deleteSDNCResponse = execution.getVariable(Prefix + "deleteSDNCResponse")
 
 855             String networkId = utils.getNodeText(deleteSDNCResponse, "network-id")
 
 856             if (networkId == 'null') {networkId = ""}
 
 857             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
 
 859             SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
 
 860             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
 
 861             // 1. prepare delete topology via SDNC Adapter SUBFLOW call
 
 862             String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null)
 
 863             String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
 
 864             logger.debug(sndcTopologyDeleteRequesAsString)
 
 865             execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
 
 866             logger.debug(Prefix + "rollbackSDNCRequest" + "\n" +  sndcTopologyDeleteRequesAsString)
 
 867             logger.debug(" Preparing request for RPC SDNC Topology 'assign-CreateNetworkInstance' rollback . . . - " + "\n" +  sndcTopologyDeleteRequesAsString)
 
 870         } catch (Exception ex) {
 
 871             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCUnassignRollback() - " + ex.getMessage()
 
 872             logger.debug(exceptionMessage)
 
 873             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
 879     public void prepareSDNCRollback (DelegateExecution execution) {
 
 881         execution.setVariable("prefix", Prefix)
 
 883         logger.trace("Inside prepareSDNCRollback of DoDeleteNetworkInstance ")
 
 888             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
 
 889             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
 
 891             String networkId = ""
 
 892             if (utils.nodeExists(deleteNetworkInput, "network-id")) {
 
 893                 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
 
 895             if (networkId == 'null') {networkId = ""}
 
 897             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
 
 899             // get/set 'msoRequestId' and 'mso-request-id'
 
 900             String requestId = execution.getVariable("msoRequestId")
 
 901             if (requestId != null) {
 
 902                 execution.setVariable("mso-request-id", requestId)
 
 904                 requestId = execution.getVariable("mso-request-id")
 
 906             execution.setVariable(Prefix + "requestId", requestId)
 
 908             L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
 
 910             SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
 
 911             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
 
 912             // 1. prepare delete topology via SDNC Adapter SUBFLOW call
 
 913             String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "rollback", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
 
 914             String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
 
 915             logger.debug(sndcTopologyDeleteRequesAsString)
 
 916             execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
 
 917             logger.debug(Prefix + "rollbackSDNCRequest - " + "\n" +  sndcTopologyDeleteRequesAsString)
 
 918             logger.debug(" Preparing request for RPC SDNC Topology 'rollback-DisconnectNetworkRequest' rollback . . . - " + "\n" +  sndcTopologyDeleteRequesAsString)
 
 921         } catch (Exception ex) {
 
 923             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRollback() - " + ex.getMessage()
 
 924             logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
 
 925                     "BPMN", ErrorCode.UnknownError.getValue(),
 
 926                     "Exception is:\n" + ex);
 
 927             logger.debug(exceptionMessage)
 
 928             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 934     public void setExceptionFlag(DelegateExecution execution){
 
 936         execution.setVariable("prefix",Prefix)
 
 938         logger.trace("Inside setExceptionFlag() of DoDeleteNetworkInstance ")
 
 942             execution.setVariable(Prefix + "isException", true)
 
 944             if (execution.getVariable("SavedWorkflowException1") != null) {
 
 945                 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
 
 947                 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
 
 949             logger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException"))
 
 951         } catch(Exception ex){
 
 952             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance flow. setExceptionFlag(): " + ex.getMessage()
 
 953             logger.debug(exceptionMessage)
 
 954             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
 960     // *******************************
 
 961     //     Build Error Section
 
 962     // *******************************
 
 964     public void processJavaException(DelegateExecution execution){
 
 966         execution.setVariable("prefix",Prefix)
 
 968             logger.debug("Caught a Java Exception")
 
 969             logger.debug("Started processJavaException Method")
 
 970             logger.debug("Variables List: " + execution.getVariables())
 
 971             execution.setVariable("UnexpectedError", "Caught a Java Lang Exception")  // Adding this line temporarily until this flows error handling gets updated
 
 972             exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
 
 975             logger.debug("Caught Exception during processJavaException Method: " + e)
 
 976             execution.setVariable("UnexpectedError", "Exception in processJavaException method")  // Adding this line temporarily until this flows error handling gets updated
 
 977             exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method")
 
 979         logger.debug("Completed processJavaException Method of " + Prefix)