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 javax.ws.rs.core.UriBuilder
 
  26 import javax.xml.parsers.DocumentBuilder
 
  27 import javax.xml.parsers.DocumentBuilderFactory
 
  28 import org.apache.commons.lang3.*
 
  29 import org.camunda.bpm.engine.delegate.BpmnError
 
  30 import org.camunda.bpm.engine.delegate.DelegateExecution
 
  31 import org.onap.so.bpmn.common.scripts.AaiUtil
 
  32 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
 
  33 import org.onap.so.bpmn.common.scripts.ExceptionUtil
 
  34 import org.onap.so.bpmn.common.scripts.MsoUtils
 
  35 import org.onap.so.bpmn.common.scripts.NetworkUtils
 
  36 import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
 
  37 import org.onap.so.bpmn.common.scripts.VidUtils
 
  38 import org.onap.so.bpmn.core.UrnPropertiesReader
 
  39 import org.onap.so.bpmn.core.WorkflowException
 
  40 import org.onap.so.bpmn.core.json.JsonUtils
 
  41 import org.onap.so.client.aai.AAIObjectPlurals
 
  42 import org.onap.so.client.aai.AAIObjectType
 
  43 import org.onap.so.client.aai.AAIResourcesClient
 
  44 import org.onap.so.client.aai.entities.uri.AAIPluralResourceUri
 
  45 import org.onap.so.client.aai.entities.uri.AAIResourceUri
 
  46 import org.onap.so.client.aai.entities.uri.AAIUriFactory
 
  47 import org.onap.so.client.aai.entities.AAIResultWrapper
 
  48 import org.onap.so.client.aai.entities.Relationships
 
  49 import org.onap.so.client.graphinventory.entities.uri.Depth
 
  50 import org.onap.so.constants.Defaults
 
  51 import org.slf4j.Logger
 
  52 import org.slf4j.LoggerFactory
 
  53 import org.springframework.web.util.UriUtils
 
  54 import org.w3c.dom.Document
 
  55 import org.w3c.dom.Element
 
  56 import org.w3c.dom.NamedNodeMap
 
  57 import org.w3c.dom.Node
 
  58 import org.w3c.dom.NodeList;
 
  59 import org.xml.sax.InputSource
 
  60 import org.onap.aai.domain.yang.VpnBinding
 
  61 import org.onap.aai.domain.yang.L3Network
 
  62 import org.onap.aai.domain.yang.L3Networks
 
  63 import org.onap.aai.domain.yang.NetworkPolicy
 
  64 import org.onap.aai.domain.yang.RouteTableReference
 
  65 import org.onap.aai.domain.yang.RouteTarget
 
  66 import org.onap.aai.domain.yang.Subnet
 
  67 import com.fasterxml.jackson.jaxrs.util.EndpointAsBeanProperty
 
  69 import javax.ws.rs.NotFoundException
 
  72 import groovy.xml.XmlUtil
 
  75  * This groovy class supports the <class>DoCreateNetworkInstance.bpmn</class> process.
 
  78 public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor {
 
  79     private static final Logger logger = LoggerFactory.getLogger( DoCreateNetworkInstance.class);
 
  81         String Prefix="CRENWKI_"
 
  82         ExceptionUtil exceptionUtil = new ExceptionUtil()
 
  83         JsonUtils jsonUtil = new JsonUtils()
 
  84         VidUtils vidUtils = new VidUtils(this)
 
  85         NetworkUtils networkUtils = new NetworkUtils()
 
  86         SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
 
  88         def className = getClass().getSimpleName()
 
  91          * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstance.bpmn</class> process.
 
  94         public InitializeProcessVariables(DelegateExecution execution){
 
  95                 /* Initialize all the process variables in this block */
 
  97                 execution.setVariable(Prefix + "networkRequest", "")
 
  98                 execution.setVariable(Prefix + "rollbackEnabled", null)
 
  99                 execution.setVariable(Prefix + "networkInputs", "")
 
 100                 //execution.setVariable(Prefix + "requestId", "")
 
 101                 execution.setVariable(Prefix + "messageId", "")
 
 102                 execution.setVariable(Prefix + "source", "")
 
 103                 execution.setVariable("BasicAuthHeaderValuePO", "")
 
 104                 execution.setVariable("BasicAuthHeaderValueSDNC", "")
 
 105                 execution.setVariable(Prefix + "serviceInstanceId","")
 
 106                 execution.setVariable("GENGS_type", "")
 
 107                 execution.setVariable(Prefix + "rsrc_endpoint", null)
 
 108                 execution.setVariable(Prefix + "networkOutputs", "")
 
 109                 execution.setVariable(Prefix + "networkId","")
 
 110                 execution.setVariable(Prefix + "networkName","")
 
 113                 execution.setVariable(Prefix + "queryNameAAIRequest","")
 
 114                 execution.setVariable(Prefix + "queryNameAAIResponse", "")
 
 115                 execution.setVariable(Prefix + "aaiNameReturnCode", "")
 
 116                 execution.setVariable(Prefix + "isAAIqueryNameGood", false)
 
 118                 // AAI query Cloud Region
 
 119                 execution.setVariable(Prefix + "queryCloudRegionRequest","")
 
 120                 execution.setVariable(Prefix + "queryCloudRegionReturnCode","")
 
 121                 execution.setVariable(Prefix + "queryCloudRegionResponse","")
 
 122                 execution.setVariable(Prefix + "cloudRegionPo","")
 
 123                 execution.setVariable(Prefix + "cloudRegionSdnc","")
 
 124                 execution.setVariable(Prefix + "isCloudRegionGood", false)
 
 127                 execution.setVariable(Prefix + "queryIdAAIRequest","")
 
 128                 execution.setVariable(Prefix + "queryIdAAIResponse", "")
 
 129                 execution.setVariable(Prefix + "aaiIdReturnCode", "")
 
 131                 // AAI query vpn binding
 
 132                 execution.setVariable(Prefix + "queryVpnBindingAAIRequest","")
 
 133                 execution.setVariable(Prefix + "queryVpnBindingAAIResponse", "")
 
 134                 execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "")
 
 135                 execution.setVariable(Prefix + "vpnBindings", null)
 
 136                 execution.setVariable(Prefix + "vpnCount", 0)
 
 137                 execution.setVariable(Prefix + "routeCollection", "")
 
 139                 // AAI query network policy
 
 140                 execution.setVariable(Prefix + "queryNetworkPolicyAAIRequest","")
 
 141                 execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", "")
 
 142                 execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "")
 
 143                 execution.setVariable(Prefix + "networkPolicyUriList", null)
 
 144                 execution.setVariable(Prefix + "networkPolicyCount", 0)
 
 145                 execution.setVariable(Prefix + "networkCollection", "")
 
 147                 // AAI query route table reference
 
 148                 execution.setVariable(Prefix + "queryNetworkTableRefAAIRequest","")
 
 149                 execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", "")
 
 150                 execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "")
 
 151                 execution.setVariable(Prefix + "networkTableRefUriList", null)
 
 152                 execution.setVariable(Prefix + "networkTableRefCount", 0)
 
 153                 execution.setVariable(Prefix + "tableRefCollection", "")
 
 156                 execution.setVariable(Prefix + "requeryIdAAIRequest","")
 
 157                 execution.setVariable(Prefix + "requeryIdAAIResponse", "")
 
 158                 execution.setVariable(Prefix + "aaiRequeryIdReturnCode", "")
 
 160                 // AAI update contrail
 
 161                 execution.setVariable(Prefix + "updateContrailAAIUrlRequest","")
 
 162                 execution.setVariable(Prefix + "updateContrailAAIPayloadRequest","")
 
 163                 execution.setVariable(Prefix + "updateContrailAAIResponse", "")
 
 164                 execution.setVariable(Prefix + "aaiUpdateContrailReturnCode", "")
 
 166                 execution.setVariable(Prefix + "createNetworkRequest", "")
 
 167                 execution.setVariable(Prefix + "createNetworkResponse", "")
 
 168                 execution.setVariable(Prefix + "rollbackNetworkRequest", "")
 
 169                 //execution.setVariable(Prefix + "rollbackNetworkResponse", "")
 
 170                 execution.setVariable(Prefix + "networkReturnCode", "")
 
 171                 //execution.setVariable(Prefix + "rollbackNetworkReturnCode", "")
 
 172                 execution.setVariable(Prefix + "isNetworkRollbackNeeded", false)
 
 174                 execution.setVariable(Prefix + "assignSDNCRequest", "")
 
 175                 execution.setVariable(Prefix + "assignSDNCResponse", "")
 
 176                 execution.setVariable(Prefix + "rollbackSDNCRequest", "")
 
 177                 //execution.setVariable(Prefix + "rollbackSDNCResponse", "")
 
 178                 execution.setVariable(Prefix + "sdncReturnCode", "")
 
 179                 //execution.setVariable(Prefix + "rollbackSDNCReturnCode", "")
 
 180                 execution.setVariable(Prefix + "isSdncRollbackNeeded", false)
 
 181                 execution.setVariable(Prefix + "sdncResponseSuccess", false)
 
 183                 execution.setVariable(Prefix + "activateSDNCRequest", "")
 
 184                 execution.setVariable(Prefix + "activateSDNCResponse", "")
 
 185                 execution.setVariable(Prefix + "rollbackActivateSDNCRequest", "")
 
 186                 //execution.setVariable(Prefix + "rollbackActivateSDNCResponse", "")
 
 187                 execution.setVariable(Prefix + "sdncActivateReturnCode", "")
 
 188                 //execution.setVariable(Prefix + "rollbackActivateSDNCReturnCode", "")
 
 189                 execution.setVariable(Prefix + "isSdncActivateRollbackNeeded", false)
 
 190                 execution.setVariable(Prefix + "sdncActivateResponseSuccess", false)
 
 192                 execution.setVariable(Prefix + "orchestrationStatus", "")
 
 193                 execution.setVariable(Prefix + "isVnfBindingPresent", false)
 
 194                 execution.setVariable(Prefix + "Success", false)
 
 196                 execution.setVariable(Prefix + "isException", false)
 
 200         // **************************************************
 
 201         //     Pre or Prepare Request Section
 
 202         // **************************************************
 
 204          * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstance.bpmn</class> process.
 
 207         public void preProcessRequest (DelegateExecution execution) {
 
 209                 execution.setVariable("prefix",Prefix)
 
 210                 logger.trace("Inside preProcessRequest() of " + className + ".groovy")
 
 213                         // initialize flow variables
 
 214                         InitializeProcessVariables(execution)
 
 216                         // GET Incoming request & validate 3 kinds of format.
 
 217                         execution.setVariable("action", "CREATE")
 
 218                         String networkRequest = execution.getVariable("bpmnRequest")
 
 219                         if (networkRequest != null) {
 
 220                                 if (networkRequest.contains("requestDetails")) {
 
 221                                         // JSON format request is sent, create xml
 
 223                                                 def prettyJson = JsonOutput.prettyPrint(networkRequest.toString())
 
 224                                                 logger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson)
 
 225                                                 networkRequest =  vidUtils.createXmlNetworkRequestInfra(execution, networkRequest)
 
 227                                         } catch (Exception ex) {
 
 228                                                 String dataErrorMessage = " Invalid json format Request - " + ex.getMessage()
 
 229                                                 logger.debug(dataErrorMessage)
 
 230                                                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 233                                    // XML format request is sent
 
 237                                 // vIPR format request is sent, create xml from individual variables
 
 238                                 networkRequest = vidUtils.createXmlNetworkRequestInstance(execution)
 
 241                         networkRequest = utils.formatXml(networkRequest)
 
 242                         execution.setVariable(Prefix + "networkRequest", networkRequest)
 
 243                         logger.debug(Prefix + "networkRequest - " + '\n' + networkRequest)
 
 245                         // validate 'backout-on-failure' to override 'mso.rollback'
 
 246                         boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, networkRequest)
 
 247                         execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled)
 
 248                         logger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled)
 
 250                         String networkInputs = utils.getNodeXml(networkRequest, "network-inputs", false).replace("tag0:","").replace(":tag0","")
 
 251                         execution.setVariable(Prefix + "networkInputs", networkInputs)
 
 252                         logger.debug(Prefix + "networkInputs - " + '\n' + networkInputs)
 
 255                         String messageId = execution.getVariable("testMessageId")  // for testing
 
 256                         if (messageId == null || messageId == "") {
 
 257                                 messageId = UUID.randomUUID()
 
 258                                 logger.debug(Prefix + "messageId, random generated: " + messageId)
 
 260                                 logger.debug(Prefix + "messageId, pre-assigned: " + messageId)
 
 262                         execution.setVariable(Prefix + "messageId", messageId)
 
 264                         String source = utils.getNodeText(networkRequest, "source")
 
 265                         execution.setVariable(Prefix + "source", source)
 
 266                         logger.debug(Prefix + "source - " + source)
 
 268                         // validate cloud region
 
 269                         String lcpCloudRegionId = utils.getNodeText(networkRequest, "aic-cloud-region")
 
 270                         if ((lcpCloudRegionId == null) || (lcpCloudRegionId == "") || (lcpCloudRegionId == "null")) {
 
 271                                 String dataErrorMessage = "Missing value/element: 'lcpCloudRegionId' or 'cloudConfiguration' or 'aic-cloud-region'."
 
 272                                 logger.debug(" Invalid Request - " + dataErrorMessage)
 
 273                                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 276                         // validate service instance id
 
 277                         String serviceInstanceId = utils.getNodeText(networkRequest, "service-instance-id")
 
 278                         if ((serviceInstanceId == null) || (serviceInstanceId == "") || (serviceInstanceId == "null")) {
 
 279                                 String dataErrorMessage = "Missing value/element: 'serviceInstanceId'."
 
 280                                 logger.debug(" Invalid Request - " + dataErrorMessage)
 
 281                                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 284                         // PO Authorization Info / headers Authorization=
 
 285                         String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth",execution)
 
 288                                 def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey",execution))
 
 289                                 execution.setVariable("BasicAuthHeaderValuePO",encodedString)
 
 290                                 execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
 
 292                         } catch (IOException ex) {
 
 293                                 String exceptionMessage = "Exception Encountered in DoCreateNetworkInstance, PreProcessRequest() - "
 
 294                                 String dataErrorMessage = exceptionMessage + " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
 
 295                                 logger.debug(dataErrorMessage)
 
 296                                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 299                         // Set variables for Generic Get Sub Flow use
 
 300                         execution.setVariable(Prefix + "serviceInstanceId", serviceInstanceId)
 
 301                         logger.debug(Prefix + "serviceInstanceId - " + serviceInstanceId)
 
 303                         execution.setVariable("GENGS_type", "service-instance")
 
 304                         logger.debug("GENGS_type - " + "service-instance")
 
 305                         logger.debug(" Url for SDNC adapter: " + UrnPropertiesReader.getVariable("mso.adapters.sdnc.endpoint",execution))
 
 307                         String sdncVersion = execution.getVariable("sdncVersion")
 
 308                         logger.debug("sdncVersion? : " + sdncVersion)
 
 310                         // build 'networkOutputs'
 
 311                         String networkId = utils.getNodeText(networkRequest, "network-id")
 
 312                         if ((networkId == null) || (networkId == "null")) {
 
 315                         String networkName = utils.getNodeText(networkRequest, "network-name")
 
 316                         if ((networkName == null) || (networkName == "null")) {
 
 319                         String networkOutputs =
 
 321                            <network-id>${MsoUtils.xmlEscape(networkId)}</network-id>
 
 322                            <network-name>${MsoUtils.xmlEscape(networkName)}</network-name>
 
 323                          </network-outputs>"""
 
 324                         execution.setVariable(Prefix + "networkOutputs", networkOutputs)
 
 325                         logger.debug(Prefix + "networkOutputs - " + '\n' + networkOutputs)
 
 326                         execution.setVariable(Prefix + "networkId", networkId)
 
 327                         execution.setVariable(Prefix + "networkName", networkName)
 
 329                 } catch (BpmnError e) {
 
 332                 } catch (Exception ex) {
 
 333                         sendSyncError(execution)
 
 335                         String exceptionMessage = "Exception Encountered in PreProcessRequest() of " + className + ".groovy ***** : " + ex.getMessage()
 
 336                         logger.debug(exceptionMessage)
 
 337                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 344          * Gets the service instance uri from aai
 
 346         public void getServiceInstance(DelegateExecution execution) {
 
 348                         String serviceInstanceId = execution.getVariable('CRENWKI_serviceInstanceId')
 
 350                         AAIResourcesClient resourceClient = new AAIResourcesClient()
 
 351                         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
 
 353                         if(!resourceClient.exists(uri)){
 
 354                                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service instance was not found in aai")
 
 356                                 Map<String, String> keys = uri.getURIKeys()
 
 357                                 execution.setVariable("serviceType", keys.get("service-type"))
 
 358                                 execution.setVariable("subscriberName", keys.get("global-customer-id"))
 
 361                 }catch(BpmnError e) {
 
 363                 }catch (Exception ex){
 
 364                         String msg = "Exception in getServiceInstance. " + ex.getMessage()
 
 366                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
 
 371         public void callRESTQueryAAINetworkName (DelegateExecution execution) {
 
 373                 execution.setVariable("prefix",Prefix)
 
 375                 logger.debug(" ***** Inside callRESTQueryAAINetworkName() of DoCreateNetworkInstance ***** " )
 
 379                         String networkInputs  = execution.getVariable(Prefix + "networkInputs")
 
 380                         String networkName   = utils.getNodeText(networkInputs, "network-name")
 
 382                         AAIResourcesClient client = new AAIResourcesClient()
 
 383                         AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L3_NETWORK).queryParam("network-name", networkName)
 
 384                         L3Networks networks = client.get(uri, NotFoundException.class).asBean(L3Networks.class).get()
 
 385                         L3Network network = networks.getL3Network().get(0)
 
 387                         execution.setVariable(Prefix + "isAAIqueryNameGood", true)
 
 388                         String orchestrationStatus = network.getOrchestrationStatus()
 
 389                         execution.setVariable(Prefix + "orchestrationStatus", orchestrationStatus.toUpperCase())
 
 390                         logger.debug(Prefix + "orchestrationStatus - " + orchestrationStatus.toUpperCase())
 
 391                         execution.setVariable("orchestrationStatus", orchestrationStatus)
 
 393                         logger.debug(Prefix + "isAAIqueryNameGood? : " + execution.getVariable(Prefix + "isAAIqueryNameGood"))
 
 395                 } catch (NotFoundException e) {
 
 396                         logger.debug(" QueryAAINetworkName return code = '404' (Not Found).  Proceed with the Create !!! ")
 
 398                 } catch (Exception ex) {
 
 400                         String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow - callRESTQueryAAINetworkName() -  " + ex.getMessage()
 
 401                         logger.debug(exceptionMessage)
 
 402                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 408         public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
 
 410                 execution.setVariable("prefix",Prefix)
 
 412                 logger.debug(" ***** Inside callRESTQueryAAICloudRegion() of DoCreateNetworkInstance ***** " )
 
 415                         String networkInputs  = execution.getVariable(Prefix + "networkInputs")
 
 416                         String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
 
 419                         AaiUtil aaiUtil = new AaiUtil(this)
 
 421                         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion)
 
 422                         def queryCloudRegionRequest = aaiUtil.createAaiUri(uri)
 
 424                         execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
 
 426                         String cloudRegionPo = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "PO", cloudRegion)
 
 427                         String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "SDNC", cloudRegion)
 
 429                         if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) {
 
 430                                 execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo)
 
 431                                 execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc)
 
 432                                 execution.setVariable(Prefix + "isCloudRegionGood", true)
 
 435                             String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode")
 
 436                             logger.debug(dataErrorMessage)
 
 437                                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 441                         logger.debug(" is Cloud Region Good: " + execution.getVariable(Prefix + "isCloudRegionGood"))
 
 443                 } catch (BpmnError e) {
 
 446                 } catch (Exception ex) {
 
 448                         String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow - callRESTQueryAAICloudRegion() - " + ex.getMessage()
 
 449                         logger.debug(exceptionMessage)
 
 450                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 456         public void callRESTQueryAAINetworkId(DelegateExecution execution) {
 
 458                 execution.setVariable("prefix",Prefix)
 
 460                 logger.debug(" ***** Inside callRESTQueryAAINetworkId() of DoCreateNetworkInstance ***** " )
 
 464                         String networkId = ""
 
 465                         String assignSDNCResponse = execution.getVariable(Prefix + "assignSDNCResponse")
 
 466                         if (execution.getVariable("sdncVersion") != "1610") {
 
 467                            String networkResponseInformation = ""
 
 469                               networkResponseInformation = utils.getNodeXml(assignSDNCResponse, "network-response-information", false).replace("tag0:","").replace(":tag0","")
 
 470                                   networkId = utils.getNodeText(networkResponseInformation, "instance-id")
 
 471                            } catch (Exception ex) {
 
 472                               String dataErrorMessage = " SNDC Response network validation for 'instance-id' (network-id) failed: Empty <network-response-information>"
 
 473                               logger.debug(dataErrorMessage)
 
 474                                   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 478                            networkId = utils.getNodeText(assignSDNCResponse, "network-id")
 
 480                         if (networkId == null || networkId == "null") {
 
 481                                 String dataErrorMessage = "SNDC Response did not contains 'instance-id' or 'network-id' element, or the value is null."
 
 482                                 logger.debug(dataErrorMessage)
 
 483                                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 485                            logger.debug(" SNDC Response network validation for 'instance-id' (network-id)' is good: " + networkId)
 
 489                         execution.setVariable(Prefix + "networkId", networkId)
 
 490                         String networkName   = utils.getNodeText(assignSDNCResponse, "network-name")
 
 491                         execution.setVariable(Prefix + "networkName", networkName)
 
 493                         AAIResourcesClient client = new AAIResourcesClient()
 
 494                         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ONE)
 
 495                         L3Network network = client.get(uri, NotFoundException.class).asBean(L3Network.class).get()
 
 497                         execution.setVariable(Prefix + "queryIdAAIResponse", network)
 
 499                         String netId   = network.getNetworkId()
 
 500                         execution.setVariable(Prefix + "networkId", netId)
 
 501                         String netName   = network.getNetworkName()
 
 502                         execution.setVariable(Prefix + "networkName", netName)
 
 504                 } catch (NotFoundException e) {
 
 505                         String dataErrorMessage = "Response Error from QueryAAINetworkId is 404 (Not Found)."
 
 506                         logger.debug(" AAI Query Failed. " + dataErrorMessage)
 
 507                         exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 509                 } catch (Exception ex) {
 
 510                         String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTQueryAAINetworkId() - " + ex.getMessage()
 
 511                         logger.debug(exceptionMessage)
 
 512                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 518         public void callRESTReQueryAAINetworkId(DelegateExecution execution) {
 
 520                 execution.setVariable("prefix",Prefix)
 
 522                 logger.debug(" ***** Inside callRESTReQueryAAINetworkId() of DoCreateNetworkInstance ***** " )
 
 526                         String networkId   = execution.getVariable(Prefix + "networkId")
 
 527                         String netId = networkId
 
 529                         AAIResourcesClient client = new AAIResourcesClient()
 
 530                         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ONE)
 
 531                         L3Network network = client.get(uri, NotFoundException.class).asBean(L3Network.class).get()
 
 533                         execution.setVariable(Prefix + "aaiRequeryIdReturnCode", "200")
 
 534                         execution.setVariable(Prefix + "requeryIdAAIResponse", network)
 
 536                         String netName = network.getNetworkName()
 
 537                         String networkOutputs =
 
 539                    <network-id>${MsoUtils.xmlEscape(netId)}</network-id>
 
 540                    <network-name>${MsoUtils.xmlEscape(netName)}</network-name>
 
 541                  </network-outputs>"""
 
 542                         execution.setVariable(Prefix + "networkOutputs", networkOutputs)
 
 543                         logger.debug(" networkOutputs - " + '\n' + networkOutputs)
 
 546                 } catch (NotFoundException e) {
 
 547                         String dataErrorMessage = "Response Error from ReQueryAAINetworkId is 404 (Not Found)."
 
 548                         logger.debug(" AAI ReQuery Failed. - " + dataErrorMessage)
 
 549                         exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 551                 } catch (Exception ex) {
 
 552                         String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTReQueryAAINetworkId() - " + ex.getMessage()
 
 553                         logger.debug(exceptionMessage)
 
 554                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 560         public void callRESTQueryAAINetworkVpnBinding(DelegateExecution execution) {
 
 562                 execution.setVariable("prefix",Prefix)
 
 564                 logger.debug(" ***** Inside callRESTQueryAAINetworkVpnBinding() of DoCreateNetworkInstance ***** " )
 
 568                         AAIResourcesClient client = new AAIResourcesClient()
 
 569                         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, execution.getVariable(Prefix + "networkId"))
 
 570                         Optional<Relationships> relationships = client.get(uri, NotFoundException.class).getRelationships()
 
 571                         if(relationships.isPresent()){
 
 572                                 List<AAIResourceUri> uris = relationships.get().getRelatedAAIUris(AAIObjectType.VPN_BINDING)
 
 574                                 logger.debug(Prefix + "vpnCount - " + uris.size())
 
 576                                 if (uris.size() > 0) {
 
 577                                         String routeTargets = ""
 
 578                                         for(AAIResourceUri u : uris) {
 
 580                                                 AAIResultWrapper wrapper = client.get(u.depth(Depth.TWO), NotFoundException.class)
 
 581                                                 Optional<VpnBinding> binding = wrapper.asBean(VpnBinding.class)
 
 583                                                 String routeTarget = ""
 
 584                                                 String routeRole = ""
 
 585                                                 if(binding.get().getRouteTargets() != null) {
 
 586                                                         List<RouteTarget> targets = binding.get().getRouteTargets().getRouteTarget()
 
 587                                                         for(RouteTarget target : targets) {
 
 588                                                                 routeTarget  = target.getGlobalRouteTarget()
 
 589                                                                 routeRole  = target.getRouteTargetRole()
 
 590                                                                 routeTargets += "<routeTargets>" + '\n' +
 
 591                                                                                 " <routeTarget>" + routeTarget + "</routeTarget>" + '\n' +
 
 592                                                                                 " <routeTargetRole>" + routeRole + "</routeTargetRole>" + '\n' +
 
 593                                                                                 "</routeTargets>" + '\n'
 
 599                                         execution.setVariable(Prefix + "routeCollection", routeTargets)
 
 600                                         logger.debug(Prefix + "routeCollection - " + '\n' + routeTargets)
 
 603                                         // reset return code to success
 
 604                                         execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200")
 
 605                                         AaiUtil aaiUriUtil = new AaiUtil(this)
 
 606                                         String schemaVersion = aaiUriUtil.getNamespace()
 
 607                                         String aaiStubResponse =
 
 608                                                         """     <rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd">
 
 609                                                         <vpn-binding xmlns="${schemaVersion}">
 
 610                                                       <global-route-target/>
 
 613                                         String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse)
 
 614                                         execution.setVariable(Prefix + "queryVpnBindingAAIResponse", aaiStubResponseAsXml)
 
 615                                         execution.setVariable(Prefix + "routeCollection", "<routeTargets/>")
 
 616                                         logger.debug(" No vpnBinding, using this stub as response - " + '\n' + aaiStubResponseAsXml)
 
 621                 } catch (NotFoundException e) {
 
 622                         logger.debug("Response Error from AAINetworkVpnBinding is 404 (Not Found).")
 
 623                         exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Response Error from AAINetworkVpnBinding is 404 (Not Found).")
 
 624                 } catch (Exception ex) {
 
 625                         String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTQueryAAINetworkVpnBinding() - " + ex.getMessage()
 
 626                         logger.debug(exceptionMessage)
 
 627                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 633         public void callRESTQueryAAINetworkPolicy(DelegateExecution execution) {
 
 635                 execution.setVariable("prefix",Prefix)
 
 637                 logger.debug(" ***** Inside callRESTQueryAAINetworkPolicy() of DoCreateNetworkInstance ***** " )
 
 640                         AAIResourcesClient client = new AAIResourcesClient()
 
 641                         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, execution.getVariable(Prefix + "networkId"))
 
 642                         Optional<Relationships> relationships = client.get(uri, NotFoundException.class).getRelationships()
 
 643                         if(relationships.isPresent()){
 
 644                                 List<AAIResourceUri> uris = relationships.get().getRelatedAAIUris(AAIObjectType.NETWORK_POLICY)
 
 646                                 execution.setVariable(Prefix + "networkPolicyCount", uris.size())
 
 647                                 logger.debug(Prefix + "networkPolicyCount - " + uris.size())
 
 649                                 if (uris.size() > 0) {
 
 651                                         String networkPolicies = ""
 
 652                                         // AII loop call using list vpnBindings
 
 653                                         for(AAIResourceUri u : uris) {
 
 655                                                 NetworkPolicy p = client.get(u, NotFoundException.class).asBean(NetworkPolicy.class).get()
 
 657                                                 execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "200")
 
 659                                                 String networkPolicy  = p.getNetworkPolicyFqdn()
 
 660                                                 networkPolicies += "<policyFqdns>" + networkPolicy + "</policyFqdns>" + '\n'
 
 664                                         execution.setVariable(Prefix + "networkCollection", networkPolicies)
 
 665                                         logger.debug(Prefix + "networkCollection - " + '\n' + networkPolicies)
 
 668                                         // reset return code to success
 
 669                                         execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "200")
 
 670                                         AaiUtil aaiUriUtil = new AaiUtil(this)
 
 671                                         String schemaVersion = aaiUriUtil.getNamespace()
 
 672                                         String aaiStubResponse =
 
 673                                                         """     <rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd">
 
 674                                                         <network-policy xmlns="${schemaVersion}">
 
 675                                                           <network-policy-fqdn/>
 
 678                                         String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse)
 
 679                                         execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", aaiStubResponseAsXml)
 
 680                                         execution.setVariable(Prefix + "networkCollection", "<policyFqdns/>")
 
 681                                         logger.debug(" No net policies, using this stub as response - " + '\n' + aaiStubResponseAsXml)
 
 685         } catch (NotFoundException e) {
 
 686                 String dataErrorMessage = "Response Error from QueryAAINetworkPolicy is 404 (Not Found)."
 
 687                 logger.debug(dataErrorMessage)
 
 688                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 690         } catch (Exception ex) {
 
 691                 String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTQueryAAINetworkPolicy() - " + ex.getMessage()
 
 692                 logger.debug(exceptionMessage)
 
 693                 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 699         public void callRESTQueryAAINetworkTableRef(DelegateExecution execution) {
 
 701                 execution.setVariable("prefix",Prefix)
 
 703                 logger.debug(" ***** Inside callRESTQueryAAINetworkTableRef() of DoCreateNetworkInstance ***** " )
 
 707                         AAIResourcesClient client = new AAIResourcesClient()
 
 708                         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, execution.getVariable(Prefix + "networkId"))
 
 709                         Optional<Relationships> relationships = client.get(uri, NotFoundException.class).getRelationships()
 
 710                         if(relationships.isPresent()){
 
 711                                 List<AAIResourceUri> uris = relationships.get().getRelatedAAIUris(AAIObjectType.ROUTE_TABLE_REFERENCE)
 
 713                                 execution.setVariable(Prefix + "networkTableRefCount", uris.size())
 
 714                                 logger.debug(Prefix + "networkTableRefCount - " + uris.size())
 
 717                                 if (uris.size() > 0) {
 
 719                                         // AII loop call using list vpnBindings
 
 720                                         String networkTableRefs = ""
 
 721                                         for(AAIResourceUri u : uris) {
 
 723                                                 RouteTableReference rt = client.get(u, NotFoundException.class).asBean(RouteTableReference.class).get()
 
 725                                                 String networkTableRef  = rt.getRouteTableReferenceFqdn()
 
 726                                                 networkTableRefs += "<routeTableFqdns>" + networkTableRef + "</routeTableFqdns>" + '\n'
 
 731                                         execution.setVariable(Prefix + "tableRefCollection", networkTableRefs)
 
 732                                         logger.debug(Prefix + "tableRefCollection - " + '\n' + networkTableRefs)
 
 735                                         // reset return code to success
 
 736                                         execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "200")
 
 737                                         AaiUtil aaiUriUtil = new AaiUtil(this)
 
 738                                         String schemaVersion = aaiUriUtil.getNamespace()
 
 739                                         String aaiStubResponse =
 
 740                                                         """     <rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd">
 
 741                                                         <route-table-references xmlns="${schemaVersion}">
 
 742                                                           <route-table-reference-fqdn/>
 
 743                             </route-table-references>
 
 745                                         String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse)
 
 746                                         execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", aaiStubResponseAsXml)
 
 747                                         execution.setVariable(Prefix + "tableRefCollection", "<routeTableFqdns/>")
 
 748                                         logger.debug(" No net table references, using this stub as response - " + '\n' + aaiStubResponseAsXml)
 
 753                 } catch (NotFoundException e) {
 
 754                         String dataErrorMessage = "Response Error from QueryAAINetworkTableRef is 404 (Not Found)."
 
 755                         logger.debug(dataErrorMessage)
 
 756                         exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 758                 } catch (Exception ex) {
 
 759                         String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTQueryAAINetworkTableRef() - " + ex.getMessage()
 
 760                         logger.debug(exceptionMessage)
 
 761                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 768         public void callRESTUpdateContrailAAINetwork(DelegateExecution execution) {
 
 770                 execution.setVariable("prefix",Prefix)
 
 772                 logger.trace(" ***** Inside callRESTUpdateContrailAAINetwork() of DoCreateNetworkInstance ***** " )
 
 776                         String networkId   = execution.getVariable(Prefix + "networkId")
 
 777                         L3Network requeryIdAAIResponse   = execution.getVariable(Prefix + "requeryIdAAIResponse")
 
 778                         String createNetworkResponse   = execution.getVariable(Prefix + "createNetworkResponse")
 
 780                         L3Network l3Network = new L3Network()
 
 781                         if (StringUtils.isBlank(requeryIdAAIResponse.getHeatStackId())) {
 
 782                                 if (utils.nodeExists(createNetworkResponse, 'networkStackId')) {
 
 783                                         l3Network.setHeatStackId(utils.getNodeText(createNetworkResponse, 'networkStackId'))
 
 786                         if (StringUtils.isBlank(requeryIdAAIResponse.getNeutronNetworkId())) {
 
 787                                 if (utils.nodeExists(createNetworkResponse, 'neutronNetworkId')) {
 
 788                                         l3Network.setNeutronNetworkId(utils.getNodeText(createNetworkResponse, 'neutronNetworkId'))
 
 791                         if (StringUtils.isBlank(requeryIdAAIResponse.getContrailNetworkFqdn())) {
 
 792                                 if (utils.nodeExists(createNetworkResponse, 'networkFqdn')) {
 
 793                                         l3Network.setContrailNetworkFqdn(utils.getNodeText(createNetworkResponse, 'networkFqdn'))
 
 797                         String status = utils.getNodeText(createNetworkResponse, 'orchestration-status')
 
 798                         if(status.equals("pending-create") || status.equals("PendingCreate")){
 
 799                                 l3Network.setOrchestrationStatus("Created")
 
 801                                 l3Network.setOrchestrationStatus("Active")
 
 804                         logger.debug("Updating l3-network in AAI" )
 
 806                         AAIResourcesClient client = new AAIResourcesClient()
 
 807                         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId)
 
 808                         client.update(uri, l3Network)
 
 810                         if(requeryIdAAIResponse.getSubnets() != null){
 
 811                                 for(Subnet s:requeryIdAAIResponse.getSubnets().getSubnet()){
 
 812                                         String subnetOrchStatus = s.getOrchestrationStatus()
 
 813                                         String subnetId = s.getSubnetId()
 
 814                                         Subnet subnet = new Subnet()
 
 815                                         subnet.setNeutronSubnetId(networkUtils.extractNeutSubId(createNetworkResponse, subnetId))
 
 816                                         if(subnetOrchStatus.equals("pending-create") || subnetOrchStatus.equals("PendingCreate") ){
 
 817                                                 subnet.setOrchestrationStatus("Created")
 
 819                                                 subnet.setOrchestrationStatus("Active")
 
 822                                         logger.debug("Updating subnet in AAI" )
 
 823                                         AAIResourceUri subUri = AAIUriFactory.createResourceUri(AAIObjectType.SUBNET, networkId, subnetId)
 
 824                                         client.update(subUri, subnet)
 
 829                         String rollbackEnabled = execution.getVariable(Prefix + "rollbackEnabled")
 
 830                         if (rollbackEnabled == "true") {
 
 831                                 execution.setVariable(Prefix + "isPONR", false)
 
 833                                 execution.setVariable(Prefix + "isPONR", true)
 
 835                         logger.debug(Prefix + "isPONR" + ": " + execution.getVariable(Prefix + "isPONR"))
 
 837                 } catch (BpmnError e) {
 
 839                 } catch (NotFoundException e) {
 
 840                         String dataErrorMessage = " Response Error from UpdateContrailAAINetwork is 404 (Not Found)."
 
 841                         logger.debug(dataErrorMessage)
 
 842                         exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
 843                 } catch (Exception ex) {
 
 844                         String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTUpdateContrailAAINetwork() - " + ex.getMessage()
 
 845                         logger.debug(exceptionMessage)
 
 846                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 850         public void prepareCreateNetworkRequest (DelegateExecution execution) {
 
 852                 execution.setVariable("prefix",Prefix)
 
 854                 logger.trace("Inside prepareCreateNetworkRequest() of DoCreateNetworkInstance")
 
 859                         String requestId = execution.getVariable("msoRequestId")
 
 860                         if (requestId == null) {
 
 861                                 requestId = execution.getVariable("mso-request-id")
 
 863                         String messageId = execution.getVariable(Prefix + "messageId")
 
 864                         String source    = execution.getVariable(Prefix + "source")
 
 866                         String requestInput = execution.getVariable(Prefix + "networkRequest")
 
 867                         L3Network queryIdResponse = execution.getVariable(Prefix + "queryIdAAIResponse")
 
 868                         String cloudRegionId = execution.getVariable(Prefix + "cloudRegionPo")
 
 869                         String backoutOnFailure = execution.getVariable(Prefix + "rollbackEnabled")
 
 871                         // Prepare Network request
 
 872                         String routeCollection = execution.getVariable(Prefix + "routeCollection")
 
 873                         String policyCollection = execution.getVariable(Prefix + "networkCollection")
 
 874                         String tableCollection = execution.getVariable(Prefix + "tableRefCollection")
 
 875                         String createNetworkRequest = networkUtils.CreateNetworkRequestV2(execution, requestId, messageId, requestInput, queryIdResponse, routeCollection, policyCollection, tableCollection, cloudRegionId, backoutOnFailure, source )
 
 877                         String buildDeleteNetworkRequestAsString = utils.formatXml(createNetworkRequest)
 
 878                         buildDeleteNetworkRequestAsString = buildDeleteNetworkRequestAsString.replace(":w1aac13n0", "").replace("w1aac13n0:", "")
 
 880                         execution.setVariable(Prefix + "createNetworkRequest", buildDeleteNetworkRequestAsString)
 
 881                         logger.debug(Prefix + "createNetworkRequest - " + "\n" +  buildDeleteNetworkRequestAsString)
 
 883                 } catch (Exception ex) {
 
 884                         String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareCreateNetworkRequest() - " + ex.getMessage()
 
 885                         logger.debug(exceptionMessage)
 
 886                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 892         public void prepareSDNCRequest (DelegateExecution execution) {
 
 894                 execution.setVariable("prefix",Prefix)
 
 896                 logger.trace("Inside prepareSDNCRequest() of DoCreateNetworkInstance")
 
 900                         String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
 
 901                         String createNetworkInput = execution.getVariable(Prefix + "networkRequest")
 
 902                         String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
 
 904                         String networkId = execution.getVariable(Prefix + "networkId")
 
 905                         String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
 
 907                         // get/set 'msoRequestId' and 'mso-request-id'
 
 908                         String requestId = execution.getVariable("msoRequestId")
 
 909                         if (requestId != null) {
 
 910                                 execution.setVariable("mso-request-id", requestId)
 
 912                             requestId = execution.getVariable("mso-request-id")
 
 914                         execution.setVariable(Prefix + "requestId", requestId)
 
 916                         // 1. prepare assign topology via SDNC Adapter SUBFLOW call
 
 917                         String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, createNetworkInput, serviceInstanceId, sdncCallback, "assign", "NetworkActivateRequest", cloudRegionId, networkId, null, null)
 
 919                         String sndcTopologyCreateRequesAsString = utils.formatXml(sndcTopologyCreateRequest)
 
 920                         execution.setVariable(Prefix + "assignSDNCRequest", sndcTopologyCreateRequesAsString)
 
 921                         logger.debug(Prefix + "assignSDNCRequest - " + "\n" +  sndcTopologyCreateRequesAsString)
 
 924                 } catch (Exception ex) {
 
 925                         String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareSDNCRequest() - " + ex.getMessage()
 
 926                         logger.debug(exceptionMessage)
 
 927                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 933         public void prepareRpcSDNCRequest (DelegateExecution execution) {
 
 935                 execution.setVariable("prefix",Prefix)
 
 937                 logger.trace("Inside prepareRpcSDNCRequest() of DoCreateNetworkInstance")
 
 942                         String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
 
 943                         String createNetworkInput = execution.getVariable(Prefix + "networkRequest")
 
 944                         String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
 
 946                         String networkId = execution.getVariable(Prefix + "networkId")
 
 947                         String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
 
 949                         // 1. prepare assign topology via SDNC Adapter SUBFLOW call
 
 950                         String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null)
 
 952                         String sndcTopologyCreateRequesAsString = utils.formatXml(sndcTopologyCreateRequest)
 
 953                         execution.setVariable(Prefix + "assignSDNCRequest", sndcTopologyCreateRequesAsString)
 
 954                         logger.debug(Prefix + "assignSDNCRequest - " + "\n" +  sndcTopologyCreateRequesAsString)
 
 956                 } catch (Exception ex) {
 
 957                         String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRpcSDNCRequest() - " + ex.getMessage()
 
 958                         logger.debug(exceptionMessage)
 
 959                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 965         public void prepareRpcSDNCActivateRequest (DelegateExecution execution) {
 
 967                 execution.setVariable("prefix",Prefix)
 
 969                 logger.trace("Inside prepareRpcSDNCActivateRequest() of DoCreateNetworkInstance")
 
 973                         String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
 
 974                         String createNetworkInput = execution.getVariable(Prefix + "networkRequest")
 
 975                         String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
 
 976                         String networkId = execution.getVariable(Prefix + "networkId")
 
 977                         String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
 
 979                         // 1. prepare assign topology via SDNC Adapter SUBFLOW call
 
 980                         String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null)
 
 982                         String sndcTopologyCreateRequesAsString = utils.formatXml(sndcTopologyCreateRequest)
 
 983                         execution.setVariable(Prefix + "activateSDNCRequest", sndcTopologyCreateRequesAsString)
 
 984                         logger.debug(Prefix + "activateSDNCRequest - " + "\n" +  sndcTopologyCreateRequesAsString)
 
 987                 } catch (Exception ex) {
 
 988                         String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRpcSDNCActivateRequest() - " + ex.getMessage()
 
 989                         logger.debug(exceptionMessage)
 
 990                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
 999         // **************************************************
 
1000         //     Post or Validate Response Section
 
1001         // **************************************************
 
1003         public void validateCreateNetworkResponse (DelegateExecution execution) {
 
1005                 execution.setVariable("prefix",Prefix)
 
1007                 logger.trace("Inside validateNetworkResponse() of DoCreateNetworkInstance")
 
1010                         String returnCode = execution.getVariable(Prefix + "networkReturnCode")
 
1011                         String networkResponse = execution.getVariable(Prefix + "createNetworkResponse")
 
1012                         if (networkResponse==null)      {
 
1013                                 networkResponse="" // reset
 
1016                         logger.debug(" Network Adapter create responseCode: " + returnCode)
 
1018                         String errorMessage = ""
 
1019                         if (returnCode == "200") {
 
1020                                 execution.setVariable(Prefix + "isNetworkRollbackNeeded", true)
 
1021                                 execution.setVariable(Prefix + "createNetworkResponse", networkResponse)
 
1022                                 logger.debug(" Network Adapter create Success Response - " + "\n" + networkResponse)
 
1024                                 // prepare rollback data
 
1025                                 String rollbackData = utils.getNodeXml(networkResponse, "rollback", false).replace("tag0:","").replace(":tag0","")
 
1026                                 rollbackData = rollbackData.replace("rollback>", "networkRollback>")
 
1027                                 String rollbackNetwork =
 
1028                                         """<rollbackNetworkRequest>
 
1030                                                 </rollbackNetworkRequest>"""
 
1031                                 String rollbackNetworkXml = utils.formatXml(rollbackNetwork)
 
1032                                 execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkXml)
 
1033                                 logger.debug(" Network Adapter rollback data - " + "\n" + rollbackNetworkXml)
 
1035                         } else { // network error
 
1036                            if (returnCode.toInteger() > 399 && returnCode.toInteger() < 600) {   //4xx, 5xx
 
1037                                    if (networkResponse.contains("createNetworkError")) {
 
1038                                            networkResponse = networkResponse.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '')
 
1039                                            errorMessage = utils.getNodeText(networkResponse, "message")
 
1040                                            errorMessage  = "Received error from Network Adapter: " + errorMessage
 
1041                                            exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
 
1043                                    } else { // CatchAll exception
 
1044                                            if (returnCode == "500") {
 
1045                                                    errorMessage = "JBWEB000065: HTTP Status 500."
 
1047                                                errorMessage = "Return code is " + returnCode
 
1049                                            errorMessage  = "Received error from Network Adapter: " + errorMessage
 
1050                                            exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
 
1054                            } else { // CatchAll exception
 
1055                                    String dataErrorMessage  = "Received error from Network Adapter. Return code is: " + returnCode
 
1056                                    exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
 
1062                 } catch (BpmnError e) {
 
1065                 } catch (Exception ex) {
 
1066                         String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. validateCreateNetworkResponse() - " + ex.getMessage()
 
1067                         logger.debug(exceptionMessage)
 
1068                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 
1075         public void validateSDNCResponse (DelegateExecution execution) {
 
1077                 execution.setVariable("prefix",Prefix)
 
1079                 logger.trace("Inside validateSDNCResponse() of DoCreateNetworkInstance")
 
1081                 String response = execution.getVariable(Prefix + "assignSDNCResponse")
 
1082                 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
 
1083                 WorkflowException workflowException = execution.getVariable("WorkflowException")
 
1085                 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
 
1086                 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
1088                 String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "assignSDNCResponse")
 
1089                 assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
 
1090                 execution.setVariable(Prefix + "assignSDNCResponse", assignSDNCResponseDecodeXml)
 
1092                 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) {  // from sdnc util, Prefix+'sdncResponseSuccess'
 
1093                         execution.setVariable(Prefix + "isSdncRollbackNeeded", true)
 
1094                         logger.debug("Successfully Validated SDNC Response")
 
1097                         logger.debug("Did NOT Successfully Validated SDNC Response")
 
1098                         throw new BpmnError("MSOWorkflowException")
 
1103         public void validateRpcSDNCActivateResponse (DelegateExecution execution) {
 
1105                 execution.setVariable("prefix",Prefix)
 
1107                 logger.trace("Inside validateRpcSDNCActivateResponse() of DoCreateNetworkInstance")
 
1109                 String response = execution.getVariable(Prefix + "activateSDNCResponse")
 
1110                 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
 
1111                 WorkflowException workflowException = execution.getVariable("WorkflowException")
 
1113                 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
 
1114                 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
1116                 String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "activateSDNCResponse")
 
1117                 assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
 
1118                 execution.setVariable(Prefix + "activateSDNCResponse", assignSDNCResponseDecodeXml)
 
1120                 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) {  // from sdnc util, Prefix+'sdncResponseSuccess'
 
1121                         execution.setVariable(Prefix + "isSdncActivateRollbackNeeded", true)
 
1122                         logger.debug("Successfully Validated Rpc SDNC Activate Response")
 
1125                         logger.debug("Did NOT Successfully Validated Rpc SDNC Activate Response")
 
1126                         throw new BpmnError("MSOWorkflowException")
 
1132         public void prepareSDNCRollbackRequest (DelegateExecution execution) {
 
1134                 execution.setVariable("prefix",Prefix)
 
1136                 logger.trace("Inside prepareSDNCRollbackRequest() of DoCreateNetworkInstance")
 
1140                         String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
 
1141                         String createNetworkInput = execution.getVariable(Prefix + "networkRequest")
 
1142                         String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
 
1143                         String assignSDNCResponse = execution.getVariable(Prefix + "assignSDNCResponse")
 
1144                         String networkId = execution.getVariable(Prefix + "networkId")
 
1145                         if (networkId == 'null') {networkId = ""}
 
1146                         String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
 
1148                         // 2. prepare rollback topology via SDNC Adapter SUBFLOW call
 
1149                         String sndcTopologyRollbackRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, createNetworkInput, serviceInstanceId, sdncCallback, "rollback", "NetworkActivateRequest", cloudRegionId, networkId, null, null)
 
1150                         String sndcTopologyRollbackRequestAsString = utils.formatXml(sndcTopologyRollbackRequest)
 
1151                         execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyRollbackRequestAsString)
 
1152                         logger.debug(" Preparing request for SDNC Topology 'rollback-NetworkActivateRequest' rollback . . . - " + "\n" +  sndcTopologyRollbackRequestAsString)
 
1155                 } catch (Exception ex) {
 
1156                         String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareSDNCRollbackRequest() - " + ex.getMessage()
 
1157                         logger.debug(exceptionMessage)
 
1158                         exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
1164         public void prepareRpcSDNCRollbackRequest (DelegateExecution execution) {
 
1166                 execution.setVariable("prefix",Prefix)
 
1168                 logger.trace("Inside prepareRpcSDNCRollbackRequest() of DoCreateNetworkInstance")
 
1172                         String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
 
1173                         String createNetworkInput = execution.getVariable(Prefix + "networkRequest")
 
1174                         String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
 
1175                         String assignSDNCResponse = execution.getVariable(Prefix + "assignSDNCResponse")
 
1176                         String networkId = execution.getVariable(Prefix + "networkId")
 
1177                         if (networkId == 'null') {networkId = ""}
 
1178                         String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
 
1180                         // 2. prepare rollback topology via SDNC Adapter SUBFLOW call
 
1181                         String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null)
 
1182                         String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
 
1183                         execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
 
1184                         logger.debug(" Preparing request for SDNC Topology 'unassign-DeleteNetworkInstance' rollback . . . - " + "\n" +  sndcTopologyRollbackRpcRequestAsString)
 
1187                 } catch (Exception ex) {
 
1188                         String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRpcSDNCRollbackRequest() - " + ex.getMessage()
 
1189                         logger.debug(exceptionMessage)
 
1190                         exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
1196         public void prepareRpcSDNCActivateRollback(DelegateExecution execution) {
 
1198                 execution.setVariable("prefix",Prefix)
 
1200                 logger.trace("Inside prepareRpcSDNCActivateRollback() of DoCreateNetworkInstance")
 
1205                         String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
 
1206                         String createNetworkInput = execution.getVariable(Prefix + "networkRequest")
 
1207                         String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
 
1208                         String activateSDNCResponse = execution.getVariable(Prefix + "activateSDNCResponse")
 
1209                         String networkId = execution.getVariable(Prefix + "networkId")
 
1210                         if (networkId == 'null') {networkId = ""}
 
1211                         String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
 
1213                         // 2. prepare rollback topology via SDNC Adapter SUBFLOW call
 
1214                         String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null)
 
1215                         String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
 
1216                         execution.setVariable(Prefix + "rollbackActivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
 
1217                         logger.debug(" Preparing request for RPC SDNC Topology 'deactivate-DeleteNetworkInstance' rollback . . . - " + "\n" +  sndcTopologyRollbackRpcRequestAsString)
 
1220                 } catch (Exception ex) {
 
1221                         String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage()
 
1222                         logger.debug(exceptionMessage)
 
1223                         exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
1229         public void prepareRollbackData(DelegateExecution execution) {
 
1231                 execution.setVariable("prefix",Prefix)
 
1233                 logger.trace("Inside prepareRollbackData() of DoCreateNetworkInstance")
 
1237                         Map<String, String> rollbackData = new HashMap<String, String>();
 
1238                         String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
 
1239                         if (rollbackSDNCRequest != null) {
 
1240                                 if (rollbackSDNCRequest != "") {
 
1241                                 rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest"))
 
1244                         String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
 
1245                         if (rollbackNetworkRequest != null) {
 
1246                                 if (rollbackNetworkRequest != "") {
 
1247                                 rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
 
1250                         String rollbackActivateSDNCRequest = execution.getVariable(Prefix + "rollbackActivateSDNCRequest")
 
1251                         if (rollbackActivateSDNCRequest != null) {
 
1252                                 if (rollbackActivateSDNCRequest != "") {
 
1253                                 rollbackData.put("rollbackActivateSDNCRequest", execution.getVariable(Prefix + "rollbackActivateSDNCRequest"))
 
1256                         execution.setVariable("rollbackData", rollbackData)
 
1257                         logger.debug("** rollbackData : " + rollbackData)
 
1259                         execution.setVariable("WorkflowException", execution.getVariable(Prefix + "WorkflowException"))
 
1260                         logger.debug("** WorkflowException : " + execution.getVariable("WorkflowException"))
 
1262                 } catch (Exception ex) {
 
1263                         String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRollbackData() - " + ex.getMessage()
 
1264                         logger.debug(exceptionMessage)
 
1265                         exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
1271         public void postProcessResponse(DelegateExecution execution) {
 
1273                 execution.setVariable("prefix",Prefix)
 
1275                 logger.trace("Inside postProcessResponse() of DoCreateNetworkInstance")
 
1280                         // 1. Silent Success: execution.getVariable("CRENWKI_orchestrationStatus") == "ACTIVE"
 
1281                         // 2. Success: execution.getVariable("WorkflowException") == null (NULL)
 
1282                         // 3. WorkflowException: execution.getVariable("WorkflowException") != null (NOT NULL)
 
1284                         logger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException"))
 
1286                         if (execution.getVariable(Prefix + "isException") == false) {
 
1287                                 // set rollback data
 
1288                                 execution.setVariable("orchestrationStatus", "")
 
1289                                 execution.setVariable("networkId", execution.getVariable(Prefix + "networkId"))
 
1290                                 execution.setVariable("networkName", execution.getVariable(Prefix + "networkName"))
 
1291                                 prepareSuccessRollbackData(execution) // populate rollbackData
 
1292                                 execution.setVariable("WorkflowException", null)
 
1293                                 execution.setVariable(Prefix + "Success", true)
 
1294                                 logger.debug(" ***** postProcessResponse(), GOOD !!!")
 
1296                            // inside sub-flow logic
 
1297                                 execution.setVariable(Prefix + "Success", false)
 
1298                                 execution.setVariable("rollbackData", null)
 
1299                                 String exceptionMessage = " Exception encountered in MSO Bpmn. "
 
1300                                 if (execution.getVariable("workflowException") != null) {  // Output of Rollback flow.
 
1301                                    logger.debug(" ***** workflowException: " + execution.getVariable("workflowException"))
 
1302                                    WorkflowException wfex = execution.getVariable("workflowException")
 
1303                                    exceptionMessage = wfex.getErrorMessage()
 
1305                                if (execution.getVariable(Prefix + "WorkflowException") != null) {
 
1306                                       WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException")
 
1307                                       exceptionMessage = pwfex.getErrorMessage()
 
1310                             // going to the Main flow: a-la-carte or macro
 
1311                             logger.debug(" ***** postProcessResponse(), BAD !!!")
 
1312                             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
1313                                 throw new BpmnError("MSOWorkflowException")
 
1316                 } catch(BpmnError b){
 
1317                      logger.debug("Rethrowing MSOWorkflowException")
 
1320                 } catch (Exception ex) {
 
1321                         String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. postProcessResponse() - " + ex.getMessage()
 
1322                         logger.debug(exceptionMessage)
 
1323                         exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
1324                         throw new BpmnError("MSOWorkflowException")
 
1332         public void prepareSuccessRollbackData(DelegateExecution execution) {
 
1334                 execution.setVariable("prefix",Prefix)
 
1336                 logger.trace("Inside prepareSuccessRollbackData() of DoCreateNetworkInstance")
 
1340                         if (execution.getVariable("sdncVersion") != '1610') {
 
1341                             prepareRpcSDNCRollbackRequest(execution)
 
1342                                 prepareRpcSDNCActivateRollback(execution)
 
1344                             prepareSDNCRollbackRequest(execution)
 
1347                         Map<String, String> rollbackData = new HashMap<String, String>();
 
1348                         String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
 
1349                         if (rollbackSDNCRequest != null) {
 
1350                                 if (rollbackSDNCRequest != "") {
 
1351                                         rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
 
1354                         String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
 
1355                         if (rollbackNetworkRequest != null) {
 
1356                                 if (rollbackNetworkRequest != "") {
 
1357                                         rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
 
1360                         String rollbackActivateSDNCRequest = execution.getVariable(Prefix + "rollbackActivateSDNCRequest")
 
1361                         if (rollbackActivateSDNCRequest != null) {
 
1362                                 if (rollbackActivateSDNCRequest != "") {
 
1363                                         rollbackData.put("rollbackActivateSDNCRequest", rollbackActivateSDNCRequest)
 
1366                         execution.setVariable("rollbackData", rollbackData)
 
1368                         logger.debug("** 'rollbackData' for Full Rollback : " + rollbackData)
 
1369                         execution.setVariable("WorkflowException", null)
 
1372                 } catch (Exception ex) {
 
1373                         String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage()
 
1374                         logger.debug(exceptionMessage)
 
1375                         exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
1381         public void setExceptionFlag(DelegateExecution execution){
 
1383                 execution.setVariable("prefix",Prefix)
 
1385                 logger.trace("Inside setExceptionFlag() of DoCreateNetworkInstance")
 
1389                         execution.setVariable(Prefix + "isException", true)
 
1391                         if (execution.getVariable("SavedWorkflowException1") != null) {
 
1392                                 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
 
1394                                 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
 
1396                         logger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException"))
 
1398                 } catch(Exception ex){
 
1399                         String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. setExceptionFlag(): " + ex.getMessage()
 
1400                         logger.debug(exceptionMessage)
 
1401                         exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
1407         // *******************************
 
1408         //     Build Error Section
 
1409         // *******************************
 
1413         public void processJavaException(DelegateExecution execution){
 
1415                 execution.setVariable("prefix",Prefix)
 
1418                         logger.debug( "Caught a Java Exception in " + Prefix)
 
1419                         logger.debug("Started processJavaException Method")
 
1420                         logger.debug("Variables List: " + execution.getVariables())
 
1421                         execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
 
1422                         exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
 
1424                 }catch(Exception e){
 
1425                         logger.debug("Caught Exception during processJavaException Method: " + e)
 
1426                         execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
 
1427                         exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix)
 
1429                 logger.debug( "Completed processJavaException Method in " + Prefix)