Merge "Adding java doc for E2E svc"
diff --git a/adapters/mso-vfc-adapter/WebContent/WEB-INF/web.xml b/adapters/mso-vfc-adapter/WebContent/WEB-INF/web.xml
index 5bf8864..160dfb8 100644
--- a/adapters/mso-vfc-adapter/WebContent/WEB-INF/web.xml
+++ b/adapters/mso-vfc-adapter/WebContent/WEB-INF/web.xml
@@ -38,7 +38,7 @@
   </servlet>
   <servlet-mapping>
     <servlet-name>Resteasy</servlet-name>
-    <url-pattern>/rest/*</url-pattern>
+    <url-pattern>/vfcadapter/*</url-pattern>
   </servlet-mapping>
     <security-constraint>
         <web-resource-collection>
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/VfcAdapterRest.java b/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/VfcAdapterRest.java
index f4c2953..684933f 100644
--- a/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/VfcAdapterRest.java
+++ b/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/VfcAdapterRest.java
@@ -49,7 +49,7 @@
  * @author
  * @version ONAP Amsterdam Release 2017-08-28
  */
-@Path("/v1/vfcdrivers")
+@Path("/vfcadapter/v1")
 public class VfcAdapterRest {
 
     private static final MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA);
diff --git a/aria/multivim-plugin/src/main/python/multivim-plugin/plugin.yaml b/aria/multivim-plugin/src/main/python/multivim-plugin/plugin.yaml
index 9c1c2ca..6df0764 100644
--- a/aria/multivim-plugin/src/main/python/multivim-plugin/plugin.yaml
+++ b/aria/multivim-plugin/src/main/python/multivim-plugin/plugin.yaml
@@ -1,41 +1,385 @@
-##################################################################################
-# Multi-vim built in types and plugins definitions.
-##################################################################################
+#
+# Copyright (c) 2017 GigaSpaces Technologies Ltd. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+tosca_definitions_version: tosca_simple_yaml_1_0
 
-plugins:
-  multivim:
-    executor: central_deployment_agent
-    #source: https://github.com/cloudify-cosmo/onap-multivim-plugin/archive/2.2.0.zip
-    source: 
-    package_name: onap-multivim-plugin
-    package_version: '2.2.0'
+
+topology_template:
+  policies:
+    onap-multivim-plugin:
+      description: >-
+        multivim plugin executes operations.
+      type: aria.Plugin
+      properties:
+        version: 2.0.1
+
+
+data_types:
+
+  onap.multivim.datatypes.Config:
+    description: >-
+      multivim configuration
+    properties:
+      username:
+        type: string
+      password:
+        type: string
+      tenant_name:
+        type: string
+      auth_url:
+        type: string
+      region:
+        type: string
+        required: false
+      nova_url:
+        type: string
+        required: false
+      neutron_url:
+        type: string
+        required: false
+
+  onap.multivim.datatypes.Rules:
+    description: >-
+      multivim security group rules
+    properties:
+      remote_ip_prefix:
+        type: string
+        default: 0.0.0.0/0
+      port:
+        type: integer
+        default:
+
+  # source: https://developer.multivim.org/api-ref/compute/
+
+  onap.multivim.datatypes.Server:
+    description: >-
+      multivim Server args.
+    properties:
+      security_groups:
+        type: list
+        entry_schema: string
+        required: false
+      availability_zone:
+        type: string
+        required: false
+      userdata:
+        type: string
+        required: false
+      metadata:
+        type: map
+        entry_schema: string
+        required: false
+
+  onap.multivim.datatypes.Keypair:
+    description: >-
+      multivim keypair args.
+    properties:
+      public_key:
+        type: string
+        required: false
+      type:
+        type: string
+        required: false
+      user_id:
+        type: string
+        required: false
+
+  # source: https://developer.multivim.org/api-ref/block-storage/v2/index.html
+
+  onap.multivim.datatypes.Volume:
+    description: >-
+      multivim volume args.
+    properties:
+      size:
+        type: integer
+        required: false
+      description:
+        type: string
+        required: false
+      availability_zone:
+        type: string
+        required: false
+      consistencygroup_id:
+        type: string
+        required: false
+      volume_type:
+        type: string
+        required: false
+      snapshot_id:
+        type: string
+        required: false
+      source_replica:
+        type: string
+        required: false
+      tenant_id:
+        type: string
+        required: false
+
+  # source: https://developer.multivim.org/api-ref/image/
+
+  onap.multivim.datatypes.Image:
+    description: >-
+      multivim image args.
+    properties:
+      id:
+        type: string
+        required: false
+      min_disk:
+        type: integer
+        required: false
+      min_ram:
+        type: integer
+        required: false
+      name:
+        type: string
+        required: false
+      protected:
+        type: boolean
+        required: false
+      tags:
+        type: list
+        entry_schema: string
+        required: false
+      visibility:
+        type: string
+        required: false
+
+  # source: https://developer.multivim.org/api-ref/identity/v3/
+
+  onap.multivim.datatypes.Project:
+    description: >-
+      multivim image args.
+    properties:
+      is_domain:
+        type: boolean
+        required: false
+      description:
+        type: string
+        required: false
+      domain_id:
+        type: string
+        required: false
+      name:
+        type: string
+        required: false
+      enabled:
+        type: boolean
+        required: false
+      parent_id:
+        type: string
+        required: false
+
+  # source: https://developer.multivim.org/api-ref/networking/v2/index.html
+
+  onap.multivim.datatypes.Subnet:
+    description: >-
+      multivim subnet args.
+    properties:
+      network_id:
+        type: string
+        required: false
+      ip_version:
+        type: integer
+        required: false
+        default: 4
+      cidr:
+        type: string
+        required: false
+      gateway_ip:
+        type: string
+        required: false
+      dns_nameservers:
+        type: list
+        entry_schema: string
+        required: false
+      enable_dhcp:
+        type: boolean
+        required: false
+      tenant_id:
+        type: string
+        required: false
+
+  onap.multivim.datatypes.Port:
+    description: >-
+      multivim port args
+    properties:
+      network_id:
+        type: string
+        required: false
+      admin_state_up:
+        type: boolean
+        required: false
+      status:
+        type: string
+        required: false
+      mac_address:
+        type: string
+        required: false
+      device_id:
+        type: string
+        required: false
+      device_owner:
+        type: string
+        required: false
+      tenant_id:
+        type: string
+        required: false
+
+  onap.multivim.datatypes.Network:
+    description: >-
+      multivim network args
+    properties:
+      admin_state_up:
+        type: boolean
+        required: false
+      status:
+        type: string
+        required: false
+      subnets:
+        type: list
+        entry_schema: string
+        required: false
+      shared:
+        type: boolean
+        required: false
+      tenant_id:
+        type: string
+        required: false
+
+  onap.multivim.datatypes.SecurityGroup:
+    description: >-
+      multivim network args
+    properties:
+      admin_state_up:
+        type: boolean
+        required: false
+      port_security_enabled:
+        type: boolean
+        required: false
+      project_id:
+        type: string
+        required: false
+      qos_policy_id:
+        type: string
+        required: false
+      segments:
+        type: list
+        entry_schema: string
+        required: false
+      shared:
+        type: boolean
+        required: false
+      vlan_transparent:
+        type: boolean
+        required: false
+      tenant_id:
+        type: string
+        required: false
+
+  onap.multivim.datatypes.Router:
+    description: >-
+      multivim network args
+    properties:
+      bgpvpn_id:
+        type: string
+        required: false
+      router_id:
+        type: string
+        required: false
+
+  onap.multivim.datatypes.FloatingIP:
+    description: >-
+      multivim network args
+    properties:
+      tenant_id:
+        type: string
+        required: false
+      project_id:
+        type: string
+        required: false
+      floating_network_id:
+        type: string
+        required: false
+      floating_network_name:
+        type: string
+        required: false
+      fixed_ip_address:
+        type: string
+        required: false
+      floating_ip_address:
+        type: string
+        required: false
+      port_id:
+        type: string
+        required: false
+      subnet_id:
+        type: string
+        required: false
+
+
+interface_types:
+
+  onap.multivim.interfaces.validation:
+    derived_from: tosca.interfaces.Root
+    creation:
+      description: >-
+        creation operation for the multivim validation interface
+    deletion:
+      description: >-
+        deletion operation for the multivim validation interface
+
 
 node_types:
+
   onap.multivim.nodes.Server:
-    derived_from: cloudify.nodes.Compute
+    derived_from: tosca.nodes.Compute
     properties:
       server:
         default: {}
-        description: >
-          key-value server configuration as described in OpenStack compute create server API. (DEPRECATED - Use the args input in create operation instead)
+        type: onap.multivim.datatypes.Server
+        required: false
+      ip:
+        default:
+        type: string
+      os_family:
+        description: >-
+          Property specifying what type of operating system family
+          this compute node will run.
+        default: linux
+        type: string
       use_external_resource:
         type: boolean
         default: false
-        description: >
+        description: >-
           a boolean for setting whether to create the resource or use an existing one.
           See the using existing resources section.
       create_if_missing:
         default: false
-        description: >
+        type: boolean
+        description: >-
           If use_external_resource is ``true`` and the resource is missing,
           create it instead of failing.
       resource_id:
         default: ''
-        description: >
+        type: string
+        description: >-
           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
       image:
         default: ''
-        description: >
+        type: string
+        description: >-
           The image for the server.
           May receive either the ID or the name of the image.
           note: This property is currently optional for backwards compatibility,
@@ -43,342 +387,352 @@
           (Default: '').
       flavor:
         default: ''
-        description: >
+        type: string
+        description: >-
           The flavor for the server.
           May receive either the ID or the name of the flavor.
           note: This property is currently optional for backwards compatibility,
           but will be modified to become a required property in future versions
           (Default: '').
-      management_network_name:
-        default: ''
-        description: >
-          Cloudify's management network name.
-          Every server should be connected to the management network.
-          If the management network's name information is available in the Provider Context,
-          this connection is made automatically and there's no need to override this property
-          (See the Misc section for more information on the Openstack Provider Context).
-          Otherwise, it is required to set the value of this property to the management network name as it was set in the bootstrap process.
-          Note: When using Nova-net Openstack (see the Nova-net Support section),
-          don't set this property. Defaults to '' (empty string).
       use_password:
         default: false
-        description: >
+        type: boolean
+        description: >-
           A boolean describing whether this server image supports user-password authentication.
           Images that do should post the administrator user's password to the Openstack metadata service (e.g. via cloudbase);
           The password would then be retrieved by the plugin,
           decrypted using the server's keypair and then saved in the server's runtime properties.
+      management_network_name:
+        type: string
+        description: >-
+          The current implementation of the multivim plugin requires this field. The value of
+          this field should be set to the multivim name of a network this server is attached to.
       multivim_config:
-        default: {}
-        description: >
-          see Openstack Configuraion
+        type: onap.multivim.datatypes.Config
+        required: false
+        description: >-
+            see Openstack Configuraion
     interfaces:
-      cloudify.interfaces.lifecycle:
+      Standard:
         create:
-          implementation: openstack.nova_plugin.server.create
+          implementation: onap-multivim-plugin > nova_plugin.server.create
           inputs:
             args:
+              required: false
               default: {}
-            multivim_config:
-              default: {}
+              type: onap.multivim.datatypes.Server
         start:
-          implementation: openstack.nova_plugin.server.start
+          implementation: onap-multivim-plugin > nova_plugin.server.start
           inputs:
             start_retry_interval:
-              description: Polling interval until the server is active in seconds
-              type: integer
               default: 30
+              type: integer
             private_key_path:
-              description: >
-                Path to private key which matches the server's
-                public key. Will be used to decrypt password in case
-                the "use_password" property is set to "true"
               type: string
               default: ''
-            multivim_config:
-              default: {}
-        stop:
-          implementation: openstack.nova_plugin.server.stop
-          inputs:
-            multivim_config:
-              default: {}
-        delete:
-          implementation: openstack.nova_plugin.server.delete
-          inputs:
-            multivim_config:
-              default: {}
-      cloudify.interfaces.validation:
+              required: true
+        stop: onap-multivim-plugin > nova_plugin.server.stop
+        delete: onap-multivim-plugin > nova_plugin.server.delete
+      Validation:
+        type: onap.multivim.interfaces.validation
         creation:
-          implementation: openstack.nova_plugin.server.creation_validation
+          implementation: onap-multivim-plugin > nova_plugin.server.creation_validation
           inputs:
             args:
+              required: false
               default: {}
-            multivim_config:
-              default: {}
+              type: onap.multivim.datatypes.Server
+
+    requirements:
+      - floating_ip:
+          capability: tosca.capabilities.Node
+          node: onap.multivim.nodes.FloatingIP
+          relationship: onap.multivim.server_connected_to_floating_ip
+          occurrences: [ 0, UNBOUNDED ]
+      - security_group:
+          capability: tosca.capabilities.Node
+          node: onap.multivim.nodes.SecurityGroup
+          relationship: onap.multivim.server_connected_to_security_group
+          occurrences: [ 0, UNBOUNDED ]
+      - port:
+          capability: tosca.capabilities.Node
+          node: onap.multivim.nodes.Port
+          relationship: onap.multivim.server_connected_to_port
+          occurrences: [ 0, UNBOUNDED ]
+      - key_pair:
+          capability: tosca.capabilities.Node
+          node: onap.multivim.nodes.KeyPair
+          relationship: onap.multivim.server_connected_to_keypair
+          occurrences: [ 0, UNBOUNDED ]
+    capabilities:
+      multivim_container:
+        type: Node
 
   onap.multivim.nodes.WindowsServer:
     derived_from: onap.multivim.nodes.Server
     properties:
       use_password:
         default: true
-        description: >
+        type: boolean
+        description: >-
           Default changed for derived type
           because Windows instances need a password for agent installation
       os_family:
         default: windows
-        description: >
+        type: string
+        description: >-
           (updates the os_family default as a convenience)
-      agent_config:
-        type: cloudify.datatypes.AgentConfig
-        default:
-          port: 5985
-        description: >
-          (updates the defaults for the agent_config for Windows)
 
   onap.multivim.nodes.KeyPair:
-    derived_from: cloudify.nodes.Root
+    derived_from: tosca.nodes.Root
     properties:
       keypair:
         default: {}
-        description: >
-          the keypair object as described by Openstack. This
-          parameter can be used to override and pass parameters
-          directly to Nova client.
-          Note that in the case of keypair, the only nested parameter
-          that can be used is "name".
+        type: onap.multivim.datatypes.Keypair
+        required: false
+        description: >-
+          the path (on the machine the plugin is running on) to
+          where the private key should be stored. If
+          use_external_resource is set to "true", the existing
+          private key is expected to be at this path.
       private_key_path:
         description: >
           the path (on the machine the plugin is running on) to
           where the private key should be stored. If
           use_external_resource is set to "true", the existing
           private key is expected to be at this path.
+        type: string
       use_external_resource:
         type: boolean
         default: false
-        description: >
+        description: >-
           a boolean describing whether this resource should be
           created or rather that it already exists on Openstack
           and should be used as-is.
       create_if_missing:
         default: false
-        description: >
+        type: boolean
+        description: >-
           If use_external_resource is ``true`` and the resource is missing,
           create it instead of failing.
       resource_id:
         default: ''
-        description: >
+        type: string
+        description: >-
           the name that will be given to the resource on Openstack (excluding optional prefix).
           If not provided, a default name will be given instead.
           If use_external_resource is set to "true", this exact
           value (without any prefixes applied) will be looked for
           as either the name or id of an existing keypair to be used.
       multivim_config:
-        default: {}
-        description: >
-          endpoints and authentication configuration for Openstack.
-          Expected to contain the following nested fields:
-          username, password, tenant_name, auth_url, region.
+        type: onap.multivim.datatypes.Config
+        required: false
     interfaces:
-      cloudify.interfaces.lifecycle:
+      Standard:
         create:
-          implementation: openstack.nova_plugin.keypair.create
+          implementation: onap-multivim-plugin > nova_plugin.keypair.create
           inputs:
             args:
+              required: false
               default: {}
-            multivim_config:
-              default: {}
-        delete:
-          implementation: openstack.nova_plugin.keypair.delete
-          inputs:
-            multivim_config:
-              default: {}
-      cloudify.interfaces.validation:
-        creation:
-          implementation: openstack.nova_plugin.keypair.creation_validation
-          inputs:
-            multivim_config:
-              default: {}
+              type: onap.multivim.datatypes.Keypair
+
+        delete: onap-multivim-plugin > nova_plugin.keypair.delete
+
+      Validation:
+        type: onap.multivim.interfaces.validation
+        creation: onap-multivim-plugin > nova_plugin.keypair.creation_validation
+
+    capabilities:
+      keypair:
+        type: tosca.capabilities.Node
 
   onap.multivim.nodes.Subnet:
-    derived_from: cloudify.nodes.Subnet
+    derived_from: tosca.nodes.Root
     properties:
       subnet:
-        default: {}
-        description: >
-          key-value subnet configuration as described at http://developer.openstack.org/api-ref-networking-v2.html#subnets. (**DEPRECATED - Use the `args` input in create operation instead**)
+        type: onap.multivim.datatypes.Subnet
+        required: false
+        default:
+          cidr: 172.16.0.0/16
       use_external_resource:
         type: boolean
         default: false
-        description: >
+        description: >-
           a boolean for setting whether to create the resource or use an existing one.
           See the using existing resources section.
       create_if_missing:
         default: false
-        description: >
+        type: boolean
+        description: >-
           If use_external_resource is ``true`` and the resource is missing,
           create it instead of failing.
       resource_id:
         default: ''
-        description: >
+        type: string
+        description: >-
           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
       multivim_config:
-        default: {}
-        description: >
-          endpoints and authentication configuration for Openstack.
-          Expected to contain the following nested fields:
-          username, password, tenant_name, auth_url, region.
+        type: onap.multivim.datatypes.Config
+        required: false
     interfaces:
-      cloudify.interfaces.lifecycle:
+      Standard:
         create:
-          implementation: openstack.neutron_plugin.subnet.create
+          implementation: onap-multivim-plugin > neutron_plugin.subnet.create
           inputs:
             args:
-              default: {}
-            multivim_config:
-              default: {}
-        delete:
-          implementation: openstack.neutron_plugin.subnet.delete
-          inputs:
-            multivim_config:
-              default: {}
-      cloudify.interfaces.validation:
+              required: false
+              type: onap.multivim.datatypes.Subnet
+              default:
+                cidr: 172.16.0.0/16
+        delete: onap-multivim-plugin > neutron_plugin.subnet.delete
+      Validation:
+        type: onap.multivim.interfaces.validation
         creation:
-          implementation: openstack.neutron_plugin.subnet.creation_validation
+          implementation: onap-multivim-plugin > neutron_plugin.subnet.creation_validation
           inputs:
             args:
-              default: {}
-            multivim_config:
-              default: {}
+              type: onap.multivim.datatypes.Subnet
+              required: false
+              default:
+                cidr: 172.16.0.0/16
+
+    requirements:
+      - router:
+          capability: tosca.capabilities.Node
+          node: onap.multivim.nodes.Router
+          relationship: onap.multivim.subnet_connected_to_router
+          occurrences: [ 0, UNBOUNDED ]
+      - network:
+          capability: tosca.capabilities.Node
+          node: onap.multivim.nodes.Network
+    capabilities:
+      subnet:
+        type: tosca.capabilities.Node
 
   onap.multivim.nodes.SecurityGroup:
-    derived_from: cloudify.nodes.SecurityGroup
+    derived_from: tosca.nodes.Root
     properties:
       security_group:
+        type: onap.multivim.datatypes.SecurityGroup
+        required: false
         default: {}
-        description: >
-          key-value security_group configuration as described in http://developer.openstack.org/api-ref-networking-v2-ext.html#createSecGroup. (**DEPRECATED - Use the `args` input in create operation instead**)
       description:
         type: string
         default: ''
-        description: >
+        description: >-
           SecurityGroup description.
       create_if_missing:
         default: false
-        description: >
+        type: boolean
+        description: >-
           If use_external_resource is ``true`` and the resource is missing,
           create it instead of failing.
       use_external_resource:
         type: boolean
         default: false
-        description: >
+        description: >-
           a boolean for setting whether to create the resource or use an existing one.
           See the using existing resources section.
       resource_id:
         default: ''
-        description: >
+        type: string
+        description: >-
           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
       multivim_config:
-        default: {}
-        description: >
-          endpoints and authentication configuration for Openstack.
-          Expected to contain the following nested fields:
-          username, password, tenant_name, auth_url, region.
+        type: onap.multivim.datatypes.Config
+        required: false
       rules:
         default: []
-        description: >
-          key-value security_group_rule configuration as described in http://developer.openstack.org/api-ref-networking-v2.html#security_groups
+        type: list
+        entry_schema: onap.multivim.datatypes.Rules
       disable_default_egress_rules:
         default: false
-        description: >
-          a flag for removing the default rules which https://wiki.openstack.org/wiki/Neutron/SecurityGroups#Behavior. If not set to `true`, these rules will remain, and exist alongside any additional rules passed using the `rules` property.
+        type: boolean
+        description: >-
+          a flag for removing the default rules which https://wiki.multivim.org/wiki/Neutron/SecurityGroups#Behavior. If not set to `true`, these rules will remain, and exist alongside any additional rules passed using the `rules` property.
     interfaces:
-      cloudify.interfaces.lifecycle:
+      Standard:
         create:
-          implementation: openstack.neutron_plugin.security_group.create
+          implementation: onap-multivim-plugin > neutron_plugin.security_group.create
           inputs:
             args:
+              type: onap.multivim.datatypes.SecurityGroup
+              required: false
               default: {}
-            multivim_config:
-              default: {}
-        delete:
-          implementation: openstack.neutron_plugin.security_group.delete
-          inputs:
-            multivim_config:
-              default: {}
-      cloudify.interfaces.validation:
-        creation:
-          implementation: openstack.neutron_plugin.security_group.creation_validation
-          inputs:
-            multivim_config:
-              default: {}
+        delete: onap-multivim-plugin > neutron_plugin.security_group.delete
+
+      Validation:
+        type: onap.multivim.interfaces.validation
+        creation: onap-multivim-plugin > neutron_plugin.security_group.creation_validation
+
+    capabilities:
+      security:
+        type: tosca.capabilities.Node
 
   onap.multivim.nodes.Router:
-    derived_from: cloudify.nodes.Router
+    derived_from: tosca.nodes.Root
     properties:
       router:
+        type: onap.multivim.datatypes.Router
+        required: false
         default: {}
-        description: >
-          key-value router configuration as described in http://developer.openstack.org/api-ref-networking-v2.html#layer3. (**DEPRECATED - Use the `args` input in create operation instead**)
       external_network:
         default: ''
-        description: >
+        type: string
+        description: >-
           An external network name or ID.
           If given, the router will use this external network as a gateway.
-      default_to_managers_external_network:
-        default: true
-        description: >
-          A boolean which determines whether to use the Cloudify Manager's external network if no other external network was given (whether by a relationship, by the `external_network` property or by the nested `external_gateway_info` key in the `router` property). This is only relevant if the manager's external network appears in the Provider-context. Defaults to `true`.
       use_external_resource:
         type: boolean
         default: false
-        description: >
+        description: >-
           a boolean for setting whether to create the resource or use an existing one.
           See the using existing resources section.
       create_if_missing:
         default: false
-        description: >
+        type: boolean
+        description: >-
           If use_external_resource is ``true`` and the resource is missing,
           create it instead of failing.
       resource_id:
         default: ''
-        description: >
+        description: >-
           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
+        type: string
       multivim_config:
-        default: {}
-        description: >
-          endpoints and authentication configuration for Openstack.
-          Expected to contain the following nested fields:
-          username, password, tenant_name, auth_url, region.
+        type: onap.multivim.datatypes.Config
+        required: false
+
     interfaces:
-      cloudify.interfaces.lifecycle:
+      Standard:
         create:
-          implementation: openstack.neutron_plugin.router.create
+          implementation: onap-multivim-plugin > neutron_plugin.router.create
           inputs:
             args:
               default: {}
-            multivim_config:
-              default: {}
-        delete:
-          implementation: openstack.neutron_plugin.router.delete
-          inputs:
-            multivim_config:
-              default: {}
-      cloudify.interfaces.validation:
-        creation:
-          implementation: openstack.neutron_plugin.router.creation_validation
-          inputs:
-            multivim_config:
-              default: {}
+              type: onap.multivim.datatypes.Router
+              required: false
+        delete: onap-multivim-plugin > neutron_plugin.router.delete
+      Validation:
+        type: onap.multivim.interfaces.validation
+        creation: onap-multivim-plugin > neutron_plugin.router.creation_validation
+
+    capabilities:
+      gateway:
+        type: tosca.capabilities.Node
 
   onap.multivim.nodes.Port:
-    derived_from: cloudify.nodes.Port
+    derived_from: tosca.nodes.Root
     properties:
       port:
+        type: onap.multivim.datatypes.Port
+        required: false
         default: {}
-        description: >
-          key-value port configuration as described in http://developer.openstack.org/api-ref-networking-v2.html#ports. (**DEPRECATED - Use the `args` input in create operation instead**)
       fixed_ip:
         default: ''
-        description: >
+        type: string
+        description: >-
           may be used to request a specific fixed IP for the port.
           If the IP is unavailable
           (either already taken or does not belong to a subnet the port is on)
@@ -386,407 +740,314 @@
       use_external_resource:
         type: boolean
         default: false
-        description: >
+        description: >-
           a boolean for setting whether to create the resource or use an existing one.
           See the using existing resources section.
       create_if_missing:
         default: false
-        description: >
+        type: boolean
+        description: >-
           If use_external_resource is ``true`` and the resource is missing,
           create it instead of failing.
       resource_id:
         default: ''
-        description: >
+        type: string
+        description: >-
           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
       multivim_config:
-        default: {}
-        description: >
-          endpoints and authentication configuration for Openstack.
-          Expected to contain the following nested fields:
-          username, password, tenant_name, auth_url, region.
+        type: onap.multivim.datatypes.Config
+        required: false
+
     interfaces:
-      cloudify.interfaces.lifecycle:
+      Standard:
         create:
-          implementation: openstack.neutron_plugin.port.create
+          implementation: onap-multivim-plugin > neutron_plugin.port.create
           inputs:
             args:
               default: {}
-            multivim_config:
-              default: {}
-        delete:
-          implementation: openstack.neutron_plugin.port.delete
-          inputs:
-            multivim_config:
-              default: {}
-      cloudify.interfaces.validation:
-        creation:
-          implementation: openstack.neutron_plugin.port.creation_validation
-          inputs:
-            multivim_config:
-              default: {}
+              type: onap.multivim.datatypes.Port
+              required: false
+
+        delete: onap-multivim-plugin > neutron_plugin.port.delete
+
+      Validation:
+        type: onap.multivim.interfaces.validation
+        creation: onap-multivim-plugin > neutron_plugin.port.creation_validation
+
+    requirements:
+      - security_group:
+          capability: tosca.capabilities.Node
+          node: onap.multivim.nodes.SecurityGroup
+          relationship: onap.multivim.port_connected_to_security_group
+          occurrences: [ 0, UNBOUNDED ]
+      - floating_ip:
+          capability: tosca.capabilities.Node
+          node: onap.multivim.nodes.FloatingIP
+          relationship: onap.multivim.port_connected_to_floating_ip
+          occurrences: [ 0, UNBOUNDED ]
+      - subnet:
+          capability: tosca.capabilities.Node
+          node: onap.multivim.nodes.Subnet
+          relationship: onap.multivim.port_connected_to_subnet
+      - network:
+          capability: tosca.capabilities.Node
+          node: onap.multivim.nodes.Network
+          occurrences: [ 0, UNBOUNDED ]
+    capabilities:
+      entry_point:
+        type: tosca.capabilities.Node
 
   onap.multivim.nodes.Network:
-    derived_from: cloudify.nodes.Network
+    derived_from: tosca.nodes.Root
     properties:
       network:
+        type: onap.multivim.datatypes.Network
+        required: false
         default: {}
-        description: >
-          key-value network configuration as described in http://developer.openstack.org/api-ref-networking-v2.html#networks. (**DEPRECATED - Use the `args` input in create operation instead**)
       use_external_resource:
         type: boolean
         default: false
-        description: >
+        description: >-
           a boolean for setting whether to create the resource or use an existing one.
           See the using existing resources section.
       create_if_missing:
         default: false
-        description: >
+        type: boolean
+        description: >-
           If use_external_resource is ``true`` and the resource is missing,
           create it instead of failing.
       resource_id:
         default: ''
-        description: >
+        type: string
+        description: >-
           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
       multivim_config:
-        default: {}
-        description: >
-          endpoints and authentication configuration for Openstack.
-          Expected to contain the following nested fields:
-          username, password, tenant_name, auth_url, region.
+        type: onap.multivim.datatypes.Config
+        required: false
     interfaces:
-      cloudify.interfaces.lifecycle:
+      Standard:
         create:
-          implementation: openstack.neutron_plugin.network.create
+          implementation: onap-multivim-plugin > neutron_plugin.network.create
           inputs:
             args:
               default: {}
-            multivim_config:
-              default: {}
-        delete:
-          implementation: openstack.neutron_plugin.network.delete
-          inputs:
-            multivim_config:
-              default: {}
-      cloudify.interfaces.validation:
-        creation:
-          implementation: openstack.neutron_plugin.network.creation_validation
-          inputs:
-            multivim_config:
-              default: {}
+              type: onap.multivim.datatypes.Network
+              required: false
+
+        delete: onap-multivim-plugin > neutron_plugin.network.delete
+
+      Validation:
+        type: onap.multivim.interfaces.validation
+        creation: onap-multivim-plugin > neutron_plugin.network.creation_validation
+
+    capabilities:
+      address_space:
+        type: tosca.capabilities.Node
 
   onap.multivim.nodes.FloatingIP:
-    derived_from: cloudify.nodes.VirtualIP
+    derived_from: tosca.nodes.Root
+    attributes:
+      floating_ip_address:
+        type: string
     properties:
       floatingip:
+        type: onap.multivim.datatypes.FloatingIP
+        required: false
         default: {}
-        description: >
-          key-value floatingip configuration as described in http://developer.openstack.org/api-ref-networking-v2.html#layer3. (**DEPRECATED - Use the `args` input in create operation instead**)
       use_external_resource:
         type: boolean
         default: false
-        description: >
+        description: >-
           a boolean for setting whether to create the resource or use an existing one.
           See the using existing resources section.
       create_if_missing:
         default: false
-        description: >
+        type: boolean
+        description: >-
           If use_external_resource is ``true`` and the resource is missing,
           create it instead of failing.
       resource_id:
         description: IP address of the floating IP
         default: ''
+        type: string
+        description: >-
+          name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
       multivim_config:
-        default: {}
-        description: >
-          endpoints and authentication configuration for Openstack.
-          Expected to contain the following nested fields:
-          username, password, tenant_name, auth_url, region.
+        type: onap.multivim.datatypes.Config
+        required: false
+
     interfaces:
-      cloudify.interfaces.lifecycle:
+      Standard:
         create:
-          implementation: openstack.neutron_plugin.floatingip.create
+          implementation: onap-multivim-plugin > neutron_plugin.floatingip.create
           inputs:
             args:
               default: {}
-            multivim_config:
-              default: {}
-        delete:
-          implementation: openstack.neutron_plugin.floatingip.delete
-          inputs:
-            multivim_config:
-              default: {}
-      cloudify.interfaces.validation:
-        creation:
-          implementation: openstack.neutron_plugin.floatingip.creation_validation
-          inputs:
-            multivim_config:
-              default: {}
+              type: onap.multivim.datatypes.FloatingIP
+              required: false
+
+        delete: onap-multivim-plugin > neutron_plugin.floatingip.delete
+
+      Validation:
+        type: onap.multivim.interfaces.validation
+        creation: onap-multivim-plugin > neutron_plugin.floatingip.creation_validation
+
+    capabilities:
+      address:
+        type: tosca.capabilities.Node
 
   onap.multivim.nodes.Volume:
-    derived_from: cloudify.nodes.Volume
+    derived_from: tosca.nodes.Root
     properties:
       volume:
         default: {}
-        description: >
-          key-value volume configuration as described in http://developer.openstack.org/api-ref-blockstorage-v1.html#volumes-v1. (**DEPRECATED - Use the `args` input in create operation instead**)
+        type: onap.multivim.datatypes.Volume
+        description: >-
+          key-value volume configuration as described in http://developer.multivim.org/api-ref-blockstorage-v1.html#volumes-v1. (**DEPRECATED - Use the `args` input in create operation instead**)
       use_external_resource:
         type: boolean
         default: false
-        description: >
+        description: >-
           a boolean for setting whether to create the resource or use an existing one.
           See the using existing resources section.
       create_if_missing:
         default: false
-        description: >
+        type: boolean
+        description: >-
           If use_external_resource is ``true`` and the resource is missing,
           create it instead of failing.
       resource_id:
-        default: ''
-        description: >
+        default:
+        type: string
+        description: >-
           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
       device_name:
         default: auto
-        description: >
+        type: string
+        description: >-
           The device name this volume will be attached to.
           Default value is *auto*,
-          which means openstack will auto-assign a device.
+          which means multivim will auto-assign a device.
           Note that if you do explicitly set a value,
           this value may not be the actual device name assigned.
-          Sometimes the device requested will not be available and openstack will assign it to a different device,
+          Sometimes the device requested will not be available and multivim will assign it to a different device,
           this is why we recommend using *auto*.
       multivim_config:
-        default: {}
-        description: >
-          endpoints and authentication configuration for Openstack.
-          Expected to contain the following nested fields:
-          username, password, tenant_name, auth_url, region.
+        type: onap.multivim.datatypes.Config
+        required: false
       boot:
         type: boolean
         default: false
-        description: >
+        description: >-
           If a Server instance is connected to this Volume by a relationship,
           this volume will be used as the boot volume for that Server.
     interfaces:
-      cloudify.interfaces.lifecycle:
+      Standard:
         create:
-          implementation: openstack.cinder_plugin.volume.create
+          implementation: onap-multivim-plugin > cinder_plugin.volume.create
           inputs:
             args:
               default: {}
-            multivim_config:
-              default: {}
+              type: onap.multivim.datatypes.Volume
+              required: false
+
             status_attempts:
-              description: >
+              description: >-
                 Number of times to check for the creation's status before failing
               type: integer
-              default: 20 
+              default: 20
             status_timeout:
-              description: >
+              description: >-
                 Interval (in seconds) between subsequent inquiries of the creation's
                 status
               type: integer
-              default: 15 
-        delete:
-          implementation: openstack.cinder_plugin.volume.delete
-          inputs:
-            multivim_config:
-              default: {}
-      cloudify.interfaces.validation:
-        creation:
-          implementation: openstack.cinder_plugin.volume.creation_validation
-          inputs:
-            multivim_config:
-              default: {}
+              default: 15
+        delete: onap-multivim-plugin > cinder_plugin.volume.delete
 
-  onap.multivim.nova_net.nodes.FloatingIP:
-    derived_from: cloudify.nodes.VirtualIP
-    properties:
-      floatingip:
-        default: {}
-        description: >
-          key-value floatingip configuration as described in http://developer.openstack.org/api-ref-compute-v2-ext.html#ext-os-floating-ips. (**DEPRECATED - Use the `args` input in create operation instead**)
-      use_external_resource:
-        type: boolean
-        default: false
-        description: >
-          a boolean for setting whether to create the resource or use an existing one.
-          See the using existing resources section.
-      create_if_missing:
-        default: false
-        description: >
-          TODO: CREATE. THIS IS MISSING
-      resource_id:
-        default: ''
-        description: >
-          name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
-      multivim_config:
-        default: {}
-        description: >
-          endpoints and authentication configuration for Openstack.
-          Expected to contain the following nested fields:
-          username, password, tenant_name, auth_url, region.
-    interfaces:
-      cloudify.interfaces.lifecycle:
-        create:
-          implementation: openstack.nova_plugin.floatingip.create
-          inputs:
-            args:
-              default: {}
-            multivim_config:
-              default: {}
-        delete:
-          implementation: openstack.nova_plugin.floatingip.delete
-          inputs:
-            multivim_config:
-              default: {}
-      cloudify.interfaces.validation:
-        creation:
-          implementation: openstack.nova_plugin.floatingip.creation_validation
-          inputs:
-            multivim_config:
-              default: {}
+      Validation:
+        type: onap.multivim.interfaces.validation
+        creation: onap-multivim-plugin > cinder_plugin.volume.creation_validation
 
-  onap.multivim.nova_net.nodes.SecurityGroup:
-    derived_from: cloudify.nodes.SecurityGroup
-    properties:
-      security_group:
-        default: {}
-        description: >
-          key-value security_group configuration as described in http://developer.openstack.org/api-ref-compute-v2-ext.html#ext-os-security-groups. (**DEPRECATED - Use the `args` input in create operation instead**)
-      use_external_resource:
-        type: boolean
-        default: false
-        description: >
-          a boolean for setting whether to create the resource or use an existing one.
-          See the using existing resources section.
-      create_if_missing:
-        default: false
-        description: >
-          TODO: CREATE. THIS IS MISSING
-      resource_id:
-        default: ''
-        description: >
-          name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
-      multivim_config:
-        default: {}
-        description: >
-          endpoints and authentication configuration for Openstack.
-          Expected to contain the following nested fields:
-          username, password, tenant_name, auth_url, region.
-      rules:
-        default: []
-        description: >
-          key-value security group rule as described in http://developer.openstack.org/api-ref-compute-v2-ext.html#ext-os-security-group-default-rules.
-      description:
-        description: security group description
-    interfaces:
-      cloudify.interfaces.lifecycle:
-        create:
-          implementation: openstack.nova_plugin.security_group.create
-          inputs:
-            args:
-              default: {}
-            multivim_config:
-              default: {}
-            status_attempts:
-              description: >
-                Number of times to check for the attachment's status before failing
-              type: integer
-              default: 10
-            status_timeout:
-              description: >
-                Interval (in seconds) between subsequent inquiries of the attachment's
-                status
-              type: integer
-              default: 2
-        delete:
-          implementation: openstack.nova_plugin.security_group.delete
-          inputs:
-            multivim_config:
-              default: {}
-      cloudify.interfaces.validation:
-        creation:
-          implementation: openstack.nova_plugin.security_group.creation_validation
-          inputs:
-            multivim_config:
-              default: {}
+    requirements:
+      - server:
+          capability: tosca.capabilities.Node
+          node: onap.multivim.nodes.Server
+          relationship: onap.multivim.volume_attached_to_server
 
   onap.multivim.nodes.Image:
-    derived_from: cloudify.nodes.Root
+    derived_from: tosca.nodes.Root
     properties:
       image:
-        description: >
+        description: >-
           Required parameters are (container_format, disk_format). Accepted
           types are available on
-          http://docs.openstack.org/developer/glance/formats.html
+          http://docs.multivim.org/developer/glance/formats.html
           To create an image from the local file its path should be added
           in data parameter.
         default: {}
+        type: map
+        entry_schema: string
       image_url:
         default: ''
-        description: >
-          The openstack resource URL for the image.
+        type: string
+        description: >-
+          The multivim resource URL for the image.
       use_external_resource:
         default: false
-        description: >
+        type: boolean
+        description: >-
           a boolean for setting whether to create the resource or use an existing one.
           See the using existing resources section.
       create_if_missing:
         default: false
-        description: >
+        type: boolean
+        description: >-
           If use_external_resource is ``true`` and the resource is missing,
           create it instead of failing.
       resource_id:
         default: ''
-        description: >
+        type: string
+        description: >-
           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
       multivim_config:
-        default: {}
-        description: >
-          endpoints and authentication configuration for Openstack.
-          Expected to contain the following nested fields:
-          username, password, tenant_name, auth_url, region.
+        type: onap.multivim.datatypes.Config
+        required: false
     interfaces:
-      cloudify.interfaces.lifecycle:
-        create:
-          implementation: openstack.glance_plugin.image.create
-          inputs:
-            multivim_config:
-              default: {}
+      Standard:
+        create: onap-multivim-plugin > glance_plugin.image.create
+
         start:
-          implementation: openstack.glance_plugin.image.start
+          implementation: onap-multivim-plugin > glance_plugin.image.start
           inputs:
             start_retry_interval:
               default: 30
-            multivim_config:
-              default: {}
-        delete:
-          implementation: openstack.glance_plugin.image.delete
-          inputs:
-            multivim_config:
-              default: {}
-      cloudify.interfaces.validation:
-        creation:
-          implementation: openstack.glance_plugin.image.creation_validation
-          inputs:
-            multivim_config:
-              default: {}
+              type: integer
 
+        delete: onap-multivim-plugin > glance_plugin.image.delete
+
+      Validation:
+        type: onap.multivim.interfaces.validation
+        creation: onap-multivim-plugin > glance_plugin.image.creation_validation
 
   onap.multivim.nodes.Project:
-    derived_from: cloudify.nodes.Root
+    derived_from: tosca.nodes.Root
     properties:
       project:
         default: {}
-        description: >
+        type: onap.multivim.datatypes.Project
+        description: >-
           key-value project configuration.
       users:
         default: []
-        description: >
+        type: list
+        entry_schema: string
+        description: >-
           List of users assigned to this project in the following format:
             { name: string, roles: [string] }
       quota:
         default: {}
+        type: map
+        entry_schema: string
         description: |
           A dictionary mapping service names to quota definitions for a proejct
 
@@ -797,64 +1058,55 @@
               nova: <quota>
       use_external_resource:
         default: false
-        description: >
+        type: boolean
+        description: >-
           a boolean for setting whether to create the resource or use an existing one.
           See the using existing resources section.
       create_if_missing:
         default: false
-        description: >
+        type: boolean
+        description: >-
           If use_external_resource is ``true`` and the resource is missing,
           create it instead of failing.
       resource_id:
         default: ''
-        description: >
+        type: string
+        description: >-
           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
       multivim_config:
-        default: {}
-        description: >
-          endpoints and authentication configuration for Openstack.
-          Expected to contain the following nested fields:
-          username, password, tenant_name, auth_url, region.
+        type: onap.multivim.datatypes.Config
+        required: false
     interfaces:
-      cloudify.interfaces.lifecycle:
-        create: openstack.keystone_plugin.project.create
-        start: openstack.keystone_plugin.project.start
-        delete: openstack.keystone_plugin.project.delete
-      cloudify.interfaces.validation:
-        creation: openstack.keystone_plugin.project.creation_validation
+      Standard:
+        create: multivim.keystone_plugin.project.create
+        start: multivim.keystone_plugin.project.start
+        delete: multivim.keystone_plugin.project.delete
+      Validation:
+        type: onap.multivim.interfaces.validation
+        creation: multivim.keystone_plugin.project.creation_validation
 
-relationships:
+
+relationship_types:
+
   onap.multivim.port_connected_to_security_group:
-    derived_from: cloudify.relationships.connected_to
-    source_interfaces:
-      cloudify.interfaces.relationship_lifecycle:
-        establish:
-          implementation: openstack.neutron_plugin.port.connect_security_group
-          inputs:
-            multivim_config:
-              default: {}
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        add_source: onap-multivim-plugin > neutron_plugin.port.connect_security_group
 
   onap.multivim.subnet_connected_to_router:
-    derived_from: cloudify.relationships.connected_to
-    target_interfaces:
-      cloudify.interfaces.relationship_lifecycle:
-        establish:
-          implementation: openstack.neutron_plugin.router.connect_subnet
-          inputs:
-            multivim_config:
-              default: {}
-        unlink:
-          implementation: openstack.neutron_plugin.router.disconnect_subnet
-          inputs:
-            multivim_config:
-              default: {}
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        add_target: onap-multivim-plugin > neutron_plugin.router.connect_subnet
+        remove_target: onap-multivim-plugin > neutron_plugin.router.disconnect_subnet
 
   onap.multivim.server_connected_to_floating_ip:
-    derived_from: cloudify.relationships.connected_to
-    source_interfaces:
-      cloudify.interfaces.relationship_lifecycle:
-        establish:
-          implementation: openstack.nova_plugin.server.connect_floatingip
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        add_source:
+          implementation: onap-multivim-plugin > nova_plugin.server.connect_floatingip
           inputs:
             fixed_ip:
               description: >
@@ -862,69 +1114,42 @@
                 If omitted, Openstack will choose which port to associate.
               type: string
               default: ''
-            multivim_config:
-              default: {}
-        unlink:
-          implementation: openstack.nova_plugin.server.disconnect_floatingip
-          inputs:
-            multivim_config:
-              default: {}
+        remove_source: onap-multivim-plugin > nova_plugin.server.disconnect_floatingip
 
   onap.multivim.port_connected_to_floating_ip:
-    derived_from: cloudify.relationships.connected_to
-    source_interfaces:
-      cloudify.interfaces.relationship_lifecycle:
-        establish:
-          implementation: openstack.neutron_plugin.floatingip.connect_port
-          inputs:
-            multivim_config:
-              default: {}
-        unlink:
-          implementation: openstack.neutron_plugin.floatingip.disconnect_port
-          inputs:
-            multivim_config:
-              default: {}
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        add_source: onap-multivim-plugin > neutron_plugin.floatingip.connect_port
+        remove_source: onap-multivim-plugin > neutron_plugin.floatingip.disconnect_port
 
   onap.multivim.server_connected_to_security_group:
-    derived_from: cloudify.relationships.connected_to
-    source_interfaces:
-      cloudify.interfaces.relationship_lifecycle:
-        establish:
-          implementation: openstack.nova_plugin.server.connect_security_group
-          inputs:
-            multivim_config:
-              default: {}
-        unlink:
-          implementation: openstack.nova_plugin.server.disconnect_security_group
-          inputs:
-            multivim_config:
-              default: {}
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        add_source: onap-multivim-plugin > nova_plugin.server.connect_security_group
+        remove_source: onap-multivim-plugin > nova_plugin.server.disconnect_security_group
 
   onap.multivim.server_connected_to_port:
-    derived_from: cloudify.relationships.connected_to
-    source_interfaces:
-      cloudify.interfaces.relationship_lifecycle:
-        unlink:
-          implementation: openstack.neutron_plugin.port.detach
-          inputs:
-            multivim_config:
-              default: {}
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        remove_source: onap-multivim-plugin > neutron_plugin.port.detach
 
   onap.multivim.server_connected_to_keypair:
-    derived_from: cloudify.relationships.connected_to
+    derived_from: ConnectsTo
 
   onap.multivim.port_connected_to_subnet:
-    derived_from: cloudify.relationships.connected_to
+    derived_from: ConnectsTo
 
   onap.multivim.volume_attached_to_server:
-    derived_from: cloudify.relationships.connected_to
-    target_interfaces:
-      cloudify.interfaces.relationship_lifecycle:
-        establish:
-          implementation: openstack.nova_plugin.server.attach_volume
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        add_target:
+          implementation: onap-multivim-plugin > nova_plugin.server.attach_volume
           inputs:
-            multivim_config:
-              default: {}
+
             status_attempts:
               description: >
                 Number of times to check for the attachment's status before failing
@@ -936,11 +1161,10 @@
                 status
               type: integer
               default: 2
-        unlink:
-          implementation: openstack.nova_plugin.server.detach_volume
+        remove_target:
+          implementation: onap-multivim-plugin > nova_plugin.server.detach_volume
           inputs:
-            multivim_config:
-              default: {}
+
             status_attempts:
               description: >
                 Number of times to check for the detachment's status before failing
diff --git a/aria/multivim-plugin/src/main/python/multivim-plugin/setup.py b/aria/multivim-plugin/src/main/python/multivim-plugin/setup.py
index 116aba5..51387c0 100644
--- a/aria/multivim-plugin/src/main/python/multivim-plugin/setup.py
+++ b/aria/multivim-plugin/src/main/python/multivim-plugin/setup.py
@@ -18,7 +18,7 @@
 
 setup(
     zip_safe=True,
-    name='cloudify-openstack-plugin',
+    name='onap-multivim-plugin',
     version='2.2.0',
     author='idanmo',
     author_email='idan@gigaspaces.com',
@@ -31,7 +31,7 @@
         'keystone_plugin'
     ],
     license='LICENSE',
-    description='Cloudify plugin for OpenStack infrastructure.',
+    description='ONAP plugin for multivim infrastructure.',
     install_requires=[
         'cloudify-plugins-common>=3.3.1',
         'keystoneauth1>=2.16.0,<3',
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/Homing.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/Homing.groovy
new file mode 100755
index 0000000..dcbb73c
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/Homing.groovy
@@ -0,0 +1,259 @@
+/*

+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.

+ */

+package org.openecomp.mso.bpmn.common.scripts

+

+import org.camunda.bpm.engine.delegate.BpmnError

+import org.camunda.bpm.engine.runtime.Execution

+

+import org.openecomp.mso.bpmn.common.scripts.AaiUtil

+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil

+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils

+import org.openecomp.mso.bpmn.core.domain.InventoryType

+import org.openecomp.mso.bpmn.core.domain.Resource

+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition

+import org.openecomp.mso.bpmn.core.domain.Subscriber

+import org.openecomp.mso.bpmn.core.json.JsonUtils

+import org.openecomp.mso.rest.APIResponse

+import org.openecomp.mso.rest.RESTClient

+import org.openecomp.mso.rest.RESTConfig

+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor

+

+import org.json.JSONArray

+import org.json.JSONObject

+

+import static org.openecomp.mso.bpmn.common.scripts.GenericUtils.*;

+

+/**

+ * This class is contains the scripts used

+ * by the Homing Subflow building block. The

+ * subflow attempts to home the provided

+ * resources by calling sniro.

+ *

+ * @author cb645j

+ *

+ */

+class Homing extends AbstractServiceTaskProcessor{

+

+	ExceptionUtil exceptionUtil = new ExceptionUtil()

+	JsonUtils jsonUtil = new JsonUtils()

+	SNIROUtils sniroUtils = new SNIROUtils(this)

+

+	/**

+	 * This method validates the incoming variables.

+	 * The method then prepares the sniro request

+	 * and posts it to sniro's rest api.

+	 *

+	 * @param execution

+	 *

+	 * @author cb645j

+	 */

+	public void callSniro(Execution execution){

+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")

+		execution.setVariable("prefix","HOME_")

+		utils.log("DEBUG", "*** Started Homing Call Sniro ***", isDebugEnabled)

+		try{

+			execution.setVariable("rollbackData", null)

+			execution.setVariable("rolledBack", false)

+

+			String requestId = execution.getVariable("msoRequestId")

+			utils.log("DEBUG", "Incoming Request Id is: "  + requestId, isDebugEnabled)

+			String serviceInstanceId = execution.getVariable("serviceInstanceId")

+			utils.log("DEBUG", "Incoming Service Instance Id is: "  + serviceInstanceId, isDebugEnabled)

+			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")

+			utils.log("DEBUG", "Incoming Service Decomposition is: "  + serviceDecomposition, isDebugEnabled)

+			String subscriberInfo = execution.getVariable("subscriberInfo")

+			utils.log("DEBUG", "Incoming Subscriber Information is: "  + subscriberInfo, isDebugEnabled)

+

+			if(isBlank(requestId) || isBlank(serviceInstanceId) || isBlank(serviceDecomposition.toString()) || isBlank(subscriberInfo)){

+				exceptionUtil.buildAndThrowWorkflowException(execution, 4000, "A required input variable is missing or null")

+			}else{

+				String subId = jsonUtil.getJsonValue(subscriberInfo, "globalSubscriberId")

+				String subName = jsonUtil.getJsonValue(subscriberInfo, "subscriberName")

+				String subCommonSiteId = ""

+				if(jsonUtil.jsonElementExist(subscriberInfo, "subscriberCommonSiteId")){

+					subCommonSiteId = jsonUtil.getJsonValue(subscriberInfo, "subscriberCommonSiteId")

+				}

+				Subscriber subscriber = new Subscriber(subId, subName, subCommonSiteId)

+

+				String cloudConfiguration = execution.getVariable("cloudConfiguration") // TODO Currently not being used

+				String homingParameters = execution.getVariable("homingParameters") // (aka. request parameters) Should be json format. TODO confirm its json format

+

+				//Authentication

+				def authHeader = ""

+				String basicAuth = execution.getVariable("URN_mso_sniro_auth")

+				String msokey = execution.getVariable("URN_mso_msoKey")

+				String basicAuthValue = utils.encrypt(basicAuth, msokey)

+				if(basicAuthValue != null){

+					utils.log("DEBUG", "Obtained BasicAuth username and password for SNIRO Adapter: " + basicAuthValue, isDebugEnabled)

+					try {

+						authHeader = utils.getBasicAuth(basicAuthValue, msokey)

+						execution.setVariable("BasicAuthHeaderValue",authHeader)

+					} catch (Exception ex) {

+						utils.log("DEBUG", "Unable to encode username and password string: " + ex, isDebugEnabled)

+						exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - Unable to encode username and password string")

+					}

+				}else{

+					utils.log("DEBUG", "Unable to obtain BasicAuth - BasicAuth value null" , isDebugEnabled)

+					exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - BasicAuth value null")

+				}

+

+				//Prepare Callback

+				String timeout = execution.getVariable("timeout")

+				if(isBlank(timeout)){

+					timeout = execution.getVariable("URN_mso_sniro_timeout");

+					if(isBlank(timeout)) {

+						timeout = "PT30M";

+					}

+				}

+				utils.log("DEBUG", "Async Callback Timeout will be: " + timeout, isDebugEnabled)

+

+				execution.setVariable("timeout", timeout);

+				execution.setVariable("correlator", requestId);

+				execution.setVariable("messageType", "SNIROResponse");

+

+				//Build Request & Call Sniro

+				String sniroRequest = sniroUtils.buildRequest(execution, requestId, serviceDecomposition, subscriber, homingParameters)

+				execution.setVariable("sniroRequest", sniroRequest)

+				utils.log("DEBUG", "SNIRO Request is: " + sniroRequest, isDebugEnabled)

+

+				String endpoint = execution.getVariable("URN_mso_service_agnostic_sniro_endpoint")

+				String host = execution.getVariable("URN_mso_service_agnostic_sniro_host")

+				String url = host + endpoint

+				utils.log("DEBUG", "Posting to Sniro Url: " + url, isDebugEnabled)

+

+				logDebug( "URL to be used is: " + url, isDebugEnabled)

+				

+				String basicAuthCred = utils.getBasicAuth(execution.getVariable("URN_aai_auth"),execution.getVariable("URN_mso_msoKey"))

+				

+				RESTConfig config = new RESTConfig(url);

+				RESTClient client = new RESTClient(config).addAuthorizationHeader(authHeader).addHeader("Content-Type", "application/json")

+				if (basicAuthCred != null && !"".equals(basicAuthCred)) {

+					client.addAuthorizationHeader(basicAuthCred)

+				}

+				APIResponse response = client.httpPost(sniroRequest)

+				

+				int responseCode = response.getStatusCode()

+				execution.setVariable("syncResponseCode", responseCode);

+				logDebug("SNIRO sync response code is: " + responseCode, isDebugEnabled)

+				String syncResponse = response.getResponseBodyAsString()

+				execution.setVariable("syncResponse", syncResponse);

+				logDebug("SNIRO sync response is: " + syncResponse, isDebugEnabled)

+

+				utils.log("DEBUG", "*** Completed Homing Call Sniro ***", isDebugEnabled)

+			}

+		}catch(BpmnError b){

+			throw b

+		}catch(Exception e){

+			utils.log("DEBUG", "Error encountered within Homing CallSniro method: " + e, isDebugEnabled)

+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in Homing CallSniro: " + e.getMessage())

+		}

+	}

+	

+	/**

+	 * This method processes the callback response

+	 * and the contained homing solution. It sets

+	 * homing solution assignment and license

+	 * information to the corresponding resources

+	 *

+	 * @param execution

+	 *

+	 * @author cb645j

+	 */

+	public void processHomingSolution(Execution execution){

+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")

+		utils.log("DEBUG", "*** Started Homing Process Homing Solution ***", isDebugEnabled)

+		try{

+			String response = execution.getVariable("asyncCallbackResponse")

+			utils.log("DEBUG", "Sniro Async Callback Response is: " + response, isDebugEnabled)

+			utils.logAudit("Sniro Async Callback Response is: " + response)

+

+			sniroUtils.validateCallbackResponse(execution, response)

+			String placements = jsonUtil.getJsonValue(response, "solutionInfo.placement")

+

+			ServiceDecomposition decomposition = execution.getVariable("serviceDecomposition")

+			utils.log("DEBUG", "Service Decomposition: " + decomposition, isDebugEnabled)

+

+			List<Resource> resourceList = decomposition.getServiceResources()

+			JSONArray arr = new JSONArray(placements)

+			for(int i = 0; i < arr.length(); i++){

+				JSONObject placement = arr.getJSONObject(i)

+				String jsonServiceResourceId = placement.getString("serviceResourceId")

+				for(Resource resource:resourceList){

+					String serviceResourceId = resource.getResourceId()

+					if(serviceResourceId.equalsIgnoreCase(jsonServiceResourceId)){

+						//match

+						String inventoryType = placement.getString("inventoryType")

+						resource.getHomingSolution().setInventoryType(InventoryType.valueOf(inventoryType))

+						resource.getHomingSolution().setCloudRegionId(placement.getString("cloudRegionId"))

+						JSONArray assignmentArr = placement.getJSONArray("assignmentInfo")

+						Map<String, String> assignmentMap = jsonUtil.entryArrayToMap(execution, assignmentArr.toString(), "variableName", "variableValue")

+						resource.getHomingSolution().setCloudOwner(assignmentMap.get("cloudOwner"))

+						resource.getHomingSolution().setAicClli(assignmentMap.get("aicClli"))

+						resource.getHomingSolution().setAicVersion(assignmentMap.get("aicVersion"))

+						if(inventoryType.equalsIgnoreCase("service")){

+							resource.getHomingSolution().setVnfHostname(assignmentMap.get("vnfHostName"));

+							resource.getHomingSolution().setServiceInstanceId(placement.getString("serviceInstanceId"));

+						}

+					}

+				}

+			}

+			if(JsonUtils.jsonElementExist(response, "solutionInfo.licenseInfo")){

+				String licenseInfo = jsonUtil.getJsonValue(response, "solutionInfo.licenseInfo")

+				JSONArray licenseArr = new JSONArray(licenseInfo)

+				for(int l = 0; l < licenseArr.length(); l++){

+					JSONObject license = licenseArr.getJSONObject(l)

+					String jsonServiceResourceId = license.getString("serviceResourceId")

+					for(Resource resource:resourceList){

+						String serviceResourceId = resource.getResourceId()

+						if(serviceResourceId.equalsIgnoreCase(jsonServiceResourceId)){

+							//match

+							String jsonEntitlementPoolList = jsonUtil.getJsonValue(license.toString(), "entitlementPoolList")

+							List<String> entitlementPoolList = jsonUtil.StringArrayToList(execution, jsonEntitlementPoolList)

+							resource.getHomingSolution().setEntitlementPoolList(entitlementPoolList)

+

+							String jsonLicenseKeyGroupList = jsonUtil.getJsonValue(license.toString(), "licenseKeyGroupList")

+							List<String> licenseKeyGroupList = jsonUtil.StringArrayToList(execution, jsonLicenseKeyGroupList)

+							resource.getHomingSolution().setLicenseKeyGroupList(licenseKeyGroupList)

+						}

+					}

+				}

+			}

+			execution.setVariable("serviceDecomposition", decomposition)

+			execution.setVariable("homingSolution", placements) //TODO - can be removed as output variable

+

+			utils.log("DEBUG", "*** Completed Homing Process Homing Solution ***", isDebugEnabled)

+		}catch(BpmnError b){

+			throw b

+		}catch(Exception e){

+			utils.log("DEBUG", "Error encountered within Homing ProcessHomingSolution method: " + e, isDebugEnabled)

+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in Homing ProcessHomingSolution")

+		}

+	}

+

+	/**

+	 * This method logs the start of DHVCreateService

+	 * to make debugging easier.

+	 *

+	 * @param - execution

+	 * @author cb645j

+	 */

+	public String logStart(Execution execution){

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+		String requestId = execution.getVariable("testReqId")

+		if(isBlank(requestId)){

+			requestId = execution.getVariable("msoRequestId")

+		}

+		execution.setVariable("DHVCS_requestId", requestId)

+		utils.log("DEBUG", "***** STARTED Homing Subflow for request: "  + requestId + " *****", "true")

+		utils.log("DEBUG", "****** Homing Subflow Global Debug Enabled: " + isDebugEnabled  + " *****", "true")

+		utils.logAudit("***** STARTED Homing Subflow for request: "  + requestId + " *****")

+	}

+

+

+	/**

+	 * Auto-generated method stub

+	 */

+	public void preProcessRequest(Execution execution){}

+

+}

diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/ReceiveWorkflowMessage.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/ReceiveWorkflowMessage.groovy
new file mode 100644
index 0000000..6ad03ab
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/ReceiveWorkflowMessage.groovy
@@ -0,0 +1,109 @@
+package org.openecomp.mso.bpmn.common.scripts

+

+import groovy.json.*

+

+import org.apache.commons.lang3.*

+import org.camunda.bpm.engine.delegate.BpmnError

+import org.camunda.bpm.engine.runtime.Execution

+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor

+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil

+

+

+class ReceiveWorkflowMessage extends AbstractServiceTaskProcessor {

+

+	ExceptionUtil exceptionUtil = new ExceptionUtil()

+

+	/**

+	 * Process the incoming variables.

+	 *

+	 * @param execution The flow's execution instance.

+	 */

+public void preProcessRequest (Execution execution) {

+		def method = getClass().getSimpleName() + '.preProcessRequest(' +

+			'execution=' + execution.getId() +

+			')'

+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')

+		logDebug('Entered ' + method, isDebugLogEnabled)

+

+		def prefix="RCVWFMSG_"

+		execution.setVariable("prefix", prefix)

+		setSuccessIndicator(execution, false)

+

+		try {

+			

+			// Confirm that timeout value has been provided in 'RCVWFMSG_timeout'.

+			def timeout = execution.getVariable('RCVWFMSG_timeout')

+			logDebug('Timeout value is \'' + timeout + '\'', isDebugLogEnabled)

+			if ((timeout == null) || (timeout.isEmpty())) {

+				String msg = getProcessKey(execution) + ': Missing or empty input variable \'RCVWFMSG_timeout\''

+				logDebug(msg, isDebugLogEnabled)

+				logError(msg)

+				exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)

+			}

+			

+			// Confirm that message type has been provided in 'RCVWFMSG_messageType'

+			def messageType = execution.getVariable('RCVWFMSG_messageType')

+			logDebug('Message type is \'' + messageType + '\'', isDebugLogEnabled)

+			if ((messageType == null) || (messageType.isEmpty())) {

+				String msg = getProcessKey(execution) + ': Missing or empty input variable \'RCVWFMSG_messageType\''

+				logDebug(msg, isDebugLogEnabled)

+				logError(msg)

+				exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)

+			}

+			

+			// Confirm that correlator value has been provided in 'RCVWFMSG_correlator'

+			def correlator = execution.getVariable('RCVWFMSG_correlator')

+			logDebug('Correlator value is \'' + correlator + '\'', isDebugLogEnabled)

+			if ((correlator == null) || (correlator.isEmpty())) {

+				String msg = getProcessKey(execution) + ': Missing or empty input variable \'RCVWFMSG_correlator\''

+				logDebug(msg, isDebugLogEnabled)

+				logError(msg)

+				exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)

+			}

+			execution.setVariable(messageType + '_CORRELATOR', correlator)

+			

+			logDebug('Exited ' + method, isDebugLogEnabled)

+		} catch (BpmnError e) {

+			throw e

+		} catch (Exception e) {

+			String msg = 'Caught exception in ' + method + ": " + e

+			logDebug(msg, isDebugLogEnabled)

+			logError(msg)

+			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)

+		}

+	}

+

+	/**

+	 * Process a received message.

+	 *

+	 * @param execution The flow's execution instance.

+	 */

+	public void processReceivedMessage(Execution execution){

+		def method = getClass().getSimpleName() + '.processReceivedMessage(' +

+			'execution=' + execution.getId() +

+			')'

+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')

+		logDebug('Entered ' + method, isDebugLogEnabled)

+

+		String messageType = null;

+		String receivedMessage = null;

+

+		try {

+			messageType = execution.getVariable('RCVWFMSG_messageType')

+			receivedMessage = execution.getVariable(messageType + '_MESSAGE')

+			logDebug(getProcessKey(execution) + ": received message:\n" + receivedMessage, isDebugLogEnabled)

+

+			// The received message is made available to the calling flow in WorkflowResponse

+			execution.setVariable("WorkflowResponse", receivedMessage)

+			

+			setSuccessIndicator(execution, true)

+

+			logDebug('Exited ' + method, isDebugLogEnabled)

+		} catch (Exception e) {

+			receivedMessage = receivedMessage == null || String.valueOf(receivedMessage).isEmpty() ? "NONE" : receivedMessage

+			String msg = "Error processing received workflow message: " + receivedMessage

+			logDebug(getProcessKey(execution) + ': ' + msg, isDebugLogEnabled)

+			exceptionUtil.buildWorkflowException(execution, 7020, msg)

+		}

+	}

+}

diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/SNIROUtils.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/SNIROUtils.groovy
new file mode 100644
index 0000000..aba2b78
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/SNIROUtils.groovy
@@ -0,0 +1,262 @@
+package org.openecomp.mso.bpmn.common.scripts

+

+import org.camunda.bpm.engine.runtime.Execution

+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor

+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil

+import org.openecomp.mso.bpmn.common.scripts.MsoUtils

+import org.openecomp.mso.bpmn.core.domain.*

+import org.openecomp.mso.bpmn.core.json.JsonUtils

+import org.apache.commons.lang3.StringUtils

+

+import static  org.openecomp.mso.bpmn.common.scripts.GenericUtils.*

+

+class SNIROUtils{

+

+	ExceptionUtil exceptionUtil = new ExceptionUtil()

+	JsonUtils jsonUtil = new JsonUtils()

+

+	private AbstractServiceTaskProcessor utils

+

+	public MsoUtils msoUtils = new MsoUtils()

+

+	public SNIROUtils(AbstractServiceTaskProcessor taskProcessor) {

+		this.utils = taskProcessor

+	}

+

+	/**

+	 * This method builds the service-agnostic

+	 * sniro json request to get a homing solution

+	 * and license solution

+	 *

+	 * @param execution

+	 * @param requestId

+	 * @param decomposition - ServiceDecomposition object

+	 * @param subscriber - Subscriber information

+	 * @param homingParams - Homing/Request parameters

+	 *

+	 * @return request - sniro v2 payload

+	 *

+	 * @author cb645j

+	 */

+	public String buildRequest(Execution execution, String requestId, ServiceDecomposition decomposition, Subscriber subscriber, String homingParams){

+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")

+		utils.log("DEBUG", "Started Building Sniro Request", isDebugEnabled)

+		def callbackUrl = utils.createWorkflowMessageAdapterCallbackURL(execution, "SNIROResponse", requestId)

+		def transactionId = requestId

+		//ServiceInstance Info

+		ServiceInstance serviceInstance = decomposition.getServiceInstance()

+		def serviceInstanceId

+		if(serviceInstance == null){

+			utils.log("DEBUG", "Unable to obtain Service Instance Id, ServiceInstance Object is null" , isDebugEnabled)

+			exceptionUtil.buildAndThrowWorkflowException(execution, 400, "Internal Error - Unable to obtain Service Instance Id, ServiceInstance Object is null")

+		}else{

+			serviceInstanceId = serviceInstance.getInstanceId()

+		}

+		//Model Info

+		ModelInfo model = decomposition.getModelInfo()

+		String modelType = model.getModelType()

+		String modelInvariantId = model.getModelInvariantUuid()

+		String modelVersionId = model.getModelUuid()

+		String modelName = model.getModelName()

+		String modelVersion = model.getModelVersion()

+		//Subscriber Info

+		String subscriberId = subscriber.getGlobalId()

+		String subscriberName = subscriber.getName()

+		String commonSiteId = subscriber.getCommonSiteId()

+		//OrderInfo

+		String orderInfo

+		if(!isBlank(homingParams)){

+			orderInfo = homingParams.replaceAll("\"", "\\\\\"").replaceAll("\n", "").replaceAll("\r", "")

+			orderInfo = StringUtils.normalizeSpace(orderInfo)

+		}

+

+		//Demands

+		String placementDemands = ""

+		StringBuilder sb = new StringBuilder()

+		List<Resource> resourceList = decomposition.getServiceAllottedResources()

+		List<VnfResource> vnfResourceList = decomposition.getServiceVnfs()

+

+		// TODO: We should include both alloted resources and service resources in the placementDeamnds- not one or the other.

+		if(resourceList.isEmpty() || resourceList == null){

+			utils.log("DEBUG", "Allotted Resources List is empty - will try to get service VNFs instead.", isDebugEnabled)

+			resourceList = decomposition.getServiceVnfs()

+		}

+		

+		if(resourceList.isEmpty() || resourceList == null){

+			utils.log("DEBUG", "Resources List is Empty", isDebugEnabled)

+		}else{

+			for(Resource resource:resourceList){

+				ModelInfo resourceModelInfo = resource.getModelInfo()

+				ResourceInstance resourceInstance = resource.getResourceInstance()

+				def resourceInstanceType = resource.getResourceType()

+				def serviceResourceId = resource.getResourceId() //TODO - resourceId versus instanceId - should be what is put in AAI, whatever we put here will be what is in response, used to correlate

+				def resourceModuleName = resourceModelInfo.getModelInstanceName()

+				def resouceModelCustomizationId = resourceModelInfo.getModelCustomizationUuid()

+				def resouceModelInvariantId = resourceModelInfo.getModelInvariantUuid()

+				def resouceModelName = resourceModelInfo.getModelName()

+				def resouceModelVersion = resourceModelInfo.getModelVersion()

+				def resouceModelVersionId = resourceModelInfo.getModelUuid()

+				def resouceModelType = resourceModelInfo.getModelType()

+				def tenantId = "" //Optional

+				def tenantName = "" //Optional

+	

+				String demand =

+					"""{

+						"resourceInstanceType": "${resourceInstanceType}",

+						"serviceResourceId": "${serviceResourceId}",

+						"resourceModuleName": "${resourceModuleName}",

+						"resourceModelInfo": {

+							"modelCustomizationId": "${resouceModelCustomizationId}",

+							"modelInvariantId": "${resouceModelInvariantId}",

+							"modelName": "${resouceModelName}",

+							"modelVersion": "${resouceModelVersion}",

+							"modelVersionId": "${resouceModelVersionId}",

+							"modelType": "${resouceModelType}"

+						},

+						"tenantId": "${tenantId}",

+						"tenantName": "${tenantName}"

+					},"""

+	

+				placementDemands = sb.append(demand)

+			}

+			placementDemands = placementDemands.substring(0, placementDemands.length() - 1);

+		}

+

+		String licenseDemands = ""

+		sb = new StringBuilder()

+		if(vnfResourceList.isEmpty() || vnfResourceList == null){

+			utils.log("DEBUG", "Vnf Resources List is Empty", isDebugEnabled)

+		}else{	

+			for(VnfResource vnfResource:vnfResourceList){

+				ModelInfo vnfResourceModelInfo = vnfResource.getModelInfo()

+				ResourceInstance vnfResourceInstance = vnfResource.getResourceInstance()

+				def resourceInstanceType = vnfResource.getResourceType()

+				def serviceResourceId = vnfResource.getResourceId()

+				def resourceModuleName = vnfResourceModelInfo.getModelInstanceName()

+				def resouceModelCustomizationId = vnfResourceModelInfo.getModelCustomizationUuid()

+				def resouceModelInvariantId = vnfResourceModelInfo.getModelInvariantUuid()

+				def resouceModelName = vnfResourceModelInfo.getModelName()

+				def resouceModelVersion = vnfResourceModelInfo.getModelVersion()

+				def resouceModelVersionId = vnfResourceModelInfo.getModelUuid()

+				def resouceModelType = vnfResourceModelInfo.getModelType()

+	

+				String demand =

+				"""{

+						"resourceInstanceType": "${resourceInstanceType}",

+						"serviceResourceId": "${serviceResourceId}",

+						"resourceModuleName": "${resourceModuleName}",

+						"resourceModelInfo": {

+							"modelCustomizationId": "${resouceModelCustomizationId}",

+							"modelInvariantId": "${resouceModelInvariantId}",

+							"modelName": "${resouceModelName}",

+							"modelVersion": "${resouceModelVersion}",

+							"modelVersionId": "${resouceModelVersionId}",

+							"modelType": "${resouceModelType}"

+						}

+					},"""

+	

+					licenseDemands = sb.append(demand)

+			}

+			licenseDemands = licenseDemands.substring(0, licenseDemands.length() - 1);

+		}

+			

+		String request =

+				"""{

+	  	"requestInfo": {

+				"transactionId": "${transactionId}",

+				"requestId": "${requestId}",

+				"callbackUrl": "${callbackUrl}",

+				"sourceId": "mso",

+				"optimizer": [

+					"placement",

+					"license"

+				],

+				"numSolutions": 1,

+				"timeout": 600

+				},

+		"placementInfo": {

+			"serviceModelInfo": {

+				"modelType": "${modelType}",

+				"modelInvariantId": "${modelInvariantId}",

+				"modelVersionId": "${modelVersionId}",

+				"modelName": "${modelName}",

+				"modelVersion": "${modelVersion}"

+				},

+			"subscriberInfo": {

+				"globalSubscriberId": "${subscriberId}",

+				"subscriberName": "${subscriberName}",

+				"subscriberCommonSiteId": "${commonSiteId}"

+				},

+			"demandInfo": {

+				"placementDemand": [

+					${placementDemands}

+				],

+				"licenseDemand": [

+					${licenseDemands}

+				]

+			},

+			"policyId": [],

+			"serviceInstanceId": "${serviceInstanceId}",

+			"orderInfo": "{\\\"requestParameters\\\": ${orderInfo}}"

+		}

+	  }"""

+

+	  	utils.log("DEBUG", "Completed Building Sniro Request", isDebugEnabled)

+		return request

+	}

+

+	/**

+	 * This method validates the callback response

+	 * from Sniro. If the response contains an

+	 * exception the method will build and throw

+	 * a workflow exception.

+	 *

+	 * @param execution

+	 * @param response - the async callback response from sniro

+	 *

+	 * @author cb645j

+	 */

+	public void validateCallbackResponse(Execution execution, String response){

+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")

+		String placements = ""

+		if(isBlank(response)){

+			exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Sniro Async Callback Response is Empty")

+		}else{

+			if(JsonUtils.jsonElementExist(response, "solutionInfo.placement")){

+				placements = jsonUtil.getJsonValue(response, "solutionInfo.placement")

+				if(isBlank(placements) || placements.equalsIgnoreCase("[]")){

+					String statusMessage = jsonUtil.getJsonValue(response, "statusMessage")

+					if(isBlank(statusMessage)){

+						utils.log("DEBUG", "Error Occured in Homing: Sniro Async Callback Response does not contain placement solution.", isDebugEnabled)

+						exceptionUtil.buildAndThrowWorkflowException(execution, 400, "Sniro Async Callback Response does not contain placement solution.")

+					}else{

+						utils.log("DEBUG", "Error Occured in Homing: " + statusMessage, isDebugEnabled)

+						exceptionUtil.buildAndThrowWorkflowException(execution, 400, statusMessage)

+					}

+				}else{

+					return

+				}

+			}else if(JsonUtils.jsonElementExist(response, "requestError") == true){

+				String errorMessage = ""

+				if(response.contains("policyException")){

+					String text = jsonUtil.getJsonValue(response, "requestError.policyException.text")

+					errorMessage = "Sniro Async Callback Response contains a Request Error Policy Exception: " + text

+				}else if(response.contains("serviceException")){

+					String text = jsonUtil.getJsonValue(response, "requestError.serviceException.text")

+					errorMessage = "Sniro Async Callback Response contains a Request Error Service Exception: " + text

+				}else{

+					errorMessage = "Sniro Async Callback Response contains a Request Error. Unable to determine the Request Error Exception."

+				}

+				utils.log("DEBUG", "Error Occured in Homing: " + errorMessage, isDebugEnabled)

+				exceptionUtil.buildAndThrowWorkflowException(execution, 400, errorMessage)

+

+			}else{

+				utils.log("DEBUG", "Error Occured in Homing: Received an Unknown Async Callback Response from Sniro.", isDebugEnabled)

+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Received an Unknown Async Callback Response from Sniro.")

+			}

+		}

+

+	}

+

+

+}
\ No newline at end of file
diff --git a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/BuildingBlock/Homing.bpmn b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/BuildingBlock/Homing.bpmn
new file mode 100644
index 0000000..a432417
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/BuildingBlock/Homing.bpmn
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="_vwRmIBsREeeIQtzUKIjH4g" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="Homing" name="Homing" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1x9usa6</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:scriptTask id="callSniro" name="Call Sniro" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1x9usa6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_10x3ocp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+Homing sniro = new Homing()
+sniro.callSniro(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1x9usa6" sourceRef="StartEvent_1" targetRef="callSniro" />
+    <bpmn2:subProcess id="bpmnErrorSubprocess" name="Error Handling Subprocess" triggeredByEvent="true">
+      <bpmn2:endEvent id="EndEvent_07tjq3v">
+        <bpmn2:incoming>SequenceFlow_1rf4vs8</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition />
+      </bpmn2:endEvent>
+      <bpmn2:startEvent id="StartEvent_1qiitb2">
+        <bpmn2:outgoing>SequenceFlow_00nlh7l</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:scriptTask id="processMsoWorkflowException" name="Process Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_00nlh7l</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1rf4vs8</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*

+ExceptionUtil ex = new ExceptionUtil()

+ex.processSubflowsBPMNException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1rf4vs8" sourceRef="processMsoWorkflowException" targetRef="EndEvent_07tjq3v" />
+      <bpmn2:sequenceFlow id="SequenceFlow_00nlh7l" sourceRef="StartEvent_1qiitb2" targetRef="processMsoWorkflowException" />
+    </bpmn2:subProcess>
+    <bpmn2:subProcess id="javaExceptionSubProcess" name="Java Exception Sub Process" triggeredByEvent="true">
+      <bpmn2:scriptTask id="processJavaException" name="Process Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0kamg53</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1o7154s</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*

+ExceptionUtil ex = new ExceptionUtil()

+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:startEvent id="StartEvent_1fbpeuw">
+        <bpmn2:outgoing>SequenceFlow_0kamg53</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1lwpypa" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_0jbvnr0">
+        <bpmn2:incoming>SequenceFlow_1o7154s</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_0kamg53" name="" sourceRef="StartEvent_1fbpeuw" targetRef="processJavaException" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1o7154s" name="" sourceRef="processJavaException" targetRef="EndEvent_0jbvnr0" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="processHomingSolution" name="Process &#10;Homing Solutio&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_043r3j8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1h9opg9</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+Homing homing = new Homing()
+homing.processHomingSolution(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="responseCheck" name="Response Ok?" default="badResponse">
+      <bpmn2:incoming>SequenceFlow_10x3ocp</bpmn2:incoming>
+      <bpmn2:outgoing>badResponse</bpmn2:outgoing>
+      <bpmn2:outgoing>goodResponse</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_10x3ocp" sourceRef="callSniro" targetRef="responseCheck" />
+    <bpmn2:scriptTask id="assignError" name="Assign Error" scriptFormat="groovy">
+      <bpmn2:incoming>badResponse</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0clfkld</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[int responseCode = execution.getVariable("syncResponseCode") 

+

+import org.openecomp.mso.bpmn.common.scripts.*

+ExceptionUtil ex = new ExceptionUtil()

+ex.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from Sniro.")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="badResponse" name="No" sourceRef="responseCheck" targetRef="assignError" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0clfkld" sourceRef="assignError" targetRef="throwMSOWorkflowException" />
+    <bpmn2:endEvent id="throwMSOWorkflowException">
+      <bpmn2:incoming>SequenceFlow_0clfkld</bpmn2:incoming>
+      <bpmn2:errorEventDefinition errorRef="Error_10hit0u" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="goodResponse" name="Yes" sourceRef="responseCheck" targetRef="receiveAsyncCallback">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("syncResponseCode") == 202}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_043r3j8" sourceRef="receiveAsyncCallback" targetRef="processHomingSolution" />
+    <bpmn2:callActivity id="receiveAsyncCallback" name="Receive Async Callback" calledElement="ReceiveWorkflowMessage" camunda:modelerTemplate="receiveWorkflowMessage">
+      <bpmn2:extensionElements>
+        <camunda:in source="true" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="messageType" target="RCVWFMSG_messageType" />
+        <camunda:in source="correlator" target="RCVWFMSG_correlator" />
+        <camunda:in source="timeout" target="RCVWFMSG_timeout" />
+        <camunda:out source="WorkflowResponse" target="asyncCallbackResponse" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>goodResponse</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_043r3j8</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1h9opg9" sourceRef="processHomingSolution" targetRef="EndEvent_0n56tas" />
+    <bpmn2:endEvent id="EndEvent_0n56tas">
+      <bpmn2:incoming>SequenceFlow_1h9opg9</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition />
+    </bpmn2:endEvent>
+  </bpmn2:process>
+  <bpmn2:error id="Error_10hit0u" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1lwpypa" name="Java Lang Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Homing">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="147" y="275" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0qmfpdr_di" bpmnElement="callSniro">
+        <dc:Bounds x="286" y="253" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1x9usa6_di" bpmnElement="SequenceFlow_1x9usa6">
+        <di:waypoint xsi:type="dc:Point" x="183" y="293" />
+        <di:waypoint xsi:type="dc:Point" x="286" y="293" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="235" y="278" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_16p12qo_di" bpmnElement="bpmnErrorSubprocess" isExpanded="true">
+        <dc:Bounds x="254" y="496" width="409" height="168" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_12gjiy8_di" bpmnElement="javaExceptionSubProcess" isExpanded="true">
+        <dc:Bounds x="284" y="679" width="350" height="159" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_07tjq3v_di" bpmnElement="EndEvent_07tjq3v">
+        <dc:Bounds x="579" y="570" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="597" y="611" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1qiitb2_di" bpmnElement="StartEvent_1qiitb2">
+        <dc:Bounds x="299" y="570" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="317" y="611" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_03hs6s9_di" bpmnElement="processMsoWorkflowException">
+        <dc:Bounds x="406" y="548" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_19gqykh_di" bpmnElement="processJavaException">
+        <dc:Bounds x="410" y="727" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1fbpeuw_di" bpmnElement="StartEvent_1fbpeuw">
+        <dc:Bounds x="318" y="749" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="336" y="790" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0jbvnr0_di" bpmnElement="EndEvent_0jbvnr0">
+        <dc:Bounds x="567" y="749" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="585" y="790" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rf4vs8_di" bpmnElement="SequenceFlow_1rf4vs8">
+        <di:waypoint xsi:type="dc:Point" x="506" y="588" />
+        <di:waypoint xsi:type="dc:Point" x="579" y="588" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="543" y="573" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00nlh7l_di" bpmnElement="SequenceFlow_00nlh7l">
+        <di:waypoint xsi:type="dc:Point" x="335" y="588" />
+        <di:waypoint xsi:type="dc:Point" x="363" y="588" />
+        <di:waypoint xsi:type="dc:Point" x="363" y="588" />
+        <di:waypoint xsi:type="dc:Point" x="406" y="588" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="378" y="588" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0kamg53_di" bpmnElement="SequenceFlow_0kamg53">
+        <di:waypoint xsi:type="dc:Point" x="354" y="767" />
+        <di:waypoint xsi:type="dc:Point" x="410" y="767" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="382" y="752" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1o7154s_di" bpmnElement="SequenceFlow_1o7154s">
+        <di:waypoint xsi:type="dc:Point" x="510" y="767" />
+        <di:waypoint xsi:type="dc:Point" x="567" y="767" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="539" y="752" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1aapkvq_di" bpmnElement="processHomingSolution">
+        <dc:Bounds x="630" y="325" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_03gt5b8_di" bpmnElement="responseCheck" isMarkerVisible="true">
+        <dc:Bounds x="419" y="268" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="474" y="287" width="74" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_10x3ocp_di" bpmnElement="SequenceFlow_10x3ocp">
+        <di:waypoint xsi:type="dc:Point" x="386" y="293" />
+        <di:waypoint xsi:type="dc:Point" x="419" y="293" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="403" y="278" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0ikcqeo_di" bpmnElement="assignError">
+        <dc:Bounds x="490" y="176" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1m1c9nu_di" bpmnElement="badResponse">
+        <di:waypoint xsi:type="dc:Point" x="444" y="268" />
+        <di:waypoint xsi:type="dc:Point" x="444" y="216" />
+        <di:waypoint xsi:type="dc:Point" x="490" y="216" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="451" y="226" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0clfkld_di" bpmnElement="SequenceFlow_0clfkld">
+        <di:waypoint xsi:type="dc:Point" x="590" y="216" />
+        <di:waypoint xsi:type="dc:Point" x="662" y="216" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="626" y="201" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_13ejfwp_di" bpmnElement="throwMSOWorkflowException">
+        <dc:Bounds x="662" y="198" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="680" y="234" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1o3br3u_di" bpmnElement="goodResponse">
+        <di:waypoint xsi:type="dc:Point" x="444" y="318" />
+        <di:waypoint xsi:type="dc:Point" x="444" y="365" />
+        <di:waypoint xsi:type="dc:Point" x="490" y="365" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="447" y="339.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_043r3j8_di" bpmnElement="SequenceFlow_043r3j8">
+        <di:waypoint xsi:type="dc:Point" x="590" y="365" />
+        <di:waypoint xsi:type="dc:Point" x="630" y="365" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="610" y="350" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_031b5m3_di" bpmnElement="receiveAsyncCallback">
+        <dc:Bounds x="490" y="325" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h9opg9_di" bpmnElement="SequenceFlow_1h9opg9">
+        <di:waypoint xsi:type="dc:Point" x="730" y="365" />
+        <di:waypoint xsi:type="dc:Point" x="825" y="365" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="778" y="350" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0ougemc_di" bpmnElement="EndEvent_0n56tas">
+        <dc:Bounds x="825" y="347" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="843" y="383" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/ReceiveWorkflowMessage.bpmn b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/ReceiveWorkflowMessage.bpmn
new file mode 100644
index 0000000..ad857ed
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/ReceiveWorkflowMessage.bpmn
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_GraPIIyxEeWmdMDkx6Uftw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="ReceiveWorkflowMessage" name="ReceiveWorkflowMessage" isExecutable="true">
+    <bpmn2:scriptTask id="ScriptTask_1" name="Pre-Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ps0nzi</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+def receiveWorkflowMessage = new ReceiveWorkflowMessage()
+receiveWorkflowMessage .preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:startEvent id="StartEvent_1" name="Start">
+      <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" />
+    <bpmn2:scriptTask id="ScriptTask_5" name="Workflow Exception (timeout)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+def exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildWorkflowException(execution, 7010, "Receive Workflow Message Timeout Error")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_34" name="" sourceRef="ScriptTask_5" targetRef="EndEvent_8" />
+    <bpmn2:endEvent id="EndEvent_8">
+      <bpmn2:incoming>SequenceFlow_34</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_21" errorRef="Error_1" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="ScriptTask_setSuccess" name="Process Message and Set WorkflowResult" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_44</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+def receiveWorkflowMessage = new ReceiveWorkflowMessage()
+receiveWorkflowMessage.processReceivedMessage(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="ScriptTask_setSuccess" targetRef="EndEvent_6" />
+    <bpmn2:endEvent id="EndEvent_6" name="End">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:boundaryEvent id="BoundaryEvent_1" name="Timeout" attachedToRef="SubProcess_2">
+      <bpmn2:outgoing>SequenceFlow_27</bpmn2:outgoing>
+      <bpmn2:timerEventDefinition id="TimerEventDefinition_1">
+        <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression">${RCVWFMSG_timeout}</bpmn2:timeDuration>
+      </bpmn2:timerEventDefinition>
+    </bpmn2:boundaryEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="BoundaryEvent_1" targetRef="ScriptTask_5" />
+    <bpmn2:subProcess id="SubProcess_2" name="Wait for Workflow Message">
+      <bpmn2:incoming>SequenceFlow_1ps0nzi</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_44</bpmn2:outgoing>
+      <bpmn2:startEvent id="StartEvent_3">
+        <bpmn2:outgoing>SequenceFlow_25</bpmn2:outgoing>
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_25" name="" sourceRef="StartEvent_3" targetRef="IntermediateCatchEvent_1" />
+      <bpmn2:endEvent id="EndEvent_12">
+        <bpmn2:incoming>SequenceFlow_41</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1" name="Catch Workflow Message">
+        <bpmn2:incoming>SequenceFlow_25</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_41</bpmn2:outgoing>
+        <bpmn2:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_07j47nk" />
+      </bpmn2:intermediateCatchEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_41" name="" sourceRef="IntermediateCatchEvent_1" targetRef="EndEvent_12" />
+    </bpmn2:subProcess>
+    <bpmn2:sequenceFlow id="SequenceFlow_44" name="" sourceRef="SubProcess_2" targetRef="ScriptTask_setSuccess" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ps0nzi" sourceRef="ScriptTask_1" targetRef="SubProcess_2" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmn2:message id="Message_1" name="SDNCAResponse" />
+  <bpmn2:message id="Message_07j47nk" name="WorkflowMessage" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ReceiveWorkflowMessage">
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_56" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="242" y="161" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_14" bpmnElement="SubProcess_2" isExpanded="true">
+        <dc:Bounds x="461" y="107" width="313" height="189" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_59" bpmnElement="ScriptTask_5">
+        <dc:Bounds x="857" y="382" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_24" bpmnElement="BoundaryEvent_1">
+        <dc:Bounds x="703" y="278" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="744" y="308" width="39" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_54" bpmnElement="StartEvent_1">
+        <dc:Bounds x="129" y="184" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="135" y="225" width="23" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_StartEvent_54" targetElement="_BPMNShape_ScriptTask_56">
+        <di:waypoint xsi:type="dc:Point" x="165" y="202" />
+        <di:waypoint xsi:type="dc:Point" x="242" y="201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="204" y="186.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_55" bpmnElement="StartEvent_3">
+        <dc:Bounds x="493" y="185" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="511" y="226" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_25" sourceElement="_BPMNShape_StartEvent_55" targetElement="_BPMNShape_IntermediateCatchEvent_20">
+        <di:waypoint xsi:type="dc:Point" x="529" y="203" />
+        <di:waypoint xsi:type="dc:Point" x="588" y="203" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="791" y="201" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_BoundaryEvent_24" targetElement="_BPMNShape_ScriptTask_59">
+        <di:waypoint xsi:type="dc:Point" x="721" y="314" />
+        <di:waypoint xsi:type="dc:Point" x="721" y="422" />
+        <di:waypoint xsi:type="dc:Point" x="857" y="422" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="736" y="368" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_158" bpmnElement="EndEvent_6">
+        <dc:Bounds x="1022" y="184" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1031" y="225" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_160" bpmnElement="EndEvent_8">
+        <dc:Bounds x="1022" y="404" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1040" y="445" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_36" bpmnElement="SequenceFlow_34" sourceElement="_BPMNShape_ScriptTask_59" targetElement="_BPMNShape_EndEvent_160">
+        <di:waypoint xsi:type="dc:Point" x="957" y="422" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="422" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="990" y="407" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_236" bpmnElement="ScriptTask_setSuccess">
+        <dc:Bounds x="858" y="160" width="97" height="83" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_ScriptTask_236" targetElement="_BPMNShape_EndEvent_158">
+        <di:waypoint xsi:type="dc:Point" x="955" y="201" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="202" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="989" y="186.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_12">
+        <dc:Bounds x="681" y="185" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="699" y="226" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_44" bpmnElement="SequenceFlow_44" sourceElement="_BPMNShape_SubProcess_14" targetElement="_BPMNShape_ScriptTask_236">
+        <di:waypoint xsi:type="dc:Point" x="774" y="202" />
+        <di:waypoint xsi:type="dc:Point" x="858" y="201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="816" y="186.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ps0nzi_di" bpmnElement="SequenceFlow_1ps0nzi">
+        <di:waypoint xsi:type="dc:Point" x="342" y="201" />
+        <di:waypoint xsi:type="dc:Point" x="461" y="201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="402" y="186" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_20" bpmnElement="IntermediateCatchEvent_1">
+        <dc:Bounds x="588" y="185" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="566" y="227" width="80" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_41" bpmnElement="SequenceFlow_41" sourceElement="_BPMNShape_IntermediateCatchEvent_20">
+        <di:waypoint xsi:type="dc:Point" x="624" y="203" />
+        <di:waypoint xsi:type="dc:Point" x="681" y="203" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="653" y="188" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
\ No newline at end of file
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/HomingTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/HomingTest.java
new file mode 100644
index 0000000..562a4d0
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/HomingTest.java
@@ -0,0 +1,457 @@
+/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.common;
+
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
+import static org.openecomp.mso.bpmn.mock.StubResponseSNIRO.*;
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Test;
+
+import org.openecomp.mso.bpmn.core.WorkflowException;
+import org.openecomp.mso.bpmn.core.domain.*;
+
+import org.openecomp.mso.bpmn.mock.FileUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+
+
+/**
+ * Test the Homing subflow building block.
+ *
+ * @author cb645j
+ */
+public class HomingTest extends WorkflowTest {
+
+	ServiceDecomposition serviceDecomposition = new ServiceDecomposition();
+	String subscriber = "";
+	String subscriber2 = "";
+
+	private final CallbackSet callbacks = new CallbackSet();
+
+	public HomingTest() throws IOException {
+		String sniroCallback = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallback2AR1Vnf");
+		String sniroCallback2 = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallback2AR1Vnf2Net");
+		String sniroCallback3 = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackInfraVnf");
+		String sniroCallbackNoSolution = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackNoSolutionFound");
+		String sniroCallbackPolicyException = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackPolicyException");
+		String sniroCallbackServiceException = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackServiceException");
+		callbacks.put("sniro", JSON, "SNIROResponse", sniroCallback);
+		callbacks.put("sniro2", JSON, "SNIROResponse", sniroCallback2);
+		callbacks.put("sniro3", JSON, "SNIROResponse", sniroCallback3);
+		callbacks.put("sniroNoSol", JSON, "SNIROResponse", sniroCallbackNoSolution);
+		callbacks.put("sniroPolicyEx", JSON, "SNIROResponse", sniroCallbackPolicyException);
+		callbacks.put("sniroServiceEx", JSON, "SNIROResponse", sniroCallbackServiceException);
+
+		// Service Model
+		ModelInfo sModel = new ModelInfo();
+		sModel.setModelCustomizationUuid("testModelCustomizationUuid");
+		sModel.setModelInstanceName("testModelInstanceName");
+		sModel.setModelInvariantUuid("testModelInvariantId");
+		sModel.setModelName("testModelName");
+		sModel.setModelUuid("testModelUuid");
+		sModel.setModelVersion("testModelVersion");
+		// Service Instance
+		ServiceInstance si = new ServiceInstance();
+		si.setInstanceId("testServiceInstanceId123");
+		// Allotted Resources
+		List<AllottedResource> arList = new ArrayList<AllottedResource>();
+		AllottedResource ar = new AllottedResource();
+		ar.setResourceId("testResourceIdAR");
+		ar.setResourceInstanceName("testARInstanceName");
+		ModelInfo arModel = new ModelInfo();
+		arModel.setModelCustomizationUuid("testModelCustomizationUuidAR");
+		arModel.setModelInvariantUuid("testModelInvariantIdAR");
+		arModel.setModelName("testModelNameAR");
+		arModel.setModelVersion("testModelVersionAR");
+		arModel.setModelUuid("testARModelUuid");
+		arModel.setModelType("testModelTypeAR");
+		ar.setModelInfo(arModel);
+		AllottedResource ar2 = new AllottedResource();
+		ar2.setResourceId("testResourceIdAR2");
+		ar2.setResourceInstanceName("testAR2InstanceName");
+		ModelInfo arModel2 = new ModelInfo();
+		arModel2.setModelCustomizationUuid("testModelCustomizationUuidAR2");
+		arModel2.setModelInvariantUuid("testModelInvariantIdAR2");
+		arModel2.setModelName("testModelNameAR2");
+		arModel2.setModelVersion("testModelVersionAR2");
+		arModel2.setModelUuid("testAr2ModelUuid");
+		arModel2.setModelType("testModelTypeAR2");
+		ar2.setModelInfo(arModel2);
+		arList.add(ar);
+		arList.add(ar2);
+		// Vnfs
+		List<VnfResource> vnfList = new ArrayList<VnfResource>();
+		VnfResource vnf = new VnfResource();
+		vnf.setResourceId("testResourceIdVNF");
+		vnf.setResourceInstanceName("testVnfInstanceName");
+		ModelInfo vnfModel = new ModelInfo();
+		vnfModel.setModelCustomizationUuid("testModelCustomizationUuidVNF");
+		vnfModel.setModelInvariantUuid("testModelInvariantIdVNF");
+		vnfModel.setModelName("testModelNameVNF");
+		vnfModel.setModelVersion("testModelVersionVNF");
+		vnfModel.setModelUuid("testVnfModelUuid");
+		vnfModel.setModelType("testModelTypeVNF");
+		vnf.setModelInfo(vnfModel);
+		vnfList.add(vnf);
+		System.out.println("SERVICE DECOMP: " + serviceDecomposition.getServiceResourcesJsonString());
+		serviceDecomposition.setModelInfo(sModel);
+		serviceDecomposition.setServiceAllottedResources(arList);
+		serviceDecomposition.setServiceVnfs(vnfList);
+		serviceDecomposition.setServiceInstance(si);
+
+		// Subscriber
+		subscriber = "{\"globalSubscriberId\": \"SUB12_0322_DS_1201\",\"subscriberCommonSiteId\": \"DALTX0101\",\"subscriberName\": \"SUB_12_0322_DS_1201\"}";
+		subscriber2 = "{\"globalSubscriberId\": \"SUB12_0322_DS_1201\",\"subscriberName\": \"SUB_12_0322_DS_1201\"}";
+	}
+
+	@Test
+	@Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
+	public void testHoming_success_2AR1Vnf() throws Exception {
+
+		mockSNIRO();
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<String, Object>();
+		setVariables(variables);
+
+		invokeSubProcess("Homing", businessKey, variables);
+
+		injectWorkflowMessages(callbacks, "sniro");
+
+		waitForProcessEnd(businessKey, 10000);
+
+		//Get Variables
+		WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+		ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey, "serviceDecomposition");
+		String expectedSniroRequest = (String) getVariableFromHistory(businessKey, "sniroRequest");
+
+		Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
+		HomingSolution resourceARHoming = resourceAR.getHomingSolution();
+		Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
+		HomingSolution resourceARHoming2 = resourceAR2.getHomingSolution();
+		Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
+		HomingSolution resourceVNFHoming = resourceVNF.getHomingSolution();
+		String resourceARHomingString = resourceARHoming.toString();
+		resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
+		String resourceARHoming2String = resourceARHoming2.toString();
+		resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
+		String resourceVNFHomingString = resourceVNFHoming.toString();
+		resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
+		expectedSniroRequest = expectedSniroRequest.replaceAll("\\s+", "");
+		
+		assertNull(workflowException);
+		assertEquals(homingSolutionService("service", "testSIID1", "MDTNJ01", "aic", "dfwtx", "KDTNJ01", "3.0", "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"", "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""), resourceARHomingString);
+		assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2", "aic", "testCloudRegionId2", "testAicClli2", "3.0", null, null), resourceARHoming2String);
+		assertEquals(homingSolutionCloud("cloud", "", "", "aic", "testCloudRegionId3", "testAicClli3", "3.0", "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"", "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""), resourceVNFHomingString);
+		assertEquals(verifySniroRequest(), expectedSniroRequest);
+
+	}
+
+	@Test
+	@Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
+	public void testHoming_success_2AR1Vnf2Net() throws Exception {
+
+		mockSNIRO();
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<String, Object>();
+		setVariables2(variables);
+
+		invokeSubProcess("Homing", businessKey, variables);
+
+		injectWorkflowMessages(callbacks, "sniro2");
+
+		waitForProcessEnd(businessKey, 10000);
+
+		//Get Variables
+		WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+		ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey, "serviceDecomposition");
+		String expectedSniroRequest = (String) getVariableFromHistory(businessKey, "sniroRequest");
+
+		Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
+		HomingSolution resourceARHoming = resourceAR.getHomingSolution();
+		Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
+		HomingSolution resourceARHoming2 = resourceAR2.getHomingSolution();
+		Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
+		HomingSolution resourceVNFHoming = resourceVNF.getHomingSolution();
+		Resource resourceNet = serviceDecompositionExp.getServiceResource("testResourceIdNet");
+		HomingSolution resourceNetHoming = resourceNet.getHomingSolution();
+		Resource resourceNet2 = serviceDecompositionExp.getServiceResource("testResourceIdNet2");
+		HomingSolution resourceNetHoming2 = resourceNet2.getHomingSolution();
+
+		String resourceARHomingString = resourceARHoming.toString();
+		resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
+		String resourceARHoming2String = resourceARHoming2.toString();
+		resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
+		String resourceVNFHomingString = resourceVNFHoming.toString();
+		resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
+		String resourceNetHomingString = resourceNetHoming.toString();
+		resourceNetHomingString = resourceNetHomingString.replaceAll("\\s+", " ");
+		String resourceNetHoming2String = resourceNetHoming2.toString();
+		resourceNetHoming2String = resourceNetHoming2String.replaceAll("\\s+", " ");
+		expectedSniroRequest = expectedSniroRequest.replaceAll("\\s+", "");
+
+		assertNull(workflowException);
+		assertEquals(homingSolutionService("service", "testSIID1", "MDTNJ01", "aic", "dfwtx", "KDTNJ01", "3.0", "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"", "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""), resourceARHomingString);
+		assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2", "aic", "testCloudRegionId2", "testAicClli2", "3.0", null, null), resourceARHoming2String);
+		assertEquals(homingSolutionCloud("cloud", "", "", "aic", "testCloudRegionId3", "testAicClli3", "3.0", "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"", "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""), resourceVNFHomingString);
+		assertEquals(homingSolutionService("service", "testServiceInstanceIdNet", "testVnfHostNameNet", "aic", "testCloudRegionIdNet", "testAicClliNet", "3.0", null, null), resourceNetHomingString);
+		assertEquals(homingSolutionCloud("cloud", "", "", "aic", "testCloudRegionIdNet2", "testAicClliNet2", "3.0", "\"f1d563e8-e714-4393-8f99-cc480144a05n\", \"j1d563e8-e714-4393-8f99-cc480144a05n\"", "\"s1d563e8-e714-4393-8f99-cc480144a05n\", \"b1d563e8-e714-4393-8f99-cc480144a05n\""), resourceNetHoming2String);
+		assertEquals(verifySniroRequest(), expectedSniroRequest);
+	}
+
+	@Test
+	@Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/BuildingBlock/DecomposeService.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
+	public void testHoming_success_vnfResourceList() throws Exception {
+
+		// Create a Service Decomposition 
+//System.out.println("At start of testHoming_success_vnfResourceList");
+		MockGetServiceResourcesCatalogData("1cc4e2e4-eb6e-404d-a66f-c8733cedcce8", "5.0", "/BuildingBlocks/catalogResp.json");
+		String busKey = UUID.randomUUID().toString();
+		Map<String, Object> vars = new HashMap<String, Object>();
+		setVariablesForServiceDecomposition(vars, "testRequestId123", "ff5256d2-5a33-55df-13ab-12abad84e7ff");
+		invokeSubProcess("DecomposeService", busKey, vars);
+		
+		ServiceDecomposition sd = (ServiceDecomposition) getVariableFromHistory(busKey, "serviceDecomposition");
+//System.out.println("In testHoming_success_vnfResourceList, ServiceDecomposition = " + sd);
+		List<VnfResource> vnfResourceList = sd.getServiceVnfs();
+//System.out.println(" vnfResourceList = " + vnfResourceList);
+		vnfResourceList.get(0).setResourceId("test-resource-id-000");
+		
+		// Invoke Homing 	
+		
+		mockSNIRO();
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<String, Object>();
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("msoRequestId", "testRequestId");
+		variables.put("serviceInstanceId", "testServiceInstanceId");
+		variables.put("serviceDecomposition", sd);
+		variables.put("subscriberInfo", subscriber2);
+		
+		invokeSubProcess("Homing", businessKey, variables);
+		injectWorkflowMessages(callbacks, "sniro3");
+		waitForProcessEnd(businessKey, 10000);
+
+		//Get Variables
+		
+		WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+		ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey, "serviceDecomposition");
+
+		Resource resourceVnf = serviceDecompositionExp.getServiceResource("test-resource-id-000");
+		HomingSolution resourceVnfHoming = resourceVnf.getHomingSolution();
+
+		String resourceVnfHomingString = resourceVnfHoming.toString();
+		resourceVnfHomingString = resourceVnfHomingString.replaceAll("\\s+", " ");
+
+		assertNull(workflowException);
+
+		//Verify request
+		String sniroRequest = (String) getVariableFromHistory(businessKey, "sniroRequest");
+		assertEquals(FileUtil.readResourceFile("__files/BuildingBlocks/sniroRequest_infravnf").replaceAll("\n", "").replaceAll("\r", "").replaceAll("\t", ""), sniroRequest.replaceAll("\n", "").replaceAll("\r", "").replaceAll("\t", ""));
+		
+		assertEquals(homingSolutionService("service", "service-instance-01234", "MDTNJ01", "att-aic", "mtmnj1a", "KDTNJ01", "3.0", "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"", "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""), resourceVnfHomingString);
+	}
+
+	@Test
+	@Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
+	public void testHoming_error_inputVariable() throws Exception {
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<String, Object>();
+		setVariables3(variables);
+
+		invokeSubProcess("Homing", businessKey, variables);
+
+		waitForProcessEnd(businessKey, 10000);
+
+		//Get Variables
+		WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+
+		assertEquals("WorkflowException[processKey=Homing,errorCode=4000,errorMessage=A required input variable is missing or null]", workflowException.toString());
+	}
+
+	@Test
+	@Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
+	public void testHoming_error_badResponse() throws Exception {
+		mockSNIRO_500();
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<String, Object>();
+		setVariables(variables);
+
+		invokeSubProcess("Homing", businessKey, variables);
+
+		waitForProcessEnd(businessKey, 10000);
+
+		//Get Variables
+		WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+
+		assertEquals("WorkflowException[processKey=Homing,errorCode=500,errorMessage=Received a Bad Sync Response from Sniro.]", workflowException.toString());
+	}
+
+	@Test
+	@Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
+	public void testHoming_error_sniroNoSolution() throws Exception {
+		mockSNIRO();
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<String, Object>();
+		setVariables(variables);
+
+		invokeSubProcess("Homing", businessKey, variables);
+
+		injectWorkflowMessages(callbacks, "sniroNoSol");
+
+		waitForProcessEnd(businessKey, 10000);
+
+		//Get Variables
+		WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+
+		assertEquals("WorkflowException[processKey=Homing,errorCode=400,errorMessage=No solution found for plan 08e1b8cf-144a-4bac-b293-d5e2eedc97e8]", workflowException.toString());
+	}
+
+	@Test
+	@Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
+	public void testHoming_error_sniroPolicyException() throws Exception {
+		mockSNIRO();
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<String, Object>();
+		setVariables(variables);
+
+		invokeSubProcess("Homing", businessKey, variables);
+
+		injectWorkflowMessages(callbacks, "sniroPolicyEx");
+
+		waitForProcessEnd(businessKey, 10000);
+
+		//Get Variables
+		WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+
+		assertEquals("WorkflowException[processKey=Homing,errorCode=400,errorMessage=Sniro Async Callback Response contains a Request Error Policy Exception: Message content size exceeds the allowable limit]", workflowException.toString());
+	}
+
+	@Test
+	@Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
+	public void testHoming_error_sniroServiceException() throws Exception {
+		mockSNIRO();
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<String, Object>();
+		setVariables(variables);
+
+		invokeSubProcess("Homing", businessKey, variables);
+
+		injectWorkflowMessages(callbacks, "sniroServiceEx");
+
+		waitForProcessEnd(businessKey, 10000);
+
+		//Get Variables
+		WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+
+		assertEquals("WorkflowException[processKey=Homing,errorCode=400,errorMessage=Sniro Async Callback Response contains a Request Error Service Exception: SNIROPlacementError: requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http://135.21.171.200:8091/v1/plans/97b4e303-5f75-492c-8fb2-21098281c8b8]", workflowException.toString());
+	}
+	
+
+
+	private void setVariables(Map<String, Object> variables) {
+		variables.put("isDebugLogEnabled", "true");
+	//	variables.put("mso-request-id", "testRequestId");
+		variables.put("msoRequestId", "testRequestId");
+		variables.put("serviceInstanceId", "testServiceInstanceId");
+		variables.put("serviceDecomposition", serviceDecomposition);
+		variables.put("subscriberInfo", subscriber2);
+
+	}
+
+	private void setVariables2(Map<String, Object> variables) {
+		List<NetworkResource> netList = new ArrayList<NetworkResource>();
+		NetworkResource net = new NetworkResource();
+		net.setResourceId("testResourceIdNet");
+		ModelInfo netModel = new ModelInfo();
+		netModel.setModelCustomizationUuid("testModelCustomizationUuidNet");
+		netModel.setModelInvariantUuid("testModelInvariantIdNet");
+		netModel.setModelName("testModelNameNet");
+		netModel.setModelVersion("testModelVersionNet");
+		net.setModelInfo(netModel);
+		netList.add(net);
+		NetworkResource net2 = new NetworkResource();
+		net2.setResourceId("testResourceIdNet2");
+		ModelInfo netModel2 = new ModelInfo();
+		netModel2.setModelCustomizationUuid("testModelCustomizationUuidNet2");
+		netModel2.setModelInvariantUuid("testModelInvariantIdNet2");
+		netModel2.setModelName("testModelNameNet2");
+		netModel2.setModelVersion("testModelVersionNet2");
+		net2.setModelInfo(netModel2);
+		netList.add(net2);
+		serviceDecomposition.setServiceNetworks(netList);
+
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("msoRequestId", "testRequestId");
+		variables.put("serviceInstanceId", "testServiceInstanceId");
+		variables.put("serviceDecomposition", serviceDecomposition);
+		variables.put("subscriberInfo", subscriber2);
+	}
+
+	private void setVariables3(Map<String, Object> variables) {
+		variables.put("isDebugLogEnabled", "true");
+	//	variables.put("mso-request-id", "testRequestId");
+		variables.put("msoRequestId", "testRequestId");
+		variables.put("serviceInstanceId", "testServiceInstanceId");
+		variables.put("serviceDecomposition", null);
+		variables.put("subscriberInfo", subscriber2);
+
+	}
+
+	private String homingSolutionService(String type, String serviceInstanceId, String vnfHostname, String cloudOwner, String cloudRegionId, String aicClli, String aicVersion, String enList, String licenseList){
+		String solution = "";
+		if(enList == null){
+			solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"serviceInstanceId\" : \"" + serviceInstanceId + "\", \"vnfHostname\" : \"" + vnfHostname + "\", \"cloudOwner\" : \"" + cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId + "\", \"aicClli\" : \"" + aicClli + "\", \"aicVersion\" : \"" + aicVersion + "\" } }";
+		}else{
+			solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"serviceInstanceId\" : \"" + serviceInstanceId + "\", \"vnfHostname\" : \"" + vnfHostname + "\", \"cloudOwner\" : \"" + cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId + "\", \"aicClli\" : \"" + aicClli + "\", \"aicVersion\" : \"" + aicVersion + "\", \"entitlementPoolList\" : [ " + enList +  " ], \"licenseKeyGroupList\" : [ " + licenseList +  " ] } }";
+		}
+		return solution;
+	}
+
+	private String homingSolutionCloud(String type, String serviceInstanceId, String vnfHostname, String cloudOwner, String cloudRegionId, String aicClli, String aicVersion, String enList, String licenseList){
+		String solution = "";
+		if(enList == null){
+			solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" + cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId + "\", \"aicClli\" : \"" + aicClli + "\", \"aicVersion\" : \"" + aicVersion + "\" } }";
+		}else{
+			solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" + cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId + "\", \"aicClli\" : \"" + aicClli + "\", \"aicVersion\" : \"" + aicVersion + "\", \"entitlementPoolList\" : [ " + enList +  " ], \"licenseKeyGroupList\" : [ " + licenseList +  " ] } }";
+		}
+		return solution;
+	}
+	
+	private void setVariablesForServiceDecomposition(Map<String, Object> variables, String requestId, String siId) {
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("mso-request-id", requestId);
+		variables.put("msoRequestId", requestId);
+		variables.put("serviceInstanceId",siId);
+
+		String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
+				"\"modelInvariantUuid\": \"1cc4e2e4-eb6e-404d-a66f-c8733cedcce8\"," +
+				"\"modelUuid\": \"2f7f309d-c842-4644-a2e4-34167be5eeb4\"," +
+				"\"modelName\": \"ADIOD vRouter vCE 011017 Service\"," +
+				"\"modelVersion\": \"5.0\"," +
+				"}";
+		variables.put("serviceModelInfo", serviceModelInfo);
+	}
+		
+	private String verifySniroRequest(){
+		String request = "{\"requestInfo\":{\"transactionId\":\"testRequestId\",\"requestId\":\"testRequestId\",\"callbackUrl\":\"http://localhost:8090/workflows/messages/message/SNIROResponse/testRequestId\",\"sourceId\":\"mso\",\"optimizer\":[\"placement\",\"license\"],\"numSolutions\":1,\"timeout\":600},\"placementInfo\":{\"serviceModelInfo\":{\"modelType\":\"\",\"modelInvariantId\":\"testModelInvariantId\",\"modelVersionId\":\"testModelUuid\",\"modelName\":\"testModelName\",\"modelVersion\":\"testModelVersion\"},\"subscriberInfo\":{\"globalSubscriberId\":\"SUB12_0322_DS_1201\",\"subscriberName\":\"SUB_12_0322_DS_1201\",\"subscriberCommonSiteId\":\"\"},\"demandInfo\":{\"placementDemand\":[{\"resourceInstanceType\":\"ALLOTTED_RESOURCE\",\"serviceResourceId\":\"testResourceIdAR\",\"resourceModuleName\":\"\",\"resourceModelInfo\":{\"modelCustomizationId\":\"testModelCustomizationUuidAR\",\"modelInvariantId\":\"testModelInvariantIdAR\",\"modelName\":\"testModelNameAR\",\"modelVersion\":\"testModelVersionAR\",\"modelVersionId\":\"testARModelUuid\",\"modelType\":\"testModelTypeAR\"},\"tenantId\":\"\",\"tenantName\":\"\"},{\"resourceInstanceType\":\"ALLOTTED_RESOURCE\",\"serviceResourceId\":\"testResourceIdAR2\",\"resourceModuleName\":\"\",\"resourceModelInfo\":{\"modelCustomizationId\":\"testModelCustomizationUuidAR2\",\"modelInvariantId\":\"testModelInvariantIdAR2\",\"modelName\":\"testModelNameAR2\",\"modelVersion\":\"testModelVersionAR2\",\"modelVersionId\":\"testAr2ModelUuid\",\"modelType\":\"testModelTypeAR2\"},\"tenantId\":\"\",\"tenantName\":\"\"}],\"licenseDemand\":[{\"resourceInstanceType\":\"VNF\",\"serviceResourceId\":\"testResourceIdVNF\",\"resourceModuleName\":\"\",\"resourceModelInfo\":{\"modelCustomizationId\":\"testModelCustomizationUuidVNF\",\"modelInvariantId\":\"testModelInvariantIdVNF\",\"modelName\":\"testModelNameVNF\",\"modelVersion\":\"testModelVersionVNF\",\"modelVersionId\":\"testVnfModelUuid\",\"modelType\":\"testModelTypeVNF\"}}]},\"policyId\":[],\"serviceInstanceId\":\"testServiceInstanceId123\",\"orderInfo\":\"{\\\"requestParameters\\\":null}\"}}";
+		return request;
+	}
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/ReceiveWorkflowMessageTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/ReceiveWorkflowMessageTest.java
new file mode 100644
index 0000000..e9373ee
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/ReceiveWorkflowMessageTest.java
@@ -0,0 +1,122 @@
+package org.openecomp.mso.bpmn.common;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.common.WorkflowTest.CallbackSet;
+import org.openecomp.mso.bpmn.core.WorkflowException;
+
+/**
+ * Unit tests for SDNCAdapterRestV1.
+ */
+public class ReceiveWorkflowMessageTest extends WorkflowTest {
+
+	private static final String EOL = "\n";
+
+	private final CallbackSet callbacks = new CallbackSet();
+
+	public ReceiveWorkflowMessageTest() throws IOException {
+		callbacks.put("sdnc-event-success", JSON, "SDNCAEvent",
+			"{" + EOL +
+			"  \"SDNCEvent\": {" + EOL +
+			"    \"eventType\": \"UCPE-ACTIVATION\"," + EOL +
+			"    \"eventCorrelatorType\": \"UCPE-HOST-NAME\"," + EOL +
+			"    \"eventCorrelator\": \"((CORRELATOR))\"," + EOL +
+			"    \"params\": {\"entry\":[" + EOL +
+			"      {\"key\": \"success-indicator\", \"value\":\"Y\"}" + EOL +
+			"	 ]}" +EOL +
+			"  }" + EOL +
+			"}" + EOL);
+
+		callbacks.put("sdnc-event-fail", JSON, "SDNCAEvent",
+			"{" + EOL +
+			"  \"SDNCEvent\": {" + EOL +
+			"    \"eventType\": \"UCPE-ACTIVATION\"," + EOL +
+			"    \"eventCorrelatorType\": \"UCPE-HOST-NAME\"," + EOL +
+			"    \"eventCorrelator\": \"((CORRELATOR))\"," + EOL +
+			"    \"params\": {\"entry\":[" + EOL +
+			"      {\"key\": \"success-indicator\", \"value\":\"N\"}" + EOL +
+			"      {\"key\": \"error-message\", \"value\":\"SOMETHING BAD HAPPENED\"}" + EOL +
+			"	 ]}" +EOL +
+			"  }" + EOL +
+			"}" + EOL);
+	}
+
+	/**
+	 * Test the happy path.
+	 */
+	@Test
+	@Deployment(resources = {
+		"subprocess/ReceiveWorkflowMessage.bpmn"
+		})
+	public void happyPath() throws Exception {
+		
+		logStart();
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<String, Object>();
+		variables.put("mso-request-id", "dffbae0e-5588-4bd6-9749-b0f0adb52312");
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("RCVWFMSG_timeout", "PT1M");
+		variables.put("RCVWFMSG_messageType", "SDNCAEvent");
+		variables.put("RCVWFMSG_correlator", "USOSTCDALTX0101UJZZ31");
+
+		invokeSubProcess("ReceiveWorkflowMessage", businessKey, variables);
+		injectWorkflowMessages(callbacks, "sdnc-event-success");
+		waitForProcessEnd(businessKey, 10000);
+
+		String response = (String) getVariableFromHistory(businessKey, "WorkflowResponse");
+		System.out.println("Response:\n" + response);
+		assertTrue(response.contains("\"SDNCEvent\""));
+		assertTrue((boolean)getVariableFromHistory(businessKey, "RCVWFMSG_SuccessIndicator"));
+		
+		logEnd();
+	}
+
+	/**
+	 * Test the timeout scenario.
+	 */
+	@Test
+	@Deployment(resources = {
+		"subprocess/ReceiveWorkflowMessage.bpmn"
+		})
+	public void timeout() throws Exception {
+		logStart();
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<String, Object>();
+		variables.put("mso-request-id", "dffbae0e-5588-4bd6-9749-b0f0adb52312");
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("RCVWFMSG_timeout", "PT0.1S");
+		variables.put("RCVWFMSG_messageType", "SDNCAEvent");
+		variables.put("RCVWFMSG_correlator", "USOSTCDALTX0101UJZZ31");
+
+		invokeSubProcess("ReceiveWorkflowMessage", businessKey, variables);
+
+		// No injection
+		
+		waitForProcessEnd(businessKey, 10000);
+		
+		// There is no response from SDNC, so the flow doesn't set WorkflowResponse.
+		String response = (String) getVariableFromHistory(businessKey, "WorkflowResponse");
+		assertNull(response);
+		WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+		assertNotNull(wfe);
+		System.out.println(wfe.toString());
+		assertEquals("Receive Workflow Message Timeout Error", wfe.getErrorMessage());
+		assertFalse((boolean)getVariableFromHistory(businessKey, "RCVWFMSG_SuccessIndicator"));
+		
+		logEnd();
+	}
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/catalogResp.json b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/catalogResp.json
new file mode 100644
index 0000000..0fdada5
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/catalogResp.json
@@ -0,0 +1,46 @@
+{
+   "serviceResources": {
+      "serviceType": null,
+      "serviceAllottedResources": [],
+      "modelInfo": {
+         "modelInvariantUuid": "1cc4e2e4-eb6e-404d-a66f-c8733cedcce8",
+         "modelName": "ADIOD vRouter vCE 011017 Service",
+         "modelVersion": "5.0",
+         "modelUuid": "2f7f309d-c842-4644-a2e4-34167be5eeb4"
+      },
+      "serviceRole": null,
+      "serviceVnfs": [
+         {
+            "toscaNodeType": "org.openecomp.resource.vf.AdiodVce",
+            "vfModules": [
+               {
+                  "initialCount": null,
+                  "vfModuleLabel": null,
+                  "modelInfo": {
+                     "modelInvariantUuid": "7fb428e1-8000-4800-a71a-f21b946973c5",
+                     "modelName": "AdiodVce..base_vCE..module-0",
+                     "modelVersion": "2",
+                     "modelCustomizationUuid": "1126e7e2-b377-4fd2-ad48-660a20caa829",
+                     "modelUuid": "435d57e1-93a2-4d58-aa5d-f2df2d126276"
+                  },
+                  "hasVolumeGroup": true,
+                  "isBase": true
+               }
+            ],
+            "modelInfo": {
+               "modelInvariantUuid": "fc72435b-4366-4257-a2f7-c70a3a998a7b",
+               "modelName": "ADIoD vCE",
+               "modelVersion": "2.0",
+               "modelCustomizationUuid": "bdaeed40-c964-4966-bdb8-51320dcaf587",
+               "modelInstanceName": "ADIoD vCE 0",
+               "modelUuid": "ec2bd873-5b2c-47e4-8858-f0495fa1dae1"
+            },
+            "nfRole": "",
+            "nfType": "",
+            "nfFunction": "",
+            "nfNamingCode": ""
+         }
+      ],
+      "serviceNetworks": []
+   }
+}
\ No newline at end of file
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf
new file mode 100644
index 0000000..19f18cc
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf
@@ -0,0 +1,107 @@
+{
+    "transactionId": "testRequestId",
+	"requestId": "testRequestId",
+	"requestState": "complete",
+	"statusMessage": "",
+    "solutionInfo": {
+        "licenseInfo": [
+            {
+                "entitlementPoolList": [
+                    "f1d563e8-e714-4393-8f99-cc480144a05e",
+                    "j1d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "licenseKeyGroupList": [
+                    "s1d563e8-e714-4393-8f99-cc480144a05e",
+                    "b1d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "resourceModuleName": "vHNPortalaaS_primary_1",
+                "serviceResourceId": "testResourceIdAR"
+            },
+            {
+                "entitlementPoolList": [
+                    "91d563e8-e714-4393-8f99-cc480144a05e",
+                    "21d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "licenseKeyGroupList": [
+                    "31d563e8-e714-4393-8f99-cc480144a05e",
+                    "71d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "resourceModuleName": "vHNPortalaaS_secondary_1",
+                "serviceResourceId": "testResourceIdVNF"
+            }
+        ],
+        "placement": [
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "MDTNJ01"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "KDTNJ01"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "dfwtx",
+                "inventoryType": "service",
+                "resourceModuleName": "ALLOTTED_RESOURCE",
+                "serviceInstanceId": "testSIID1",
+                "serviceResourceId": "testResourceIdAR"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "testVnfHostname2"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClli2"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionId2",
+                "inventoryType": "service",
+                "resourceModuleName": "ALLOTTED_RESOURCE",
+                "serviceInstanceId": "testSIID2",
+                "serviceResourceId": "testResourceIdAR2"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClli3"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionId3",
+                "inventoryType": "cloud",
+                "resourceModuleName": "VNF",
+                "serviceInstanceId": "",
+                "serviceResourceId": "testResourceIdVNF"
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf2Net b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf2Net
new file mode 100644
index 0000000..5a9ef4b
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf2Net
@@ -0,0 +1,165 @@
+{
+    "transactionId": "testRequestId",
+	"requestId": "testRequestId",
+	"requestState": "complete",
+	"statusMessage": "",
+    "solutionInfo": {
+        "licenseInfo": [
+            {
+                "entitlementPoolList": [
+                    "f1d563e8-e714-4393-8f99-cc480144a05e",
+                    "j1d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "licenseKeyGroupList": [
+                    "s1d563e8-e714-4393-8f99-cc480144a05e",
+                    "b1d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "resourceModuleName": "vHNPortalaaS_primary_1",
+                "serviceResourceId": "testResourceIdAR"
+            },
+            {
+                "entitlementPoolList": [
+                    "f1d563e8-e714-4393-8f99-cc480144a05n",
+                    "j1d563e8-e714-4393-8f99-cc480144a05n"
+                ],
+                "licenseKeyGroupList": [
+                    "s1d563e8-e714-4393-8f99-cc480144a05n",
+                    "b1d563e8-e714-4393-8f99-cc480144a05n"
+                ],
+                "resourceModuleName": "net",
+                "serviceResourceId": "testResourceIdNet2"
+            },
+            {
+                "entitlementPoolList": [
+                    "91d563e8-e714-4393-8f99-cc480144a05e",
+                    "21d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "licenseKeyGroupList": [
+                    "31d563e8-e714-4393-8f99-cc480144a05e",
+                    "71d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "resourceModuleName": "vHNPortalaaS_secondary_1",
+                "serviceResourceId": "testResourceIdVNF"
+            }
+        ],
+        "placement": [
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "MDTNJ01"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "KDTNJ01"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "dfwtx",
+                "inventoryType": "service",
+                "resourceModuleName": "ALLOTTED_RESOURCE",
+                "serviceInstanceId": "testSIID1",
+                "serviceResourceId": "testResourceIdAR"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "testVnfHostname2"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClli2"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionId2",
+                "inventoryType": "service",
+                "resourceModuleName": "ALLOTTED_RESOURCE",
+                "serviceInstanceId": "testSIID2",
+                "serviceResourceId": "testResourceIdAR2"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "testVnfHostNameNet"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClliNet"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionIdNet",
+                "inventoryType": "service",
+                "resourceModuleName": "NETWORK",
+                "serviceInstanceId": "testServiceInstanceIdNet",
+                "serviceResourceId": "testResourceIdNet"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClliNet2"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionIdNet2",
+                "inventoryType": "cloud",
+                "resourceModuleName": "NETWORK",
+                "serviceInstanceId": "",
+                "serviceResourceId": "testResourceIdNet2"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClli3"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionId3",
+                "inventoryType": "cloud",
+                "resourceModuleName": "VNF",
+                "serviceInstanceId": "",
+                "serviceResourceId": "testResourceIdVNF"
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackInfraVnf b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackInfraVnf
new file mode 100644
index 0000000..f80ff65
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackInfraVnf
@@ -0,0 +1,49 @@
+{
+   "transactionId": "testRequestId",
+   "requestId": "testRequestId",
+   "requestState": "complete",
+   "statusMessage": "",
+   "solutionInfo": {
+      "placement": [
+         {
+            "serviceResourceId": "test-resource-id-000",
+            "resourceModuleName": "ADIOD vRouter vCE",
+            "inventoryType": "service",
+            "serviceInstanceId": "service-instance-01234",
+            "cloudRegionId": "mtmnj1a",
+            "assignmentInfo": [
+               {
+                  "variableName": "cloudOwner",
+                  "variableValue": "att-aic"
+               },
+               {
+                  "variableName": "vnfHostName",
+                  "variableValue": "MDTNJ01"
+               },
+               {
+                  "variableName": "aicClli",
+                  "variableValue": "KDTNJ01"
+               },
+               {
+                  "variableName": "aicVersion",
+                  "variableValue": "3.0"
+               }
+            ]
+         }
+      ],
+      "licenseInfo": [
+         {
+            "serviceResourceId": "test-resource-id-000",
+            "resourceModuleName": "ADIOD vRouter vCE",
+            "entitlementPoolList": [
+               "f1d563e8-e714-4393-8f99-cc480144a05e",
+               "j1d563e8-e714-4393-8f99-cc480144a05e"
+            ],
+            "licenseKeyGroupList": [
+               "s1d563e8-e714-4393-8f99-cc480144a05e",
+               "b1d563e8-e714-4393-8f99-cc480144a05e"
+            ]
+         }
+      ]
+   }
+}
\ No newline at end of file
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackNoSolutionFound b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackNoSolutionFound
new file mode 100644
index 0000000..5cb748a
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackNoSolutionFound
@@ -0,0 +1,15 @@
+{
+  "requestState": "",
+  "responseTime": "",
+  "solutionInfo": {
+    "placement": [],
+    "licenseInfo": {
+      "featureGroupId": ""
+    }
+  },
+  "percentProgress": "",
+  "requestId": "02c2e322-5839-4c97-9d46-0a5fa6bb642e",
+  "startTime": "",
+  "statusMessage": "No solution found for plan 08e1b8cf-144a-4bac-b293-d5e2eedc97e8",
+  "requestType": ""
+}
\ No newline at end of file
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackPolicyException b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackPolicyException
new file mode 100644
index 0000000..b826884
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackPolicyException
@@ -0,0 +1,9 @@
+{
+	"requestError": {
+		"policyException": {
+		  "requestId": "ae81d9a8-c949-493a-999c-f76c80503233",
+		  "text": "Message content size exceeds the allowable limit",
+		  "messageId": "SVC0001"
+		}
+	}
+}
\ No newline at end of file
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackServiceException b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackServiceException
new file mode 100644
index 0000000..6cc78a7
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackServiceException
@@ -0,0 +1,12 @@
+{
+	"requestError": {
+		"serviceException": {
+		"variables": [
+		"severity", 400
+		],
+		 "requestId": "ae81d9a8-c949-493a-999c-f76c80503233",
+		  "text": "SNIROPlacementError: requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http://135.21.171.200:8091/v1/plans/97b4e303-5f75-492c-8fb2-21098281c8b8",
+		   "messageId": "SVC0001"
+		}
+	}
+}
\ No newline at end of file
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroRequest_infravnf b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroRequest_infravnf
new file mode 100644
index 0000000..2af6bf3
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/BuildingBlocks/sniroRequest_infravnf
@@ -0,0 +1,65 @@
+{
+	  	"requestInfo": {
+				"transactionId": "testRequestId",
+				"requestId": "testRequestId",
+				"callbackUrl": "http://localhost:8090/workflows/messages/message/SNIROResponse/testRequestId",
+				"sourceId": "mso",
+				"optimizer": [
+					"placement",
+					"license"
+				],
+				"numSolutions": 1,
+				"timeout": 600
+				},
+		"placementInfo": {
+			"serviceModelInfo": {
+				"modelType": "",
+				"modelInvariantId": "1cc4e2e4-eb6e-404d-a66f-c8733cedcce8",
+				"modelVersionId": "2f7f309d-c842-4644-a2e4-34167be5eeb4",
+				"modelName": "ADIOD vRouter vCE 011017 Service",
+				"modelVersion": "5.0"
+				},
+			"subscriberInfo": {
+				"globalSubscriberId": "SUB12_0322_DS_1201",
+				"subscriberName": "SUB_12_0322_DS_1201",
+				"subscriberCommonSiteId": ""
+				},
+			"demandInfo": {
+				"placementDemand": [
+					{
+						"resourceInstanceType": "VNF",
+						"serviceResourceId": "test-resource-id-000",
+						"resourceModuleName": "ADIoD vCE 0",
+						"resourceModelInfo": {
+							"modelCustomizationId": "bdaeed40-c964-4966-bdb8-51320dcaf587",
+							"modelInvariantId": "fc72435b-4366-4257-a2f7-c70a3a998a7b",
+							"modelName": "ADIoD vCE",
+							"modelVersion": "2.0",
+							"modelVersionId": "ec2bd873-5b2c-47e4-8858-f0495fa1dae1",
+							"modelType": ""
+						},
+						"tenantId": "",
+						"tenantName": ""
+					}
+				],
+				"licenseDemand": [
+					{
+						"resourceInstanceType": "VNF",
+						"serviceResourceId": "test-resource-id-000",
+						"resourceModuleName": "ADIoD vCE 0",
+						"resourceModelInfo": {
+							"modelCustomizationId": "bdaeed40-c964-4966-bdb8-51320dcaf587",
+							"modelInvariantId": "fc72435b-4366-4257-a2f7-c70a3a998a7b",
+							"modelName": "ADIoD vCE",
+							"modelVersion": "2.0",
+							"modelVersionId": "ec2bd873-5b2c-47e4-8858-f0495fa1dae1",
+							"modelType": ""
+						}
+					}
+				]
+			},
+			"policyId": [],
+			"serviceInstanceId": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+			"orderInfo": "{\"requestParameters\": null}"
+		}
+	  }
\ No newline at end of file
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/mso.bpmn.urn.properties b/bpmn/MSOCommonBPMN/src/test/resources/mso.bpmn.urn.properties
index c764c7f..9829dda 100644
--- a/bpmn/MSOCommonBPMN/src/test/resources/mso.bpmn.urn.properties
+++ b/bpmn/MSOCommonBPMN/src/test/resources/mso.bpmn.urn.properties
@@ -113,3 +113,11 @@
 policyAuth=Basic dGVzdHBkcDphbHBoYTEyMw==

 policyEnvironment=TEST

 policyEndpoint=localhost:8080/pdp/api/getDecision

+

+mso.sniro.auth=test:testpwd

+mso.sniro.endpoint=http://localhost:28090/optimizationInstance/V1/create

+mso.sniro.callback=http://localhost:28090/adapters/rest/SDNCNotify/SNIROResponse

+mso.sniro.timeout=PT30M

+mso.service.agnostic.sniro.host=http://localhost:28090

+mso.service.agnostic.sniro.endpoint=/sniro/api/v2/placement

+mso.adapters.workflow.message.endpoint=http://localhost:8090/workflows/messages/message

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy
index 2029d15..43a2731 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy
@@ -25,7 +25,6 @@
 import groovy.json.*

 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor 

 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil 

-import org.openecomp.mso.bpmn.common.scripts.VidUtils 

 import org.openecomp.mso.bpmn.core.WorkflowException 

 import org.openecomp.mso.bpmn.core.json.JsonUtils 

 import org.openecomp.mso.rest.APIResponse

@@ -36,7 +35,10 @@
 import org.camunda.bpm.engine.runtime.Execution

 import org.apache.commons.lang3.*

 import org.apache.commons.codec.binary.Base64;

-import org.springframework.web.util.UriUtils

+import org.springframework.web.util.UriUtils 

+import org.openecomp.mso.rest.RESTClient 

+import org.openecomp.mso.rest.RESTConfig

+import org.openecomp.mso.rest.APIResponse;

 

 /**

  * This groovy class supports the <class>CreateGenericE2EServiceInstance.bpmn</class> process.

@@ -44,69 +46,56 @@
  */

 public class CreateGenericE2EServiceInstance extends AbstractServiceTaskProcessor {

 

+    String createUrl = "/vfc/vfcadapters/v1/ns"

+            

+    String instantiateUrl = "/vfcvfcadatpers/v1/ns/{nsInstanceId}/instantiate"

+    

+    String queryJobUrl = "/vfc/vfcadatpers/v1/jobs/{jobId}"

+    

     ExceptionUtil exceptionUtil = new ExceptionUtil()

 

     JsonUtils jsonUtil = new JsonUtils()

 

-    VidUtils vidUtils = new VidUtils()

-

     /**

      * Pre Process the BPMN Flow Request

      * Inclouds:

-     * Deal with the parameters

-     * generate the service instance id

-     * generate the operation id

+     * generate the nsOperationKey

+     * generate the nsParameters

      */

     public void preProcessRequest (Execution execution) {

-	  /* def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+	   def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

        String msg = ""

        utils.log("DEBUG", " *** preProcessRequest() *** ", isDebugEnabled)

-       try {

-

-           String siRequest = execution.getVariable("bpmnRequest")

-           utils.logAudit(siRequest)

-

-           String requestId = execution.getVariable("mso-request-id")

-           execution.setVariable("msoRequestId", requestId)

-           utils.log("DEBUG", "Input Request:" + siRequest + " reqId:" + requestId, isDebugEnabled)

-

-           String serviceInstanceId = execution.getVariable("serviceInstanceId")

-           if (isBlank(serviceInstanceId)) {

-               serviceInstanceId = UUID.randomUUID().toString()

-           }

-           utils.log("DEBUG", "Generated new Service Instance:" + serviceInstanceId, isDebugEnabled)

-           serviceInstanceId = UriUtils.encode(serviceInstanceId,"UTF-8")

-           execution.setVariable("serviceInstanceId", serviceInstanceId)

-           

+       try {                    

+           String globalSubscriberId = execution.getVariable("globalSubscriberId")

+           utils.log("DEBUG", "globalSubscriberId:" + globalSubscriberId, isDebugEnabled)

+           String serviceType = execution.getVariable("serviceType")

+           utils.log("DEBUG", "serviceType:" + serviceType, isDebugEnabled)

+           String serviceId = execution.getVariable("serviceId")

+           utils.log("DEBUG", "serviceId:" + serviceId, isDebugEnabled)

            String operationId = execution.getVariable("operationId")

-           if (isBlank(operationId)) {

-               operationId = UUID.randomUUID().toString()

-           }

-           utils.log("DEBUG", "Generated new Service Instance Operation:" + operationId, isDebugEnabled)

-           serviceInstanceId = UriUtils.encode(operationId,"UTF-8")

-           execution.setVariable("operationId", operationId)

-           //subscriberInfo, TBD , there is no globalSubscriberId in R1 for E2E Service.

-           //requestInfo TBD , there is no requestDetails for R1 E2E service

+           utils.log("DEBUG", "serviceType:" + serviceType, isDebugEnabled)

+           String nodeTemplateUUID = execution.getVariable("nodeTemplateUUID")

+           utils.log("DEBUG", "globalSubscriberId:" + globalSubscriberId, isDebugEnabled)

+           /*

+            * segmentInformation needed as a object of segment

+            * {

+            *     "domain":"",

+            *     "nodeTemplateName":"",

+            *     "nodeType":"",

+            *     "nsParameters":{

+            *       //this is the nsParameters sent to VF-C

+            *     }

+            * }

+            */

+           String siRequest = execution.getVariable("segmentInformation")

+           utils.log("DEBUG", "Input Request:" + siRequest, isDebugEnabled)

+           String nsOperationKey = "{\"globalSubscriberId\":" + globalSubscriberId + ",\"serviceType:\""

+                 + serviceType + ",\"serviceId\":" + serviceId + ",\"operationId\":" + operationId

+                 +",\"nodeTemplateUUID\":" + nodeTemplateUUID + "}";

+           execution.setVariable("nsOperationKey", nsOperationKey);

+           execution.setVariable("nsParameters", jsonUtil.getJsonValue(siRequest, "nsParameters"))

 

-           //TBD need to insert operationInfo to RequestDb

-           

-           //set service Instance Name

-           execution.setVariable("serviceInstanceName", jsonUtil.getJsonValue(siRequest, "service.name"))

-           execution.setVariable("serviceDescription", jsonUtil.getJsonValue(siRequest, "service.description"))

-           execution.setVariable("templateId", jsonUtil.getJsonValue(siRequest, "service.templateId"))

-     

-           //serviceParamters

-           String serviceParamters = jsonUtil.getJsonValue(siRequest, "service.parameters")

-           if (isBlank(serviceParamters)) {

-               msg = "Input service paramters is null"

-               utils.log("DEBUG", msg, isDebugEnabled)

-               exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)

-           } else

-           {

-               execution.setVariable("serviceParamters", serviceParamters)

-           }

-

-           utils.log("DEBUG", "service parameters:" + serviceParamters,  isDebugEnabled)

        } catch (BpmnError e) {

            throw e;

        } catch (Exception ex){

@@ -114,11 +103,11 @@
            utils.log("DEBUG", msg, isDebugEnabled)

            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)

        }

-       utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)*/

+       utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)

 	}

 

-

     public void createNetworkService(Execution execution) {

+

     }

 

     public void instantiateNetworkService(Execution execution) {

@@ -132,4 +121,26 @@
 

     public void finishNSCreate(Execution execution) {

     }

+

+    /**

+     * post request

+     * url: the url of the request

+     * requestBody: the body of the request

+     */

+    private APIResponse postRequest(String url, String requestBody){

+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")

+        taskProcessor.logDebug( " ======== Started Execute VFC adapter Post Process ======== ", isDebugEnabled)

+        taskProcessor.logDebug( "url:"+url +"\nrequestBody:"+ requestBody, isDebugEnabled)

+        APIResponse apiResponse = null

+        try{

+            RESTConfig config = new RESTConfig(url);

+            RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Accept","application/json");

+            apiResponse = client.httpPost(requestBody)

+            taskProcessor.logDebug( "======== Completed Execute VF-C adapter Post Process ======== ", isDebugEnabled)

+        }catch(Exception e){

+            taskProcessor.utils.log("ERROR", "Exception occured while executing AAI Post Call. Exception is: \n" + e, isDebugEnabled)

+            throw new BpmnError("MSOWorkflowException")

+        }

+        return apiResponse

+    }

 }

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/CreateVcpeResCustService.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/CreateVcpeResCustService.groovy
new file mode 100644
index 0000000..3b24ebf
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/CreateVcpeResCustService.groovy
@@ -0,0 +1,883 @@
+/*

+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.

+ */

+package org.openecomp.mso.bpmn.vcpe.scripts;

+

+import groovy.xml.XmlUtil

+import groovy.json.*

+

+import org.openecomp.mso.bpmn.core.json.JsonUtils

+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor

+import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils

+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil

+import org.openecomp.mso.bpmn.common.scripts.VidUtils

+import org.openecomp.mso.bpmn.core.RollbackData

+import org.openecomp.mso.bpmn.core.WorkflowException

+import org.openecomp.mso.bpmn.core.domain.*

+

+import java.util.UUID;

+

+import org.camunda.bpm.engine.delegate.BpmnError

+import org.camunda.bpm.engine.runtime.Execution

+import org.json.JSONObject;

+import org.json.JSONArray;

+import org.apache.commons.lang3.*

+import org.apache.commons.codec.binary.Base64;

+import org.springframework.web.util.UriUtils;

+

+/**

+ * This groovy class supports the <class>CreateVcpeResCustService.bpmn</class> process.

+ *

+ * @author ek1439

+ *

+ */

+public class CreateVcpeResCustService extends AbstractServiceTaskProcessor {

+

+	String Prefix="CVRCS_"

+	ExceptionUtil exceptionUtil = new ExceptionUtil()

+	JsonUtils jsonUtil = new JsonUtils()

+	VidUtils vidUtils = new VidUtils()

+	CatalogDbUtils catalogDbUtils = new CatalogDbUtils()

+

+	/**

+	 * This method is executed during the preProcessRequest task of the <class>CreateServiceInstance.bpmn</class> process.

+	 * @param execution

+	 */

+	public InitializeProcessVariables(Execution execution){

+		/* Initialize all the process variables in this block */

+

+		execution.setVariable("createVcpeServiceRequest", "")

+		execution.setVariable("globalSubscriberId", "")

+		execution.setVariable("serviceInstanceName", "")

+		execution.setVariable("msoRequestId", "")

+		execution.setVariable("CVRCS_NetworksCreatedCount", 0)

+		execution.setVariable("CVRCS_VnfsCreatedCount", 0)

+		execution.setVariable("productFamilyId", "")

+		execution.setVariable("brgWanMacAddress", "")

+

+		//TODO

+		execution.setVariable("sdncVersion", "1707")

+	}

+

+	// **************************************************

+	//     Pre or Prepare Request Section

+	// **************************************************

+	/**

+	 * This method is executed during the preProcessRequest task of the <class>CreateServiceInstance.bpmn</class> process.

+	 * @param execution

+	 */

+	public void preProcessRequest (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+		execution.setVariable("prefix",Prefix)

+

+		utils.log("DEBUG", " ***** Inside preProcessRequest CreateVcpeResCustService Request ***** ", isDebugEnabled)

+

+		try {

+			// initialize flow variables

+			InitializeProcessVariables(execution)

+

+			// check for incoming json message/input

+			String createVcpeServiceRequest = execution.getVariable("bpmnRequest")

+			utils.logAudit(createVcpeServiceRequest)

+			execution.setVariable("createVcpeServiceRequest", createVcpeServiceRequest);

+			println 'createVcpeServiceRequest - ' + createVcpeServiceRequest

+

+			// extract requestId

+			String requestId = execution.getVariable("mso-request-id")

+			execution.setVariable("msoRequestId", requestId)

+

+			String serviceInstanceId = execution.getVariable("serviceInstanceId")

+

+			if ((serviceInstanceId == null) || (serviceInstanceId.isEmpty())) {

+				serviceInstanceId = UUID.randomUUID().toString()

+				utils.log("DEBUG", " Generated new Service Instance: " + serviceInstanceId , isDebugEnabled)

+			} else {

+				utils.log("DEBUG", "Using provided Service Instance ID: " + serviceInstanceId , isDebugEnabled)

+			}

+

+			serviceInstanceId = UriUtils.encode(serviceInstanceId,"UTF-8")

+			execution.setVariable("serviceInstanceId", serviceInstanceId)

+

+			String requestAction = execution.getVariable("requestAction")

+			execution.setVariable("requestAction", requestAction)

+

+			setBasicDBAuthHeader(execution, isDebugEnabled)

+			

+			String source = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.source")

+			if ((source == null) || (source.isEmpty())) {

+				execution.setVariable("source", "VID")

+			} else {

+				execution.setVariable("source", source)

+			}

+

+			// extract globalSubscriberId

+			String globalSubscriberId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.subscriberInfo.globalSubscriberId")

+

+			// verify element global-customer-id is sent from JSON input, throw exception if missing

+			if ((globalSubscriberId == null) || (globalSubscriberId.isEmpty())) {

+				String dataErrorMessage = " Element 'globalSubscriberId' is missing. "

+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)

+

+			} else {

+				execution.setVariable("globalSubscriberId", globalSubscriberId)

+				execution.setVariable("globalCustomerId", globalSubscriberId)

+			}

+

+			// extract subscriptionServiceType

+			String subscriptionServiceType = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestParameters.subscriptionServiceType")

+			execution.setVariable("subscriptionServiceType", subscriptionServiceType)

+			utils.log("DEBUG", "Incoming subscriptionServiceType is: " + subscriptionServiceType, isDebugEnabled)

+

+			String suppressRollback = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.suppressRollback")

+			execution.setVariable("disableRollback", suppressRollback)

+			utils.log("DEBUG", "Incoming Suppress/Disable Rollback is: " + suppressRollback, isDebugEnabled)

+

+			String productFamilyId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.productFamilyId")

+			execution.setVariable("productFamilyId", productFamilyId)

+			utils.log("DEBUG", "Incoming productFamilyId is: " + productFamilyId, isDebugEnabled)

+			

+			String subscriberInfo = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.subscriberInfo")

+			execution.setVariable("subscriberInfo", subscriberInfo)

+			utils.log("DEBUG", "Incoming subscriberInfo is: " + subscriberInfo, isDebugEnabled)

+

+		  /*
+		  * Extracting User Parameters from incoming Request and converting into a Map
+		  */
+		  def jsonSlurper = new JsonSlurper()
+		  def jsonOutput = new JsonOutput()
+  
+		  Map reqMap = jsonSlurper.parseText(createVcpeServiceRequest)
+  
+		  //InputParams
+		  def userParams = reqMap.requestDetails?.requestParameters?.userParams
+  
+		  Map<String, String> inputMap = [:]
+		  if (userParams) {
+			  userParams.each {
+				  name, value -> inputMap.put(name, value)
+					if (name.equals("BRG_WAN_MAC_Address"))
+							execution.setVariable("brgWanMacAddress", value)

+			  }
+		  }
+
+		  utils.log("DEBUG", "User Input Parameters map: " + userParams.toString(), isDebugEnabled)
+		  execution.setVariable("serviceInputParams", inputMap)
+
+			utils.log("DEBUG", "Incoming brgWanMacAddress is: " + execution.getVariable('brgWanMacAddress'), isDebugEnabled)

+

+			//For Completion Handler & Fallout Handler

+			String requestInfo =

+			"""<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">

+					<request-id>${requestId}</request-id>

+					<action>CREATE</action>

+					<source>${source}</source>

+				   </request-info>"""

+

+			execution.setVariable("CVRCS_requestInfo", requestInfo)

+

+			utils.log("DEBUG", " ***** Completed preProcessRequest CreateVcpeResCustService Request ***** ", isDebugEnabled)

+

+		} catch (BpmnError e) {

+			throw e;

+

+		} catch (Exception ex){

+			String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected from method preProcessRequest() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	}

+

+	public void sendSyncResponse (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		utils.log("DEBUG", " ***** Inside sendSyncResponse of CreateVcpeResCustService ***** ", isDebugEnabled)

+

+		try {

+			String serviceInstanceId = execution.getVariable("serviceInstanceId")

+			String requestId = execution.getVariable("mso-request-id")

+

+			// RESTResponse (for API Handler (APIH) Reply Task)

+			String syncResponse ="""{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim()

+

+			utils.log("DEBUG", " sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse, isDebugEnabled)

+			sendWorkflowResponse(execution, 202, syncResponse)

+

+		} catch (Exception ex) {

+			String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected from method sendSyncResponse() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	}

+

+	// *******************************

+	//

+	// *******************************

+	public void prepareDecomposeService(Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		try {

+			utils.log("DEBUG", " ***** Inside prepareDecomposeService of CreateVcpeResCustService ***** ", isDebugEnabled)

+

+			String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest")

+

+			//serviceModelInfo JSON string will be used as-is for DoCreateServiceInstance BB

+			String serviceModelInfo = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.modelInfo")

+			execution.setVariable("serviceModelInfo", serviceModelInfo)

+

+			utils.log("DEBUG", " ***** Completed prepareDecomposeService of CreateVcpeResCustService ***** ", isDebugEnabled)

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method prepareDecomposeService() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	 }

+

+	// *******************************

+	//

+	// *******************************

+	public void prepareCreateServiceInstance(Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		try {

+			utils.log("DEBUG", " ***** Inside prepareCreateServiceInstance of CreateVcpeResCustService ***** ", isDebugEnabled)

+

+			/*

+			 * Service modelInfo is created in earlier step. This flow can use it as-is ... or, extract from DecompositionObject

+			 *		ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")

+			 *		ModelInfo modelInfo = serviceDecomposition.getModelInfo()

+			 *

+			 */

+			String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest")

+//			String serviceInputParams = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestParameters")

+//			execution.setVariable("serviceInputParams", serviceInputParams)

+

+
+			String serviceInstanceName = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.instanceName")

+			execution.setVariable("serviceInstanceName", serviceInstanceName)

+

+			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")

+			execution.setVariable("serviceDecompositionString", serviceDecomposition.toJsonString())

+

+			utils.log("DEBUG", " ***** Completed prepareCreateServiceInstance of CreateVcpeResCustService ***** ", isDebugEnabled)

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method prepareCreateServiceInstance() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	 }

+

+	public void postProcessServiceInstanceCreate (Execution execution){

+		def method = getClass().getSimpleName() + '.postProcessServiceInstanceCreate(' +'execution=' + execution.getId() +')'

+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')

+		logDebug('Entered ' + method, isDebugLogEnabled)

+

+		String source = execution.getVariable("source")

+		String requestId = execution.getVariable("mso-request-id")

+		String serviceInstanceId = execution.getVariable("serviceInstanceId")

+		String serviceInstanceName = execution.getVariable("serviceInstanceName")

+

+		try {

+

+			String payload = """

+			<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://org.openecomp.mso/requestsdb">

+			<soapenv:Header/>

+			<soapenv:Body>

+			<req:updateInfraRequest>

+				<requestId>${requestId}</requestId>

+				<lastModifiedBy>BPEL</lastModifiedBy>

+				<serviceInstanceId>${serviceInstanceId}</serviceInstanceId>

+				<serviceInstanceName>${serviceInstanceName}</serviceInstanceName>

+			</req:updateInfraRequest>

+			</soapenv:Body>

+			</soapenv:Envelope>

+			"""

+			execution.setVariable("CVRCS_setUpdateDbInstancePayload", payload)

+			utils.logAudit("CVRCS_setUpdateDbInstancePayload: " + payload)

+			logDebug('Exited ' + method, isDebugLogEnabled)

+

+		} catch (BpmnError e) {

+			throw e;

+		} catch (Exception e) {

+			logError('Caught exception in ' + method, e)

+			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error - Occured in" + method)

+		}

+	}

+

+

+	public void processDecomposition (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		utils.log("DEBUG", " ***** Inside getDataFromDecomposition() of CreateVcpeResCustService ***** ", isDebugEnabled)

+

+		try {

+

+			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")

+			List<NetworkResource> networkList = serviceDecomposition.getServiceNetworks()

+

+

+			execution.setVariable("networkList", networkList)

+			execution.setVariable("networkListString", networkList.toString())

+

+			utils.log("DEBUG", "networkList: "+ networkList, isDebugEnabled)

+

+			if (networkList != null && networkList.size() > 0) {

+				execution.setVariable("CVRCS_NetworksCount", networkList.size())

+				utils.log("DEBUG", "networks to create: "+ networkList.size(), isDebugEnabled)

+			} else {

+				execution.setVariable("CVRCS_NetworksCount", 0)

+				utils.log("DEBUG", "no networks to create based upon serviceDecomposition content", isDebugEnabled)

+			}

+

+			// VNFs

+			List<VnfResource> vnfList = serviceDecomposition.getServiceVnfs()

+			execution.setVariable("vnfList", vnfList)

+			execution.setVariable("vnfListString", vnfList.toString())

+

+			String vnfModelInfoString = ""

+			if (vnfList != null && vnfList.size() > 0) {

+				execution.setVariable("CVRCS_VNFsCount", vnfList.size())

+				utils.log("DEBUG", "vnfs to create: "+ vnfList.size(), isDebugEnabled)

+				ModelInfo vnfModelInfo = vnfList[0].getModelInfo()

+

+				vnfModelInfoString = vnfModelInfo.toString()

+				String vnfModelInfoWithRoot = vnfModelInfo.toString()

+				vnfModelInfoString = jsonUtil.getJsonValue(vnfModelInfoWithRoot, "modelInfo")

+			} else {

+					execution.setVariable("CVRCS_VNFsCount", 0)

+					utils.log("DEBUG", "no vnfs to create based upon serviceDecomposition content", isDebugEnabled)

+			}

+

+			execution.setVariable("vnfModelInfo", vnfModelInfoString)

+			execution.setVariable("vnfModelInfoString", vnfModelInfoString)

+			utils.log("DEBUG", " vnfModelInfoString :" + vnfModelInfoString, isDebugEnabled)

+

+			utils.log("DEBUG", " ***** Completed getDataFromDecomposition() of CreateVcpeResCustService ***** ", isDebugEnabled)

+		} catch (Exception ex) {

+			sendSyncError(execution)

+		   String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. getDataFromDecomposition() - " + ex.getMessage()

+		   utils.log("DEBUG", exceptionMessage, isDebugEnabled)

+		   exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	}

+

+	// *******************************

+	//     Generate Network request Section

+	// *******************************

+	public void prepareNetworkCreate (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		try {

+			utils.log("DEBUG", " ***** Inside preparenNetworkCreate of CreateVcpeResCustService ***** ", isDebugEnabled)

+

+

+			String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest")

+

+			List<NetworkResource> networkList = execution.getVariable("networkList")

+			utils.log("DEBUG", "networkList: "+ networkList, isDebugEnabled)

+

+			Integer networksCreatedCount = execution.getVariable("CVRCS_NetworksCreatedCount")

+			String networkModelInfoString = ""

+

+			if (networkList != null) {

+				utils.log("DEBUG", " getting model info for network # :" + networksCreatedCount, isDebugEnabled)

+				ModelInfo networkModelInfo = networkList[networksCreatedCount.intValue()].getModelInfo()

+				//Currently use String representation in JSON format as an input

+				//execution.setVariable("networkModelInfo", networkModelInfo)

+				networkModelInfoString = networkModelInfo.toJsonStringNoRootName()

+			} else {

+				String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected number of networks to create - " + ex.getMessage()

+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+			}

+

+			//Currently use String representation in JSON format as an input

+			execution.setVariable("networkModelInfo", networkModelInfoString)

+			utils.log("DEBUG", " networkModelInfoString :" + networkModelInfoString, isDebugEnabled)

+

+			// extract cloud configuration

+			String lcpCloudRegionId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.cloudConfiguration.lcpCloudRegionId")

+			execution.setVariable("lcpCloudRegionId", lcpCloudRegionId)

+			utils.log("DEBUG","lcpCloudRegionId: "+ lcpCloudRegionId, isDebugEnabled)

+			String tenantId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.cloudConfiguration.tenantId")

+			execution.setVariable("tenantId", tenantId)

+			utils.log("DEBUG","tenantId: "+ tenantId, isDebugEnabled)

+

+			String sdncVersion = execution.getVariable("sdncVersion")

+			utils.log("DEBUG","sdncVersion: "+ sdncVersion, isDebugEnabled)

+

+//			List<VnfResource> vnfList = execution.getVariable("vnfList")

+//			utils.log("DEBUG", "vnfList: "+ vnfList.toString(), isDebugEnabled)

+//

+//			String vnfModelInfo = execution.getVariable("vnfModelInfo")

+//			utils.log("DEBUG", "vnfModelInfo: "+ vnfModelInfo, isDebugEnabled)

+

+			utils.log("DEBUG", " ***** Completed preparenNetworkCreate of CreateVcpeResCustService ***** ", isDebugEnabled)

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method prepareNetworkCreate() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	 }

+

+	// *******************************

+	//     Validate Network request Section -> increment count

+	// *******************************

+	public void validateNetworkCreate (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		try {

+			utils.log("DEBUG", " ***** Inside validateNetworkCreate of CreateVcpeResCustService ***** ", isDebugEnabled)

+

+			Integer networksCreatedCount = execution.getVariable("CVRCS_NetworksCreatedCount")

+			networksCreatedCount++

+			execution.setVariable("CVRCS_NetworksCreatedCount", networksCreatedCount)

+

+			execution.setVariable("DCRENI_rollbackData"+networksCreatedCount, execution.getVariable("DCRENI_rollbackData"))

+

+			utils.log("DEBUG", "networksCreatedCount: "+ networksCreatedCount, isDebugEnabled)

+			utils.log("DEBUG", "DCRENI_rollbackData N : "+ execution.getVariable("DCRENI_rollbackData"+networksCreatedCount), isDebugEnabled)

+

+//			JSONArray vnfList = execution.getVariable("vnfList")

+//			utils.log("DEBUG", "vnfList: "+ vnfList, isDebugEnabled)

+

+			String vnfModelInfo = execution.getVariable("vnfModelInfo")

+			utils.log("DEBUG", "vnfModelInfo: "+ vnfModelInfo, isDebugEnabled)

+

+			List<NetworkResource> networkList = execution.getVariable("networkList")

+			utils.log("DEBUG", "networkList: "+ networkList, isDebugEnabled)

+

+			utils.log("DEBUG", " ***** Completed validateNetworkCreate of CreateVcpeResCustService ***** "+" network # "+networksCreatedCount, isDebugEnabled)

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method validateNetworkCreate() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	 }

+

+

+	public void prepareCreateAllottedResourceTXC(Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		try {

+			utils.log("DEBUG", " ***** Inside prepareCreateAllottedResourceTXC of CreateVcpeResCustService ***** ", isDebugEnabled)

+

+			/*

+			 * Service modelInfo is created in earlier step. This flow can use it as-is ... or, extract from DecompositionObject

+			 *		ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")

+			 *		ModelInfo modelInfo = serviceDecomposition.getModelInfo()

+			 *

+			 */

+			String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest")

+			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")

+

+			//parentServiceInstanceId

+			//The parentServiceInstanceId will be a Landing Network service.  This value will have been provided to the calling flow by SNIRO query (homing solution).

+			//serviceDecomposition.getServiceNetworks()

+

+			//For 1707, the vIPR Tenant OAM flow will use the BRG allotted resource parent service ID (since it is known that the security zone also comes from the vIPR FW).

+			//Beyond 1707, this would need to be captured somehow in TOSCA model and also provided by SNIRO.

+

+			//allottedResourceModelInfo

+			//allottedResourceRole

+			//The model Info parameters are a JSON structure as defined in the Service Instantiation API.

+			//It would be sufficient to only include the service model UUID (i.e. the modelVersionId), since this BB will query the full model from the Catalog DB.

+			List<AllottedResource> allottedResources = serviceDecomposition.getServiceAllottedResources()

+			if (allottedResources != null) {

+				Iterator iter = allottedResources.iterator();

+				while (iter.hasNext()){

+					AllottedResource allottedResource = (AllottedResource)iter.next();

+

+					utils.log("DEBUG", " getting model info for AllottedResource # :" + allottedResource.toJsonString(), isDebugEnabled)

+					utils.log("DEBUG", " allottedResource.getAllottedResourceType() :" + allottedResource.getAllottedResourceType(), isDebugEnabled)

+					if(allottedResource.getAllottedResourceType() != null && allottedResource.getAllottedResourceType().equalsIgnoreCase("TunnelXConn")){

+						//set create flag to true

+						execution.setVariable("createTXCAR", true)

+						ModelInfo allottedResourceModelInfo = allottedResource.getModelInfo()

+						execution.setVariable("allottedResourceModelInfoTXC", allottedResourceModelInfo.toJsonString())

+						execution.setVariable("allottedResourceRoleTXC", allottedResource.getAllottedResourceRole())

+						execution.setVariable("allottedResourceTypeTXC", allottedResource.getAllottedResourceType())

+						

+						//from Homing Solution. This is the infraServiceInstanceId in the BRG Allotted Resource decomposition structure.

+						execution.setVariable("parentServiceInstanceIdTXC", allottedResource.getHomingSolution().getServiceInstanceId())

+					}
+				}

+			}

+

+			//Populate with the A&AI network ID (l3-network object) for the Tenant OAM network that was created in prior step

+			//String sourceNetworkId = execution.getVariable("networkId")

+			//execution.setVariable("sourceNetworkId", sourceNetworkId)

+			//Populate with the network-role (from A&AI l3-network object) for the Tenant OAM network from prior step

+			

+			//List<NetworkResource> networkResources = serviceDecomposition.getServiceNetworks()

+			//if (networkResources != null) {

+				//Iterator iter = networkResources.iterator();

+				//while (iter.hasNext()){

+					//NetworkResource networkResource = (NetworkResource)iter.next();

+					//execution.setVariable("sourceNetworkRole", networkResource.getNetworkRole())

+				//}

+			//}

+

+			//unit test only

+			String allottedResourceId = execution.getVariable("allottedResourceId")

+			execution.setVariable("allottedResourceIdTXC", allottedResourceId)

+			utils.log("DEBUG", "setting allottedResourceId CreateVcpeResCustService "+allottedResourceId, isDebugEnabled)

+			

+			utils.log("DEBUG", " ***** Completed prepareCreateAllottedResourceTXC of CreateVcpeResCustService ***** ", isDebugEnabled)

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in prepareCreateAllottedResourceTXC flow. Unexpected Error from method prepareCreateServiceInstance() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	 }

+	public void prepareCreateAllottedResourceBRG(Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		try {

+			utils.log("DEBUG", " ***** Inside prepareCreateAllottedResourceBRG of CreateVcpeResCustService ***** ", isDebugEnabled)

+

+			/*

+			 * Service modelInfo is created in earlier step. This flow can use it as-is ... or, extract from DecompositionObject

+			 *		ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")

+			 *		ModelInfo modelInfo = serviceDecomposition.getModelInfo()

+			 *

+			 */

+			String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest")

+			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")

+

+			//parentServiceInstanceId

+			//The parentServiceInstanceId will be a Landing Network service.  This value will have been provided to the calling flow by SNIRO query (homing solution).

+			//serviceDecomposition.getServiceNetworks()

+

+			//For 1707, the vIPR Tenant OAM flow will use the BRG allotted resource parent service ID (since it is known that the security zone also comes from the vIPR FW).

+			//Beyond 1707, this would need to be captured somehow in TOSCA model and also provided by SNIRO.

+

+			//allottedResourceModelInfo

+			//allottedResourceRole

+			//The model Info parameters are a JSON structure as defined in the Service Instantiation API.

+			//It would be sufficient to only include the service model UUID (i.e. the modelVersionId), since this BB will query the full model from the Catalog DB.

+			List<AllottedResource> allottedResources = serviceDecomposition.getServiceAllottedResources()

+			if (allottedResources != null) {

+				Iterator iter = allottedResources.iterator();

+				while (iter.hasNext()){

+					AllottedResource allottedResource = (AllottedResource)iter.next();

+

+					utils.log("DEBUG", " getting model info for AllottedResource # :" + allottedResource.toJsonString(), isDebugEnabled)

+					utils.log("DEBUG", " allottedResource.getAllottedResourceType() :" + allottedResource.getAllottedResourceType(), isDebugEnabled)

+					if (allottedResource.getAllottedResourceType() != null && allottedResource.getAllottedResourceType().equalsIgnoreCase("BRG")) {

+						//set create flag to true

+						execution.setVariable("createBRGAR", true)

+						ModelInfo allottedResourceModelInfo = allottedResource.getModelInfo()

+						execution.setVariable("allottedResourceModelInfoBRG", allottedResourceModelInfo.toJsonString())

+						execution.setVariable("allottedResourceRoleBRG", allottedResource.getAllottedResourceRole())

+						execution.setVariable("allottedResourceTypeBRG", allottedResource.getAllottedResourceType())

+						//For 1707, the vIPR Tenant OAM flow will use the BRG allotted resource parent service ID (since it is known that the security zone also comes from the vIPR FW).

+						//This Id should be taken from the homing solution for the BRG resource. 

+						//After decomposition and homing BBs, there should be an allotted resource object in the decomposition that represents the BRG, 

+						//and in its homingSolution section should be found the infraServiceInstanceId (i.e. infraServiceInstanceId in BRG Allotted Resource structure) (which the Homing BB would have populated).

+						

+						//from Homing Solution. This is the infraServiceInstanceId in the BRG Allotted Resource decomposition structure.

+						execution.setVariable("parentServiceInstanceIdBRG", allottedResource.getHomingSolution().getServiceInstanceId())

+					}

+				}

+			}

+

+			//Populate with the A&AI network ID (l3-network object) for the Tenant OAM network that was created in prior step

+			//String sourceNetworkId = execution.getVariable("networkId")

+			//execution.setVariable("sourceNetworkId", sourceNetworkId)

+			//Populate with the network-role (from A&AI l3-network object) for the Tenant OAM network from prior step

+			

+			//List<NetworkResource> networkResources = serviceDecomposition.getServiceNetworks()

+			//if (networkResources != null) {

+				//Iterator iter = networkResources.iterator();

+				//while (iter.hasNext()){

+					//NetworkResource networkResource = (NetworkResource)iter.next();

+					//execution.setVariable("sourceNetworkRole", networkResource.getNetworkRole())

+				//}

+			//}

+

+			//unit test only

+			String allottedResourceId = execution.getVariable("allottedResourceId")

+			execution.setVariable("allottedResourceIdBRG", allottedResourceId)

+			utils.log("DEBUG", "setting allottedResourceId CreateVcpeResCustService "+allottedResourceId, isDebugEnabled)

+			

+			utils.log("DEBUG", " ***** Completed prepareCreateAllottedResourceBRG of CreateVcpeResCustService ***** ", isDebugEnabled)

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in prepareCreateAllottedResourceBRG flow. Unexpected Error from method prepareCreateServiceInstance() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	 }

+

+
+
+	// *******************************

+	//     Generate Network request Section

+	// *******************************

+	public void prepareVnfAndModulesCreate (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		try {

+			utils.log("DEBUG", " ***** Inside prepareVnfAndModulesCreate of CreateVcpeResCustService ***** ", isDebugEnabled)

+

+			//			String disableRollback = execution.getVariable("disableRollback")

+			//			def backoutOnFailure = ""

+			//			if(disableRollback != null){

+			//				if ( disableRollback == true) {

+			//					backoutOnFailure = "false"

+			//				} else if ( disableRollback == false) {

+			//					backoutOnFailure = "true"

+			//				}

+			//			}

+						//failIfExists - optional

+

+			String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest")

+			String productFamilyId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.productFamilyId")

+			execution.setVariable("productFamilyId", productFamilyId)

+			utils.log("DEBUG","productFamilyId: "+ productFamilyId, isDebugEnabled)

+

+			List<VnfResource> vnfList = execution.getVariable("vnfList")

+

+			Integer vnfsCreatedCount = execution.getVariable("CVRCS_VnfsCreatedCount")

+			String vnfModelInfoString = null;

+

+			if (vnfList != null && vnfList.size() > 0 ) {

+				utils.log("DEBUG", "getting model info for vnf # " + vnfsCreatedCount, isDebugEnabled)

+				ModelInfo vnfModelInfo1 = vnfList[0].getModelInfo()

+				utils.log("DEBUG", "got 0 ", isDebugEnabled)

+				ModelInfo vnfModelInfo = vnfList[vnfsCreatedCount.intValue()].getModelInfo()

+				vnfModelInfoString = vnfModelInfo.toString()

+			} else {

+				//TODO: vnfList does not contain data. Need to investigate why ... . Fro VCPE use model stored

+				vnfModelInfoString = execution.getVariable("vnfModelInfo")

+			}

+

+			utils.log("DEBUG", " vnfModelInfoString :" + vnfModelInfoString, isDebugEnabled)

+

+			// extract cloud configuration

+			String lcpCloudRegionId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.cloudConfiguration.lcpCloudRegionId")

+			execution.setVariable("lcpCloudRegionId", lcpCloudRegionId)

+			utils.log("DEBUG","lcpCloudRegionId: "+ lcpCloudRegionId, isDebugEnabled)

+			String tenantId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.cloudConfiguration.tenantId")

+			execution.setVariable("tenantId", tenantId)

+			utils.log("DEBUG","tenantId: "+ tenantId, isDebugEnabled)

+

+			String sdncVersion = execution.getVariable("sdncVersion")

+			utils.log("DEBUG","sdncVersion: "+ sdncVersion, isDebugEnabled)

+

+			utils.log("DEBUG", " ***** Completed prepareVnfAndModulesCreate of CreateVcpeResCustService ***** ", isDebugEnabled)

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method prepareVnfAndModulesCreate() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	 }

+

+	// *******************************

+	//     Validate Vnf request Section -> increment count

+	// *******************************

+	public void validateVnfCreate (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		try {

+			utils.log("DEBUG", " ***** Inside validateVnfCreate of CreateVcpeResCustService ***** ", isDebugEnabled)

+

+			Integer vnfsCreatedCount = execution.getVariable("CVRCS_VnfsCreatedCount")

+			vnfsCreatedCount++

+

+			execution.setVariable("CVRCS_VnfsCreatedCount", vnfsCreatedCount)

+

+			utils.log("DEBUG", " ***** Completed validateVnfCreate of CreateVcpeResCustService ***** "+" vnf # "+vnfsCreatedCount, isDebugEnabled)

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method validateVnfCreate() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	 }

+

+	// *******************************

+	//     Validate Network request Section -> decrement count

+	// *******************************

+	public void validateNetworkRollback (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		try {

+			utils.log("DEBUG", " ***** Inside validateNetworkRollback of CreateVcpeResCustService ***** ", isDebugEnabled)

+

+			Integer networksCreatedCount = execution.getVariable("CVRCS_NetworksCreatedCount")

+			networksCreatedCount--

+

+			execution.setVariable("CVRCS_NetworksCreatedCount", networksCreatedCount)

+

+			execution.setVariable("DCRENI_rollbackData", execution.getVariable("DCRENI_rollbackData"+networksCreatedCount))

+

+			utils.log("DEBUG", " ***** Completed validateNetworkRollback of CreateVcpeResCustService ***** "+" network # "+networksCreatedCount, isDebugEnabled)

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method validateNetworkRollback() - " + ex.getMessage()

+			//exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+			utils.log("DEBUG", exceptionMessage, isDebugEnabled)

+			execution.setVariable("CVRCS_NetworksCreatedCount", 0)

+			utils.log("ERROR", exceptionMessage, true)

+		}

+	 }

+

+	// *****************************************

+	//     Prepare Completion request Section

+	// *****************************************

+	public void postProcessResponse (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		utils.log("DEBUG", " ***** Inside postProcessResponse of CreateVcpeResCustService ***** ", isDebugEnabled)

+

+		try {

+			String source = execution.getVariable("source")

+			String requestId = execution.getVariable("mso-request-id")

+			String serviceInstanceId = execution.getVariable("serviceInstanceId")

+

+			String msoCompletionRequest =

+					"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"

+									xmlns:ns="http://org.openecomp/mso/request/types/v1">

+							<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">

+								<request-id>${requestId}</request-id>

+								<action>CREATE</action>

+								<source>${source}</source>

+							</request-info>

+							<status-message>Service Instance has been created successfully via macro orchestration</status-message>

+							<serviceInstanceId>${serviceInstanceId}</serviceInstanceId>

+							<mso-bpel-name>BPMN macro create</mso-bpel-name>

+						</aetgt:MsoCompletionRequest>"""

+

+			// Format Response

+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)

+

+			utils.logAudit(xmlMsoCompletionRequest)

+			execution.setVariable("CVRCS_Success", true)

+			execution.setVariable("CVRCS_CompleteMsoProcessRequest", xmlMsoCompletionRequest)

+			utils.log("DEBUG", " SUCCESS flow, going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest, isDebugEnabled)

+		} catch (BpmnError e) {

+			throw e;

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method postProcessResponse() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	}

+

+	public void preProcessRollback (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+		utils.log("DEBUG"," ***** preProcessRollback of CreateVcpeResCustService ***** ", isDebugEnabled)

+		try {

+

+			Object workflowException = execution.getVariable("WorkflowException");

+

+			if (workflowException instanceof WorkflowException) {

+				utils.log("DEBUG", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled)

+				execution.setVariable("prevWorkflowException", workflowException);

+				//execution.setVariable("WorkflowException", null);

+			}

+		} catch (BpmnError e) {

+			utils.log("DEBUG", "BPMN Error during preProcessRollback", isDebugEnabled)

+		} catch(Exception ex) {

+			String msg = "Exception in preProcessRollback. " + ex.getMessage()

+			utils.log("DEBUG", msg, isDebugEnabled)

+		}

+		utils.log("DEBUG"," *** Exit preProcessRollback of CreateVcpeResCustService *** ", isDebugEnabled)

+	}

+

+	public void postProcessRollback (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+		utils.log("DEBUG"," ***** postProcessRollback of CreateVcpeResCustService ***** ", isDebugEnabled)

+		String msg = ""

+		try {

+			Object workflowException = execution.getVariable("prevWorkflowException");

+			if (workflowException instanceof WorkflowException) {

+				utils.log("DEBUG", "Setting prevException to WorkflowException: ", isDebugEnabled)

+				execution.setVariable("WorkflowException", workflowException);

+			}

+		} catch (BpmnError b) {

+			utils.log("DEBUG", "BPMN Error during postProcessRollback", isDebugEnabled)

+			throw b;

+		} catch(Exception ex) {

+			msg = "Exception in postProcessRollback. " + ex.getMessage()

+			utils.log("DEBUG", msg, isDebugEnabled)

+		}

+		utils.log("DEBUG"," *** Exit postProcessRollback of CreateVcpeResCustService *** ", isDebugEnabled)

+	}

+

+	public void prepareFalloutRequest(Execution execution){

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		utils.log("DEBUG", " *** STARTED CreateVcpeResCustService prepareFalloutRequest Process *** ", isDebugEnabled)

+

+		try {

+			WorkflowException wfex = execution.getVariable("WorkflowException")

+			utils.log("DEBUG", " Incoming Workflow Exception: " + wfex.toString(), isDebugEnabled)

+			String requestInfo = execution.getVariable("CVRCS_requestInfo")

+			utils.log("DEBUG", " Incoming Request Info: " + requestInfo, isDebugEnabled)

+

+			//TODO. hmmm. there is no way to UPDATE error message.

+//			String errorMessage = wfex.getErrorMessage()

+//			boolean successIndicator = execution.getVariable("DCRESI_rollbackSuccessful")

+//			if (successIndicator){

+//				errorMessage = errorMessage + ". Rollback successful."

+//			} else {

+//				errorMessage = errorMessage + ". Rollback not completed."

+//			}

+

+			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)

+

+			execution.setVariable("CVRCS_falloutRequest", falloutRequest)

+

+		} catch (Exception ex) {

+			utils.log("DEBUG", "Error Occured in CreateVcpeResCustService prepareFalloutRequest Process " + ex.getMessage(), isDebugEnabled)

+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVcpeResCustService prepareFalloutRequest Process")

+		}

+		utils.log("DEBUG", "*** COMPLETED CreateVcpeResCustService prepareFalloutRequest Process ***", isDebugEnabled)

+	}

+

+

+	public void sendSyncError (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+		execution.setVariable("prefix", Prefix)

+

+		utils.log("DEBUG", " ***** Inside sendSyncError() of CreateVcpeResCustService ***** ", isDebugEnabled)

+

+		try {

+			String errorMessage = ""

+			if (execution.getVariable("WorkflowException") instanceof WorkflowException) {

+				WorkflowException wfe = execution.getVariable("WorkflowException")

+				errorMessage = wfe.getErrorMessage()

+			} else {

+				errorMessage = "Sending Sync Error."

+			}

+

+			String buildworkflowException =

+				"""<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">

+					<aetgt:ErrorMessage>${errorMessage}</aetgt:ErrorMessage>

+					<aetgt:ErrorCode>7000</aetgt:ErrorCode>

+				   </aetgt:WorkflowException>"""

+

+			utils.logAudit(buildworkflowException)

+			sendWorkflowResponse(execution, 500, buildworkflowException)

+		} catch (Exception ex) {

+			utils.log("DEBUG", " Sending Sync Error Activity Failed. " + "\n" + ex.getMessage(), isDebugEnabled)

+		}

+	}

+

+	public void processJavaException(Execution execution){

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+		execution.setVariable("prefix",Prefix)

+		try{

+			utils.log("DEBUG", "Caught a Java Exception", isDebugEnabled)

+			utils.log("DEBUG", "Started processJavaException Method", isDebugEnabled)

+			utils.log("DEBUG", "Variables List: " + execution.getVariables(), isDebugEnabled)

+			execution.setVariable("CRESI_unexpectedError", "Caught a Java Lang Exception")  // Adding this line temporarily until this flows error handling gets updated

+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Caught a Java Lang Exception")

+		}catch(BpmnError b){

+			utils.log("ERROR", "Rethrowing MSOWorkflowException", isDebugEnabled)

+			throw b

+		}catch(Exception e){

+			utils.log("DEBUG", "Caught Exception during processJavaException Method: " + e, isDebugEnabled)

+			execution.setVariable("CRESI_unexpectedError", "Exception in processJavaException method")  // Adding this line temporarily until this flows error handling gets updated

+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception in processJavaException method")

+		}

+		utils.log("DEBUG", "Completed processJavaException Method", isDebugEnabled)

+	}

+}

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DeleteVcpeResCustService.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DeleteVcpeResCustService.groovy
new file mode 100644
index 0000000..960bb5c
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DeleteVcpeResCustService.groovy
@@ -0,0 +1,495 @@
+/*

+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.

+ */

+package org.openecomp.mso.bpmn.vcpe.scripts

+

+import groovy.xml.XmlUtil

+import groovy.json.*

+

+import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils;

+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil

+import org.openecomp.mso.bpmn.common.scripts.NetworkUtils;

+import org.openecomp.mso.bpmn.common.scripts.VidUtils;

+import org.openecomp.mso.bpmn.core.json.JsonUtils

+import org.openecomp.mso.bpmn.core.WorkflowException

+import org.openecomp.mso.rest.APIResponse

+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor

+

+import java.util.UUID;

+

+import org.camunda.bpm.engine.delegate.BpmnError

+import org.camunda.bpm.engine.runtime.Execution

+import org.json.JSONObject;

+import org.json.JSONArray;

+import org.apache.commons.lang3.*

+import org.apache.commons.codec.binary.Base64;

+import org.springframework.web.util.UriUtils;

+

+/**

+ * This groovy class supports the <class>DeleteVcpeResCustService.bpmn</class> process.

+ *

+ * @author dm4252

+ *

+ */

+public class DeleteVcpeResCustService extends AbstractServiceTaskProcessor {

+

+	String Prefix="DELVAS_"

+	ExceptionUtil exceptionUtil = new ExceptionUtil()

+	JsonUtils jsonUtil = new JsonUtils()

+	VidUtils vidUtils = new VidUtils()

+	CatalogDbUtils catalogDbUtils = new CatalogDbUtils()

+	NetworkUtils networkUtils = new NetworkUtils()

+

+	/**

+	 * This method is executed during the preProcessRequest task of the <class>DeleteVcpeResCustService.bpmn</class> process.

+	 * @param execution

+	 */

+	public InitializeProcessVariables(Execution execution){

+		/* Initialize all the process variables in this block */

+

+		execution.setVariable("DeleteVcpeResCustServiceRequest", "")

+		execution.setVariable("msoRequestId", "")

+		execution.setVariable("DELVAS_vnfsDeletedCount", 0)

+		execution.setVariable("DELVAS_vnfsCount", 0)

+		execution.setVariable("DELVAS_networksCount", 0)

+		execution.setVariable("DELVAS_networksDeletedCount", 0)

+	}

+

+	// **************************************************

+	//     Pre or Prepare Request Section

+	// **************************************************

+	/**

+	 * This method is executed during the preProcessRequest task of the <class>CreateServiceInstance.bpmn</class> process.

+	 * @param execution

+	 */

+	public void preProcessRequest (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+		execution.setVariable("prefix",Prefix)

+

+		utils.log("DEBUG", " ***** Inside preProcessRequest DeleteVcpeResCustService Request ***** ", isDebugEnabled)

+

+		try {

+			// initialize flow variables

+			InitializeProcessVariables(execution)

+

+			// check for incoming json message/input

+			String DeleteVcpeResCustServiceRequest = execution.getVariable("bpmnRequest")

+			utils.logAudit(DeleteVcpeResCustServiceRequest)

+			execution.setVariable("DeleteVcpeResCustServiceRequest", DeleteVcpeResCustServiceRequest);

+			println 'DeleteVcpeResCustServiceRequest - ' + DeleteVcpeResCustServiceRequest

+

+			// extract requestId

+			String requestId = execution.getVariable("mso-request-id")

+			execution.setVariable("msoRequestId", requestId)

+

+			String serviceInstanceId = execution.getVariable("serviceInstanceId")

+			if ((serviceInstanceId == null) || (serviceInstanceId.isEmpty())) {

+				String dataErrorMessage = " Element 'serviceInstanceId' is missing. "

+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)

+			}

+			

+			String requestAction = execution.getVariable("requestAction")

+			execution.setVariable("requestAction", requestAction)

+

+			String source = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestInfo.source")

+			if ((source == null) || (source.isEmpty())) {

+				execution.setVariable("source", "VID")

+			} else {

+				execution.setVariable("source", source)

+			}

+

+			// extract globalSubscriberId

+			String globalSubscriberId = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.subscriberInfo.globalSubscriberId")

+

+			// global-customer-id is optional on Delete

+

+			execution.setVariable("globalSubscriberId", globalSubscriberId)

+			execution.setVariable("globalCustomerId", globalSubscriberId)

+			

+			String suppressRollback = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestInfo.suppressRollback")

+			execution.setVariable("disableRollback", suppressRollback)

+			utils.log("DEBUG", "Incoming Suppress/Disable Rollback is: " + suppressRollback, isDebugEnabled)

+			

+			String productFamilyId = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestInfo.productFamilyId")

+			execution.setVariable("productFamilyId", productFamilyId)

+			utils.log("DEBUG", "Incoming productFamilyId is: " + productFamilyId, isDebugEnabled)

+			

+			// extract subscriptionServiceType

+			String subscriptionServiceType = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestParameters.subscriptionServiceType")

+			execution.setVariable("subscriptionServiceType", subscriptionServiceType)

+			utils.log("DEBUG", "Incoming subscriptionServiceType is: " + subscriptionServiceType, isDebugEnabled)

+			

+			// extract cloud configuration

+			String lcpCloudRegionId = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.cloudConfiguration.lcpCloudRegionId")

+			execution.setVariable("lcpCloudRegionId", lcpCloudRegionId)

+			utils.log("DEBUG","lcpCloudRegionId: "+ lcpCloudRegionId, isDebugEnabled)

+			String tenantId = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.cloudConfiguration.tenantId")

+			execution.setVariable("tenantId", tenantId)

+			utils.log("DEBUG","tenantId: "+ tenantId, isDebugEnabled)

+

+			String sdncVersion = "1702"

+			execution.setVariable("sdncVersion", sdncVersion)

+			utils.log("DEBUG","sdncVersion: "+ sdncVersion, isDebugEnabled)

+			

+			//For Completion Handler & Fallout Handler

+			String requestInfo =

+			"""<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">

+					<request-id>${requestId}</request-id>

+					<action>DELETE</action>

+					<source>${source}</source>

+				   </request-info>"""

+

+			execution.setVariable("DELVAS_requestInfo", requestInfo)

+			

+			//Setting for Generic Sub Flows

+			execution.setVariable("GENGS_type", "service-instance")

+			

+			utils.log("DEBUG", " ***** Completed preProcessRequest DeleteVcpeResCustServiceRequest Request ***** ", isDebugEnabled)

+

+		} catch (BpmnError e) {

+			throw e;

+		} catch (Exception ex){

+			String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Unexpected from method preProcessRequest() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	}

+

+	public void sendSyncResponse (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		utils.log("DEBUG", " ***** Inside sendSyncResponse of DeleteVcpeResCustService ***** ", isDebugEnabled)

+

+		try {

+			String serviceInstanceId = execution.getVariable("serviceInstanceId")

+			String requestId = execution.getVariable("mso-request-id")

+

+			// RESTResponse (for API Handler (APIH) Reply Task)

+			String syncResponse ="""{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim()

+

+			utils.log("DEBUG", " sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse, isDebugEnabled)

+			sendWorkflowResponse(execution, 202, syncResponse)

+		} catch (Exception ex) {

+			String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Unexpected from method preProcessRequest() - " + ex.getMessage()^M
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	}

+

+	public void prepareServiceDelete (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+		utils.log("DEBUG", " ***** Inside prepareServiceInstanceDelete() of DeleteVcpeResCustService ***** ", isDebugEnabled)

+		

+		try {

+			

+			String serviceInstanceId = execution.getVariable("serviceInstanceId")

+			

+			// confirm if ServiceInstance was found

+			if ( !execution.getVariable("GENGS_FoundIndicator") )

+			{

+				String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Service Instance was not found in AAI by id: " + serviceInstanceId

+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+			}

+			

+			// get variable within incoming json

+			String DeleteVcpeResCustServiceRequest = execution.getVariable("DeleteVcpeResCustServiceRequest");

+			

+			// get SI extracted by GenericGetService

+			String serviceInstanceAaiRecord = execution.getVariable("GENGS_service");

+			

+			utils.log("DEBUG", "serviceInstanceAaiRecord: "+serviceInstanceAaiRecord, isDebugEnabled)

+			

+			// determine if AR needs to be deleted

+			boolean DELVAS_TunnelXConn = false

+			boolean DELVAS_BRG = false

+			String TXC_allottedResourceId

+			String BRG_allottedResourceId

+			XmlParser xmlParser = new XmlParser()

+			def groovy.util.Node siNode = xmlParser.parseText(serviceInstanceAaiRecord)

+			def groovy.util.Node arList = utils.getChildNode(siNode, 'allotted-resources')

+			if (arList != null) {

+				def groovy.util.NodeList ars = utils.getIdenticalChildren(arList, 'allotted-resource')

+				for (groovy.util.Node ar in ars) {

+					def groovy.util.Node type = utils.getChildNode(ar, 'type')

+					if ((type != null) && (type.text().equals('TunnelXConn'))) {

+						utils.log("DEBUG","TunnelXConn AR found", isDebugEnabled)

+						def groovy.util.Node id = utils.getChildNode(ar, 'id')

+						if (id != null){

+							DELVAS_TunnelXConn = true

+							TXC_allottedResourceId = id

+						}

+					}

+					if ((type != null) && (type.text().equals('BRG'))) {

+						utils.log("DEBUG","FW AR found", isDebugEnabled)

+						def groovy.util.Node id = utils.getChildNode(ar, 'id')

+						if (id != null){

+							DELVAS_BRG = true

+							BRG_allottedResourceId = id

+						}

+					}

+				}

+			}

+			execution.setVariable("DELVAS_TunnelXConn", DELVAS_TunnelXConn)

+			utils.log("DEBUG", "DELVAS_TunnelXConn : " + DELVAS_TunnelXConn, isDebugEnabled)

+			execution.setVariable("TXC_allottedResourceId", TXC_allottedResourceId)

+			utils.log("DEBUG", "TXC_allottedResourceId : " + TXC_allottedResourceId, isDebugEnabled)

+			

+			execution.setVariable("DELVAS_BRG", DELVAS_BRG)

+			utils.log("DEBUG", "DELVAS_BRG : " + DELVAS_BRG, isDebugEnabled)

+			execution.setVariable("BRG_allottedResourceId", BRG_allottedResourceId)

+			utils.log("DEBUG", "BRG_allottedResourceId : " + BRG_allottedResourceId, isDebugEnabled)

+		

+			String relationship = ""

+			try {

+				relationship = networkUtils.getFirstNodeXml(serviceInstanceAaiRecord, "relationship-list")

+			} catch (Exception ex) {

+				//no relationships found

+			}

+			utils.log("DEBUG", " relationship string - " + relationship, isDebugEnabled)

+			

+			int vnfsCount = 0

+			int networksCount = 0

+			

+			if (relationship != null && relationship.length() > 0){

+				relationship = relationship.trim().replace("tag0:","").replace(":tag0","")

+				

+				// Check if Network TableREf is present, then build a List of network policy

+				List relatedVnfIdList = networkUtils.getRelatedVnfIdList(relationship)

+				vnfsCount = relatedVnfIdList.size()

+				execution.setVariable("DELVAS_vnfsCount", vnfsCount)

+				utils.log("DEBUG", " DELVAS_vnfsCount : " + vnfsCount, isDebugEnabled)

+				execution.setVariable("DELVAS_relatedVnfIdList", relatedVnfIdList)

+				

+				// Check if Network TableREf is present, then build a List of network policy

+				List relatedNetworkIdList = networkUtils.getRelatedNetworkIdList(relationship)

+				networksCount = relatedNetworkIdList.size()

+				execution.setVariable("DELVAS_networksCount", networksCount)

+				utils.log("DEBUG", " DELVAS_networksCount : " + networksCount, isDebugEnabled)

+				execution.setVariable("DELVAS_relatedNetworkIdList", relatedNetworkIdList)

+			} else {

+				execution.setVariable("DELVAS_vnfsCount", 0)

+				utils.log("DEBUG", " DELVAS_vnfsCount : " + vnfsCount, isDebugEnabled)

+				execution.setVariable("DELVAS_networksCount", 0)

+				utils.log("DEBUG", " DELVAS_networksCount : " + networksCount, isDebugEnabled)

+			}

+			

+			utils.log("DEBUG", " ***** Completed prepareServiceInstanceDelete() of DeleteVcpeCusRestService ***** ", isDebugEnabled)

+		} catch (BpmnError e){

+			throw e;

+		} catch (Exception ex) {

+			sendSyncError(execution)

+		   String exceptionMessage = "Bpmn error encountered in DeleteVcpeCusRestService flow. prepareServiceInstanceDelete() - " + ex.getMessage()

+		   utils.log("DEBUG", exceptionMessage, isDebugEnabled)

+		   exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	}

+	

+	

+	// *******************************

+	//     

+	// *******************************

+	public void prepareVnfAndModulesDelete (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		try {

+			utils.log("DEBUG", " ***** Inside prepareVnfAndModulesDelete of DeleteServiceInstanceMacro ***** ", isDebugEnabled)

+

+			List vnfList = execution.getVariable("DELVAS_relatedVnfIdList")

+			Integer vnfsDeletedCount = execution.getVariable("DELVAS_vnfsDeletedCount")

+			String vnfModelInfoString = ""

+			String vnfId = ""

+			if (vnfList.size() > 0 ) {

+				vnfId = vnfList.get(vnfsDeletedCount.intValue())

+			}

+							

+			execution.setVariable("vnfId", vnfId)

+			utils.log("DEBUG", "need to delete vnfId:" + vnfId, isDebugEnabled)

+

+			utils.log("DEBUG", " ***** Completed prepareVnfAndModulesDelete of DeleteServiceInstanceMacro ***** ", isDebugEnabled)

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in DeleteServiceInstanceMacro flow. Unexpected Error from method prepareVnfAndModulesDelete() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	 }

+	

+	// *******************************

+	//     Validate Vnf request Section -> increment count

+	// *******************************

+	public void validateVnfDelete (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		try {

+			utils.log("DEBUG", " ***** Inside validateVnfDelete of DeleteVcpeCusRestService ***** ", isDebugEnabled)

+

+			String vnfsDeletedCount = execution.getVariable("DELVAS_vnfsDeletedCount")

+			vnfsDeletedCount++

+			

+			execution.setVariable("DELVAS_vnfsDeletedCount", vnfsDeletedCount)

+			

+			utils.log("DEBUG", " ***** Completed validateVnfDelete of DeleteVcpeCusRestService ***** "+" vnf # "+vnfsDeletedCount, isDebugEnabled)

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in DeleteVcpeCusRestService flow. Unexpected Error from method validateVnfDelete() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	 }

+	

+	// *******************************

+	//     Generate Network request Section

+	// *******************************

+	public void prepareNetworkDelete (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		try {

+			utils.log("DEBUG", " ***** Inside prepareNetworkDelete of DeleteVcpeCusRestService ***** ", isDebugEnabled)

+

+			List networkList = execution.getVariable("DELVAS_relatedNetworkIdList")

+			Integer networksDeletedCount = execution.getVariable("DELVAS_networksDeletedCount")

+

+			String networkId = ""

+			if (networkList.size() > 0) {

+				networkId = networkList.get(networksDeletedCount.intValue())

+			}

+							

+			execution.setVariable("networkId", networkId)

+			utils.log("DEBUG", "need to delete networkId:" + networkId, isDebugEnabled)

+			

+			utils.log("DEBUG", " ***** Completed prepareNetworkDelete of DeleteVcpeCusRestService ***** ", isDebugEnabled)

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = q"Bpmn error encountered in DeleteVcpeCusRestService flow. Unexpected Error from method prepareNetworkDelete() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	 }

+	

+	// *******************************

+	//     Validate Network request Section

+	// *******************************

+	public void validateNetworkDelete (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+

+		try {

+			utils.log("DEBUG", " ***** Inside validateNetworkDelete of DeleteVcpeCusRestService ***** ", isDebugEnabled)

+

+			Integer networksDeletedCount = execution.getVariable("DELVAS_networksDeletedCount")

+			networksDeletedCount++

+			

+			execution.setVariable("DELVAS_networksDeletedCount", networksDeletedCount)

+			

+			utils.log("DEBUG", " ***** Completed validateNetworkDelete of DeleteVcpeCusRestService ***** ", isDebugEnabled)

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in DeleteVcpeCusRestService flow. Unexpected Error from method validateNetworkDelete() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	 }

+

+	

+	// *****************************************

+	//     Prepare Completion request Section

+	// *****************************************

+	public void postProcessResponse (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+		utils.log("DEBUG", " ***** Inside postProcessResponse of DeleteVcpeCusRestService ***** ", isDebugEnabled)

+

+		try {

+			String source = execution.getVariable("source")

+			String requestId = execution.getVariable("msoRequestId")

+

+			String msoCompletionRequest =

+					"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"

+									xmlns:ns="http://org.openecomp/mso/request/types/v1">

+							<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">

+								<request-id>${requestId}</request-id>

+								<action>DELETE</action>

+								<source>${source}</source>

+							   </request-info>

+							<aetgt:status-message>vCPE Res Cust Service Instance has been deleted successfully.</aetgt:status-message>

+							   <aetgt:mso-bpel-name>BPMN Service Instance macro action: DELETE</aetgt:mso-bpel-name>

+						</aetgt:MsoCompletionRequest>"""

+

+			// Format Response

+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)

+

+			utils.logAudit(xmlMsoCompletionRequest)

+			execution.setVariable("DELVAS_Success", true)

+			execution.setVariable("DELVAS_CompleteMsoProcessRequest", xmlMsoCompletionRequest)

+			utils.log("DEBUG", " SUCCESS flow, going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest, isDebugEnabled)

+		} catch (BpmnError e) {

+		throw e;

+

+		} catch (Exception ex) {

+			// try error in method block

+			String exceptionMessage = "Bpmn error encountered in DeleteServiceInstance flow. Unexpected Error from method postProcessResponse() - " + ex.getMessage()

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+		}

+	}

+

+	public void prepareFalloutRequest(Execution execution){

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+		utils.log("DEBUG", " *** STARTED DeleteVcpeCusRestService prepareFalloutRequest Process *** ", isDebugEnabled)

+

+		try {

+			WorkflowException wfex = execution.getVariable("WorkflowException")

+			utils.log("DEBUG", " Incoming Workflow Exception: " + wfex.toString(), isDebugEnabled)

+			String requestInfo = execution.getVariable("DELVAS_requestInfo")

+			utils.log("DEBUG", " Incoming Request Info: " + requestInfo, isDebugEnabled)

+

+			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)

+

+			execution.setVariable("DELVAS_falloutRequest", falloutRequest)

+		} catch (Exception ex) {

+			utils.log("DEBUG", "Error Occured in DeleteVcpeCusRestService prepareFalloutRequest Process " + ex.getMessage(), isDebugEnabled)

+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DeleteVcpeCusRestService prepareFalloutRequest Process")

+		}

+		utils.log("DEBUG", "*** COMPLETED DeleteVcpeCusRestService prepareFalloutRequest Process ***", isDebugEnabled)

+	}

+

+

+	public void sendSyncError (Execution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+		utils.log("DEBUG", " ***** Inside sendSyncError() of DeleteServiceInstanceInfra ***** ", isDebugEnabled)

+

+		try {

+			String errorMessage = ""

+			if (execution.getVariable("WorkflowException") instanceof WorkflowException) {

+				WorkflowException wfe = execution.getVariable("WorkflowException")

+				errorMessage = wfe.getErrorMessage()

+			} else {

+				errorMessage = "Sending Sync Error."

+			}

+

+			String buildworkflowException =

+				"""<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">

+					<aetgt:ErrorMessage>${errorMessage}</aetgt:ErrorMessage>

+					<aetgt:ErrorCode>7000</aetgt:ErrorCode>

+				   </aetgt:WorkflowException>"""

+

+			utils.logAudit(buildworkflowException)

+			sendWorkflowResponse(execution, 500, buildworkflowException)

+		} catch (Exception ex) {

+			utils.log("DEBUG", " Sending Sync Error Activity Failed. " + "\n" + ex.getMessage(), isDebugEnabled)

+		}

+	}

+

+	public void processJavaException(Execution execution){

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

+		execution.setVariable("prefix",Prefix)

+		try{

+			utils.log("DEBUG", "Caught a Java Exception", isDebugEnabled)

+			utils.log("DEBUG", "Started processJavaException Method", isDebugEnabled)

+			utils.log("DEBUG", "Variables List: " + execution.getVariables(), isDebugEnabled)

+			execution.setVariable("DELVAS_unexpectedError", "Caught a Java Lang Exception")  // Adding this line temporarily until this flows error handling gets updated

+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Caught a Java Lang Exception")

+		}catch(BpmnError b){

+			utils.log("ERROR", "Rethrowing MSOWorkflowException", isDebugEnabled)

+			throw b

+		}catch(Exception e){

+			utils.log("DEBUG", "Caught Exception during processJavaException Method: " + e, isDebugEnabled)

+			execution.setVariable("DELVAS_unexpectedError", "Exception in processJavaException method")  // Adding this line temporarily until this flows error handling gets updated

+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception in processJavaException method")

+		}

+		utils.log("DEBUG", "Completed processJavaException Method", isDebugEnabled)

+	}

+

+

+}

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceBRG.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceBRG.groovy
new file mode 100644
index 0000000..528a804
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceBRG.groovy
@@ -0,0 +1,652 @@
+/*
+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts;
+
+import org.openecomp.mso.bpmn.common.scripts.*;
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.core.RollbackData
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+
+/**
+ * This groovy class supports the <class>DoCreateAllottedResourceBRG.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDEbugLogEnabled
+ * @param - disableRollback
+ * @param - failExists  - O
+ * @param - serviceInstanceId
+ * @param - parentServiceInstanceId
+ * @param - allottedReourceId - O
+ * @param - allottedResourceModelInfo
+ * @param - allottedResourceRole
+ * @param - allottedResourceType
+ * @param - brgWanMacAddress
+ * @param - vni 
+ * @param - vgmuxBearerIP 
+ *
+ * Outputs:
+ * @param - rollbackData (localRB->null)
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ * @param - WorkflowException - O
+ * @param - allottedResourceId
+ * @param - allottedResourceName 
+ *
+ */
+public class DoCreateAllottedResourceBRG extends AbstractServiceTaskProcessor{
+
+	String Prefix="DCARBRG_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void preProcessRequest (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
+
+		try {
+			execution.setVariable("prefix", Prefix)
+
+			//Config Inputs
+			String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "URN_mso_workflow_sdncadapter_callback is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			utils.log("DEBUG","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled)
+
+			//Request Inputs
+			if (isBlank(execution.getVariable("serviceInstanceId"))){
+				msg = "Input serviceInstanceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("parentServiceInstanceId"))) {
+				msg = "Input parentServiceInstanceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceModelInfo"))) {
+				msg = "Input allottedResourceModelInfo is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("vni"))) {
+				msg = "Input vni is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("vgmuxBearerIP"))) {
+				msg = "Input vgmuxBearerIP is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("brgWanMacAddress"))) {
+				msg = "Input brgWanMacAddress is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceRole"))) {
+				msg = "Input allottedResourceRole is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceType"))) {
+				msg = "Input allottedResourceType is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	public void getAaiAR (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** getAaiAR ***** ", isDebugEnabled)
+
+		String arType = execution.getVariable("allottedResourceType")
+		String arRole = execution.getVariable("allottedResourceRole")
+
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String orchStatus = arUtils.getAROrchStatus(execution)
+
+		String errorMsg = ""
+
+		if (orchStatus != null) // AR was found
+		{
+			if ("true".equals(execution.getVariable("failExists")))
+			{
+				errorMsg = "Allotted resource " + arType + " with Role " + arRole + " already exists"
+			}
+			else
+			{
+				if ("Active".equals(orchStatus))
+				{
+					execution.setVariable("foundActiveAR", true)
+				}
+				else // blanks included
+				{
+					errorMsg = "Allotted Resource " + arType + " with Role " + arRole + " already exists in an incomplete state -"  +  orchStatus
+				}
+			}
+		}
+		if (!isBlank(errorMsg)) {
+			utils.log("DEBUG", errorMsg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg)
+		}
+		utils.log("DEBUG"," *****Exit getAaiAR *****", isDebugEnabled)
+	}
+
+	public void createAaiAR(Execution execution) {
+
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** createAaiAR ***** ", isDebugEnabled)
+		String msg = ""
+
+		String allottedResourceId = execution.getVariable("allottedResourceId")
+		if (isBlank(allottedResourceId))
+		{
+			allottedResourceId = UUID.randomUUID().toString()
+			execution.setVariable("allottedResourceId", allottedResourceId)
+		}
+		String arUrl = ""
+		try {
+
+			//AAI PUT
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aaiEndpoint = execution.getVariable("URN_aai_endpoint")
+			String siResourceLink= execution.getVariable("PSI_resourceLink")
+
+			String siUri = ""
+			utils.log("DEBUG", "PSI_resourceLink:" + siResourceLink, isDebugEnabled)
+
+			if(!isBlank(siResourceLink)) {
+				utils.log("DEBUG", "Incoming PSI Resource Link is: " + siResourceLink, isDebugEnabled)
+				String[] split = siResourceLink.split("/aai/")
+				siUri = "/aai/" + split[1]
+			}
+			else
+			{
+				msg = "Parent Service Link in AAI is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+			arUrl = "${aaiEndpoint}${siUri}"  + "/allotted-resources/allotted-resource/" + UriUtils.encode(allottedResourceId,"UTF-8")
+			execution.setVariable("aaiARPath", arUrl)
+			utils.log("DEBUG", "GET AllottedResource AAI URL is:\n" + arUrl, isDebugEnabled)
+
+			String namespace = aaiUriUtil.getNamespaceFromUri(execution, arUrl)
+
+			String arType = execution.getVariable("allottedResourceType")
+			String arRole = execution.getVariable("allottedResourceRole")
+			String CSI_resourceLink = execution.getVariable("CSI_resourceLink")
+			String arModelInfo = execution.getVariable("allottedResourceModelInfo")
+			String modelInvariantId = jsonUtil.getJsonValue(arModelInfo, "modelInvariantUuid")
+			String modelVersionId = jsonUtil.getJsonValue(arModelInfo, "modelUuid")
+			String modelCustomizationId = jsonUtil.getJsonValue(arModelInfo, "modelCustomizationUuid")
+
+			if (modelInvariantId == null) {
+				modelInvariantId = ""
+			}
+			if (modelVersionId == null) {
+				modelVersionId = ""
+			}
+			if (modelCustomizationId == null) {
+				modelCustomizationId = ""
+			}
+
+			String payload =
+			"""<allotted-resource xmlns="${namespace}">
+				<id>${allottedResourceId}</id>
+				<description></description>
+				<type>${arType}</type>
+				<role>${arRole}</role>
+				<selflink></selflink>
+				<model-invariant-id>${modelInvariantId}</model-invariant-id>
+				<model-version-id>${modelVersionId}</model-version-id>
+				<model-customization-id>${modelCustomizationId}</model-customization-id>
+				<orchestration-status>PendingCreate</orchestration-status>
+				<operation-status></operation-status>
+				<relationship-list>
+					<relationship>
+               			<related-to>service-instance</related-to>
+               			<related-link>${CSI_resourceLink}</related-link>
+					</relationship>
+				</relationship-list>
+			</allotted-resource>""".trim()
+
+			execution.setVariable("AaiARPayload", payload)
+			utils.log("DEBUG", " payload to create AllottedResource in AAI:" + "\n" + payload, isDebugEnabled)
+
+			APIResponse response = aaiUriUtil.executeAAIPutCall(execution, arUrl, payload)
+			int responseCode = response.getStatusCode()
+			utils.log("DEBUG", "AllottedResource AAI PUT responseCode:" + responseCode, isDebugEnabled)
+
+			String aaiResponse = response.getResponseBodyAsString()
+			aaiResponse = StringEscapeUtils.unescapeXml(aaiResponse)
+			utils.log("DEBUG", "AllottedResource AAI PUT responseStr:" + aaiResponse, isDebugEnabled)
+
+			//200 OK 201 CREATED 202 ACCEPTED
+			if(responseCode == 200 || responseCode == 201 || responseCode == 202 )
+			{
+				utils.log("DEBUG", "AAI PUT AllottedResource received a Good Response", isDebugEnabled)
+			}
+			else{
+				utils.log("DEBUG", "AAI Put AllottedResouce received a Bad Response Code: " + responseCode, isDebugEnabled)
+				exceptionUtil.MapAAIExceptionToWorkflowExceptionGeneric(execution, aaiResponse, responseCode)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex) {
+			msg = "Exception in createAaiAR " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+
+		//start rollback set up
+		RollbackData rollbackData = new RollbackData()
+		def disableRollback = execution.getVariable("disableRollback")
+		rollbackData.put(Prefix, "disableRollback", disableRollback.toString())
+		rollbackData.put(Prefix, "rollbackAAI", "true")
+		rollbackData.put(Prefix, "allottedResourceId", allottedResourceId)
+		rollbackData.put(Prefix, "serviceInstanceId", execution.getVariable("serviceInstanceId"))
+		rollbackData.put(Prefix, "parentServiceInstanceId", execution.getVariable("parentServiceInstanceId"))
+		rollbackData.put(Prefix, "aaiARPath", arUrl)
+		execution.setVariable("rollbackData", rollbackData)
+		utils.log("DEBUG"," *** Exit createAaiAR*** ", isDebugEnabled)
+	}
+
+	public String buildSDNCRequest(Execution execution, String action, String sdncRequestId) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** buildSDNCRequest *****", isDebugEnabled)
+		String sdncReq = null
+
+		try {
+
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId")
+			String callbackUrl = execution.getVariable("sdncCallbackUrl")
+			String requestId = execution.getVariable("msoRequestId")
+
+			String brgWanMacAddress = execution.getVariable("brgWanMacAddress")
+			String vni = execution.getVariable("vni")
+			String vgmuxBearerIP = execution.getVariable("vgmuxBearerIP")
+
+			String arModelInfo = execution.getVariable("allottedResourceModelInfo")
+			String modelInvariantId = jsonUtil.getJsonValue(arModelInfo, "modelInvariantUuid")
+			String modelVersion = jsonUtil.getJsonValue(arModelInfo, "modelVersion")
+			String modelUUId = jsonUtil.getJsonValue(arModelInfo, "modelUuid")
+			String modelCustomizationId = jsonUtil.getJsonValue(arModelInfo, "modelCustomizationUuid")
+			String modelName = jsonUtil.getJsonValue(arModelInfo, "modelName")
+
+			if (modelInvariantId == null) {
+				modelInvariantId = ""
+			}
+			if (modelVersion == null) {
+				modelVersion = ""
+			}
+			if (modelUUId == null) {
+				modelUUId = ""
+			}
+			if (modelName == null) {
+				modelName = ""
+			}
+			if (modelCustomizationId == null) {
+				modelCustomizationId = ""
+			}
+
+			sdncReq =
+			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${sdncRequestId}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${callbackUrl}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${requestId}</request-id>
+						<request-action>CreateBRGInstance</request-action>
+						<source>MSO</source>
+						<notification-url/>
+						<order-number/>
+						<order-version/>
+					</request-information>
+					<service-information>
+						<service-id></service-id>
+						<subscription-service-type></subscription-service-type>
+						<ecomp-model-information></ecomp-model-information>
+						<service-instance-id>${parentServiceInstanceId}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id></global-customer-id>
+					</service-information>
+					<allotted-resource-information>
+						<allotted-resource-id>${allottedResourceId}</allotted-resource-id>    
+						<allotted-resource-type>brg</allotted-resource-type>
+						<parent-service-instance-id>${parentServiceInstanceId}</parent-service-instance-id>   
+						<ecomp-model-information>
+							<model-invariant-uuid>${modelInvariantId}</model-invariant-uuid>
+							<model-uuid>${modelUUId}</model-uuid>
+							<model-customization-uuid>${modelCustomizationId}</model-customization-uuid>
+							<model-version>${modelVersion}</model-version>
+							<model-name>${modelName}</model-name>
+						</ecomp-model-information>
+					</allotted-resource-information>
+					<brg-request-input>
+							<brg-wan-mac-address>${brgWanMacAddress}</brg-wan-mac-address>
+							<vni>${vni}</vni>
+							<vgmux-bearer-ip>${vgmuxBearerIP}</vgmux-bearer-ip>
+					</brg-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			utils.log("DEBUG","sdncRequest:\n" + sdncReq, isDebugEnabled)
+			sdncReq = utils.formatXml(sdncReq)
+
+		} catch(Exception ex) {
+			msg = "Exception in buildSDNCRequest. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit buildSDNCRequest *****", isDebugEnabled)
+		return sdncReq
+	}
+
+	public void preProcessSDNCAssign(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCAssign *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncAssignReq = buildSDNCRequest(execution, "assign", sdncRequestId)
+			execution.setVariable("sdncAssignRequest", sdncAssignReq)
+			utils.logAudit("sdncAssignRequest:  " + sdncAssignReq)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncAssignRollbackReq = sdncAssignReq.replace(">assign<", ">unassign<").replace(">CreateBRGInstance<", ">DeleteBRGInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put(Prefix, "sdncAssignRollbackReq", sdncAssignRollbackReq)
+			execution.setVariable("rollbackData", rollbackData)
+
+			utils.log("DEBUG","sdncAssignRollbackReq:\n" + sdncAssignRollbackReq, isDebugEnabled)
+			utils.log("DEBUG","rollbackData:\n" + rollbackData.toString(), isDebugEnabled)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCAssign. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCAssign *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCCreate(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCCreate *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncCreateReq = buildSDNCRequest(execution, "create", sdncRequestId)
+			execution.setVariable("sdncCreateRequest", sdncCreateReq)
+			utils.logAudit("sdncCreateReq:  " + sdncCreateReq)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncCreateRollbackReq = sdncCreateReq.replace(">create<", ">delete<").replace(">CreateBRGInstance<", ">DeleteBRGInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put(Prefix, "sdncCreateRollbackReq", sdncCreateRollbackReq)
+			execution.setVariable("rollbackData", rollbackData)
+
+			utils.log("DEBUG","sdncCreateRollbackReq:\n" + sdncCreateRollbackReq, isDebugEnabled)
+			utils.log("DEBUG","rollbackData:\n" + rollbackData.toString(), isDebugEnabled)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCCreate. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCCreate *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCActivate(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCActivate *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncActivateReq = buildSDNCRequest(execution, "activate", sdncRequestId)
+			execution.setVariable("sdncActivateRequest", sdncActivateReq)
+			utils.logAudit("sdncActivateReq:  " + sdncActivateReq)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncActivateRollbackReq = sdncActivateReq.replace(">activate<", ">deactivate<").replace(">CreateBRGInstance<", ">DeleteBRGInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put(Prefix, "sdncActivateRollbackReq", sdncActivateRollbackReq)
+			execution.setVariable("rollbackData", rollbackData)
+
+			utils.log("DEBUG","sdncActivateRollbackReq:\n" + sdncActivateRollbackReq, isDebugEnabled)
+			utils.log("DEBUG","rollbackData:\n" + rollbackData.toString(), isDebugEnabled)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCActivate. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCActivate *****", isDebugEnabled)
+	}
+
+	public void validateSDNCResp(Execution execution, String response, String method){
+
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			utils.logAudit("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			utils.logAudit("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				utils.log("DEBUG", "Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response, isDebugLogEnabled)
+
+				if (!"get".equals(method))
+				{
+					def rollbackData = execution.getVariable("rollbackData")
+					rollbackData.put(Prefix, "rollback" +  "SDNC" + method, "true")
+					execution.setVariable("rollbackData", rollbackData)
+				}
+
+			}else{
+				utils.log("DEBUG", "Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
+	}
+
+	public void preProcessSDNCGet(Execution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", "*** preProcessSDNCGet *** ", isDebugLogEnabled)
+		try{
+
+			def callbackUrl = execution.getVariable("sdncCallbackUrl")
+			// serviceOperation (URI for topology GET) will be retrieved from "selflink" from AAI if active AR exists in AAI
+			// or from  "object-path" in SDNC response for assign when AR does not exist in AA
+
+			String serviceOperation = ""
+
+			if (execution.getVariable("foundActiveAR")) {
+				def aaiQueryResponse = execution.getVariable("aaiARGetResponse")
+				serviceOperation = utils.getNodeText1(aaiQueryResponse, "selflink")
+				utils.log("DEBUG", "AR service operation/aaiARSelfLink: " + serviceOperation, isDebugLogEnabled)
+			}
+			else
+			{
+				String response = execution.getVariable("sdncAssignResponse")
+				String data = utils.getNodeXml(response, "response-data")
+				data = data.replaceAll("&lt;", "<")
+				data = data.replaceAll("&gt;", ">")
+				utils.log("DEBUG", "Assign responseData: " + data, isDebugLogEnabled)
+				serviceOperation = utils.getNodeText1(data, "object-path")
+				utils.log("DEBUG", "AR service operation:" + serviceOperation, isDebugLogEnabled)
+			}
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String sdncRequestId = UUID.randomUUID().toString()
+			
+			String tsleep = execution.getVariable("junitSleepMs")
+			
+			//workaround for sdnc replication issue
+			sleep(tsleep == null ? 5000 : tsleep as Long)
+
+			//neeed the same url as used by vfmodules
+			String SDNCGetRequest =
+			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+											xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+											xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+					<sdncadapter:RequestHeader>
+					<sdncadapter:RequestId>${sdncRequestId}</sdncadapter:RequestId>
+					<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
+					<sdncadapter:SvcAction>query</sdncadapter:SvcAction>
+					<sdncadapter:SvcOperation>${serviceOperation}</sdncadapter:SvcOperation>
+					<sdncadapter:CallbackUrl>${callbackUrl}</sdncadapter:CallbackUrl>
+					<sdncadapter:MsoAction>vfmodule</sdncadapter:MsoAction>
+				</sdncadapter:RequestHeader>
+					<sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			execution.setVariable("sdncGetRequest", SDNCGetRequest)
+
+		}catch(Exception e){
+			utils.log("ERROR", "Exception Occurred Processing preProcessSDNCGetRequest. Exception is:\n" + e, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + e.getMessage())
+		}
+		utils.log("DEBUG", "*** Exit preProcessSDNCGet *** ", isDebugLogEnabled)
+	}
+	
+	public void updateAaiAROrchStatus(Execution execution, String status){
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** updateAaiAROrchStatus *** ", isDebugEnabled)
+		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) or create
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
+	}
+	
+	public void generateOutputs(Execution execution)
+	{
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** generateOutputs ***** ", isDebugEnabled)
+		try {
+			String sdncGetResponse = execution.getVariable("enhancedCallbackRequestData") //unescaped
+			utils.log("DEBUG", "resp:" + sdncGetResponse, isDebugEnabled)
+			String arData = utils.getNodeXml(sdncGetResponse, "brg-topology")
+			arData = utils.removeXmlNamespaces(arData)
+		
+			String brga = utils.getNodeXml(arData, "brg-assignments")
+			String ari = utils.getNodeXml(arData, "allotted-resource-identifiers")
+			execution.setVariable("allotedResourceName", utils.getNodeText1(ari, "allotted-resource-name"))
+		} catch (BpmnError e) {
+			utils.log("DEBUG", "BPMN Error in generateOutputs ", isDebugEnabled)
+		} catch(Exception ex) {
+			String msg = "Exception in generateOutputs " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit generateOutputs *** ", isDebugEnabled)
+		
+	}
+
+	public void preProcessRollback (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugEnabled)
+		try {
+
+			Object workflowException = execution.getVariable("WorkflowException");
+
+			if (workflowException instanceof WorkflowException) {
+				utils.log("DEBUG", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled)
+				execution.setVariable("prevWorkflowException", workflowException);
+				//execution.setVariable("WorkflowException", null);
+			}
+		} catch (BpmnError e) {
+			utils.log("DEBUG", "BPMN Error during preProcessRollback", isDebugEnabled)
+		} catch(Exception ex) {
+			String msg = "Exception in preProcessRollback. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugEnabled)
+	}
+
+	public void postProcessRollback (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			Object workflowException = execution.getVariable("prevWorkflowException");
+			if (workflowException instanceof WorkflowException) {
+				utils.log("DEBUG", "Setting prevException to WorkflowException: ", isDebugEnabled)
+				execution.setVariable("WorkflowException", workflowException);
+			}
+			execution.setVariable("rollbackData", null)
+		} catch (BpmnError b) {
+			utils.log("DEBUG", "BPMN Error during postProcessRollback", isDebugEnabled)
+			throw b;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessRollback. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit postProcessRollback *** ", isDebugEnabled)
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy
new file mode 100644
index 0000000..0e0f5c2
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy
@@ -0,0 +1,258 @@
+/*
+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts;
+
+import org.openecomp.mso.bpmn.common.scripts.*;
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+/**
+ * This groovy class supports the <class>CreateAllottedResourceBRGRollback.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDebugLogEnabled
+ * @param - disableRollback - O 
+ * @param - rollbackData
+ *
+ * Outputs:
+ * @param - rollbackError 
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ *
+ */
+public class DoCreateAllottedResourceBRGRollback extends AbstractServiceTaskProcessor{
+
+	String Prefix="DCARBRGRB_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	public void preProcessRequest (Execution execution) {
+		
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
+		execution.setVariable("prefix", Prefix)
+		String rbType = "DCARBRG_"
+		try {
+			
+			def rollbackData = execution.getVariable("rollbackData")
+			utils.log("DEBUG", "RollbackData:" + rollbackData, isDebugEnabled)
+
+			if (rollbackData != null) {
+				if (rollbackData.hasType(rbType)) {
+					
+					execution.setVariable("serviceInstanceId", rollbackData.get(rbType, "serviceInstanceId"))
+					execution.setVariable("parentServiceInstanceId", rollbackData.get(rbType, "parentServiceInstanceId"))
+					execution.setVariable("allottedResourceId", rollbackData.get("SERVICEINSTANCE", "allottedResourceId"))
+					
+					
+					def rollbackAAI = rollbackData.get(rbType, "rollbackAAI")
+					if ("true".equals(rollbackAAI))
+					{
+						execution.setVariable("rollbackAAI",true)
+						execution.setVariable("aaiARPath", rollbackData.get(rbType, "aaiARPath"))
+						
+					}
+					def rollbackSDNC = rollbackData.get(rbType, "rollbackSDNCassign")
+					if ("true".equals(rollbackSDNC))
+					{
+						execution.setVariable("rollbackSDNC", true)
+						execution.setVariable("deactivateSdnc", rollbackData.get(rbType, "rollbackSDNCactivate"))
+						execution.setVariable("deleteSdnc",  rollbackData.get(rbType, "rollbackSDNCcreate"))
+						execution.setVariable("unassignSdnc", rollbackData.get(rbType, "rollbackSDNCassign"))
+						
+						utils.log("DEBUG","sdncDeactivate:\n" + execution.getVariable("deactivateSdnc") , isDebugEnabled)
+						utils.log("DEBUG","sdncDelete:\n" + execution.getVariable("deleteSdnc"), isDebugEnabled)
+						utils.log("DEBUG","sdncUnassign:\n" + execution.getVariable("unassignSdnc"), isDebugEnabled)
+						
+						execution.setVariable("sdncDeactivateRequest", rollbackData.get(rbType, "sdncActivateRollbackReq"))
+						execution.setVariable("sdncDeleteRequest",  rollbackData.get(rbType, "sdncCreateRollbackReq"))
+						execution.setVariable("sdncUnassignRequest", rollbackData.get(rbType, "sdncAssignRollbackReq"))
+					}
+
+					if (execution.getVariable("rollbackAAI") != true && execution.getVariable("rollbackSDNC") != true)
+					{
+						execution.setVariable("skipRollback", true)
+					}
+				}
+				else {
+					execution.setVariable("skipRollback", true)
+				}
+			}
+			else {
+				execution.setVariable("skipRollback", true)
+			}
+			if (execution.getVariable("disableRollback").equals("true" ))
+			{
+				execution.setVariable("skipRollback", true)
+			}
+			
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	// aaiARPath set during query (existing AR)
+	public void updateAaiAROrchStatus(Execution execution, String status){
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = null;
+		utils.log("DEBUG", " *** updateAaiAROrchStatus ***", isDebugEnabled)
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String aaiARPath  = execution.getVariable("aaiARPath")
+		utils.log("DEBUG", " aaiARPath:" + aaiARPath, isDebugEnabled)
+		String ar = null; //need this for getting resourceVersion for delete
+		if (!isBlank(aaiARPath))
+		{
+			ar = arUtils.getARbyLink(execution, aaiARPath, "")
+		}
+		if (isBlank(ar))
+		{
+			msg = "AR not found in AAI at:" + aaiARPath
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+		}
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
+	}
+
+	public void validateSDNCResp(Execution execution, String response, String method){
+
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			utils.logAudit("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			utils.logAudit("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				utils.log("DEBUG", "Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response, isDebugLogEnabled)
+
+			}else{
+
+				utils.log("DEBUG", "Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			if (e.getErrorCode() == 404)
+			{
+				msg = "SDNC rollback " + method + " returned a 404. Proceding with rollback"
+				utils.log("DEBUG", msg, isDebugEnabled)
+			}
+			else {
+				throw e;
+			}
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
+	}
+
+	public void deleteAaiAR(Execution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		try{
+			utils.log("DEBUG", " *** deleteAaiAR *** ", isDebugLogEnabled)
+			AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+			String ar = null //need to get resource-version 
+			String arLink = execution.getVariable("aaiARPath")
+			if (!isBlank(arLink))
+			{
+				ar = arUtils.getARbyLink(execution, arLink, "")
+			}
+			arUtils.deleteAR(execution, arLink + '?resource-version=' + UriUtils.encode(execution.getVariable("aaiARResourceVersion"),"UTF-8"))
+		} catch (BpmnError e) {
+			throw e;
+		}catch(Exception ex){
+			utils.log("ERROR", "Exception Occurred Processing preProcessSDNCGetRequest. Exception is:\n" + ex, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage())
+		}
+		utils.log("DEBUG", " *** Exit deleteAaiAR *** ", isDebugLogEnabled)
+	}
+	
+	public void postProcessRequest(Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** postProcessRequest ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			execution.setVariable("rollbackData", null)
+			boolean skipRollback = execution.getVariable("skipRollback")
+			if (skipRollback != true)
+			{
+				execution.setVariable("rolledBack", true)
+				utils.log("DEBUG","rolledBack", isDebugEnabled)
+			}
+			utils.log("DEBUG","*** Exit postProcessRequest ***", isDebugEnabled)
+
+		} catch (BpmnError e) {
+			msg = "Bpmn Exception in  postProcessRequest. "
+			utils.log("DEBUG", msg, isDebugEnabled)
+		} catch (Exception ex) {
+			msg = "Exception in postProcessRequest. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+
+	}
+	
+	public void processRollbackException(Execution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** processRollbackException ***** ", isDebugEnabled)
+		try{
+			utils.log("DEBUG", "Caught an Exception in DoCreateAllottedResourceRollback", isDebugEnabled)
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rolledBack", false)
+			execution.setVariable("rollbackError", "Caught exception in AllottedResource Create Rollback")
+			execution.setVariable("WorkflowException", null)
+
+		}catch(BpmnError b){
+			utils.log("DEBUG", "BPMN Error during processRollbackExceptions Method: ", isDebugEnabled)
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception during processRollbackExceptions Method: " + e.getMessage(), isDebugEnabled)
+		}
+
+		utils.log("DEBUG", " Exit processRollbackException", isDebugEnabled)
+	}
+
+	public void processRollbackJavaException(Execution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** processRollbackJavaException ***** ", isDebugEnabled)
+		try{
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rolledBack", false)
+			execution.setVariable("rollbackError", "Caught Java exception in AllottedResource Create Rollback")
+			utils.log("DEBUG", "Caught Exception in processRollbackJavaException", isDebugEnabled)
+
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception in processRollbackJavaException " + e.getMessage(), isDebugEnabled)
+		}
+		utils.log("DEBUG", "***** Exit processRollbackJavaException *****", isDebugEnabled)
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceTXC.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceTXC.groovy
new file mode 100644
index 0000000..28f3d6a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceTXC.groovy
@@ -0,0 +1,643 @@
+/*
+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts;
+
+import org.openecomp.mso.bpmn.common.scripts.*;
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.core.RollbackData
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+
+/**
+ * This groovy class supports the <class>DoCreateAllottedResourceTXC.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDEbugLogEnabled
+ * @param - disableRollback
+ * @param - failExists  - O
+ * @param - serviceInstanceId
+ * @param - parentServiceInstanceId
+ * @param - allottedReourceId - O
+ * @param - allottedResourceModelInfo
+ * @param - allottedResourceRole
+ * @param - allottedResourceType
+ * @param - brgWanMacAddress
+ *
+ * Outputs:
+ * @param - rollbackData (localRB->null)
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ * @param - WorkflowException - O
+ * @param - allottedResourceId
+ * @param - allottedResourceName 
+ * @param - vni 
+ * @param - vgmuxBearerIP 
+ * @param - vgmuxLanIP 
+ *
+ */
+public class DoCreateAllottedResourceTXC extends AbstractServiceTaskProcessor{
+
+	String Prefix="DCARTXC_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void preProcessRequest (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
+
+		try {
+			execution.setVariable("prefix", Prefix)
+
+			//Config Inputs
+			String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "URN_mso_workflow_sdncadapter_callback is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			utils.log("DEBUG","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled)
+
+			//Request Inputs
+			if (isBlank(execution.getVariable("serviceInstanceId"))){
+				msg = "Input serviceInstanceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("parentServiceInstanceId"))) {
+				msg = "Input parentServiceInstanceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceModelInfo"))) {
+				msg = "Input allottedResourceModelInfo is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("brgWanMacAddress"))) {
+				msg = "Input brgWanMacAddress is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceRole"))) {
+				msg = "Input allottedResourceRole is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceType"))) {
+				msg = "Input allottedResourceType is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	public void getAaiAR (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** getAaiAR ***** ", isDebugEnabled)
+
+		String arType = execution.getVariable("allottedResourceType")
+		String arRole = execution.getVariable("allottedResourceRole")
+
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String orchStatus = arUtils.getAROrchStatus(execution)
+
+		String errorMsg = ""
+
+		if (orchStatus != null) // AR was found
+		{
+			if ("true".equals(execution.getVariable("failExists")))
+			{
+				errorMsg = "Allotted resource " + arType + " with Role " + arRole + " already exists"
+			}
+			else
+			{
+				if ("Active".equals(orchStatus))
+				{
+					execution.setVariable("foundActiveAR", true)
+				}
+				else // blanks included
+				{
+					errorMsg = "Allotted Resource " + arType + " with Role " + arRole + " already exists in an incomplete state -"  +  orchStatus
+				}
+			}
+		}
+		if (!isBlank(errorMsg)) {
+			utils.log("DEBUG", errorMsg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg)
+		}
+		utils.log("DEBUG"," *****Exit getAaiAR *****", isDebugEnabled)
+	}
+
+	public void createAaiAR(Execution execution) {
+
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** createAaiAR ***** ", isDebugEnabled)
+		String msg = ""
+
+		String allottedResourceId = execution.getVariable("allottedResourceId")
+		if (isBlank(allottedResourceId))
+		{
+			allottedResourceId = UUID.randomUUID().toString()
+			execution.setVariable("allottedResourceId", allottedResourceId)
+		}
+		String arUrl = ""
+		try {
+
+			//AAI PUT
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aaiEndpoint = execution.getVariable("URN_aai_endpoint")
+			String siResourceLink= execution.getVariable("PSI_resourceLink")
+
+			String siUri = ""
+			utils.log("DEBUG", "PSI_resourceLink:" + siResourceLink, isDebugEnabled)
+
+			if(!isBlank(siResourceLink)) {
+				utils.log("DEBUG", "Incoming PSI Resource Link is: " + siResourceLink, isDebugEnabled)
+				String[] split = siResourceLink.split("/aai/")
+				siUri = "/aai/" + split[1]
+			}
+			else
+			{
+				msg = "Parent Service Link in AAI is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+			arUrl = "${aaiEndpoint}${siUri}"  + "/allotted-resources/allotted-resource/" + UriUtils.encode(allottedResourceId,"UTF-8")
+			execution.setVariable("aaiARPath", arUrl)
+			utils.log("DEBUG", "GET AllottedResource AAI URL is:\n" + arUrl, isDebugEnabled)
+
+			String namespace = aaiUriUtil.getNamespaceFromUri(execution, arUrl)
+
+			String arType = execution.getVariable("allottedResourceType")
+			String arRole = execution.getVariable("allottedResourceRole")
+			String CSI_resourceLink = execution.getVariable("CSI_resourceLink")
+			String arModelInfo = execution.getVariable("allottedResourceModelInfo")
+			String modelInvariantId = jsonUtil.getJsonValue(arModelInfo, "modelInvariantUuid")
+			String modelVersionId = jsonUtil.getJsonValue(arModelInfo, "modelUuid")
+			String modelCustomizationId = jsonUtil.getJsonValue(arModelInfo, "modelCustomizationUuid")
+
+			if (modelInvariantId == null) {
+				modelInvariantId = ""
+			}
+			if (modelVersionId == null) {
+				modelVersionId = ""
+			}
+			if (modelCustomizationId == null) {
+				modelCustomizationId = ""
+			}
+
+			String payload =
+			"""<allotted-resource xmlns="${namespace}">
+				<id>${allottedResourceId}</id>
+				<description></description>
+				<type>${arType}</type>
+				<role>${arRole}</role>
+				<selflink></selflink>
+				<model-invariant-id>${modelInvariantId}</model-invariant-id>
+				<model-version-id>${modelVersionId}</model-version-id>
+				<model-customization-id>${modelCustomizationId}</model-customization-id>
+				<orchestration-status>PendingCreate</orchestration-status>
+				<operation-status></operation-status>
+				<relationship-list>
+					<relationship>
+               			<related-to>service-instance</related-to>
+               			<related-link>${CSI_resourceLink}</related-link>
+					</relationship>
+				</relationship-list>
+			</allotted-resource>""".trim()
+
+			execution.setVariable("AaiARPayload", payload)
+			utils.log("DEBUG", " payload to create AllottedResource in AAI:" + "\n" + payload, isDebugEnabled)
+
+			APIResponse response = aaiUriUtil.executeAAIPutCall(execution, arUrl, payload)
+			int responseCode = response.getStatusCode()
+			utils.log("DEBUG", "AllottedResource AAI PUT responseCode:" + responseCode, isDebugEnabled)
+
+			String aaiResponse = response.getResponseBodyAsString()
+			aaiResponse = StringEscapeUtils.unescapeXml(aaiResponse)
+			utils.log("DEBUG", "AllottedResource AAI PUT responseStr:" + aaiResponse, isDebugEnabled)
+
+			//200 OK 201 CREATED 202 ACCEPTED
+			if(responseCode == 200 || responseCode == 201 || responseCode == 202 )
+			{
+				utils.log("DEBUG", "AAI PUT AllottedResource received a Good Response", isDebugEnabled)
+			}
+			else{
+				utils.log("DEBUG", "AAI Put AllottedResouce received a Bad Response Code: " + responseCode, isDebugEnabled)
+				exceptionUtil.MapAAIExceptionToWorkflowExceptionGeneric(execution, aaiResponse, responseCode)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex) {
+			msg = "Exception in createAaiAR " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+
+		//start rollback set up
+		RollbackData rollbackData = new RollbackData()
+		def disableRollback = execution.getVariable("disableRollback")
+		rollbackData.put(Prefix, "disableRollback", disableRollback.toString())
+		rollbackData.put(Prefix, "rollbackAAI", "true")
+		rollbackData.put(Prefix, "allottedResourceId", allottedResourceId)
+		rollbackData.put(Prefix, "serviceInstanceId", execution.getVariable("serviceInstanceId"))
+		rollbackData.put(Prefix, "parentServiceInstanceId", execution.getVariable("parentServiceInstanceId"))
+		rollbackData.put(Prefix, "aaiARPath", arUrl)
+		execution.setVariable("rollbackData", rollbackData)
+		utils.log("DEBUG"," *** Exit createAaiAR*** ", isDebugEnabled)
+	}
+
+	public String buildSDNCRequest(Execution execution, String action, String sdncRequestId) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** buildSDNCRequest *****", isDebugEnabled)
+		String sdncReq = null
+
+		try {
+
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId")
+			String serviceChainServiceInstanceId = execution.getVariable("serviceChainServiceInstanceId")
+			String callbackUrl = execution.getVariable("sdncCallbackUrl")
+			String requestId = execution.getVariable("msoRequestId")
+
+			String brgWanMacAddress = execution.getVariable("brgWanMacAddress")
+
+			String arModelInfo = execution.getVariable("allottedResourceModelInfo")
+			String modelInvariantId = jsonUtil.getJsonValue(arModelInfo, "modelInvariantUuid")
+			String modelVersion = jsonUtil.getJsonValue(arModelInfo, "modelVersion")
+			String modelUUId = jsonUtil.getJsonValue(arModelInfo, "modelUuid")
+			String modelCustomizationId = jsonUtil.getJsonValue(arModelInfo, "modelCustomizationUuid")
+			String modelName = jsonUtil.getJsonValue(arModelInfo, "modelName")
+
+			if (modelInvariantId == null) {
+				modelInvariantId = ""
+			}
+			if (modelVersion == null) {
+				modelVersion = ""
+			}
+			if (modelUUId == null) {
+				modelUUId = ""
+			}
+			if (modelName == null) {
+				modelName = ""
+			}
+			if (modelCustomizationId == null) {
+				modelCustomizationId = ""
+			}
+
+			sdncReq =
+			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${sdncRequestId}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${callbackUrl}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${requestId}</request-id>
+						<request-action>CreateTunnelXConnInstance</request-action>
+						<source>MSO</source>
+						<notification-url/>
+						<order-number/>
+						<order-version/>
+					</request-information>
+					<service-information>
+						<service-id></service-id>
+						<subscription-service-type></subscription-service-type>
+						<ecomp-model-information></ecomp-model-information>
+						<service-instance-id>${parentServiceInstanceId}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id></global-customer-id>
+					</service-information>
+					<allotted-resource-information>
+						<allotted-resource-id>${allottedResourceId}</allotted-resource-id>    
+						<allotted-resource-type>tunnelxconn</allotted-resource-type>
+						<parent-service-instance-id>${parentServiceInstanceId}</parent-service-instance-id>   
+						<ecomp-model-information>
+							<model-invariant-uuid>${modelInvariantId}</model-invariant-uuid>
+							<model-uuid>${modelUUId}</model-uuid>
+							<model-customization-uuid>${modelCustomizationId}</model-customization-uuid>
+							<model-version>${modelVersion}</model-version>
+							<model-name>${modelName}</model-name>
+						</ecomp-model-information>
+					</allotted-resource-information>
+					<tunnelxconn-request-input>
+							<brg-wan-mac-address>${brgWanMacAddress}</brg-wan-mac-address>
+					</tunnelxconn-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			utils.log("DEBUG","sdncRequest:\n" + sdncReq, isDebugEnabled)
+			sdncReq = utils.formatXml(sdncReq)
+
+		} catch(Exception ex) {
+			msg = "Exception in buildSDNCRequest. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit buildSDNCRequest *****", isDebugEnabled)
+		return sdncReq
+	}
+
+	public void preProcessSDNCAssign(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCAssign *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncAssignReq = buildSDNCRequest(execution, "assign", sdncRequestId)
+			execution.setVariable("sdncAssignRequest", sdncAssignReq)
+			utils.logAudit("sdncAssignRequest:  " + sdncAssignReq)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncAssignRollbackReq = sdncAssignReq.replace(">assign<", ">unassign<").replace(">CreateTunnelXConnInstance<", ">DeleteTunnelXConnInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put(Prefix, "sdncAssignRollbackReq", sdncAssignRollbackReq)
+			execution.setVariable("rollbackData", rollbackData)
+
+			utils.log("DEBUG","sdncAssignRollbackReq:\n" + sdncAssignRollbackReq, isDebugEnabled)
+			utils.log("DEBUG","rollbackData:\n" + rollbackData.toString(), isDebugEnabled)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCAssign. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCAssign *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCCreate(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCCreate *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncCreateReq = buildSDNCRequest(execution, "create", sdncRequestId)
+			execution.setVariable("sdncCreateRequest", sdncCreateReq)
+			utils.logAudit("sdncCreateReq:  " + sdncCreateReq)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncCreateRollbackReq = sdncCreateReq.replace(">create<", ">delete<").replace(">CreateTunnelXConnInstance<", ">DeleteTunnelXConnInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put(Prefix, "sdncCreateRollbackReq", sdncCreateRollbackReq)
+			execution.setVariable("rollbackData", rollbackData)
+
+			utils.log("DEBUG","sdncCreateRollbackReq:\n" + sdncCreateRollbackReq, isDebugEnabled)
+			utils.log("DEBUG","rollbackData:\n" + rollbackData.toString(), isDebugEnabled)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCCreate. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCCreate *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCActivate(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCActivate *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncActivateReq = buildSDNCRequest(execution, "activate", sdncRequestId)
+			execution.setVariable("sdncActivateRequest", sdncActivateReq)
+			utils.logAudit("sdncActivateReq:  " + sdncActivateReq)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncActivateRollbackReq = sdncActivateReq.replace(">activate<", ">deactivate<").replace(">CreateTunnelXConnInstance<", ">DeleteTunnelXConnInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put(Prefix, "sdncActivateRollbackReq", sdncActivateRollbackReq)
+			execution.setVariable("rollbackData", rollbackData)
+
+			utils.log("DEBUG","sdncActivateRollbackReq:\n" + sdncActivateRollbackReq, isDebugEnabled)
+			utils.log("DEBUG","rollbackData:\n" + rollbackData.toString(), isDebugEnabled)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCActivate. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCActivate *****", isDebugEnabled)
+	}
+
+	public void validateSDNCResp(Execution execution, String response, String method){
+
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			utils.logAudit("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			utils.logAudit("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				utils.log("DEBUG", "Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response, isDebugLogEnabled)
+
+				if (!"get".equals(method))
+				{
+					def rollbackData = execution.getVariable("rollbackData")
+					rollbackData.put(Prefix, "rollback" +  "SDNC" + method, "true")
+					execution.setVariable("rollbackData", rollbackData)
+				}
+
+			}else{
+				utils.log("DEBUG", "Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
+	}
+
+	public void preProcessSDNCGet(Execution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", "*** preProcessSDNCGet *** ", isDebugLogEnabled)
+		try{
+
+			def callbackUrl = execution.getVariable("sdncCallbackUrl")
+			// serviceOperation (URI for topology GET) will be retrieved from "selflink" from AAI if active AR exists in AAI
+			// or from  "object-path" in SDNC response for assign when AR does not exist in AA
+
+			String serviceOperation = ""
+
+			if (execution.getVariable("foundActiveAR")) {
+				def aaiQueryResponse = execution.getVariable("aaiARGetResponse")
+				serviceOperation = utils.getNodeText1(aaiQueryResponse, "selflink")
+				utils.log("DEBUG", "AR service operation/aaiARSelfLink: " + serviceOperation, isDebugLogEnabled)
+			}
+			else
+			{
+				String response = execution.getVariable("sdncAssignResponse")
+				String data = utils.getNodeXml(response, "response-data")
+				data = data.replaceAll("&lt;", "<")
+				data = data.replaceAll("&gt;", ">")
+				utils.log("DEBUG", "Assign responseData: " + data, isDebugLogEnabled)
+				serviceOperation = utils.getNodeText1(data, "object-path")
+				utils.log("DEBUG", "AR service operation:" + serviceOperation, isDebugLogEnabled)
+			}
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String sdncRequestId = UUID.randomUUID().toString()
+			
+			String tsleep = execution.getVariable("junitSleepMs")
+			
+			//workaround for sdnc replication issue
+			sleep(tsleep == null ? 5000 : tsleep as Long)
+
+			//neeed the same url as used by vfmodules
+			String SDNCGetRequest =
+			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+											xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+											xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+					<sdncadapter:RequestHeader>
+					<sdncadapter:RequestId>${sdncRequestId}</sdncadapter:RequestId>
+					<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
+					<sdncadapter:SvcAction>query</sdncadapter:SvcAction>
+					<sdncadapter:SvcOperation>${serviceOperation}</sdncadapter:SvcOperation>
+					<sdncadapter:CallbackUrl>${callbackUrl}</sdncadapter:CallbackUrl>
+					<sdncadapter:MsoAction>vfmodule</sdncadapter:MsoAction>
+				</sdncadapter:RequestHeader>
+					<sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			execution.setVariable("sdncGetRequest", SDNCGetRequest)
+
+		}catch(Exception e){
+			utils.log("ERROR", "Exception Occurred Processing preProcessSDNCGetRequest. Exception is:\n" + e, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + e.getMessage())
+		}
+		utils.log("DEBUG", "*** Exit preProcessSDNCGet *** ", isDebugLogEnabled)
+	}
+	
+	public void updateAaiAROrchStatus(Execution execution, String status){
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** updateAaiAROrchStatus *** ", isDebugEnabled)
+		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) or create
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
+	}
+	
+	public void generateOutputs(Execution execution)
+	{
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** generateOutputs ***** ", isDebugEnabled)
+		try {
+			String sdncGetResponse = execution.getVariable("enhancedCallbackRequestData") //unescaped
+			utils.log("DEBUG", "resp:" + sdncGetResponse, isDebugEnabled)
+			String arData = utils.getNodeXml(sdncGetResponse, "tunnelxconn-topology")
+			arData = utils.removeXmlNamespaces(arData)
+		
+			String txca = utils.getNodeXml(arData, "tunnelxconn-assignments")
+			String ari = utils.getNodeXml(arData, "allotted-resource-identifiers")
+			execution.setVariable("allotedResourceName", utils.getNodeText1(ari, "allotted-resource-name"))
+			execution.setVariable("vni", utils.getNodeText1(ari, "vni"))
+			execution.setVariable("vgmuxBearerIp", utils.getNodeText1(ari, "vgmux_bearer_ip"))
+			execution.setVariable("vgmuxLanIP", utils.getNodeText1(ari, "vgmux_lan_ip"))
+		} catch (BpmnError e) {
+			utils.log("DEBUG", "BPMN Error in generateOutputs ", isDebugEnabled)
+		} catch(Exception ex) {
+			String msg = "Exception in generateOutputs " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit generateOutputs *** ", isDebugEnabled)
+		
+	}
+
+	public void preProcessRollback (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugEnabled)
+		try {
+
+			Object workflowException = execution.getVariable("WorkflowException");
+
+			if (workflowException instanceof WorkflowException) {
+				utils.log("DEBUG", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled)
+				execution.setVariable("prevWorkflowException", workflowException);
+				//execution.setVariable("WorkflowException", null);
+			}
+		} catch (BpmnError e) {
+			utils.log("DEBUG", "BPMN Error during preProcessRollback", isDebugEnabled)
+		} catch(Exception ex) {
+			String msg = "Exception in preProcessRollback. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugEnabled)
+	}
+
+	public void postProcessRollback (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			Object workflowException = execution.getVariable("prevWorkflowException");
+			if (workflowException instanceof WorkflowException) {
+				utils.log("DEBUG", "Setting prevException to WorkflowException: ", isDebugEnabled)
+				execution.setVariable("WorkflowException", workflowException);
+			}
+			execution.setVariable("rollbackData", null)
+		} catch (BpmnError b) {
+			utils.log("DEBUG", "BPMN Error during postProcessRollback", isDebugEnabled)
+			throw b;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessRollback. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit postProcessRollback *** ", isDebugEnabled)
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy
new file mode 100644
index 0000000..142ddde
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy
@@ -0,0 +1,258 @@
+/*
+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts;
+
+import org.openecomp.mso.bpmn.common.scripts.*;
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+/**
+ * This groovy class supports the <class>CreateAllottedResourceTXCRollback.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDebugLogEnabled
+ * @param - disableRollback - O 
+ * @param - rollbackData
+ *
+ * Outputs:
+ * @param - rollbackError 
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ *
+ */
+public class DoCreateAllottedResourceTXCRollback extends AbstractServiceTaskProcessor{
+
+	String Prefix="DCARTXCRB_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	public void preProcessRequest (Execution execution) {
+		
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
+		execution.setVariable("prefix", Prefix)
+		String rbType = "DCARTXC_"
+		try {
+			
+			def rollbackData = execution.getVariable("rollbackData")
+			utils.log("DEBUG", "RollbackData:" + rollbackData, isDebugEnabled)
+
+			if (rollbackData != null) {
+				if (rollbackData.hasType(rbType)) {
+					
+					execution.setVariable("serviceInstanceId", rollbackData.get(rbType, "serviceInstanceId"))
+					execution.setVariable("parentServiceInstanceId", rollbackData.get(rbType, "parentServiceInstanceId"))
+					execution.setVariable("allottedResourceId", rollbackData.get("SERVICEINSTANCE", "allottedResourceId"))
+					
+					
+					def rollbackAAI = rollbackData.get(rbType, "rollbackAAI")
+					if ("true".equals(rollbackAAI))
+					{
+						execution.setVariable("rollbackAAI",true)
+						execution.setVariable("aaiARPath", rollbackData.get(rbType, "aaiARPath"))
+						
+					}
+					def rollbackSDNC = rollbackData.get(rbType, "rollbackSDNCassign")
+					if ("true".equals(rollbackSDNC))
+					{
+						execution.setVariable("rollbackSDNC", true)
+						execution.setVariable("deactivateSdnc", rollbackData.get(rbType, "rollbackSDNCactivate"))
+						execution.setVariable("deleteSdnc",  rollbackData.get(rbType, "rollbackSDNCcreate"))
+						execution.setVariable("unassignSdnc", rollbackData.get(rbType, "rollbackSDNCassign"))
+						
+						utils.log("DEBUG","sdncDeactivate:\n" + execution.getVariable("deactivateSdnc") , isDebugEnabled)
+						utils.log("DEBUG","sdncDelete:\n" + execution.getVariable("deleteSdnc"), isDebugEnabled)
+						utils.log("DEBUG","sdncUnassign:\n" + execution.getVariable("unassignSdnc"), isDebugEnabled)
+						
+						execution.setVariable("sdncDeactivateRequest", rollbackData.get(rbType, "sdncActivateRollbackReq"))
+						execution.setVariable("sdncDeleteRequest",  rollbackData.get(rbType, "sdncCreateRollbackReq"))
+						execution.setVariable("sdncUnassignRequest", rollbackData.get(rbType, "sdncAssignRollbackReq"))
+					}
+
+					if (execution.getVariable("rollbackAAI") != true && execution.getVariable("rollbackSDNC") != true)
+					{
+						execution.setVariable("skipRollback", true)
+					}
+				}
+				else {
+					execution.setVariable("skipRollback", true)
+				}
+			}
+			else {
+				execution.setVariable("skipRollback", true)
+			}
+			if (execution.getVariable("disableRollback").equals("true" ))
+			{
+				execution.setVariable("skipRollback", true)
+			}
+			
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	// aaiARPath set during query (existing AR)
+	public void updateAaiAROrchStatus(Execution execution, String status){
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = null;
+		utils.log("DEBUG", " *** updateAaiAROrchStatus ***", isDebugEnabled)
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String aaiARPath  = execution.getVariable("aaiARPath")
+		utils.log("DEBUG", " aaiARPath:" + aaiARPath, isDebugEnabled)
+		String ar = null; //need this for getting resourceVersion for delete
+		if (!isBlank(aaiARPath))
+		{
+			ar = arUtils.getARbyLink(execution, aaiARPath, "")
+		}
+		if (isBlank(ar))
+		{
+			msg = "AR not found in AAI at:" + aaiARPath
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+		}
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
+	}
+
+	public void validateSDNCResp(Execution execution, String response, String method){
+
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			utils.logAudit("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			utils.logAudit("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				utils.log("DEBUG", "Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response, isDebugLogEnabled)
+
+			}else{
+
+				utils.log("DEBUG", "Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			if (e.getErrorCode() == 404)
+			{
+				msg = "SDNC rollback " + method + " returned a 404. Proceding with rollback"
+				utils.log("DEBUG", msg, isDebugEnabled)
+			}
+			else {
+				throw e;
+			}
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
+	}
+
+	public void deleteAaiAR(Execution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		try{
+			utils.log("DEBUG", " *** deleteAaiAR *** ", isDebugLogEnabled)
+			AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+			String ar = null //need to get resource-version 
+			String arLink = execution.getVariable("aaiARPath")
+			if (!isBlank(arLink))
+			{
+				ar = arUtils.getARbyLink(execution, arLink, "")
+			}
+			arUtils.deleteAR(execution, arLink + '?resource-version=' + UriUtils.encode(execution.getVariable("aaiARResourceVersion"),"UTF-8"))
+		} catch (BpmnError e) {
+			throw e;
+		}catch(Exception ex){
+			utils.log("ERROR", "Exception Occurred Processing preProcessSDNCGetRequest. Exception is:\n" + ex, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage())
+		}
+		utils.log("DEBUG", " *** Exit deleteAaiAR *** ", isDebugLogEnabled)
+	}
+	
+	public void postProcessRequest(Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** postProcessRequest ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			execution.setVariable("rollbackData", null)
+			boolean skipRollback = execution.getVariable("skipRollback")
+			if (skipRollback != true)
+			{
+				execution.setVariable("rolledBack", true)
+				utils.log("DEBUG","rolledBack", isDebugEnabled)
+			}
+			utils.log("DEBUG","*** Exit postProcessRequest ***", isDebugEnabled)
+
+		} catch (BpmnError e) {
+			msg = "Bpmn Exception in  postProcessRequest. "
+			utils.log("DEBUG", msg, isDebugEnabled)
+		} catch (Exception ex) {
+			msg = "Exception in postProcessRequest. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+
+	}
+	
+	public void processRollbackException(Execution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** processRollbackException ***** ", isDebugEnabled)
+		try{
+			utils.log("DEBUG", "Caught an Exception in DoCreateAllottedResourceRollback", isDebugEnabled)
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rolledBack", false)
+			execution.setVariable("rollbackError", "Caught exception in AllottedResource Create Rollback")
+			execution.setVariable("WorkflowException", null)
+
+		}catch(BpmnError b){
+			utils.log("DEBUG", "BPMN Error during processRollbackExceptions Method: ", isDebugEnabled)
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception during processRollbackExceptions Method: " + e.getMessage(), isDebugEnabled)
+		}
+
+		utils.log("DEBUG", " Exit processRollbackException", isDebugEnabled)
+	}
+
+	public void processRollbackJavaException(Execution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** processRollbackJavaException ***** ", isDebugEnabled)
+		try{
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rolledBack", false)
+			execution.setVariable("rollbackError", "Caught Java exception in AllottedResource Create Rollback")
+			utils.log("DEBUG", "Caught Exception in processRollbackJavaException", isDebugEnabled)
+
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception in processRollbackJavaException " + e.getMessage(), isDebugEnabled)
+		}
+		utils.log("DEBUG", "***** Exit processRollbackJavaException *****", isDebugEnabled)
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy
new file mode 100644
index 0000000..9dbca86
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy
@@ -0,0 +1,349 @@
+/*
+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts;
+
+import org.openecomp.mso.bpmn.common.scripts.*;
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+/**
+ * This groovy class supports the <class>DoDeleteAllottedResourceBRG.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDebugLogEnabled
+ * @param - disableRollback - O ignored
+ * @param - failNotfound  - O 
+ * @param - serviceInstanceId
+ * @param - allottedResourceId 
+ *
+ * Outputs:
+ * @param - rollbackData - N/A
+ * @param - rolledBack - true if no deletions performed
+ * @param - WorkflowException - O
+ * @param - wasDeleted - O (ie not silentSuccess)
+ *
+ */
+public class DoDeleteAllottedResourceBRG extends AbstractServiceTaskProcessor{
+
+	String Prefix="DDARBRG_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	public void preProcessRequest (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
+
+		try {
+			execution.setVariable("prefix", Prefix)
+
+			//Config Inputs
+			String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "URN_mso_workflow_sdncadapter_callback is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			utils.log("DEBUG","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled)
+
+			//Request Inputs
+			if (isBlank(execution.getVariable("serviceInstanceId"))){
+				msg = "Input serviceInstanceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceId"))){
+				msg = "Input allottedResourceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	public void getAaiAR (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** getAaiAR ***** ", isDebugEnabled)
+
+		String allottedResourceId = execution.getVariable("allottedResourceId")
+
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String ar = arUtils.getARbyId(execution, allottedResourceId)
+
+		String errorMsg = ""
+		if (isBlank(ar)) // AR was !found
+		{
+			errorMsg = "Allotted resource not found in AAI with AllottedResourceId:" + allottedResourceId
+		}
+		else
+		{
+			String aaiARPath = execution.getVariable("aaiARPath")
+			String parentServiceInstanceId = arUtils.getPSIFmARLink(execution, aaiARPath)
+			execution.setVariable("parentServiceInstanceId", parentServiceInstanceId)
+		}
+		if (!isBlank(errorMsg)) {
+			utils.log("DEBUG", errorMsg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg)
+		}
+		utils.log("DEBUG"," ***** getAaiAR *****",  isDebugEnabled)
+
+	}
+
+	// aaiARPath set during query (existing AR)
+	public void updateAaiAROrchStatus(Execution execution, String status){
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** updateAaiAROrchStatus *** ", isDebugEnabled)
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) 
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
+	}
+
+	public String buildSDNCRequest(Execution execution, String action, String sdncRequestId) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** buildSDNCRequest *****", isDebugEnabled)
+		String sdncReq = null
+
+		try {
+
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId")
+
+			String callbackUrl = execution.getVariable("sdncCallbackUrl")
+			String requestId = execution.getVariable("msoRequestId")
+
+			String serviceChainServiceInstanceId = ""
+			String sourceNetworkId = ""
+			String sourceNetworkRole = ""
+			String allottedResourceRole = ""
+
+			String arModelInfo = ""
+			String modelInvariantId = ""
+			String modelVersion = ""
+			String modelUUId = ""
+			String modelCustomizationId = ""
+			String modelName = ""
+
+
+			sdncReq =
+					"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${sdncRequestId}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${callbackUrl}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${requestId}</request-id>
+						<request-action>DeleteBRGInstance</request-action>
+						<source>MSO</source>
+						<notification-url/>
+						<order-number/>
+						<order-version/>
+					</request-information>
+					<service-information>
+						<service-id></service-id>
+						<subscription-service-type></subscription-service-type>
+						<ecomp-model-information></ecomp-model-information>
+						<service-instance-id>${parentServiceInstanceId}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id></global-customer-id>
+					</service-information>
+					<allotted-resource-information>
+						<allotted-resource-id>${allottedResourceId}</allotted-resource-id>    
+						<allotted-resource-type>brg</allotted-resource-type>
+						<parent-service-instance-id>${parentServiceInstanceId}</parent-service-instance-id>   
+						<ecomp-model-information>
+							<model-invariant-uuid>${modelInvariantId}</model-invariant-uuid>
+							<model-uuid>${modelUUId}</model-uuid>
+							<model-customization-uuid>${modelCustomizationId}</model-customization-uuid>
+							<model-version>${modelVersion}</model-version>
+							<model-name>${modelName}</model-name>
+						</ecomp-model-information>
+					</allotted-resource-information>
+					<brg-request-input>
+					</brg-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			utils.log("DEBUG","sdncRequest:\n" + sdncReq, isDebugEnabled)
+			sdncReq = utils.formatXml(sdncReq)
+
+		} catch(Exception ex) {
+			msg = "Exception in buildSDNCRequest. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit buildSDNCRequest *****", isDebugEnabled)
+		return sdncReq
+	}
+
+	public void preProcessSDNCUnassign(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCUnassign *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncUnassignReq = buildSDNCRequest(execution, "unassign", sdncRequestId)
+			execution.setVariable("sdncUnassignRequest", sdncUnassignReq)
+			utils.logAudit("sdncUnassignRequest:  " + sdncUnassignReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCUnassign. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCUnassign *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCDelete(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCDelete *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncDeleteReq = buildSDNCRequest(execution, "delete", sdncRequestId)
+			execution.setVariable("sdncDeleteRequest", sdncDeleteReq)
+			utils.logAudit("sdncDeleteReq:  " + sdncDeleteReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDelete. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCDelete *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCDeactivate(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCDeactivate *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncDeactivateReq = buildSDNCRequest(execution, "deactivate", sdncRequestId)
+			execution.setVariable("sdncDeactivateRequest", sdncDeactivateReq)
+			utils.logAudit("sdncDeactivateReq:  " + sdncDeactivateReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDeactivate. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCDeactivate *****", isDebugEnabled)
+	}
+
+	public void validateSDNCResp(Execution execution, String response, String method){
+
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			utils.logAudit("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			utils.logAudit("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				utils.log("DEBUG", "Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response, isDebugLogEnabled)
+
+			}else{
+				String sdncRespCode = execution.getVariable(Prefix + 'sdncRequestDataResponseCode')
+				utils.log("DEBUG", method + " AllottedResource received error response from SDNC. ResponseCode:" +  sdncRespCode, isDebugLogEnabled)
+				if (sdncRespCode.equals("404") && "deactivate".equals(method))
+				{
+					execution.setVariable("ARNotFoundInSDNC", true)
+					if ("true".equals(execution.getVariable("failNotFound")))
+					{
+						msg = "Allotted Resource Not found in SDNC"
+						utils.log("DEBUG", msg, isDebugEnabled)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+					}
+					else
+					{
+						execution.setVariable("wasDeleted", false)
+					}
+				}
+				else
+				{
+					throw new BpmnError("MSOWorkflowException")
+				}
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
+	}
+
+	public void deleteAaiAR(Execution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		try{
+			utils.log("DEBUG", " *** deleteAaiAR *** ", isDebugLogEnabled)
+			AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+			String ar = null //need to get resource-version again 
+			String arLink = execution.getVariable("aaiARPath")
+			if (!isBlank(arLink))
+			{
+				ar = arUtils.getARbyLink(execution, arLink, "")
+			}
+			arUtils.deleteAR(execution, arLink + '?resource-version=' + UriUtils.encode(execution.getVariable("aaiARResourceVersion"),"UTF-8"))
+		} catch (BpmnError e) {
+			throw e;
+		}catch(Exception ex){
+			utils.log("ERROR", "Exception Occurred Processing preProcessSDNCGetRequest. Exception is:\n" + ex, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage())
+		}
+		utils.log("DEBUG", " *** Exit deleteAaiAR *** ", isDebugLogEnabled)
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy
new file mode 100644
index 0000000..a66e888
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy
@@ -0,0 +1,349 @@
+/*
+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts;
+
+import org.openecomp.mso.bpmn.common.scripts.*;
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+/**
+ * This groovy class supports the <class>DoDeleteAllottedResourceTXC.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDebugLogEnabled
+ * @param - disableRollback - O ignored
+ * @param - failNotfound  - O 
+ * @param - serviceInstanceId
+ * @param - allottedResourceId 
+ *
+ * Outputs:
+ * @param - rollbackData - N/A
+ * @param - rolledBack - true if no deletions performed
+ * @param - WorkflowException - O
+ * @param - wasDeleted - O (ie not silentSuccess)
+ *
+ */
+public class DoDeleteAllottedResourceTXC extends AbstractServiceTaskProcessor{
+
+	String Prefix="DDARTXC_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	public void preProcessRequest (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
+
+		try {
+			execution.setVariable("prefix", Prefix)
+
+			//Config Inputs
+			String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "URN_mso_workflow_sdncadapter_callback is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			utils.log("DEBUG","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled)
+
+			//Request Inputs
+			if (isBlank(execution.getVariable("serviceInstanceId"))){
+				msg = "Input serviceInstanceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceId"))){
+				msg = "Input allottedResourceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	public void getAaiAR (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** getAaiAR ***** ", isDebugEnabled)
+
+		String allottedResourceId = execution.getVariable("allottedResourceId")
+
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String ar = arUtils.getARbyId(execution, allottedResourceId)
+
+		String errorMsg = ""
+		if (isBlank(ar)) // AR was !found
+		{
+			errorMsg = "Allotted resource not found in AAI with AllottedResourceId:" + allottedResourceId
+		}
+		else
+		{
+			String aaiARPath = execution.getVariable("aaiARPath")
+			String parentServiceInstanceId = arUtils.getPSIFmARLink(execution, aaiARPath)
+			execution.setVariable("parentServiceInstanceId", parentServiceInstanceId)
+		}
+		if (!isBlank(errorMsg)) {
+			utils.log("DEBUG", errorMsg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg)
+		}
+		utils.log("DEBUG"," ***** getAaiAR *****",  isDebugEnabled)
+
+	}
+
+	// aaiARPath set during query (existing AR)
+	public void updateAaiAROrchStatus(Execution execution, String status){
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** updateAaiAROrchStatus *** ", isDebugEnabled)
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) 
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
+	}
+
+	public String buildSDNCRequest(Execution execution, String action, String sdncRequestId) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** buildSDNCRequest *****", isDebugEnabled)
+		String sdncReq = null
+
+		try {
+
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId")
+
+			String callbackUrl = execution.getVariable("sdncCallbackUrl")
+			String requestId = execution.getVariable("msoRequestId")
+
+			String serviceChainServiceInstanceId = ""
+			String sourceNetworkId = ""
+			String sourceNetworkRole = ""
+			String allottedResourceRole = ""
+
+			String arModelInfo = ""
+			String modelInvariantId = ""
+			String modelVersion = ""
+			String modelUUId = ""
+			String modelCustomizationId = ""
+			String modelName = ""
+
+
+			sdncReq =
+					"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${sdncRequestId}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${callbackUrl}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${requestId}</request-id>
+						<request-action>DeleteTunnelXConnInstance</request-action>
+						<source>MSO</source>
+						<notification-url/>
+						<order-number/>
+						<order-version/>
+					</request-information>
+					<service-information>
+						<service-id></service-id>
+						<subscription-service-type></subscription-service-type>
+						<ecomp-model-information></ecomp-model-information>
+						<service-instance-id>${parentServiceInstanceId}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id></global-customer-id>
+					</service-information>
+					<allotted-resource-information>
+						<allotted-resource-id>${allottedResourceId}</allotted-resource-id>    
+						<allotted-resource-type>tunnelxconn</allotted-resource-type>
+						<parent-service-instance-id>${parentServiceInstanceId}</parent-service-instance-id>   
+						<ecomp-model-information>
+							<model-invariant-uuid>${modelInvariantId}</model-invariant-uuid>
+							<model-uuid>${modelUUId}</model-uuid>
+							<model-customization-uuid>${modelCustomizationId}</model-customization-uuid>
+							<model-version>${modelVersion}</model-version>
+							<model-name>${modelName}</model-name>
+						</ecomp-model-information>
+					</allotted-resource-information>
+					<tunnelxconn-request-input>
+					</tunnelxconn-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			utils.log("DEBUG","sdncRequest:\n" + sdncReq, isDebugEnabled)
+			sdncReq = utils.formatXml(sdncReq)
+
+		} catch(Exception ex) {
+			msg = "Exception in buildSDNCRequest. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit buildSDNCRequest *****", isDebugEnabled)
+		return sdncReq
+	}
+
+	public void preProcessSDNCUnassign(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCUnassign *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncUnassignReq = buildSDNCRequest(execution, "unassign", sdncRequestId)
+			execution.setVariable("sdncUnassignRequest", sdncUnassignReq)
+			utils.logAudit("sdncUnassignRequest:  " + sdncUnassignReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCUnassign. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCUnassign *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCDelete(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCDelete *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncDeleteReq = buildSDNCRequest(execution, "delete", sdncRequestId)
+			execution.setVariable("sdncDeleteRequest", sdncDeleteReq)
+			utils.logAudit("sdncDeleteReq:  " + sdncDeleteReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDelete. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCDelete *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCDeactivate(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCDeactivate *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncDeactivateReq = buildSDNCRequest(execution, "deactivate", sdncRequestId)
+			execution.setVariable("sdncDeactivateRequest", sdncDeactivateReq)
+			utils.logAudit("sdncDeactivateReq:  " + sdncDeactivateReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDeactivate. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCDeactivate *****", isDebugEnabled)
+	}
+
+	public void validateSDNCResp(Execution execution, String response, String method){
+
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			utils.logAudit("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			utils.logAudit("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				utils.log("DEBUG", "Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response, isDebugLogEnabled)
+
+			}else{
+				String sdncRespCode = execution.getVariable(Prefix + 'sdncRequestDataResponseCode')
+				utils.log("DEBUG", method + " AllottedResource received error response from SDNC. ResponseCode:" +  sdncRespCode, isDebugLogEnabled)
+				if (sdncRespCode.equals("404") && "deactivate".equals(method))
+				{
+					execution.setVariable("ARNotFoundInSDNC", true)
+					if ("true".equals(execution.getVariable("failNotFound")))
+					{
+						msg = "Allotted Resource Not found in SDNC"
+						utils.log("DEBUG", msg, isDebugEnabled)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+					}
+					else
+					{
+						execution.setVariable("wasDeleted", false)
+					}
+				}
+				else
+				{
+					throw new BpmnError("MSOWorkflowException")
+				}
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
+	}
+
+	public void deleteAaiAR(Execution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		try{
+			utils.log("DEBUG", " *** deleteAaiAR *** ", isDebugLogEnabled)
+			AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+			String ar = null //need to get resource-version again 
+			String arLink = execution.getVariable("aaiARPath")
+			if (!isBlank(arLink))
+			{
+				ar = arUtils.getARbyLink(execution, arLink, "")
+			}
+			arUtils.deleteAR(execution, arLink + '?resource-version=' + UriUtils.encode(execution.getVariable("aaiARResourceVersion"),"UTF-8"))
+		} catch (BpmnError e) {
+			throw e;
+		}catch(Exception ex){
+			utils.log("ERROR", "Exception Occurred Processing preProcessSDNCGetRequest. Exception is:\n" + ex, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage())
+		}
+		utils.log("DEBUG", " *** Exit deleteAaiAR *** ", isDebugLogEnabled)
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/vcpe/workflow/WorkflowAsyncVcpeResource.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/vcpe/workflow/WorkflowAsyncVcpeResource.java
new file mode 100644
index 0000000..6317be9
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/vcpe/workflow/WorkflowAsyncVcpeResource.java
@@ -0,0 +1,26 @@
+package org.openecomp.mso.bpmn.vcpe.workflow;

+

+import javax.ws.rs.Path;

+

+import org.camunda.bpm.engine.ProcessEngineServices;

+import org.camunda.bpm.engine.ProcessEngines;

+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowAsyncResource;

+

+

+/**

+ * 

+ * @version 1.0

+ * Asynchronous Workflow processing using JAX RS RESTeasy implementation

+ * Both Synchronous and Asynchronous BPMN process can benefit from this implementation since the workflow gets executed in the background

+ * and the server thread is freed up, server scales better to process more incoming requests

+ * 

+ * Usage: For synchronous process, when you are ready to send the response invoke the callback to write the response

+ * For asynchronous process - the activity may send a acknowledgement response and then proceed further on executing the process

+ */

+@Path("/async")

+public class WorkflowAsyncVcpeResource extends WorkflowAsyncResource {

+	

+	protected ProcessEngineServices getProcessEngineServices() {

+		return pes4junit.orElse(ProcessEngines.getProcessEngine("vcpe"));

+	}

+}

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn
new file mode 100644
index 0000000..c893690
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn
@@ -0,0 +1,1472 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="CreateVcpeResCustService" name="CreateVcpeResCustService" isExecutable="true">
+    <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*

+def CreateVcpeResCustService = new CreateVcpeResCustService()

+CreateVcpeResCustService.sendSyncResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="IntermediateThrowEvent_2" />
+    <bpmn2:startEvent id="createVCPE_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createVCPE_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" name="vCPE-RESCUST">
+      <bpmn2:outgoing>SequenceFlow_1eu60rt</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_37" name="vCPE-RESCUST" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Post Process &#38; Completion Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0afe2pg</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*

+def CreateVcpeResCustService = new CreateVcpeResCustService()

+CreateVcpeResCustService.postProcessResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity" />
+    <bpmn2:callActivity id="callCompleteMsoProcess_CallActivity" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in variables="all" />
+        <camunda:out variables="all" />
+        <camunda:in source="CVRCS_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="requestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_2" />
+    <bpmn2:scriptTask id="ScriptTask_2" name="Set Success Indicator" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[// The following variable is checked by the unit test

+execution.setVariable("CreateVcpeResCustServiceSuccessIndicator", true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_2" targetRef="CreateVCPE_EndEvent" />
+    <bpmn2:endEvent id="CreateVCPE_EndEvent" name="End">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_13" />
+    </bpmn2:endEvent>
+    <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1">
+        <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1">
+        <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" />
+      <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" />
+    </bpmn2:subProcess>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_4" name="FinishProcess">
+      <bpmn2:outgoing>SequenceFlow_12ilko1</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_39" name="FinishProcess" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:callActivity id="doCreateServiceInstance_CallActivity" name="Call Create &#10;ServiceInstance&#10;" calledElement="DoCreateServiceInstance">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:out source="rollbackData" target="DCRESI_rollbackData" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="failIfExists" target="failIfExists" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInputParams" target="serviceInputParams" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:in source="sdncVersion" target="sdncVersion" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0j6sjye</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ky2sv9</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_2" name="GoTovCPE-RESCUST">
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_38" name="vCPE-RESCUST" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:subProcess id="SubProcess_0s6hpty" name="Subprocess For Exception / FalloutHandler" triggeredByEvent="true">
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_1vwgs6p" name="Is Rollback On?" default="SequenceFlow_0dhf2js">
+        <bpmn2:incoming>SequenceFlow_0zq7i3q</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0zpbskl</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_0dhf2js</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:startEvent id="StartEvent_1bwmffk" name="Fault Start">
+        <bpmn2:outgoing>SequenceFlow_0zq7i3q</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_0ydrtdx" name="isPONR?" default="SequenceFlow_02o4yqx">
+        <bpmn2:incoming>SequenceFlow_0zpbskl</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1sx5llu</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_02o4yqx</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_1kvn1pz" name="is AR_TXC Ok?" default="SequenceFlow_19mxskt">
+        <bpmn2:incoming>SequenceFlow_0t3mtod</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19mxskt</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1sl79hn</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:callActivity id="CallActivity_0jw5tqa" name="Call FalloutHandlerV1" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="CVRCS_falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="msoRequestId" target="mso-request-id" />
+          <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
+          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
+          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_0807ukc</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19yywk8</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:endEvent id="EndEvent_04xute7">
+        <bpmn2:incoming>SequenceFlow_19yywk8</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_0yk02h3" name="Prepare FalloutHandler" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0jg47xm</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0807ukc</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*

+def CreateVcpeResCustService = new CreateVcpeResCustService()

+CreateVcpeResCustService.prepareFalloutRequest(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_0zpbskl" name="Yes" sourceRef="ExclusiveGateway_1vwgs6p" targetRef="ExclusiveGateway_0ydrtdx">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("disableRollback") != true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_0dhf2js" name="No" sourceRef="ExclusiveGateway_1vwgs6p" targetRef="InclusiveGateway_0foywso" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1sx5llu" name="Yes" sourceRef="ExclusiveGateway_0ydrtdx" targetRef="InclusiveGateway_0foywso">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("PONR") == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_02o4yqx" name="No" sourceRef="ExclusiveGateway_0ydrtdx" targetRef="ScriptTask_17doerz" />
+      <bpmn2:sequenceFlow id="SequenceFlow_19mxskt" name="No" sourceRef="ExclusiveGateway_1kvn1pz" targetRef="ExclusiveGateway_05indeh" />
+      <bpmn2:callActivity id="DoRollbackService_CallActivity" name="DoRollback&#10;Service&#10;" calledElement="DoCreateServiceInstanceRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="DCRESI_rollbackData" target="rollbackData" />
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:out source="rollbackSuccessful" target="DCRESI_rollbackSuccessful" />
+          <camunda:out source="rollbackError" target="DCRESI_rollbackError" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1a7e8l1</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1f1hd3l</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:inclusiveGateway id="InclusiveGateway_0foywso">
+        <bpmn2:incoming>SequenceFlow_1sx5llu</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0dhf2js</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1rabks0</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0jg47xm</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1f1hd3l" sourceRef="DoRollbackService_CallActivity" targetRef="InclusiveGateway_0m9f5ka" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0jg47xm" sourceRef="InclusiveGateway_0foywso" targetRef="ScriptTask_0yk02h3" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0807ukc" sourceRef="ScriptTask_0yk02h3" targetRef="CallActivity_0jw5tqa" />
+      <bpmn2:sequenceFlow id="SequenceFlow_19yywk8" sourceRef="CallActivity_0jw5tqa" targetRef="EndEvent_04xute7" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_05indeh" name="Service Rollback present?" default="SequenceFlow_0sezboq">
+        <bpmn2:incoming>SequenceFlow_19mxskt</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_17cz98f</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0sezboq</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1a7e8l1</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0sezboq" name="No" sourceRef="ExclusiveGateway_05indeh" targetRef="InclusiveGateway_0m9f5ka" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0zq7i3q" name="" sourceRef="StartEvent_1bwmffk" targetRef="ExclusiveGateway_1vwgs6p" />
+      <bpmn2:inclusiveGateway id="InclusiveGateway_0m9f5ka">
+        <bpmn2:incoming>SequenceFlow_1f1hd3l</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0sezboq</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1mbymcu</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_00by7l7</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1lv5ld6</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:scriptTask id="ScriptTask_17doerz" name="Pre Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_02o4yqx</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0ftzjjm</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*

+def CreateVcpeResCustService= new CreateVcpeResCustService()

+CreateVcpeResCustService.preProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="ScriptTask_0wyub4x" name="Post Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0dvsqpp</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1rabks0</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*

+def CreateVcpeResCustService= new CreateVcpeResCustService()

+CreateVcpeResCustService.postProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1rabks0" sourceRef="ScriptTask_0wyub4x" targetRef="InclusiveGateway_0foywso" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_06gq6em" name="is AR_BRG Ok?" default="SequenceFlow_0ya1cr3">
+        <bpmn2:incoming>SequenceFlow_12dakwh</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0orpdrl</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_0ya1cr3</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:callActivity id="CallActivity_1bpuf2p" name="DoRollback&#10;BRG Allotted Resources&#10;" calledElement="DoCreateAllottedResourceBRGRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="DCARBRG_rollbackData" target="rollbackData" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+          <camunda:out source="rollbackSuccessful" target="DCARCR_rollbackSuccessful" />
+          <camunda:out source="rollbackError" target="DCARCR_rollbackError" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_0orpdrl</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1t3cnnx</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:inclusiveGateway id="InclusiveGateway_131ozdf">
+        <bpmn2:incoming>SequenceFlow_0ya1cr3</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1sim44y</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_027lz43</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0orpdrl" name="Yes" sourceRef="ExclusiveGateway_06gq6em" targetRef="CallActivity_1bpuf2p">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCARBRG_rollbackData") != null }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_1t3cnnx" sourceRef="CallActivity_1bpuf2p" targetRef="ExclusiveGateway_1mjdcct" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0ya1cr3" name="No" sourceRef="ExclusiveGateway_06gq6em" targetRef="InclusiveGateway_131ozdf" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_14tl857" name="is VNF Ok?" default="SequenceFlow_1kpdu1j">
+        <bpmn2:incoming>SequenceFlow_027lz43</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kpdu1j</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_007p8k3</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:inclusiveGateway id="InclusiveGateway_142br6v">
+        <bpmn2:incoming>SequenceFlow_1kpdu1j</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1quvahv</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0t3mtod</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1kpdu1j" name="No" sourceRef="ExclusiveGateway_14tl857" targetRef="InclusiveGateway_142br6v" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_1mjdcct" name="Rollback success?" default="SequenceFlow_0dr2fem">
+        <bpmn2:incoming>SequenceFlow_1t3cnnx</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1sim44y</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_0dr2fem</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1sim44y" name="Yes" sourceRef="ExclusiveGateway_1mjdcct" targetRef="InclusiveGateway_131ozdf">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCARBRG_rollbackSuccessful") == true }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_0dr2fem" name="No" sourceRef="ExclusiveGateway_1mjdcct" targetRef="InclusiveGateway_1xenadu" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_05dg1m1" name="Rollback success?" default="SequenceFlow_1mbymcu">
+        <bpmn2:incoming>SequenceFlow_1mpsdaj</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1quvahv</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1mbymcu</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1quvahv" name="Yes" sourceRef="ExclusiveGateway_05dg1m1" targetRef="InclusiveGateway_142br6v">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCRENI_rollbackData") != null }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_1mbymcu" name="No" sourceRef="ExclusiveGateway_05dg1m1" targetRef="InclusiveGateway_0m9f5ka" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_0y7gtd9" name="rollback failed?" default="SequenceFlow_12dakwh">
+        <bpmn2:incoming>SequenceFlow_0ftzjjm</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_12dakwh</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_09nn9a9</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0ftzjjm" sourceRef="ScriptTask_17doerz" targetRef="ExclusiveGateway_0y7gtd9" />
+      <bpmn2:sequenceFlow id="SequenceFlow_12dakwh" name="No" sourceRef="ExclusiveGateway_0y7gtd9" targetRef="ExclusiveGateway_06gq6em" />
+      <bpmn2:inclusiveGateway id="InclusiveGateway_1xenadu">
+        <bpmn2:incoming>SequenceFlow_1lv5ld6</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_09nn9a9</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0dr2fem</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0dvsqpp</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1lv5ld6" sourceRef="InclusiveGateway_0m9f5ka" targetRef="InclusiveGateway_1xenadu" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0dvsqpp" sourceRef="InclusiveGateway_1xenadu" targetRef="ScriptTask_0wyub4x" />
+      <bpmn2:sequenceFlow id="SequenceFlow_09nn9a9" name="Yes" sourceRef="ExclusiveGateway_0y7gtd9" targetRef="InclusiveGateway_1xenadu">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rolledBack") != null && execution.getVariable("rolledBack") == false}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_027lz43" sourceRef="InclusiveGateway_131ozdf" targetRef="ExclusiveGateway_14tl857" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0t3mtod" sourceRef="InclusiveGateway_142br6v" targetRef="ExclusiveGateway_1kvn1pz" />
+      <bpmn2:callActivity id="CallActivity_071yaf8" name="DoRollback&#10;TXC Allotted Resources&#10;" calledElement="DoCreateAllottedResourceTXCRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="DCARTXC_rollbackData" target="rollbackData" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+          <camunda:out source="rollbackSuccessful" target="DCARBRG_rollbackSuccessful" />
+          <camunda:out source="rollbackError" target="DCARBRG_rollbackError" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1sl79hn</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0ne9n0g</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_1sl79hn" name="Yes" sourceRef="ExclusiveGateway_1kvn1pz" targetRef="CallActivity_071yaf8">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCARTXC_rollbackData") != null }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_0y158bb" name="Rollback success?">
+        <bpmn2:incoming>SequenceFlow_0ne9n0g</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_00by7l7</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_17cz98f</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0ne9n0g" sourceRef="CallActivity_071yaf8" targetRef="ExclusiveGateway_0y158bb" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1a7e8l1" name="Yes" sourceRef="ExclusiveGateway_05indeh" targetRef="DoRollbackService_CallActivity">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCRESI_rollbackData") != null }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_00by7l7" name="No" sourceRef="ExclusiveGateway_0y158bb" targetRef="InclusiveGateway_0m9f5ka" />
+      <bpmn2:sequenceFlow id="SequenceFlow_17cz98f" name="Yes" sourceRef="ExclusiveGateway_0y158bb" targetRef="ExclusiveGateway_05indeh">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCARTXC_rollbackSuccessful") == true }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:callActivity id="CallActivity_1cl4iu4" name="DoRollback&#10;VNF and Modules&#10;" calledElement="DoCreateVnfAndModulesRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="DCVAM_rollbackData" target="rollbackData" />
+          <camunda:out source="rollbackSuccessful" target="DCVAM_rollbackSuccessful" />
+          <camunda:out source="rollbackError" target="DCVAM_rollbackError" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_007p8k3</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1mpsdaj</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_1mpsdaj" sourceRef="CallActivity_1cl4iu4" targetRef="ExclusiveGateway_05dg1m1" />
+      <bpmn2:sequenceFlow id="SequenceFlow_007p8k3" name="Yes" sourceRef="ExclusiveGateway_14tl857" targetRef="CallActivity_1cl4iu4">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAM_rollbackData") != null }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="prepareCreateService_scriptTask" name="Prepare&#10;Create&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15odbkz</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0j6sjye</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*

+def CreateVcpeResCustService = new CreateVcpeResCustService()

+CreateVcpeResCustService.prepareCreateServiceInstance(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="setPONR_ScriptTask" name="set PONR">
+      <bpmn2:incoming>SequenceFlow_12ilko1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0afe2pg</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[#{execution.setVariable("PONR", true)}]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_12ilko1" sourceRef="IntermediateCatchEvent_4" targetRef="setPONR_ScriptTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0afe2pg" sourceRef="setPONR_ScriptTask" targetRef="postProcessAndCompletionRequest_ScriptTask" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0prlju0" name="GoTo StartService">
+      <bpmn2:incoming>SequenceFlow_1jbuf1t</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartService" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0j6sjye" sourceRef="prepareCreateService_scriptTask" targetRef="doCreateServiceInstance_CallActivity" />
+    <bpmn2:serviceTask id="updateInfraRequest" name="Update DB status to SUCCESS">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="payload"><![CDATA[${execution.getVariable("CVRCS_setUpdateDbInstancePayload")}]]></camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>soap-http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0vj46ej</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13uceka</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_13uceka" sourceRef="updateInfraRequest" targetRef="IntermediateThrowEvent_1as6hoa" />
+    <bpmn2:scriptTask id="ScriptTask_1qd3uwb" name="PostProcess&#10;Create&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1ky2sv9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0vj46ej</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*

+def CreateVcpeResCustService = new CreateVcpeResCustService()

+CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ky2sv9" sourceRef="doCreateServiceInstance_CallActivity" targetRef="ScriptTask_1qd3uwb" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0vj46ej" sourceRef="ScriptTask_1qd3uwb" targetRef="updateInfraRequest" />
+    <bpmn2:callActivity id="DecomposeService" name="Call Decompose Service" calledElement="DecomposeService">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_00h6hmd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17g05fd</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_0cdtchu" name="Prepare&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1eu60rt</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00h6hmd</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*

+def CreateVcpeResCustService = new CreateVcpeResCustService()

+CreateVcpeResCustService.prepareDecomposeService(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1eu60rt" sourceRef="IntermediateCatchEvent_3" targetRef="ScriptTask_0cdtchu" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00h6hmd" sourceRef="ScriptTask_0cdtchu" targetRef="DecomposeService" />
+    <bpmn2:scriptTask id="ScriptTask_0vf9bei" name="Prepare to create Allotted Resources TXC" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0x9pjgm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1kgaq0j</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareCreateAllottedResourceTXC(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_110rm9l" name="CreateAllottedResourcesTXC">
+      <bpmn2:outgoing>SequenceFlow_0x9pjgm</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="CreateAllottedResourcesTXC" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0x9pjgm" sourceRef="IntermediateCatchEvent_110rm9l" targetRef="ScriptTask_0vf9bei" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1oudh6l" name="Create TXC AR?" default="SequenceFlow_0ofjahh">
+      <bpmn2:incoming>SequenceFlow_1kgaq0j</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ofjahh</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_16qob4p</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_074qh5g">
+      <bpmn2:incoming>SequenceFlow_0ofjahh</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1cgpklo</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0o6tf9p</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ofjahh" name="No" sourceRef="ExclusiveGateway_1oudh6l" targetRef="ExclusiveGateway_074qh5g" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1kgaq0j" sourceRef="ScriptTask_0vf9bei" targetRef="ExclusiveGateway_1oudh6l" />
+    <bpmn2:sequenceFlow id="SequenceFlow_16qob4p" name="Yes" sourceRef="ExclusiveGateway_1oudh6l" targetRef="CallActivity_1ymzucb">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("createTXCAR") != null && execution.getVariable("createTXCAR") == true }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1i1nwfx" name="StartService">
+      <bpmn2:outgoing>SequenceFlow_15odbkz</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartService" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1as6hoa" name="GoToCreateAllottedResourcesTXC">
+      <bpmn2:incoming>SequenceFlow_13uceka</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="CreateAllottedResourcesTXC" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_15odbkz" sourceRef="IntermediateCatchEvent_1i1nwfx" targetRef="prepareCreateService_scriptTask" />
+    <bpmn2:callActivity id="Task_1l0uvof" name="Call Homing Service" camunda:modelerTemplate="homingBlock" calledElement="Homing">
+      <bpmn2:extensionElements>
+        <camunda:in source="true" target="isDebugLogEnabled" />
+        <camunda:in source="null" target="timeout" />
+        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:in source="subscriberInfo" target="subscriberInfo" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_17g05fd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1jbuf1t</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1jbuf1t" sourceRef="Task_1l0uvof" targetRef="IntermediateThrowEvent_0prlju0" />
+    <bpmn2:sequenceFlow id="SequenceFlow_17g05fd" sourceRef="DecomposeService" targetRef="Task_1l0uvof" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_17pzn7m" name="CreateAllottedResourcesBRG">
+      <bpmn2:outgoing>SequenceFlow_15vce9o</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="CreateAllottedResourcesBRG" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lt5ltv" name="GoToFinishProcess">
+      <bpmn2:incoming>SequenceFlow_0hwsm6n</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="FinishProcess" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1xwfgxs" name="Create BRG AR?" default="SequenceFlow_0loks1u">
+      <bpmn2:incoming>SequenceFlow_0yecpl2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0loks1u</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0b5ztoe</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0jqgskx">
+      <bpmn2:incoming>SequenceFlow_0loks1u</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0e9e6fo</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0hwsm6n</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:callActivity id="CallActivity_0xt1l8t" name="Call Create BRG Allotted Resource&#10;" calledElement="DoCreateAllottedResourceBRG">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="failExists" target="failExists" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="parentServiceInstanceIdBRG" target="parentServiceInstanceId" />
+        <camunda:in source="allottedResourceIdBRG" target="allottedResourceId" />
+        <camunda:in source="allottedResourceModelInfoBRG" target="allottedResourceModelInfo" />
+        <camunda:in source="allottedResourceRoleBRG" target="allottedResourceRole" />
+        <camunda:out source="rollbackData" target="DCARBRG_rollbackData" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="allottedResourceId" target="DCARBRG_allottedResourceId" />
+        <camunda:out source="allottedResourceName" target="DCARBRG_allottedResourceName" />
+        <camunda:in source="allottedResourceTypeBRG" target="allottedResourceType" />
+        <camunda:in source="vni" target="vni" />
+        <camunda:in source="vgmuxBearerIP" target="vgmuxBearerIP" />
+        <camunda:in source="brgWanMacAddress" target="brgWanMacAddress" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0b5ztoe</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0e9e6fo</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0hwsm6n" sourceRef="ExclusiveGateway_0jqgskx" targetRef="IntermediateThrowEvent_0lt5ltv" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0loks1u" name="No" sourceRef="ExclusiveGateway_1xwfgxs" targetRef="ExclusiveGateway_0jqgskx" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0b5ztoe" name="Yes" sourceRef="ExclusiveGateway_1xwfgxs" targetRef="CallActivity_0xt1l8t">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("createBRGAR") != null && execution.getVariable("createBRGAR") == true }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0e9e6fo" sourceRef="CallActivity_0xt1l8t" targetRef="ExclusiveGateway_0jqgskx" />
+    <bpmn2:scriptTask id="ScriptTask_05epj75" name="Prepare to create Allotted Resources BRG" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15vce9o</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0yecpl2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareCreateAllottedResourceBRG(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_15vce9o" sourceRef="IntermediateCatchEvent_17pzn7m" targetRef="ScriptTask_05epj75" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0yecpl2" sourceRef="ScriptTask_05epj75" targetRef="ExclusiveGateway_1xwfgxs" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_09vobbc" name="GoToCreateVG">
+      <bpmn2:incoming>SequenceFlow_0o6tf9p</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="CreateVG" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0o6tf9p" sourceRef="ExclusiveGateway_074qh5g" targetRef="IntermediateThrowEvent_09vobbc" />
+    <bpmn2:callActivity id="CallActivity_1els13v" name="DoCreate&#10;VNF and Modules&#10;" calledElement="DoCreateVnfAndModules">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:in source="vnfModelInfo" target="vnfModelInfo" />
+        <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="tenantId" target="tenantId" />
+        <camunda:in source="sdncVersion" target="sdncVersion" />
+        <camunda:out source="rollbackData" target="DCVAM_rollbackData" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="vnfId" target="vnfId" />
+        <camunda:out source="vnfName" target="vnfName" />
+        <camunda:out source="vnfOutputParams" target="vnfOutputParams" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceDecomposition" target="serviceDecomposition" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0ws7fjn</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1mkdhw9</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_0n1k77c" name="Prepare to Create VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0p75l97</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ws7fjn</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infra.scripts.*
+def CreateVcpeResCustService= new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareVnfAndModulesCreate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1xsowxp" name="GoToCreateAllottedResourcesBRG">
+      <bpmn2:incoming>SequenceFlow_1ufio7c</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="CreateAllottedResourcesBRG" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_19a50jz" name="CreateVG">
+      <bpmn2:outgoing>SequenceFlow_0aza7xq</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="CreateVG" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0yae9sb" name="Create VNF?" default="SequenceFlow_13iuk3s">
+      <bpmn2:incoming>SequenceFlow_0aza7xq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0p75l97</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_13iuk3s</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1hlbkue">
+      <bpmn2:incoming>SequenceFlow_1mkdhw9</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_13iuk3s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ufio7c</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ws7fjn" sourceRef="ScriptTask_0n1k77c" targetRef="CallActivity_1els13v" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1mkdhw9" name="in 1702 scope only one VNF will be created - if needed" sourceRef="CallActivity_1els13v" targetRef="ExclusiveGateway_1hlbkue">
+      <bpmn2:documentation>in 1702 scope only one VNF will be created</bpmn2:documentation>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0p75l97" name="Yes" sourceRef="ExclusiveGateway_0yae9sb" targetRef="ScriptTask_0n1k77c">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVRCS_VNFsCount") >0}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ufio7c" sourceRef="ExclusiveGateway_1hlbkue" targetRef="IntermediateThrowEvent_1xsowxp" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0aza7xq" sourceRef="IntermediateCatchEvent_19a50jz" targetRef="ExclusiveGateway_0yae9sb" />
+    <bpmn2:sequenceFlow id="SequenceFlow_13iuk3s" name="No" sourceRef="ExclusiveGateway_0yae9sb" targetRef="ExclusiveGateway_1hlbkue" />
+    <bpmn2:callActivity id="CallActivity_1ymzucb" name="Call Create TXC Allotted Resource&#10;" calledElement="DoCreateAllottedResourceTXC">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="failExists" target="failExists" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="parentServiceInstanceIdTXC" target="parentServiceInstanceId" />
+        <camunda:in source="serviceChainServiceInstanceId" target="serviceChainServiceInstanceId" />
+        <camunda:in source="allottedResourceIdTXC" target="allottedResourceId" />
+        <camunda:in source="allottedResourceModelInfoTXC" target="allottedResourceModelInfo" />
+        <camunda:in source="allottedResourceRoleTXC" target="allottedResourceRole" />
+        <camunda:out source="rollbackData" target="DCARTXC_rollbackData" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="allottedResourceId" target="DCARTXC_allottedResourceId" />
+        <camunda:out source="vni" target="vni" />
+        <camunda:out source="vgmuxBearerIP" target="vgmuxBearerIP" />
+        <camunda:out source="vgmuxLanIP" target="vgmuxLanIP" />
+        <camunda:in source="allottedResourceTypeTXC" target="allottedResourceType" />
+        <camunda:in source="brgWanMacAddress" target="brgWanMacAddress" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_16qob4p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1cgpklo</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1cgpklo" sourceRef="CallActivity_1ymzucb" targetRef="ExclusiveGateway_074qh5g" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVcpeResCustService">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createVCPE_startEvent">
+        <dc:Bounds x="87" y="215" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="80" y="256" width="51" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="276" y="193" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="123" y="233" />
+        <di:waypoint xsi:type="dc:Point" x="276" y="233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="165" y="233" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_4" bpmnElement="callCompleteMsoProcess_CallActivity">
+        <dc:Bounds x="763" y="1432" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask">
+        <dc:Bounds x="490" y="1432" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_127">
+        <di:waypoint xsi:type="dc:Point" x="376" y="233" />
+        <di:waypoint xsi:type="dc:Point" x="467" y="233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="265" y="194" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="sendSyncAckResponse_ScriptTask">
+        <dc:Bounds x="467" y="193" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80" targetElement="_BPMNShape_CallActivity_4">
+        <di:waypoint xsi:type="dc:Point" x="590" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="763" y="1472" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="677" y="1457" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="CreateVCPE_EndEvent">
+        <dc:Bounds x="1262" y="1452" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1269" y="1493" width="21" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_CallActivity_4" targetElement="_BPMNShape_ScriptTask_337">
+        <di:waypoint xsi:type="dc:Point" x="863" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="1071" y="1471" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="967" y="1457" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true">
+        <dc:Bounds x="1257" y="1702" width="409" height="232" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1">
+        <dc:Bounds x="1325" y="1807" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1343" y="1848" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="1400" y="1785" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1">
+        <dc:Bounds x="1553" y="1807" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1571" y="1848" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269">
+        <di:waypoint xsi:type="dc:Point" x="1361" y="1825" />
+        <di:waypoint xsi:type="dc:Point" x="1400" y="1825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1389" y="1825" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219">
+        <di:waypoint xsi:type="dc:Point" x="1500" y="1825" />
+        <di:waypoint xsi:type="dc:Point" x="1533" y="1825" />
+        <di:waypoint xsi:type="dc:Point" x="1533" y="1825" />
+        <di:waypoint xsi:type="dc:Point" x="1553" y="1825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1548" y="1825" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_75" bpmnElement="doCreateServiceInstance_CallActivity">
+        <dc:Bounds x="456" y="543" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_127">
+        <di:waypoint xsi:type="dc:Point" x="567" y="233" />
+        <di:waypoint xsi:type="dc:Point" x="719" y="233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="643" y="218" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_337" bpmnElement="ScriptTask_2">
+        <dc:Bounds x="1071" y="1431" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_337" targetElement="_BPMNShape_EndEvent_177">
+        <di:waypoint xsi:type="dc:Point" x="1171" y="1470" />
+        <di:waypoint xsi:type="dc:Point" x="1262" y="1470" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1217" y="1455" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_35" bpmnElement="IntermediateCatchEvent_3">
+        <dc:Bounds x="87" y="370" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="80" y="406" width="50" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_36" bpmnElement="IntermediateCatchEvent_4">
+        <dc:Bounds x="60" y="1454" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="39" y="1490" width="78" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_49" bpmnElement="IntermediateThrowEvent_2">
+        <dc:Bounds x="719" y="215" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="697" y="256" width="79" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0s6hpty_di" bpmnElement="SubProcess_0s6hpty" isExpanded="true">
+        <dc:Bounds x="-261" y="1650" width="1482" height="1528" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1vwgs6p_di" bpmnElement="ExclusiveGateway_1vwgs6p" isMarkerVisible="true">
+        <dc:Bounds x="55" y="2972" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="42" y="3032" width="79" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1bwmffk_di" bpmnElement="StartEvent_1bwmffk">
+        <dc:Bounds x="-58" y="2980" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-65" y="3021" width="53" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ydrtdx_di" bpmnElement="ExclusiveGateway_0ydrtdx" isMarkerVisible="true">
+        <dc:Bounds x="55" y="2889" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-11" y="2904" width="48" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1kvn1pz_di" bpmnElement="ExclusiveGateway_1kvn1pz" isMarkerVisible="true">
+        <dc:Bounds x="182" y="1822" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="114" y="1816" width="80" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0jw5tqa_di" bpmnElement="CallActivity_0jw5tqa">
+        <dc:Bounds x="1028" y="2946" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_04xute7_di" bpmnElement="EndEvent_04xute7">
+        <dc:Bounds x="1165" y="2968" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1138" y="3009" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0yk02h3_di" bpmnElement="ScriptTask_0yk02h3">
+        <dc:Bounds x="896" y="2946" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zpbskl_di" bpmnElement="SequenceFlow_0zpbskl">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2972" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2939" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="85" y="2959" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dhf2js_di" bpmnElement="SequenceFlow_0dhf2js">
+        <di:waypoint xsi:type="dc:Point" x="105" y="2997" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="2997" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="2939" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="144" y="3002" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sx5llu_di" bpmnElement="SequenceFlow_1sx5llu">
+        <di:waypoint xsi:type="dc:Point" x="105" y="2914" />
+        <di:waypoint xsi:type="dc:Point" x="410" y="2914" />
+        <di:waypoint xsi:type="dc:Point" x="410" y="2914" />
+        <di:waypoint xsi:type="dc:Point" x="714" y="2914" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="423" y="2918" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_02o4yqx_di" bpmnElement="SequenceFlow_02o4yqx">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2889" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2867" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="90" y="2872" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19mxskt_di" bpmnElement="SequenceFlow_19mxskt">
+        <di:waypoint xsi:type="dc:Point" x="207" y="1822" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="1726" />
+        <di:waypoint xsi:type="dc:Point" x="686" y="1726" />
+        <di:waypoint xsi:type="dc:Point" x="686" y="1942" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="395.6421052631579" y="1705" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1gacz45_di" bpmnElement="prepareCreateService_scriptTask">
+        <dc:Bounds x="250" y="543" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_11b4gmn_di" bpmnElement="setPONR_ScriptTask">
+        <dc:Bounds x="204" y="1432" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_12ilko1_di" bpmnElement="SequenceFlow_12ilko1">
+        <di:waypoint xsi:type="dc:Point" x="96" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="204" y="1472" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="150" y="1447" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0afe2pg_di" bpmnElement="SequenceFlow_0afe2pg">
+        <di:waypoint xsi:type="dc:Point" x="304" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="447" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="490" y="1472" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="376" y="1457" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0oh7wzu_di" bpmnElement="DoRollbackService_CallActivity">
+        <dc:Bounds x="981" y="1927" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_0foywso_di" bpmnElement="InclusiveGateway_0foywso">
+        <dc:Bounds x="714" y="2889" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="694" y="2944" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1f1hd3l_di" bpmnElement="SequenceFlow_1f1hd3l">
+        <di:waypoint xsi:type="dc:Point" x="1031" y="2007" />
+        <di:waypoint xsi:type="dc:Point" x="1031" y="2104" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1001" y="2056" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jg47xm_di" bpmnElement="SequenceFlow_0jg47xm">
+        <di:waypoint xsi:type="dc:Point" x="764" y="2914" />
+        <di:waypoint xsi:type="dc:Point" x="946" y="2914" />
+        <di:waypoint xsi:type="dc:Point" x="946" y="2946" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="810" y="2899" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0807ukc_di" bpmnElement="SequenceFlow_0807ukc">
+        <di:waypoint xsi:type="dc:Point" x="996" y="2986" />
+        <di:waypoint xsi:type="dc:Point" x="1028" y="2986" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="967" y="2971" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19yywk8_di" bpmnElement="SequenceFlow_19yywk8">
+        <di:waypoint xsi:type="dc:Point" x="1128" y="2986" />
+        <di:waypoint xsi:type="dc:Point" x="1165" y="2986" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1102" y="2971" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0prlju0_di" bpmnElement="IntermediateThrowEvent_0prlju0">
+        <dc:Bounds x="1056" y="370" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1025" y="411" width="97" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0j6sjye_di" bpmnElement="SequenceFlow_0j6sjye">
+        <di:waypoint xsi:type="dc:Point" x="350" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="456" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="403" y="568" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_05indeh_di" bpmnElement="ExclusiveGateway_05indeh" isMarkerVisible="true">
+        <dc:Bounds x="661" y="1942" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="721" y="1924" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0sezboq_di" bpmnElement="SequenceFlow_0sezboq">
+        <di:waypoint xsi:type="dc:Point" x="686" y="1992" />
+        <di:waypoint xsi:type="dc:Point" x="686" y="2129" />
+        <di:waypoint xsi:type="dc:Point" x="1006" y="2129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="693" y="2046" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_16yhzej_di" bpmnElement="updateInfraRequest">
+        <dc:Bounds x="794" y="543" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13uceka_di" bpmnElement="SequenceFlow_13uceka">
+        <di:waypoint xsi:type="dc:Point" x="894" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="1053" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="974" y="568" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1qd3uwb_di" bpmnElement="ScriptTask_1qd3uwb">
+        <dc:Bounds x="623" y="543" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ky2sv9_di" bpmnElement="SequenceFlow_1ky2sv9">
+        <di:waypoint xsi:type="dc:Point" x="556" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="623" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="590" y="568" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vj46ej_di" bpmnElement="SequenceFlow_0vj46ej">
+        <di:waypoint xsi:type="dc:Point" x="723" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="794" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="759" y="568" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_17doerz_di" bpmnElement="ScriptTask_17doerz">
+        <dc:Bounds x="30" y="2787" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zq7i3q_di" bpmnElement="SequenceFlow_0zq7i3q">
+        <di:waypoint xsi:type="dc:Point" x="-22" y="2998" />
+        <di:waypoint xsi:type="dc:Point" x="25" y="2998" />
+        <di:waypoint xsi:type="dc:Point" x="25" y="2997" />
+        <di:waypoint xsi:type="dc:Point" x="55" y="2997" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-51" y="2999" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_0m9f5ka_di" bpmnElement="InclusiveGateway_0m9f5ka">
+        <dc:Bounds x="1006" y="2104" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="986" y="2159" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0wyub4x_di" bpmnElement="ScriptTask_0wyub4x">
+        <dc:Bounds x="689" y="2787" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rabks0_di" bpmnElement="SequenceFlow_1rabks0">
+        <di:waypoint xsi:type="dc:Point" x="739" y="2867" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="2889" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="709" y="2878" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0w2alah_di" bpmnElement="DecomposeService">
+        <dc:Bounds x="467" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0cdtchu_di" bpmnElement="ScriptTask_0cdtchu">
+        <dc:Bounds x="276" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1eu60rt_di" bpmnElement="SequenceFlow_1eu60rt">
+        <di:waypoint xsi:type="dc:Point" x="123" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="276" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="200" y="373" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00h6hmd_di" bpmnElement="SequenceFlow_00h6hmd">
+        <di:waypoint xsi:type="dc:Point" x="376" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="467" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="422" y="373" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0vf9bei_di" bpmnElement="ScriptTask_0vf9bei">
+        <dc:Bounds x="184" y="801" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_110rm9l_di" bpmnElement="IntermediateCatchEvent_110rm9l">
+        <dc:Bounds x="83" y="823" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="57" y="859" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x9pjgm_di" bpmnElement="SequenceFlow_0x9pjgm">
+        <di:waypoint xsi:type="dc:Point" x="119" y="841" />
+        <di:waypoint xsi:type="dc:Point" x="184" y="841" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="826" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_06gq6em_di" bpmnElement="ExclusiveGateway_06gq6em" isMarkerVisible="true">
+        <dc:Bounds x="55" y="2604" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-33" y="2619" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1bpuf2p_di" bpmnElement="CallActivity_1bpuf2p">
+        <dc:Bounds x="157" y="2519" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_131ozdf_di" bpmnElement="InclusiveGateway_131ozdf">
+        <dc:Bounds x="55" y="2432" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="35" y="2487" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0orpdrl_di" bpmnElement="SequenceFlow_0orpdrl">
+        <di:waypoint xsi:type="dc:Point" x="105" y="2629" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="2629" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="2599" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="145" y="2614" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t3cnnx_di" bpmnElement="SequenceFlow_1t3cnnx">
+        <di:waypoint xsi:type="dc:Point" x="207" y="2519" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="2482" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="177" y="2501" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ya1cr3_di" bpmnElement="SequenceFlow_0ya1cr3">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2604" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2543" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2543" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2482" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="92" y="2509" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1oudh6l_di" bpmnElement="ExclusiveGateway_1oudh6l" isMarkerVisible="true">
+        <dc:Bounds x="332" y="816" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="399" y="829" width="76" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_074qh5g_di" bpmnElement="ExclusiveGateway_074qh5g" isMarkerVisible="true">
+        <dc:Bounds x="512" y="796" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="492" y="846" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ofjahh_di" bpmnElement="SequenceFlow_0ofjahh">
+        <di:waypoint xsi:type="dc:Point" x="357" y="866" />
+        <di:waypoint xsi:type="dc:Point" x="357" y="901" />
+        <di:waypoint xsi:type="dc:Point" x="537" y="901" />
+        <di:waypoint xsi:type="dc:Point" x="537" y="846" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="441" y="886" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kgaq0j_di" bpmnElement="SequenceFlow_1kgaq0j">
+        <di:waypoint xsi:type="dc:Point" x="284" y="841" />
+        <di:waypoint xsi:type="dc:Point" x="332" y="841" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="263" y="826" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_16qob4p_di" bpmnElement="SequenceFlow_16qob4p">
+        <di:waypoint xsi:type="dc:Point" x="357" y="816" />
+        <di:waypoint xsi:type="dc:Point" x="357" y="730" />
+        <di:waypoint xsi:type="dc:Point" x="400" y="730" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="362" y="763" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_14tl857_di" bpmnElement="ExclusiveGateway_14tl857" isMarkerVisible="true">
+        <dc:Bounds x="55" y="2283" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-31" y="2298" width="80" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_142br6v_di" bpmnElement="InclusiveGateway_142br6v">
+        <dc:Bounds x="55" y="2104" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="35" y="2159" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kpdu1j_di" bpmnElement="SequenceFlow_1kpdu1j">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2283" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2154" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="87" y="2219" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1mjdcct_di" bpmnElement="ExclusiveGateway_1mjdcct" isMarkerVisible="true">
+        <dc:Bounds x="182" y="2432" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="183" y="2394" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sim44y_di" bpmnElement="SequenceFlow_1sim44y">
+        <di:waypoint xsi:type="dc:Point" x="182" y="2457" />
+        <di:waypoint xsi:type="dc:Point" x="105" y="2457" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="111" y="2432" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dr2fem_di" bpmnElement="SequenceFlow_0dr2fem">
+        <di:waypoint xsi:type="dc:Point" x="231" y="2458" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="2458" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="2696" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="320" y="2437" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_05dg1m1_di" bpmnElement="ExclusiveGateway_05dg1m1" isMarkerVisible="true">
+        <dc:Bounds x="182" y="2104" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="183" y="2065" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1quvahv_di" bpmnElement="SequenceFlow_1quvahv">
+        <di:waypoint xsi:type="dc:Point" x="182" y="2129" />
+        <di:waypoint xsi:type="dc:Point" x="105" y="2129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="133" y="2104" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mbymcu_di" bpmnElement="SequenceFlow_1mbymcu">
+        <di:waypoint xsi:type="dc:Point" x="232" y="2129" />
+        <di:waypoint xsi:type="dc:Point" x="1006" y="2129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="294" y="2098" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1i1nwfx_di" bpmnElement="IntermediateCatchEvent_1i1nwfx">
+        <dc:Bounds x="87" y="565" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="72" y="601" width="65" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1as6hoa_di" bpmnElement="IntermediateThrowEvent_1as6hoa">
+        <dc:Bounds x="1056" y="565" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1037" y="606" width="72" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15odbkz_di" bpmnElement="SequenceFlow_15odbkz">
+        <di:waypoint xsi:type="dc:Point" x="123" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="250" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="187" y="558" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_07nu6s6_di" bpmnElement="Task_1l0uvof">
+        <dc:Bounds x="687" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jbuf1t_di" bpmnElement="SequenceFlow_1jbuf1t">
+        <di:waypoint xsi:type="dc:Point" x="787" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="1056" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="922" y="373" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17g05fd_di" bpmnElement="SequenceFlow_17g05fd">
+        <di:waypoint xsi:type="dc:Point" x="567" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="687" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="627" y="373" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0y7gtd9_di" bpmnElement="ExclusiveGateway_0y7gtd9" isMarkerVisible="true">
+        <dc:Bounds x="55" y="2696" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-36" y="2709" width="76" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ftzjjm_di" bpmnElement="SequenceFlow_0ftzjjm">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2787" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2746" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="50" y="2767" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12dakwh_di" bpmnElement="SequenceFlow_12dakwh">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2696" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2654" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="87" y="2667" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_1xenadu_di" bpmnElement="InclusiveGateway_1xenadu">
+        <dc:Bounds x="714" y="2696" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="694" y="2751" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lv5ld6_di" bpmnElement="SequenceFlow_1lv5ld6">
+        <di:waypoint xsi:type="dc:Point" x="1031" y="2154" />
+        <di:waypoint xsi:type="dc:Point" x="1031" y="2721" />
+        <di:waypoint xsi:type="dc:Point" x="764" y="2721" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1001" y="2438" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dvsqpp_di" bpmnElement="SequenceFlow_0dvsqpp">
+        <di:waypoint xsi:type="dc:Point" x="739" y="2746" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="2787" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="709" y="2767" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_09nn9a9_di" bpmnElement="SequenceFlow_09nn9a9">
+        <di:waypoint xsi:type="dc:Point" x="105" y="2721" />
+        <di:waypoint xsi:type="dc:Point" x="428" y="2721" />
+        <di:waypoint xsi:type="dc:Point" x="428" y="2721" />
+        <di:waypoint xsi:type="dc:Point" x="714" y="2721" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="148" y="2694" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_027lz43_di" bpmnElement="SequenceFlow_027lz43">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2432" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2333" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="50" y="2373" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t3mtod_di" bpmnElement="SequenceFlow_0t3mtod">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2104" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="1847" />
+        <di:waypoint xsi:type="dc:Point" x="182" y="1847" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="50" y="1966" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_17pzn7m_di" bpmnElement="IntermediateCatchEvent_17pzn7m">
+        <dc:Bounds x="83" y="1259" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="57" y="1295" width="80" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0lt5ltv_di" bpmnElement="IntermediateThrowEvent_0lt5ltv">
+        <dc:Bounds x="670" y="1274" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="644" y="1321" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1xwfgxs_di" bpmnElement="ExclusiveGateway_1xwfgxs" isMarkerVisible="true">
+        <dc:Bounds x="312" y="1252" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="369" y="1271" width="70" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0jqgskx_di" bpmnElement="ExclusiveGateway_0jqgskx" isMarkerVisible="true">
+        <dc:Bounds x="535" y="1267" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="515" y="1317" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0xt1l8t_di" bpmnElement="CallActivity_0xt1l8t">
+        <dc:Bounds x="400" y="1151" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hwsm6n_di" bpmnElement="SequenceFlow_0hwsm6n">
+        <di:waypoint xsi:type="dc:Point" x="585" y="1292" />
+        <di:waypoint xsi:type="dc:Point" x="628" y="1292" />
+        <di:waypoint xsi:type="dc:Point" x="628" y="1292" />
+        <di:waypoint xsi:type="dc:Point" x="670" y="1292" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="598" y="1292" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0loks1u_di" bpmnElement="SequenceFlow_0loks1u">
+        <di:waypoint xsi:type="dc:Point" x="337" y="1302" />
+        <di:waypoint xsi:type="dc:Point" x="337" y="1352" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="1352" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="1317" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="441" y="1337" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0b5ztoe_di" bpmnElement="SequenceFlow_0b5ztoe">
+        <di:waypoint xsi:type="dc:Point" x="337" y="1252" />
+        <di:waypoint xsi:type="dc:Point" x="337" y="1191" />
+        <di:waypoint xsi:type="dc:Point" x="395" y="1191" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="353" y="1216.4242424242425" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e9e6fo_di" bpmnElement="SequenceFlow_0e9e6fo">
+        <di:waypoint xsi:type="dc:Point" x="500" y="1191" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="1191" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="1267" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="485" y="1166" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_05epj75_di" bpmnElement="ScriptTask_05epj75">
+        <dc:Bounds x="184" y="1237" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15vce9o_di" bpmnElement="SequenceFlow_15vce9o">
+        <di:waypoint xsi:type="dc:Point" x="119" y="1277" />
+        <di:waypoint xsi:type="dc:Point" x="184" y="1277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="151.5" y="1256" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yecpl2_di" bpmnElement="SequenceFlow_0yecpl2">
+        <di:waypoint xsi:type="dc:Point" x="284" y="1277" />
+        <di:waypoint xsi:type="dc:Point" x="312" y="1277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="298" y="1256" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_09vobbc_di" bpmnElement="IntermediateThrowEvent_09vobbc">
+        <dc:Bounds x="670" y="803" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="651" y="844" width="85" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0o6tf9p_di" bpmnElement="SequenceFlow_0o6tf9p">
+        <di:waypoint xsi:type="dc:Point" x="562" y="821" />
+        <di:waypoint xsi:type="dc:Point" x="670" y="821" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="616" y="800" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1els13v_di" bpmnElement="CallActivity_1els13v">
+        <dc:Bounds x="617" y="942" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0n1k77c_di" bpmnElement="ScriptTask_0n1k77c">
+        <dc:Bounds x="450" y="942" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1xsowxp_di" bpmnElement="IntermediateThrowEvent_1xsowxp">
+        <dc:Bounds x="1027" y="1031" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1001" y="1072" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_19a50jz_di" bpmnElement="IntermediateCatchEvent_19a50jz">
+        <dc:Bounds x="77" y="1047" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="70" y="1083" width="48" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0yae9sb_di" bpmnElement="ExclusiveGateway_0yae9sb" isMarkerVisible="true">
+        <dc:Bounds x="326" y="1040" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="388" y="1059" width="67" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1hlbkue_di" bpmnElement="ExclusiveGateway_1hlbkue" isMarkerVisible="true">
+        <dc:Bounds x="892" y="1024" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="872" y="1079" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ws7fjn_di" bpmnElement="SequenceFlow_0ws7fjn">
+        <di:waypoint xsi:type="dc:Point" x="550" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="580" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="580" y="981" />
+        <di:waypoint xsi:type="dc:Point" x="617" y="981" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="550" y="982" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mkdhw9_di" bpmnElement="SequenceFlow_1mkdhw9">
+        <di:waypoint xsi:type="dc:Point" x="717" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="1024" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="803" y="929" width="87" height="48" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0p75l97_di" bpmnElement="SequenceFlow_0p75l97">
+        <di:waypoint xsi:type="dc:Point" x="351" y="1040" />
+        <di:waypoint xsi:type="dc:Point" x="351" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="450" y="982" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="361" y="1015" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ufio7c_di" bpmnElement="SequenceFlow_1ufio7c">
+        <di:waypoint xsi:type="dc:Point" x="942" y="1049" />
+        <di:waypoint xsi:type="dc:Point" x="1027" y="1049" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="940.5" y="1024" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0aza7xq_di" bpmnElement="SequenceFlow_0aza7xq">
+        <di:waypoint xsi:type="dc:Point" x="113" y="1065" />
+        <di:waypoint xsi:type="dc:Point" x="326" y="1065" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="175.5" y="1040" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_13iuk3s_di" bpmnElement="SequenceFlow_13iuk3s">
+        <di:waypoint xsi:type="dc:Point" x="351" y="1091" />
+        <di:waypoint xsi:type="dc:Point" x="351" y="1114" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="1114" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="1075" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="596" y="1090" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_071yaf8_di" bpmnElement="CallActivity_071yaf8">
+        <dc:Bounds x="326" y="1807" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sl79hn_di" bpmnElement="SequenceFlow_1sl79hn">
+        <di:waypoint xsi:type="dc:Point" x="232" y="1847" />
+        <di:waypoint xsi:type="dc:Point" x="261" y="1847" />
+        <di:waypoint xsi:type="dc:Point" x="261" y="1847" />
+        <di:waypoint xsi:type="dc:Point" x="326" y="1847" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="275.2413793103448" y="1827" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0y158bb_di" bpmnElement="ExclusiveGateway_0y158bb" isMarkerVisible="true">
+        <dc:Bounds x="526" y="1822" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="527" y="1783" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ne9n0g_di" bpmnElement="SequenceFlow_0ne9n0g">
+        <di:waypoint xsi:type="dc:Point" x="426" y="1847" />
+        <di:waypoint xsi:type="dc:Point" x="526" y="1847" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="476" y="1826" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1a7e8l1_di" bpmnElement="SequenceFlow_1a7e8l1">
+        <di:waypoint xsi:type="dc:Point" x="711" y="1967" />
+        <di:waypoint xsi:type="dc:Point" x="981" y="1967" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="836" y="1946" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00by7l7_di" bpmnElement="SequenceFlow_00by7l7">
+        <di:waypoint xsi:type="dc:Point" x="551" y="1872" />
+        <di:waypoint xsi:type="dc:Point" x="551" y="2129" />
+        <di:waypoint xsi:type="dc:Point" x="1006" y="2129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="558" y="1995" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17cz98f_di" bpmnElement="SequenceFlow_17cz98f">
+        <di:waypoint xsi:type="dc:Point" x="551" y="1872" />
+        <di:waypoint xsi:type="dc:Point" x="551" y="1967" />
+        <di:waypoint xsi:type="dc:Point" x="661" y="1967" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="556" y="1914" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1cl4iu4_di" bpmnElement="CallActivity_1cl4iu4">
+        <dc:Bounds x="157" y="2194" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mpsdaj_di" bpmnElement="SequenceFlow_1mpsdaj">
+        <di:waypoint xsi:type="dc:Point" x="207" y="2194" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="2154" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="222" y="2168" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_007p8k3_di" bpmnElement="SequenceFlow_007p8k3">
+        <di:waypoint xsi:type="dc:Point" x="105" y="2308" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="2308" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="2274" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="146" y="2287" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1ymzucb_di" bpmnElement="CallActivity_1ymzucb">
+        <dc:Bounds x="400" y="690" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cgpklo_di" bpmnElement="SequenceFlow_1cgpklo">
+        <di:waypoint xsi:type="dc:Point" x="500" y="730" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="730" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="797" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="474" y="715" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVcpeResCustService.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVcpeResCustService.bpmn
new file mode 100644
index 0000000..39fcd66
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVcpeResCustService.bpmn
@@ -0,0 +1,807 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DeleteVcpeResCustService" name="DeleteVcpeResCustService" isExecutable="true">
+    <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+def DeleteVcpeResCustService = new DeleteVcpeResCustService()
+DeleteVcpeResCustService.sendSyncResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="IntermediateThrowEvent_2" />
+    <bpmn2:startEvent id="createVCPE_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createVCPE_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+def DeleteVcpeResCustService = new DeleteVcpeResCustService()
+DeleteVcpeResCustService.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" name="vCPE-CUSREST">
+      <bpmn2:outgoing>SequenceFlow_10o22u2</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_37" name="vCPE-CUSREST" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Post Process &#38; Completion Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_12ilko1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+def DeleteVcpeResCustService = new DeleteVcpeResCustService()
+DeleteVcpeResCustService.postProcessResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity" />
+    <bpmn2:callActivity id="callCompleteMsoProcess_CallActivity" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in variables="all" />
+        <camunda:out variables="all" />
+        <camunda:in source="DELVAS_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="requestId" target="requestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_2" />
+    <bpmn2:scriptTask id="ScriptTask_2" name="Set Success Indicator" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[// The following variable is checked by the unit test
+execution.setVariable("DeleteVcpeResCustServiceSuccessIndicator", true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_2" targetRef="DeleteVCPE_EndEvent" />
+    <bpmn2:endEvent id="DeleteVCPE_EndEvent" name="End">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_13" />
+    </bpmn2:endEvent>
+    <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1">
+        <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1">
+        <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" />
+      <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+def DeleteServiceInstanceInfra = new DeleteServiceInstanceInfra()
+DeleteServiceInstanceInfra.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" />
+    </bpmn2:subProcess>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_4" name="FinishProcess">
+      <bpmn2:outgoing>SequenceFlow_12ilko1</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_39" name="FinishProcess" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:callActivity id="doDeleteServiceInstance_CallActivity" name="DoDelete&#10;ServiceInstance&#10;" calledElement="DoDeleteServiceInstance">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:out source="rollbackData" target="DCRESI_rollbackData" />
+        <camunda:in source="failExists" target="failExists" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:out source="rolledBack" target="DCRESI_rolledBack" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="sdncVersion" target="sdncVersion" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_10o22u2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04ao07f</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_2" name="GoQueryServiceInstance">
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_38" name="QueryServiceInstance" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:subProcess id="SubProcess_0s6hpty" name="Subprocess For Exception / FalloutHandler " triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1bwmffk" name="Fault Start">
+        <bpmn2:outgoing>SequenceFlow_06llof4</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:callActivity id="CallActivity_0jw5tqa" name="Call FalloutHandlerV1" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="DELVAS_falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="msoRequestId" target="mso-request-id" />
+          <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
+          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
+          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_0807ukc</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19yywk8</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:endEvent id="EndEvent_04xute7">
+        <bpmn2:incoming>SequenceFlow_19yywk8</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_0yk02h3" name="Prepare FalloutHandler" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_06llof4</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0807ukc</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+def DeleteVcpeResCustService = new DeleteVcpeResCustService()
+DeleteVcpeResCustService.prepareFalloutRequest(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_0807ukc" sourceRef="ScriptTask_0yk02h3" targetRef="CallActivity_0jw5tqa" />
+      <bpmn2:sequenceFlow id="SequenceFlow_19yywk8" sourceRef="CallActivity_0jw5tqa" targetRef="EndEvent_04xute7" />
+      <bpmn2:sequenceFlow id="SequenceFlow_06llof4" sourceRef="StartEvent_1bwmffk" targetRef="ScriptTask_0yk02h3" />
+    </bpmn2:subProcess>
+    <bpmn2:sequenceFlow id="SequenceFlow_10o22u2" sourceRef="IntermediateCatchEvent_3" targetRef="doDeleteServiceInstance_CallActivity" />
+    <bpmn2:sequenceFlow id="SequenceFlow_12ilko1" sourceRef="IntermediateCatchEvent_4" targetRef="postProcessAndCompletionRequest_ScriptTask" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0prlju0" name="GoTo FinishProcess">
+      <bpmn2:incoming>SequenceFlow_04ao07f</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="FinishProcess" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:callActivity id="callGetServiceInstance" name="Get&#10;Service&#10;Instance" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="GENGS_type" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0jek18q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ttswdr</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_05m3m2e" name="Process Response &#38; ready data for subflows" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1ttswdr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_18103ca</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+def DeleteVcpeResCustService = new DeleteVcpeResCustService()
+DeleteVcpeResCustService.prepareServiceDelete(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_112zjtp" name="QueryServiceInstance">
+      <bpmn2:outgoing>SequenceFlow_0jek18q</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="QueryServiceInstance" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_162gs5w" name="GoToDeleteBRG">
+      <bpmn2:incoming>SequenceFlow_18103ca</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="DeleteBRG" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0jek18q" sourceRef="IntermediateCatchEvent_112zjtp" targetRef="callGetServiceInstance" />
+    <bpmn2:sequenceFlow id="SequenceFlow_18103ca" sourceRef="ScriptTask_05m3m2e" targetRef="IntermediateThrowEvent_162gs5w" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04ao07f" sourceRef="doDeleteServiceInstance_CallActivity" targetRef="IntermediateThrowEvent_0prlju0" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ttswdr" sourceRef="callGetServiceInstance" targetRef="ScriptTask_05m3m2e" />
+    <bpmn2:callActivity id="CallActivity_1yap348" name="Delete BRG Resources&#10;" calledElement="DoDeleteAllottedResourceBRG">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="parentServiceInstanceId" target="parentServiceInstanceId" />
+        <camunda:in source="BRG_allottedResourceId" target="allottedResourceId" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_05cjs89</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0snq0kw</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0i8bmrc" name="GoToVCPE-CUSREST">
+      <bpmn2:incoming>SequenceFlow_0zaircn</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="vCPE-CUSREST" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_04bw3vy" name="DeleteBRG">
+      <bpmn2:outgoing>SequenceFlow_09i2jj0</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="DeleteBRG" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0gw5gmo" name="Delete BRG AR?" default="SequenceFlow_03n4wb1">
+      <bpmn2:incoming>SequenceFlow_09i2jj0</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_05cjs89</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_03n4wb1</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1hmeube">
+      <bpmn2:incoming>SequenceFlow_0snq0kw</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_03n4wb1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1jjh8rv</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_12i24vc" name="Delete TXC AR?" default="SequenceFlow_0nk8vsb">
+      <bpmn2:incoming>SequenceFlow_0xgpd0u</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0nk8vsb</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0npvfo3</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0190r3n">
+      <bpmn2:incoming>SequenceFlow_0nk8vsb</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0et9p0i</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0zaircn</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_05cjs89" name="Yes" sourceRef="ExclusiveGateway_0gw5gmo" targetRef="CallActivity_1yap348">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DELVAS_BRG") == null || execution.getVariable("DELVAS_BRG") == true }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0snq0kw" sourceRef="CallActivity_1yap348" targetRef="ExclusiveGateway_1hmeube" />
+    <bpmn2:sequenceFlow id="SequenceFlow_09i2jj0" sourceRef="IntermediateCatchEvent_04bw3vy" targetRef="ExclusiveGateway_0gw5gmo" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0zaircn" sourceRef="ExclusiveGateway_0190r3n" targetRef="IntermediateThrowEvent_0i8bmrc" />
+    <bpmn2:sequenceFlow id="SequenceFlow_03n4wb1" name="No" sourceRef="ExclusiveGateway_0gw5gmo" targetRef="ExclusiveGateway_1hmeube" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1jjh8rv" sourceRef="ExclusiveGateway_1hmeube" targetRef="IntermediateThrowEvent_19nq9li" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0nk8vsb" name="No" sourceRef="ExclusiveGateway_12i24vc" targetRef="ExclusiveGateway_0190r3n" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0npvfo3" name="Yes" sourceRef="ExclusiveGateway_12i24vc" targetRef="CallActivity_00g5q0n">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DELVAS_TunnelXConn") == null || execution.getVariable("DELVAS_TunnelXConn") == true }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:callActivity id="CallActivity_00g5q0n" name="Delete TXC Allotted Resources&#10;" calledElement="DoDeleteAllottedResourceTXC">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="parentServiceInstanceId" target="parentServiceInstanceId" />
+        <camunda:in source="TXC_allottedResourceId" target="allottedResourceId" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0npvfo3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0et9p0i</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0et9p0i" sourceRef="CallActivity_00g5q0n" targetRef="ExclusiveGateway_0190r3n" />
+    <bpmn2:callActivity id="CallActivity_14j22w3" name="DoDelete&#10;VNF and Modules&#10;" calledElement="DoDeleteVnfAndModules">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="sdncVersion" target="sdncVersion" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="tenantId" target="tenantId" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_128485i</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04fys47</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1csw2q1" name="Prepare to Delete VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1yamcyn</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_19cxgtm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_128485i</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infra.scripts.*
+def DeleteGenericMacroServiceNetworkVnf= new DeleteGenericMacroServiceNetworkVnf()
+DeleteGenericMacroServiceNetworkVnf.prepareVnfAndModulesDelete(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1ks536f" name="GoToDeleteTXC">
+      <bpmn2:incoming>SequenceFlow_1lfph6u</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="DeleteTXC" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0hy32qu" name="StartVnfs">
+      <bpmn2:outgoing>SequenceFlow_1ofw0fi</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartVnfs" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0io2vo5" name="Delete VNF?" default="SequenceFlow_0vq7f6b">
+      <bpmn2:incoming>SequenceFlow_1ofw0fi</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1yamcyn</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0vq7f6b</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1bm1vby">
+      <bpmn2:incoming>SequenceFlow_0vq7f6b</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_10scc5r</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lfph6u</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:scriptTask id="ScriptTask_0wqfeak" name="Validate VNF delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_04fys47</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1o5cutr</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infra.scripts.*
+def DeleteGenericMacroServiceNetworkVnf= new DeleteGenericMacroServiceNetworkVnf()
+DeleteGenericMacroServiceNetworkVnf.validateVnfDelete(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_14hjmu4" name="Delete Additional VNFs?" default="SequenceFlow_10scc5r">
+      <bpmn2:incoming>SequenceFlow_1o5cutr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_19cxgtm</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_10scc5r</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_128485i" sourceRef="ScriptTask_1csw2q1" targetRef="CallActivity_14j22w3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04fys47" sourceRef="CallActivity_14j22w3" targetRef="ScriptTask_0wqfeak" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1yamcyn" name="Yes" sourceRef="ExclusiveGateway_0io2vo5" targetRef="ScriptTask_1csw2q1">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELGMSNV_vnfsCount") > 0}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_19cxgtm" name="Yes" sourceRef="ExclusiveGateway_14hjmu4" targetRef="ScriptTask_1csw2q1">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELGMSNV_vnfsDeletedCountt") < execution.getVariable("DELGMSNV_vnfsCount")}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1lfph6u" sourceRef="ExclusiveGateway_1bm1vby" targetRef="IntermediateThrowEvent_1ks536f" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ofw0fi" sourceRef="IntermediateCatchEvent_0hy32qu" targetRef="ExclusiveGateway_0io2vo5" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0vq7f6b" name="No" sourceRef="ExclusiveGateway_0io2vo5" targetRef="ExclusiveGateway_1bm1vby" />
+    <bpmn2:sequenceFlow id="SequenceFlow_10scc5r" name="No" sourceRef="ExclusiveGateway_14hjmu4" targetRef="ExclusiveGateway_1bm1vby" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1o5cutr" sourceRef="ScriptTask_0wqfeak" targetRef="ExclusiveGateway_14hjmu4" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_19nq9li" name="GoToStartVnfs">
+      <bpmn2:incoming>SequenceFlow_1jjh8rv</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartVnfs" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1svwsxy" name="DeleteTXC">
+      <bpmn2:outgoing>SequenceFlow_0xgpd0u</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="DeleteTXC" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0xgpd0u" sourceRef="IntermediateCatchEvent_1svwsxy" targetRef="ExclusiveGateway_12i24vc" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteVcpeResCustService">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createVCPE_startEvent">
+        <dc:Bounds x="96" y="121" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="90" y="162" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="285" y="99" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="132" y="139" />
+        <di:waypoint xsi:type="dc:Point" x="285" y="139" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="174" y="139" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_4" bpmnElement="callCompleteMsoProcess_CallActivity">
+        <dc:Bounds x="476" y="1192" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask">
+        <dc:Bounds x="285" y="1193" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_127">
+        <di:waypoint xsi:type="dc:Point" x="385" y="139" />
+        <di:waypoint xsi:type="dc:Point" x="476" y="139" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="274" y="100" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="sendSyncAckResponse_ScriptTask">
+        <dc:Bounds x="476" y="99" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80" targetElement="_BPMNShape_CallActivity_4">
+        <di:waypoint xsi:type="dc:Point" x="385" y="1233" />
+        <di:waypoint xsi:type="dc:Point" x="476" y="1232" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="431" y="1217.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="DeleteVCPE_EndEvent">
+        <dc:Bounds x="1046" y="1213" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1054" y="1254" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_CallActivity_4" targetElement="_BPMNShape_ScriptTask_337">
+        <di:waypoint xsi:type="dc:Point" x="576" y="1233" />
+        <di:waypoint xsi:type="dc:Point" x="636" y="1233" />
+        <di:waypoint xsi:type="dc:Point" x="636" y="1230" />
+        <di:waypoint xsi:type="dc:Point" x="803" y="1230" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="651" y="1231.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true">
+        <dc:Bounds x="686" y="1374" width="405" height="205" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1">
+        <dc:Bounds x="754" y="1479" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="772" y="1520" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="829" y="1457" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1">
+        <dc:Bounds x="982" y="1479" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1000" y="1520" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269">
+        <di:waypoint xsi:type="dc:Point" x="790" y="1497" />
+        <di:waypoint xsi:type="dc:Point" x="829" y="1497" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="818" y="1497" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219">
+        <di:waypoint xsi:type="dc:Point" x="929" y="1497" />
+        <di:waypoint xsi:type="dc:Point" x="962" y="1497" />
+        <di:waypoint xsi:type="dc:Point" x="962" y="1497" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="1497" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="977" y="1497" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_75" bpmnElement="doDeleteServiceInstance_CallActivity">
+        <dc:Bounds x="285" y="1009" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_127">
+        <di:waypoint xsi:type="dc:Point" x="576" y="139" />
+        <di:waypoint xsi:type="dc:Point" x="728" y="139" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="652" y="124" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_337" bpmnElement="ScriptTask_2">
+        <dc:Bounds x="803" y="1191" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_337" targetElement="_BPMNShape_EndEvent_177">
+        <di:waypoint xsi:type="dc:Point" x="903" y="1230" />
+        <di:waypoint xsi:type="dc:Point" x="1046" y="1231" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="975" y="1215.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_35" bpmnElement="IntermediateCatchEvent_3">
+        <dc:Bounds x="100" y="1031" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="92" y="1067" width="51" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_36" bpmnElement="IntermediateCatchEvent_4">
+        <dc:Bounds x="100" y="1216" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="82" y="1252" width="71" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_49" bpmnElement="IntermediateThrowEvent_2">
+        <dc:Bounds x="728" y="121" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="703" y="162" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0s6hpty_di" bpmnElement="SubProcess_0s6hpty" isExpanded="true">
+        <dc:Bounds x="52" y="1375" width="598" height="203" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1bwmffk_di" bpmnElement="StartEvent_1bwmffk">
+        <dc:Bounds x="123" y="1448" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="117" y="1489" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0jw5tqa_di" bpmnElement="CallActivity_0jw5tqa">
+        <dc:Bounds x="384" y="1426" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_04xute7_di" bpmnElement="EndEvent_04xute7">
+        <dc:Bounds x="539" y="1448" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="557" y="1489" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0yk02h3_di" bpmnElement="ScriptTask_0yk02h3">
+        <dc:Bounds x="237" y="1426" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_10o22u2_di" bpmnElement="SequenceFlow_10o22u2">
+        <di:waypoint xsi:type="dc:Point" x="136" y="1049" />
+        <di:waypoint xsi:type="dc:Point" x="285" y="1049" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="211" y="1034" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12ilko1_di" bpmnElement="SequenceFlow_12ilko1">
+        <di:waypoint xsi:type="dc:Point" x="136" y="1234" />
+        <di:waypoint xsi:type="dc:Point" x="285" y="1233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="211" y="1218.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0807ukc_di" bpmnElement="SequenceFlow_0807ukc">
+        <di:waypoint xsi:type="dc:Point" x="337" y="1466" />
+        <di:waypoint xsi:type="dc:Point" x="384" y="1466" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="361" y="1451" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19yywk8_di" bpmnElement="SequenceFlow_19yywk8">
+        <di:waypoint xsi:type="dc:Point" x="484" y="1466" />
+        <di:waypoint xsi:type="dc:Point" x="539" y="1466" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="512" y="1451" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0prlju0_di" bpmnElement="IntermediateThrowEvent_0prlju0">
+        <dc:Bounds x="508" y="1031" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="491" y="1072" width="70" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0nmoax4_di" bpmnElement="callGetServiceInstance">
+        <dc:Bounds x="285" y="254" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_05m3m2e_di" bpmnElement="ScriptTask_05m3m2e">
+        <dc:Bounds x="476" y="254" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_112zjtp_di" bpmnElement="IntermediateCatchEvent_112zjtp">
+        <dc:Bounds x="96" y="276" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="72" y="312" width="81" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_162gs5w_di" bpmnElement="IntermediateThrowEvent_162gs5w">
+        <dc:Bounds x="732" y="276" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="708" y="317" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jek18q_di" bpmnElement="SequenceFlow_0jek18q">
+        <di:waypoint xsi:type="dc:Point" x="132" y="294" />
+        <di:waypoint xsi:type="dc:Point" x="285" y="294" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="209" y="279" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18103ca_di" bpmnElement="SequenceFlow_18103ca">
+        <di:waypoint xsi:type="dc:Point" x="576" y="294" />
+        <di:waypoint xsi:type="dc:Point" x="732" y="294" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="654" y="279" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04ao07f_di" bpmnElement="SequenceFlow_04ao07f">
+        <di:waypoint xsi:type="dc:Point" x="385" y="1049" />
+        <di:waypoint xsi:type="dc:Point" x="508" y="1049" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="447" y="1034" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ttswdr_di" bpmnElement="SequenceFlow_1ttswdr">
+        <di:waypoint xsi:type="dc:Point" x="385" y="294" />
+        <di:waypoint xsi:type="dc:Point" x="422" y="294" />
+        <di:waypoint xsi:type="dc:Point" x="422" y="294" />
+        <di:waypoint xsi:type="dc:Point" x="476" y="294" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="437" y="294" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06llof4_di" bpmnElement="SequenceFlow_06llof4">
+        <di:waypoint xsi:type="dc:Point" x="159" y="1466" />
+        <di:waypoint xsi:type="dc:Point" x="237" y="1466" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="198" y="1441" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1yap348_di" bpmnElement="CallActivity_1yap348">
+        <dc:Bounds x="346" y="356" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0i8bmrc_di" bpmnElement="IntermediateThrowEvent_0i8bmrc">
+        <dc:Bounds x="1046" y="479" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1023" y="520" width="85" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_04bw3vy_di" bpmnElement="IntermediateCatchEvent_04bw3vy">
+        <dc:Bounds x="96" y="489" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="87" y="525" width="56" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0gw5gmo_di" bpmnElement="ExclusiveGateway_0gw5gmo" isMarkerVisible="true">
+        <dc:Bounds x="235" y="482" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="294" y="495" width="86" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1hmeube_di" bpmnElement="ExclusiveGateway_1hmeube" isMarkerVisible="true">
+        <dc:Bounds x="501" y="462" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="526" y="512" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_12i24vc_di" bpmnElement="ExclusiveGateway_12i24vc" isMarkerVisible="true">
+        <dc:Bounds x="658" y="462" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="715" y="475" width="84" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0190r3n_di" bpmnElement="ExclusiveGateway_0190r3n" isMarkerVisible="true">
+        <dc:Bounds x="911" y="472" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="936" y="522" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_05cjs89_di" bpmnElement="SequenceFlow_05cjs89">
+        <di:waypoint xsi:type="dc:Point" x="260" y="482" />
+        <di:waypoint xsi:type="dc:Point" x="260" y="396" />
+        <di:waypoint xsi:type="dc:Point" x="346" y="396" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="267" y="429" width="17" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0snq0kw_di" bpmnElement="SequenceFlow_0snq0kw">
+        <di:waypoint xsi:type="dc:Point" x="446" y="396" />
+        <di:waypoint xsi:type="dc:Point" x="527" y="396" />
+        <di:waypoint xsi:type="dc:Point" x="527" y="463" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="487" y="381" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_09i2jj0_di" bpmnElement="SequenceFlow_09i2jj0">
+        <di:waypoint xsi:type="dc:Point" x="132" y="507" />
+        <di:waypoint xsi:type="dc:Point" x="235" y="507" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="184" y="492" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zaircn_di" bpmnElement="SequenceFlow_0zaircn">
+        <di:waypoint xsi:type="dc:Point" x="961" y="497" />
+        <di:waypoint xsi:type="dc:Point" x="1004" y="497" />
+        <di:waypoint xsi:type="dc:Point" x="1004" y="497" />
+        <di:waypoint xsi:type="dc:Point" x="1046" y="497" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1019" y="497" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_03n4wb1_di" bpmnElement="SequenceFlow_03n4wb1">
+        <di:waypoint xsi:type="dc:Point" x="260" y="532" />
+        <di:waypoint xsi:type="dc:Point" x="260" y="567" />
+        <di:waypoint xsi:type="dc:Point" x="526" y="567" />
+        <di:waypoint xsi:type="dc:Point" x="526" y="512" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="389" y="552" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jjh8rv_di" bpmnElement="SequenceFlow_1jjh8rv">
+        <di:waypoint xsi:type="dc:Point" x="551" y="487" />
+        <di:waypoint xsi:type="dc:Point" x="576" y="487" />
+        <di:waypoint xsi:type="dc:Point" x="576" y="562" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="518.5" y="472" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0nk8vsb_di" bpmnElement="SequenceFlow_0nk8vsb">
+        <di:waypoint xsi:type="dc:Point" x="683" y="512" />
+        <di:waypoint xsi:type="dc:Point" x="683" y="557" />
+        <di:waypoint xsi:type="dc:Point" x="936" y="557" />
+        <di:waypoint xsi:type="dc:Point" x="936" y="522" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="803" y="542" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0npvfo3_di" bpmnElement="SequenceFlow_0npvfo3">
+        <di:waypoint xsi:type="dc:Point" x="683" y="462" />
+        <di:waypoint xsi:type="dc:Point" x="683" y="396" />
+        <di:waypoint xsi:type="dc:Point" x="770" y="396" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="693" y="433" width="17" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_00g5q0n_di" bpmnElement="CallActivity_00g5q0n">
+        <dc:Bounds x="771" y="356" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0et9p0i_di" bpmnElement="SequenceFlow_0et9p0i">
+        <di:waypoint xsi:type="dc:Point" x="871" y="396" />
+        <di:waypoint xsi:type="dc:Point" x="936" y="396" />
+        <di:waypoint xsi:type="dc:Point" x="936" y="472" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="904" y="381" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_14j22w3_di" bpmnElement="CallActivity_14j22w3">
+        <dc:Bounds x="578" y="759" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1csw2q1_di" bpmnElement="ScriptTask_1csw2q1">
+        <dc:Bounds x="436" y="759" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1ks536f_di" bpmnElement="IntermediateThrowEvent_1ks536f">
+        <dc:Bounds x="1059" y="848" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1033" y="889" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0hy32qu_di" bpmnElement="IntermediateCatchEvent_0hy32qu">
+        <dc:Bounds x="109" y="864" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="102" y="900" width="48" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0io2vo5_di" bpmnElement="ExclusiveGateway_0io2vo5" isMarkerVisible="true">
+        <dc:Bounds x="358" y="857" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="417" y="889" width="65" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1bm1vby_di" bpmnElement="ExclusiveGateway_1bm1vby" isMarkerVisible="true">
+        <dc:Bounds x="924" y="841" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="904" y="896" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0wqfeak_di" bpmnElement="ScriptTask_0wqfeak">
+        <dc:Bounds x="710" y="759" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_14hjmu4_di" bpmnElement="ExclusiveGateway_14hjmu4" isMarkerVisible="true">
+        <dc:Bounds x="851" y="774" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="818" y="832" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_128485i_di" bpmnElement="SequenceFlow_128485i">
+        <di:waypoint xsi:type="dc:Point" x="536" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="578" y="799" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="512" y="784" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04fys47_di" bpmnElement="SequenceFlow_04fys47">
+        <di:waypoint xsi:type="dc:Point" x="678" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="710" y="799" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="649" y="774" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yamcyn_di" bpmnElement="SequenceFlow_1yamcyn">
+        <di:waypoint xsi:type="dc:Point" x="383" y="857" />
+        <di:waypoint xsi:type="dc:Point" x="383" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="436" y="799" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="388" y="818" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19cxgtm_di" bpmnElement="SequenceFlow_19cxgtm">
+        <di:waypoint xsi:type="dc:Point" x="876" y="774" />
+        <di:waypoint xsi:type="dc:Point" x="876" y="688" />
+        <di:waypoint xsi:type="dc:Point" x="486" y="688" />
+        <di:waypoint xsi:type="dc:Point" x="486" y="759" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="671" y="670" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lfph6u_di" bpmnElement="SequenceFlow_1lfph6u">
+        <di:waypoint xsi:type="dc:Point" x="974" y="866" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="866" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="972.5" y="841" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ofw0fi_di" bpmnElement="SequenceFlow_1ofw0fi">
+        <di:waypoint xsi:type="dc:Point" x="145" y="882" />
+        <di:waypoint xsi:type="dc:Point" x="358" y="882" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="207.5" y="857" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vq7f6b_di" bpmnElement="SequenceFlow_0vq7f6b">
+        <di:waypoint xsi:type="dc:Point" x="383" y="908" />
+        <di:waypoint xsi:type="dc:Point" x="383" y="931" />
+        <di:waypoint xsi:type="dc:Point" x="949" y="931" />
+        <di:waypoint xsi:type="dc:Point" x="949" y="892" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="628" y="907" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_10scc5r_di" bpmnElement="SequenceFlow_10scc5r">
+        <di:waypoint xsi:type="dc:Point" x="901" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="949" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="949" y="841" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="917" y="784" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1o5cutr_di" bpmnElement="SequenceFlow_1o5cutr">
+        <di:waypoint xsi:type="dc:Point" x="810" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="851" y="799" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="786.5" y="784" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_19nq9li_di" bpmnElement="IntermediateThrowEvent_19nq9li">
+        <dc:Bounds x="558" y="562" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="537" y="603" width="80" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1svwsxy_di" bpmnElement="IntermediateCatchEvent_1svwsxy">
+        <dc:Bounds x="591" y="378" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="590" y="362" width="56" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xgpd0u_di" bpmnElement="SequenceFlow_0xgpd0u">
+        <di:waypoint xsi:type="dc:Point" x="609" y="414" />
+        <di:waypoint xsi:type="dc:Point" x="609" y="487" />
+        <di:waypoint xsi:type="dc:Point" x="658" y="487" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="624" y="444.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceBRG.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceBRG.bpmn
new file mode 100644
index 0000000..c1cb102
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceBRG.bpmn
@@ -0,0 +1,735 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateAllottedResourceBRG" name="DoCreateAllottedResourceBRG" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="initialization" targetRef="GetAAIServiceInstance" />
+    <bpmn2:scriptTask id="buildWorkflowException" name="Create Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>notFound</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.utils.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildWorkflowException(execution, 404, "Input Service Instance Id Not Found in AAI")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="buildWorkflowException" targetRef="EndEvent_1" />
+    <bpmn2:callActivity id="GetAAIServiceInstance" name="Get AAI Service Instance" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:out source="GENGS_FoundIndicator" target="CSI_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="CSI_SuccessIndicator" />
+        <camunda:out source="GENGS_serviceInstance" target="CSI_serviceInstance" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_resourceLink" target="CSI_resourceLink" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_service" target="CSI_service" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="GetAAIServiceInstance" targetRef="ServiceInstanceExists" />
+    <bpmn2:exclusiveGateway id="ServiceInstanceExists" name="Service Instance Exists in AAI?" default="notFound">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:outgoing>notFound</bpmn2:outgoing>
+      <bpmn2:outgoing>found</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="notFound" name="No" sourceRef="ServiceInstanceExists" targetRef="buildWorkflowException" />
+    <bpmn2:scriptTask id="GetAAIAR" name="Get AAI AR" scriptFormat="groovy">
+      <bpmn2:incoming>found</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0gbsa12</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.getAaiAR(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_1">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="CreateAAIAR" name="Create AAI  AR&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_17p4ohs</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.createAaiAR(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="CreateAAIAR" targetRef="IntermediateThrowEvent_1lqaeh8" />
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_09xwplc</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="PreProcessSDNCAssign" targetRef="SDNCAssign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCAssign" targetRef="PostProcessSDNCAssign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCAssign" targetRef="PreProcessSDNCCreate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="PreProcessSDNCCreate" targetRef="SDNCCreate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCCreate" targetRef="postProcessSDNCCreate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCCreate" targetRef="UpdateAAIARCreated" />
+    <bpmn2:scriptTask id="PreProcessSDNCAssign" name="PreProcess SDNC Assign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.preProcessSDNCAssign(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCAssign" name="SDNC Assign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncAssignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncAssignResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCAssign" name="PostProcess SDNC Assign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncAssignResponse")
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.validateSDNCResp(execution, response, "assign" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCCreate" name="PreProcess SDNC Create" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.preProcessSDNCCreate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCCreate" name="SDNC Create" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncCreateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncCreateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCCreate" name="PostProcess SDNC Create " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncCreateResponse")
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.validateSDNCResp(execution, response, "create" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCActivate" name="PreProcess SDNC Activate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_04t1zc2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_06w33tk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.preProcessSDNCActivate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCActivate" name="SDNC Activate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncActivateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncActivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_06w33tk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCActivate" name="PostProcess SDNC Activate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncActivateResponse")
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.validateSDNCResp(execution, response, "activate" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_06w33tk" sourceRef="PreProcessSDNCActivate" targetRef="SDNCActivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCActivate" targetRef="PostProcessSDNCActivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCActivate" targetRef="UpdateAAIARActive" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04t1zc2" sourceRef="UpdateAAIARCreated" targetRef="PreProcessSDNCActivate" />
+    <bpmn2:callActivity id="SDNCGet" name="SDNC Get" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncGetRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncGetResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:out source="enhancedCallbackRequestData" target="enhancedCallbackRequestData" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_030mhcm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0q1hz2p</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1iy3cqb" sourceRef="postProcessSDNCGetResponse" targetRef="generateOutputs" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1dgzhsm" sourceRef="UpdateAAIARActive" targetRef="PreProcessSDNCGet" />
+    <bpmn2:callActivity id="GetAAIParentSI" name="Get AAI  Parent ServiceInstance&#10;" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="parentServiceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_SuccessIndicator" target="PSI_SuccessIndicator" />
+        <camunda:out source="GENGS_FoundIndicator" target="PSI_FoundIndicator" />
+        <camunda:out source="GENGS_serviceInstance" target="PSI_serviceInstance" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_resourceLink" target="PSI_resourceLink" />
+        <camunda:out source="GENGS_service" target="PSI_service" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1m8u8dl</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1vg5rfa</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1vg5rfa" sourceRef="GetAAIParentSI" targetRef="ParentSIExists" />
+    <bpmn2:exclusiveGateway id="ParentSIExists" name="Parent Service Instance Exists in AAI?" default="SequenceFlow_0f7u5pu">
+      <bpmn2:incoming>SequenceFlow_1vg5rfa</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17p4ohs</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0f7u5pu</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_17p4ohs" name="Yes" sourceRef="ParentSIExists" targetRef="CreateAAIAR">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("PSI_FoundIndicator" ) == true && execution.getVariable("PSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="ScriptTask_1hzsbck" name="Create Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0f7u5pu</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16o7col</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.utils.*
+
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildWorkflowException(execution, 404, "BRG alloted resource Parent ServiceInstance:"  +  
+execution.getVariable("parentServiceInstanceId") +
+ " was not found in AAI")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_0x4moh8">
+      <bpmn2:incoming>SequenceFlow_16o7col</bpmn2:incoming>
+      <bpmn2:errorEventDefinition errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0f7u5pu" name="No" sourceRef="ParentSIExists" targetRef="ScriptTask_1hzsbck" />
+    <bpmn2:sequenceFlow id="SequenceFlow_16o7col" sourceRef="ScriptTask_1hzsbck" targetRef="EndEvent_0x4moh8" />
+    <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Application Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1ibe7qx">
+        <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1fgqhmi">
+        <bpmn2:incoming>SequenceFlow_0t4ut76</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_0ji3121" name="Pre Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.preProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="ScriptTask_1kgumd4" name="Post Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1cxj4yz</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0t4ut76</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.postProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ScriptTask_0ji3121" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0t4ut76" sourceRef="ScriptTask_1kgumd4" targetRef="EndEvent_1fgqhmi" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ScriptTask_0ji3121" targetRef="CallActivity_0s6hs9u" />
+      <bpmn2:callActivity id="CallActivity_0s6hs9u" name="Rollback Create" calledElement="DoCreateAllottedResourceBRGRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <camunda:in source="disableRollback" target="disableRollback" />
+          <camunda:out source="rolledBack" target="rolledBack" />
+          <camunda:out source="rollbackError" target="rollbackError" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1cxj4yz</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_1cxj4yz" sourceRef="CallActivity_0s6hs9u" targetRef="ScriptTask_1kgumd4" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="UpdateAAIARActive" name="Update AAI AR Active" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1dgzhsm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.updateAaiAROrchStatus(execution, "Active")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="UpdateAAIARCreated" name="Update AAI AR Created" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04t1zc2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.updateAaiAROrchStatus(execution, "Created")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCGet" name="PreProcess SDNC Get" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1dgzhsm</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0z8luou</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_030mhcm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.preProcessSDNCGet(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="postProcessSDNCGetResponse" name="PostProcess SDNC Get" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0q1hz2p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1iy3cqb</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncGetResponse")
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.validateSDNCResp(execution, response, "get" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_030mhcm" sourceRef="PreProcessSDNCGet" targetRef="SDNCGet" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0q1hz2p" sourceRef="SDNCGet" targetRef="postProcessSDNCGetResponse" />
+    <bpmn2:exclusiveGateway id="ActiveARinAAI" name="Active AR Exists in AAI?" default="SequenceFlow_1m8u8dl">
+      <bpmn2:incoming>SequenceFlow_0gbsa12</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1m8u8dl</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0z8luou</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1m8u8dl" name="No" sourceRef="ActiveARinAAI" targetRef="GetAAIParentSI" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0z8luou" name="yes" sourceRef="ActiveARinAAI" targetRef="PreProcessSDNCGet">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("foundActiveAR" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks">
+      <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="PreProcessSDNCAssign" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1lqaeh8" name="To SDNCTasks">
+      <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="found" name="Yes" sourceRef="ServiceInstanceExists" targetRef="GetAAIAR">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CSI_FoundIndicator" ) == true && execution.getVariable("CSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gbsa12" sourceRef="GetAAIAR" targetRef="ActiveARinAAI" />
+    <bpmn2:scriptTask id="generateOutputs" name="Generate Outputs" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1iy3cqb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_09xwplc</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.generateOutputs(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_09xwplc" sourceRef="generateOutputs" targetRef="EndEvent_3" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" />
+  <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceBRG">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="-91" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-73" y="263" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="19" y="199" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="-55" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="19" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-18" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="119" y="239" />
+        <di:waypoint xsi:type="dc:Point" x="195" y="239" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="157" y="224" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_59" bpmnElement="GetAAIServiceInstance">
+        <dc:Bounds x="195" y="199" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_229" bpmnElement="ServiceInstanceExists" isMarkerVisible="true">
+        <dc:Bounds x="367" y="217" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="349" y="270" width="83" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_CallActivity_59" targetElement="_BPMNShape_ExclusiveGateway_229">
+        <di:waypoint xsi:type="dc:Point" x="295" y="239" />
+        <di:waypoint xsi:type="dc:Point" x="369" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="332" y="224.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_293" bpmnElement="buildWorkflowException">
+        <dc:Bounds x="342" y="85" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="notFound" sourceElement="_BPMNShape_ExclusiveGateway_229" targetElement="_BPMNShape_ScriptTask_293">
+        <di:waypoint xsi:type="dc:Point" x="392" y="217" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="371" y="192.6917250252067" width="14" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_225" bpmnElement="EndEvent_1">
+        <dc:Bounds x="374" y="-11" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="392" y="30" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_293" targetElement="_BPMNShape_EndEvent_225">
+        <di:waypoint xsi:type="dc:Point" x="392" y="85" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="58" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="58" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="25" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="407" y="58" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="GetAAIAR">
+        <dc:Bounds x="506" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_300" bpmnElement="CreateAAIAR">
+        <dc:Bounds x="1206" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1527" y="776" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1545" y="817" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_300">
+        <di:waypoint xsi:type="dc:Point" x="1306" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1338" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1408" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1322" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm">
+        <di:waypoint xsi:type="dc:Point" x="92" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="609.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q">
+        <di:waypoint xsi:type="dc:Point" x="92" y="710" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="727.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o">
+        <di:waypoint xsi:type="dc:Point" x="142" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="309" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="220" y="665" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp">
+        <di:waypoint xsi:type="dc:Point" x="359" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="604.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb">
+        <di:waypoint xsi:type="dc:Point" x="359" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq">
+        <di:waypoint xsi:type="dc:Point" x="409" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="709" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="485" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="PreProcessSDNCAssign">
+        <dc:Bounds x="42" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCAssign">
+        <dc:Bounds x="42" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCAssign">
+        <dc:Bounds x="42" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="PreProcessSDNCCreate">
+        <dc:Bounds x="309" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCCreate">
+        <dc:Bounds x="309" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCCreate">
+        <dc:Bounds x="309" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0zm728u_di" bpmnElement="PreProcessSDNCActivate">
+        <dc:Bounds x="702" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCActivate">
+        <dc:Bounds x="702" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCActivate">
+        <dc:Bounds x="702" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_06w33tk_di" bpmnElement="SequenceFlow_06w33tk">
+        <di:waypoint xsi:type="dc:Point" x="752" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="752" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="767" y="609.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq">
+        <di:waypoint xsi:type="dc:Point" x="752" y="705" />
+        <di:waypoint xsi:type="dc:Point" x="752" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="752" y="742" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="767" y="715" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43">
+        <di:waypoint xsi:type="dc:Point" x="802" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="963" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="963" y="704" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="883" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04t1zc2_di" bpmnElement="SequenceFlow_04t1zc2">
+        <di:waypoint xsi:type="dc:Point" x="560" y="621" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="702" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="575" y="588" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1pfpn41_di" bpmnElement="SDNCGet">
+        <dc:Bounds x="1143" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1iy3cqb_di" bpmnElement="SequenceFlow_1iy3cqb">
+        <di:waypoint xsi:type="dc:Point" x="1240" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="1313" y="794" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1277" y="779" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dgzhsm_di" bpmnElement="SequenceFlow_1dgzhsm">
+        <di:waypoint xsi:type="dc:Point" x="964" y="624" />
+        <di:waypoint xsi:type="dc:Point" x="964" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="1140" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="979" y="584.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0e73um9_di" bpmnElement="GetAAIParentSI">
+        <dc:Bounds x="843" y="199" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vg5rfa_di" bpmnElement="SequenceFlow_1vg5rfa">
+        <di:waypoint xsi:type="dc:Point" x="943" y="239" />
+        <di:waypoint xsi:type="dc:Point" x="1033" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="988" y="224.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1q51t9m_di" bpmnElement="ParentSIExists" isMarkerVisible="true">
+        <dc:Bounds x="1033" y="215" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1012" y="265" width="92" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_17p4ohs_di" bpmnElement="SequenceFlow_17p4ohs">
+        <di:waypoint xsi:type="dc:Point" x="1083" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1206" y="241" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1127" y="222" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1hzsbck_di" bpmnElement="ScriptTask_1hzsbck">
+        <dc:Bounds x="1008" y="77" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0x4moh8_di" bpmnElement="EndEvent_0x4moh8">
+        <dc:Bounds x="1040" y="6" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1058" y="47" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0f7u5pu_di" bpmnElement="SequenceFlow_0f7u5pu">
+        <di:waypoint xsi:type="dc:Point" x="1058" y="215" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="186" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="157" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1034" y="173.413457125764" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_16o7col_di" bpmnElement="SequenceFlow_16o7col">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="77" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="42" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1074" y="59.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true">
+        <dc:Bounds x="53" y="910" width="783" height="195" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx">
+        <dc:Bounds x="150" y="987" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="168" y="1028" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi">
+        <dc:Bounds x="783" y="987" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="801" y="1028" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ScriptTask_0ji3121">
+        <dc:Bounds x="245" y="965" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1kgumd4_di" bpmnElement="ScriptTask_1kgumd4">
+        <dc:Bounds x="616" y="965" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs">
+        <di:waypoint xsi:type="dc:Point" x="186" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="245" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="216" y="990" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t4ut76_di" bpmnElement="SequenceFlow_0t4ut76">
+        <di:waypoint xsi:type="dc:Point" x="716" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="748" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="748" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="783" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="763" y="1005" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v">
+        <di:waypoint xsi:type="dc:Point" x="345" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="434" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="390" y="990" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="UpdateAAIARActive">
+        <dc:Bounds x="914" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rfj6et_di" bpmnElement="UpdateAAIARCreated">
+        <dc:Bounds x="516" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0c8nrax_di" bpmnElement="PreProcessSDNCGet">
+        <dc:Bounds x="1140" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1xa2jlo_di" bpmnElement="postProcessSDNCGetResponse">
+        <dc:Bounds x="1140" y="754" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_030mhcm_di" bpmnElement="SequenceFlow_030mhcm">
+        <di:waypoint xsi:type="dc:Point" x="1190" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="1190" y="621" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1205" y="603" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0q1hz2p_di" bpmnElement="SequenceFlow_0q1hz2p">
+        <di:waypoint xsi:type="dc:Point" x="1193" y="704" />
+        <di:waypoint xsi:type="dc:Point" x="1193" y="753" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1208" y="728.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="ActiveARinAAI" isMarkerVisible="true">
+        <dc:Bounds x="700" y="215" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="695" y="184" width="75" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1m8u8dl_di" bpmnElement="SequenceFlow_1m8u8dl">
+        <di:waypoint xsi:type="dc:Point" x="750" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="843" y="239" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="777" y="224" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0z8luou_di" bpmnElement="SequenceFlow_0z8luou">
+        <di:waypoint xsi:type="dc:Point" x="725" y="265" />
+        <di:waypoint xsi:type="dc:Point" x="725" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="1190" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="1190" y="505" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="737" y="270.89473684210526" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8">
+        <dc:Bounds x="-70" y="527" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-79" y="568" width="60" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9">
+        <di:waypoint xsi:type="dc:Point" x="-34" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="42" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="4" y="530" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0sb45m9_di" bpmnElement="IntermediateThrowEvent_1lqaeh8">
+        <dc:Bounds x="1408" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1456" y="234" width="76" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="found" sourceElement="_BPMNShape_ExclusiveGateway_229">
+        <di:waypoint xsi:type="dc:Point" x="416" y="241" />
+        <di:waypoint xsi:type="dc:Point" x="506" y="242" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="432" y="220.27119611047112" width="17" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gbsa12_di" bpmnElement="SequenceFlow_0gbsa12">
+        <di:waypoint xsi:type="dc:Point" x="606" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="700" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="653" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0pjzuns_di" bpmnElement="generateOutputs">
+        <dc:Bounds x="1314" y="754" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_09xwplc_di" bpmnElement="SequenceFlow_09xwplc">
+        <di:waypoint xsi:type="dc:Point" x="1414" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="1527" y="794" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1471" y="779" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0s6hs9u_di" bpmnElement="CallActivity_0s6hs9u">
+        <dc:Bounds x="434" y="965" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cxj4yz_di" bpmnElement="SequenceFlow_1cxj4yz">
+        <di:waypoint xsi:type="dc:Point" x="534" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="616" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="575" y="980" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceBRGRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceBRGRollback.bpmn
new file mode 100644
index 0000000..380f4fd
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceBRGRollback.bpmn
@@ -0,0 +1,635 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateAllottedResourceBRGRollback" name="DoCreateAllottedResourceBRGRollback" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bfuk6l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_0ymy62j</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCDeactivate" targetRef="PostProcessSDNCDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCDeactivate" targetRef="DeleteSDNC" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCDelete" targetRef="postProcessSDNCDelete" />
+    <bpmn2:callActivity id="SDNCDeactivate" name="SDNC Deactivate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeactivateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1fvfplx</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCDeactivate" name="PostProcess SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeactivateResponse")
+
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.validateSDNCResp(execution, response, "deactivate" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCDelete" name="SDNC Delete" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeleteRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0m483rd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCDelete" name="PostProcess SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_149adfw</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0sh1u69</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeleteResponse")
+
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.validateSDNCResp(execution, response, "delete" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCUnassign" name="SDNC Unassign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncUnassignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncUnassignResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_04hdt5s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCUnassign" name="PostProcess SDNC Unassign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_041l824</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncUnassignResponse")
+
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.validateSDNCResp(execution, response, "unassign" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCUnassign" targetRef="PostProcessSDNCUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCUnassign" targetRef="DeleteAAIAR" />
+    <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1ibe7qx">
+        <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1fgqhmi">
+        <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ProcessError" name="Process Errors" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRGRollback rbk= new DoCreateAllottedResourceBRGRollback()
+rbk.processRollbackException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ProcessError" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ProcessError" targetRef="EndEvent_1fgqhmi" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="DeleteAAIAR" name="Delete AAI AR " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_13mhe5h</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_03bkrg4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.deleteAaiAR(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="DeleteSDNC" name="Delete SDNC?&#10;" default="SequenceFlow_0m483st">
+      <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0m483rd</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0m483st</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks">
+      <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="ExclusiveGateway_0vw18rq" />
+    <bpmn2:scriptTask id="UpdateAAIARPendingDelete" name="Update AAI AR PendingDelete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_144pxkp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0g4cl5f</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.updateAaiAROrchStatus(execution, "PendingDelete")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v13nt6" name="To SDNCTasks">
+      <bpmn2:incoming>SequenceFlow_0g4cl5f</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0g4cl5f" sourceRef="UpdateAAIARPendingDelete" targetRef="IntermediateThrowEvent_0v13nt6" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ymy62j" sourceRef="postProcessRequest" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483rd" name="Yes" sourceRef="DeleteSDNC" targetRef="SDNCDelete">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("deleteSdnc" ) == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483st" name="No" sourceRef="DeleteSDNC" targetRef="IntermediateThrowEvent_0apj7jy" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0bfuk6l" sourceRef="initialization" targetRef="ExclusiveGateway_1txpz34" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0xm9g9s" name="No" sourceRef="ExclusiveGateway_1086eg7" targetRef="IntermediateThrowEvent_0lwqzlv" />
+    <bpmn2:subProcess id="SubProcess_0g5bd80" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_11nscgh">
+        <bpmn2:outgoing>SequenceFlow_0ebobc7</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:scriptTask id="ScriptTask_0cexvpg" name="Process Java Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0ebobc7</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1ugqw84</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRGRollback rbk= new DoCreateAllottedResourceBRGRollback()
+rbk.processRollbackJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:endEvent id="EndEvent_1ce2d7j">
+        <bpmn2:incoming>SequenceFlow_1ugqw84</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_0ebobc7" name="" sourceRef="StartEvent_11nscgh" targetRef="ScriptTask_0cexvpg" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1ugqw84" name="" sourceRef="ScriptTask_0cexvpg" targetRef="EndEvent_1ce2d7j" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="postProcessRequest" name="Post Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_03bkrg4</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0oe57h4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ymy62j</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0mys1pj" name="Unassign SDNC?" default="SequenceFlow_0m483td">
+      <bpmn2:incoming>SequenceFlow_0sh1u69</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04hdt5s</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0m483td</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0sh1u69" sourceRef="postProcessSDNCDelete" targetRef="ExclusiveGateway_0mys1pj" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04hdt5s" name="Yes" sourceRef="ExclusiveGateway_0mys1pj" targetRef="SDNCUnassign">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("unassignSdnc" ) == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_03bkrg4" sourceRef="DeleteAAIAR" targetRef="postProcessRequest" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1086eg7" name="Rollback SDNC?" default="SequenceFlow_0xm9g9s">
+      <bpmn2:incoming>SequenceFlow_1c07scr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xm9g9s</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_144pxkp</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_144pxkp" name="Yes" sourceRef="ExclusiveGateway_1086eg7" targetRef="UpdateAAIARPendingDelete">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackSDNC" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lwqzlv" name="To AAI Delete">
+      <bpmn2:incoming>SequenceFlow_0xm9g9s</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="AAI Delete" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0mdm7ig" name="To AAI Delete">
+      <bpmn2:incoming>SequenceFlow_0m483td</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="AAI Delete" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483td" name="No" sourceRef="ExclusiveGateway_0mys1pj" targetRef="IntermediateThrowEvent_0mdm7ig" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0kdn6a5" name="AAI Delete">
+      <bpmn2:outgoing>SequenceFlow_13mhe5h</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="AAI Delete" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_13mhe5h" sourceRef="IntermediateCatchEvent_0kdn6a5" targetRef="DeleteAAIAR" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1txpz34" name="Skip Rollback?" default="SequenceFlow_1c07scr">
+      <bpmn2:incoming>SequenceFlow_0bfuk6l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1c07scr</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0oe57h4</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1c07scr" name="No" sourceRef="ExclusiveGateway_1txpz34" targetRef="ExclusiveGateway_1086eg7" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0oe57h4" name="Yes" sourceRef="ExclusiveGateway_1txpz34" targetRef="postProcessRequest">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0vw18rq" name="Deactiavate SDNC?&#10;" default="SequenceFlow_0dzz8fp">
+      <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1fvfplx</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0dzz8fp</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1fvfplx" name="Yes" sourceRef="ExclusiveGateway_0vw18rq" targetRef="SDNCDeactivate">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("deactivateSdnc" ) == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0dzz8fp" name="No" sourceRef="ExclusiveGateway_0vw18rq" targetRef="IntermediateThrowEvent_1vkyj76" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1vkyj76" name="To SDNC Delete">
+      <bpmn2:incoming>SequenceFlow_0dzz8fp</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNC Delete" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0apj7jy" name="To SDNC Unassign">
+      <bpmn2:incoming>SequenceFlow_0m483st</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNC Unassign" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1dkzo0o" name="SDNC Delete">
+      <bpmn2:outgoing>SequenceFlow_149adfw</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNC Delete" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0vz52ri" name="SDNC Unassign">
+      <bpmn2:outgoing>SequenceFlow_041l824</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNC Unassign" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_149adfw" sourceRef="IntermediateCatchEvent_1dkzo0o" targetRef="postProcessSDNCDelete" />
+    <bpmn2:sequenceFlow id="SequenceFlow_041l824" sourceRef="IntermediateCatchEvent_0vz52ri" targetRef="PostProcessSDNCUnassign" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" />
+  <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceBRGRollback">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="66" y="392" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="84" y="433" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="160" y="370" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="101" y="412" />
+        <di:waypoint xsi:type="dc:Point" x="160" y="412" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="131" y="397" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="966" y="646" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="984" y="687" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q">
+        <di:waypoint xsi:type="dc:Point" x="92" y="710" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="727.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o">
+        <di:waypoint xsi:type="dc:Point" x="142" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="198" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="170" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb">
+        <di:waypoint xsi:type="dc:Point" x="359" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCDeactivate">
+        <dc:Bounds x="42" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCDeactivate">
+        <dc:Bounds x="42" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCDelete">
+        <dc:Bounds x="309" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCDelete">
+        <dc:Bounds x="309" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCUnassign">
+        <dc:Bounds x="590" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCUnassign">
+        <dc:Bounds x="590" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq">
+        <di:waypoint xsi:type="dc:Point" x="640" y="704" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="724.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43">
+        <di:waypoint xsi:type="dc:Point" x="690" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="787" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="739" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true">
+        <dc:Bounds x="-9" y="962" width="367" height="150" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx">
+        <dc:Bounds x="20" y="1025" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="38" y="1066" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi">
+        <dc:Bounds x="295" y="1025" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="313" y="1066" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ProcessError">
+        <dc:Bounds x="125" y="1003" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs">
+        <di:waypoint xsi:type="dc:Point" x="56" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="125" y="1043" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="91" y="1028" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v">
+        <di:waypoint xsi:type="dc:Point" x="225" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="264" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="264" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="295" y="1043" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="279" y="1043" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="DeleteAAIAR">
+        <dc:Bounds x="787" y="742" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="DeleteSDNC" isMarkerVisible="true">
+        <dc:Bounds x="197" y="761" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="219" y="648" width="71" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8">
+        <dc:Bounds x="-180" y="767" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-189" y="808" width="59" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9">
+        <di:waypoint xsi:type="dc:Point" x="-144" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="-112" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="-112" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="-79" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-97" y="785" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1k13o3m_di" bpmnElement="UpdateAAIARPendingDelete">
+        <dc:Bounds x="627" y="381" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0v13nt6_di" bpmnElement="IntermediateThrowEvent_0v13nt6">
+        <dc:Bounds x="659" y="298" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="650" y="275" width="73" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0g4cl5f_di" bpmnElement="SequenceFlow_0g4cl5f">
+        <di:waypoint xsi:type="dc:Point" x="677" y="381" />
+        <di:waypoint xsi:type="dc:Point" x="677" y="334" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="692" y="357.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ymy62j_di" bpmnElement="SequenceFlow_0ymy62j">
+        <di:waypoint xsi:type="dc:Point" x="887" y="664" />
+        <di:waypoint xsi:type="dc:Point" x="966" y="664" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="927" y="649" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_197vrli_di" bpmnElement="SequenceFlow_0m483rd">
+        <di:waypoint xsi:type="dc:Point" x="222" y="761" />
+        <di:waypoint xsi:type="dc:Point" x="222" y="672" />
+        <di:waypoint xsi:type="dc:Point" x="303" y="672" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="230" y="732.7173913043479" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ue1x4e_di" bpmnElement="SequenceFlow_0m483st">
+        <di:waypoint xsi:type="dc:Point" x="223" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="224" y="836" />
+        <di:waypoint xsi:type="dc:Point" x="224" y="868" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="205" y="825.0864835800907" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bfuk6l_di" bpmnElement="SequenceFlow_0bfuk6l">
+        <di:waypoint xsi:type="dc:Point" x="260" y="413" />
+        <di:waypoint xsi:type="dc:Point" x="334" y="413" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="297" y="398" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xm9g9s_di" bpmnElement="SequenceFlow_0xm9g9s">
+        <di:waypoint xsi:type="dc:Point" x="495" y="386" />
+        <di:waypoint xsi:type="dc:Point" x="496" y="334" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="477" y="353.9807135698298" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_0g5bd80_di" bpmnElement="SubProcess_0g5bd80" isExpanded="true">
+        <dc:Bounds x="515" y="979" width="405" height="139" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_11nscgh_di" bpmnElement="StartEvent_11nscgh">
+        <dc:Bounds x="563" y="1036" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="581" y="1077" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0cexvpg_di" bpmnElement="ScriptTask_0cexvpg">
+        <dc:Bounds x="683" y="1014" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1ce2d7j_di" bpmnElement="EndEvent_1ce2d7j">
+        <dc:Bounds x="845" y="1036" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="863" y="1077" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ebobc7_di" bpmnElement="SequenceFlow_0ebobc7">
+        <di:waypoint xsi:type="dc:Point" x="599" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="652" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="652" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="683" y="1054" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="667" y="1054" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ugqw84_di" bpmnElement="SequenceFlow_1ugqw84">
+        <di:waypoint xsi:type="dc:Point" x="783" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="813" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="813" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="845" y="1054" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="828" y="1054" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_13b9eww_di" bpmnElement="postProcessRequest">
+        <dc:Bounds x="787" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0mys1pj_di" bpmnElement="ExclusiveGateway_0mys1pj" isMarkerVisible="true">
+        <dc:Bounds x="470" y="760" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="490" y="640" width="86" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0sh1u69_di" bpmnElement="SequenceFlow_0sh1u69">
+        <di:waypoint xsi:type="dc:Point" x="409" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="437" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="437" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="470" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="452" y="785" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04hdt5s_di" bpmnElement="SequenceFlow_04hdt5s">
+        <di:waypoint xsi:type="dc:Point" x="495" y="759" />
+        <di:waypoint xsi:type="dc:Point" x="495" y="664" />
+        <di:waypoint xsi:type="dc:Point" x="590" y="664" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="502" y="732" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_03bkrg4_di" bpmnElement="SequenceFlow_03bkrg4">
+        <di:waypoint xsi:type="dc:Point" x="837" y="742" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="704" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="852" y="723" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1086eg7_di" bpmnElement="ExclusiveGateway_1086eg7" isMarkerVisible="true">
+        <dc:Bounds x="469" y="385" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="458" y="439" width="83" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_144pxkp_di" bpmnElement="SequenceFlow_144pxkp">
+        <di:waypoint xsi:type="dc:Point" x="519" y="410" />
+        <di:waypoint xsi:type="dc:Point" x="627" y="410" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="550" y="392.99583286074477" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0lwqzlv_di" bpmnElement="IntermediateThrowEvent_0lwqzlv">
+        <dc:Bounds x="479" y="298" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="473" y="277" width="67" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0mdm7ig_di" bpmnElement="IntermediateThrowEvent_0mdm7ig">
+        <dc:Bounds x="476" y="872" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460" y="911" width="67" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0m483td_di" bpmnElement="SequenceFlow_0m483td">
+        <di:waypoint xsi:type="dc:Point" x="495" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="494" y="872" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="510" y="803" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0kdn6a5_di" bpmnElement="IntermediateCatchEvent_0kdn6a5">
+        <dc:Bounds x="819" y="876" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="809" y="916" width="53" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13mhe5h_di" bpmnElement="SequenceFlow_13mhe5h">
+        <di:waypoint xsi:type="dc:Point" x="837" y="876" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="848" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="826" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="852" y="862" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1txpz34_di" bpmnElement="ExclusiveGateway_1txpz34" isMarkerVisible="true">
+        <dc:Bounds x="334" y="385" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="323" y="370" width="72" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1c07scr_di" bpmnElement="SequenceFlow_1c07scr">
+        <di:waypoint xsi:type="dc:Point" x="384" y="410" />
+        <di:waypoint xsi:type="dc:Point" x="469" y="410" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="421" y="394.9978753852595" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0oe57h4_di" bpmnElement="SequenceFlow_0oe57h4">
+        <di:waypoint xsi:type="dc:Point" x="359" y="435" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="589" y="520" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0vw18rq_di" bpmnElement="ExclusiveGateway_0vw18rq" isMarkerVisible="true">
+        <dc:Bounds x="-79" y="760" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-53" y="631" width="62" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fvfplx_di" bpmnElement="SequenceFlow_1fvfplx">
+        <di:waypoint xsi:type="dc:Point" x="-54" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="-54" y="664" />
+        <di:waypoint xsi:type="dc:Point" x="42" y="664" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-49" y="733.3483834130782" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dzz8fp_di" bpmnElement="SequenceFlow_0dzz8fp">
+        <di:waypoint xsi:type="dc:Point" x="-54" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="-54" y="863" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-46" y="792.5" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1vkyj76_di" bpmnElement="IntermediateThrowEvent_1vkyj76">
+        <dc:Bounds x="-72" y="863" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-78" y="901" width="79" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0apj7jy_di" bpmnElement="IntermediateThrowEvent_0apj7jy">
+        <dc:Bounds x="206" y="871" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="200" y="908" width="47" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1dkzo0o_di" bpmnElement="IntermediateCatchEvent_1dkzo0o">
+        <dc:Bounds x="341" y="876" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="325" y="916" width="65" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0vz52ri_di" bpmnElement="IntermediateCatchEvent_0vz52ri">
+        <dc:Bounds x="622" y="872" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="599" y="912" width="80" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_149adfw_di" bpmnElement="SequenceFlow_149adfw">
+        <di:waypoint xsi:type="dc:Point" x="359" y="876" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="850.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_041l824_di" bpmnElement="SequenceFlow_041l824">
+        <di:waypoint xsi:type="dc:Point" x="640" y="872" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="848.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceTXC.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceTXC.bpmn
new file mode 100644
index 0000000..7978ea6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceTXC.bpmn
@@ -0,0 +1,735 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateAllottedResourceTXC" name="DoCreateAllottedResourceTXC" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="initialization" targetRef="GetAAIServiceInstance" />
+    <bpmn2:scriptTask id="buildWorkflowException" name="Create Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>notFound</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.utils.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildWorkflowException(execution, 404, "Input Service Instance Id Not Found in AAI")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="buildWorkflowException" targetRef="EndEvent_1" />
+    <bpmn2:callActivity id="GetAAIServiceInstance" name="Get AAI Service Instance" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:out source="GENGS_FoundIndicator" target="CSI_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="CSI_SuccessIndicator" />
+        <camunda:out source="GENGS_serviceInstance" target="CSI_serviceInstance" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_resourceLink" target="CSI_resourceLink" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_service" target="CSI_service" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="GetAAIServiceInstance" targetRef="ServiceInstanceExists" />
+    <bpmn2:exclusiveGateway id="ServiceInstanceExists" name="Service Instance Exists in AAI?" default="notFound">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:outgoing>notFound</bpmn2:outgoing>
+      <bpmn2:outgoing>found</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="notFound" name="No" sourceRef="ServiceInstanceExists" targetRef="buildWorkflowException" />
+    <bpmn2:scriptTask id="GetAAIAR" name="Get AAI AR" scriptFormat="groovy">
+      <bpmn2:incoming>found</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0gbsa12</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.getAaiAR(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_1">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="CreateAAIAR" name="Create AAI  AR&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_17p4ohs</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.createAaiAR(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="CreateAAIAR" targetRef="IntermediateThrowEvent_1lqaeh8" />
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_09xwplc</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="PreProcessSDNCAssign" targetRef="SDNCAssign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCAssign" targetRef="PostProcessSDNCAssign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCAssign" targetRef="PreProcessSDNCCreate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="PreProcessSDNCCreate" targetRef="SDNCCreate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCCreate" targetRef="postProcessSDNCCreate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCCreate" targetRef="UpdateAAIARCreated" />
+    <bpmn2:scriptTask id="PreProcessSDNCAssign" name="PreProcess SDNC Assign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.preProcessSDNCAssign(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCAssign" name="SDNC Assign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncAssignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncAssignResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCAssign" name="PostProcess SDNC Assign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncAssignResponse")
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.validateSDNCResp(execution, response, "assign" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCCreate" name="PreProcess SDNC Create" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.preProcessSDNCCreate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCCreate" name="SDNC Create" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncCreateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncCreateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCCreate" name="PostProcess SDNC Create " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncCreateResponse")
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.validateSDNCResp(execution, response, "create" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCActivate" name="PreProcess SDNC Activate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_04t1zc2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_06w33tk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.preProcessSDNCActivate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCActivate" name="SDNC Activate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncActivateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncActivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_06w33tk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCActivate" name="PostProcess SDNC Activate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncActivateResponse")
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.validateSDNCResp(execution, response, "activate" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_06w33tk" sourceRef="PreProcessSDNCActivate" targetRef="SDNCActivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCActivate" targetRef="PostProcessSDNCActivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCActivate" targetRef="UpdateAAIARActive" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04t1zc2" sourceRef="UpdateAAIARCreated" targetRef="PreProcessSDNCActivate" />
+    <bpmn2:callActivity id="SDNCGet" name="SDNC Get" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncGetRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncGetResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:out source="enhancedCallbackRequestData" target="enhancedCallbackRequestData" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_030mhcm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0q1hz2p</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1iy3cqb" sourceRef="postProcessSDNCGetResponse" targetRef="generateOutputs" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1dgzhsm" sourceRef="UpdateAAIARActive" targetRef="PreProcessSDNCGet" />
+    <bpmn2:callActivity id="GetAAIParentSI" name="Get AAI  Parent ServiceInstance&#10;" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="parentServiceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_SuccessIndicator" target="PSI_SuccessIndicator" />
+        <camunda:out source="GENGS_FoundIndicator" target="PSI_FoundIndicator" />
+        <camunda:out source="GENGS_serviceInstance" target="PSI_serviceInstance" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_resourceLink" target="PSI_resourceLink" />
+        <camunda:out source="GENGS_service" target="PSI_service" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1m8u8dl</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1vg5rfa</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1vg5rfa" sourceRef="GetAAIParentSI" targetRef="ParentSIExists" />
+    <bpmn2:exclusiveGateway id="ParentSIExists" name="Parent Service Instance Exists in AAI?" default="SequenceFlow_0f7u5pu">
+      <bpmn2:incoming>SequenceFlow_1vg5rfa</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17p4ohs</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0f7u5pu</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_17p4ohs" name="Yes" sourceRef="ParentSIExists" targetRef="CreateAAIAR">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("PSI_FoundIndicator" ) == true && execution.getVariable("PSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="ScriptTask_1hzsbck" name="Create Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0f7u5pu</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16o7col</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.utils.*
+
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildWorkflowException(execution, 404, "TunnelXConn alloted resource Parent ServiceInstance:"  +  
+execution.getVariable("parentServiceInstanceId") +
+ " was not found in AAI")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_0x4moh8">
+      <bpmn2:incoming>SequenceFlow_16o7col</bpmn2:incoming>
+      <bpmn2:errorEventDefinition errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0f7u5pu" name="No" sourceRef="ParentSIExists" targetRef="ScriptTask_1hzsbck" />
+    <bpmn2:sequenceFlow id="SequenceFlow_16o7col" sourceRef="ScriptTask_1hzsbck" targetRef="EndEvent_0x4moh8" />
+    <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Application Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1ibe7qx">
+        <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1fgqhmi">
+        <bpmn2:incoming>SequenceFlow_0t4ut76</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_0ji3121" name="Pre Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.preProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="ScriptTask_1kgumd4" name="Post Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1cxj4yz</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0t4ut76</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.postProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ScriptTask_0ji3121" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0t4ut76" sourceRef="ScriptTask_1kgumd4" targetRef="EndEvent_1fgqhmi" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ScriptTask_0ji3121" targetRef="CallActivity_0s6hs9u" />
+      <bpmn2:callActivity id="CallActivity_0s6hs9u" name="Rollback Create" calledElement="DoCreateAllottedResourceTXCRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <camunda:in source="disableRollback" target="disableRollback" />
+          <camunda:out source="rolledBack" target="rolledBack" />
+          <camunda:out source="rollbackError" target="rollbackError" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1cxj4yz</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_1cxj4yz" sourceRef="CallActivity_0s6hs9u" targetRef="ScriptTask_1kgumd4" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="UpdateAAIARActive" name="Update AAI AR Active" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1dgzhsm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.updateAaiAROrchStatus(execution, "Active")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="UpdateAAIARCreated" name="Update AAI AR Created" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04t1zc2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.updateAaiAROrchStatus(execution, "Created")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCGet" name="PreProcess SDNC Get" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1dgzhsm</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0z8luou</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_030mhcm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.preProcessSDNCGet(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="postProcessSDNCGetResponse" name="PostProcess SDNC Get" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0q1hz2p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1iy3cqb</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncGetResponse")
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.validateSDNCResp(execution, response, "get" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_030mhcm" sourceRef="PreProcessSDNCGet" targetRef="SDNCGet" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0q1hz2p" sourceRef="SDNCGet" targetRef="postProcessSDNCGetResponse" />
+    <bpmn2:exclusiveGateway id="ActiveARinAAI" name="Active AR Exists in AAI?" default="SequenceFlow_1m8u8dl">
+      <bpmn2:incoming>SequenceFlow_0gbsa12</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1m8u8dl</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0z8luou</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1m8u8dl" name="No" sourceRef="ActiveARinAAI" targetRef="GetAAIParentSI" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0z8luou" name="yes" sourceRef="ActiveARinAAI" targetRef="PreProcessSDNCGet">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("foundActiveAR" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks">
+      <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="PreProcessSDNCAssign" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1lqaeh8" name="To SDNCTasks">
+      <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="found" name="Yes" sourceRef="ServiceInstanceExists" targetRef="GetAAIAR">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CSI_FoundIndicator" ) == true && execution.getVariable("CSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gbsa12" sourceRef="GetAAIAR" targetRef="ActiveARinAAI" />
+    <bpmn2:scriptTask id="generateOutputs" name="Generate Outputs" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1iy3cqb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_09xwplc</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.generateOutputs(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_09xwplc" sourceRef="generateOutputs" targetRef="EndEvent_3" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" />
+  <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceTXC">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="-91" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-73" y="263" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="19" y="199" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="-55" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="19" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-18" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="119" y="239" />
+        <di:waypoint xsi:type="dc:Point" x="195" y="239" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="157" y="224" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_59" bpmnElement="GetAAIServiceInstance">
+        <dc:Bounds x="195" y="199" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_229" bpmnElement="ServiceInstanceExists" isMarkerVisible="true">
+        <dc:Bounds x="367" y="217" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="349" y="270" width="83" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_CallActivity_59" targetElement="_BPMNShape_ExclusiveGateway_229">
+        <di:waypoint xsi:type="dc:Point" x="295" y="239" />
+        <di:waypoint xsi:type="dc:Point" x="369" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="332" y="224.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_293" bpmnElement="buildWorkflowException">
+        <dc:Bounds x="342" y="85" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="notFound" sourceElement="_BPMNShape_ExclusiveGateway_229" targetElement="_BPMNShape_ScriptTask_293">
+        <di:waypoint xsi:type="dc:Point" x="392" y="217" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="371" y="192.6917250252067" width="14" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_225" bpmnElement="EndEvent_1">
+        <dc:Bounds x="374" y="-11" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="392" y="30" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_293" targetElement="_BPMNShape_EndEvent_225">
+        <di:waypoint xsi:type="dc:Point" x="392" y="85" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="58" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="58" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="25" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="407" y="58" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="GetAAIAR">
+        <dc:Bounds x="506" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_300" bpmnElement="CreateAAIAR">
+        <dc:Bounds x="1206" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1527" y="776" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1545" y="817" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_300">
+        <di:waypoint xsi:type="dc:Point" x="1306" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1338" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1408" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1322" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm">
+        <di:waypoint xsi:type="dc:Point" x="92" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="609.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q">
+        <di:waypoint xsi:type="dc:Point" x="92" y="710" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="727.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o">
+        <di:waypoint xsi:type="dc:Point" x="142" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="309" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="220" y="665" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp">
+        <di:waypoint xsi:type="dc:Point" x="359" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="604.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb">
+        <di:waypoint xsi:type="dc:Point" x="359" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq">
+        <di:waypoint xsi:type="dc:Point" x="409" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="709" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="485" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="PreProcessSDNCAssign">
+        <dc:Bounds x="42" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCAssign">
+        <dc:Bounds x="42" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCAssign">
+        <dc:Bounds x="42" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="PreProcessSDNCCreate">
+        <dc:Bounds x="309" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCCreate">
+        <dc:Bounds x="309" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCCreate">
+        <dc:Bounds x="309" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0zm728u_di" bpmnElement="PreProcessSDNCActivate">
+        <dc:Bounds x="702" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCActivate">
+        <dc:Bounds x="702" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCActivate">
+        <dc:Bounds x="702" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_06w33tk_di" bpmnElement="SequenceFlow_06w33tk">
+        <di:waypoint xsi:type="dc:Point" x="752" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="752" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="767" y="609.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq">
+        <di:waypoint xsi:type="dc:Point" x="752" y="705" />
+        <di:waypoint xsi:type="dc:Point" x="752" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="752" y="742" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="767" y="715" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43">
+        <di:waypoint xsi:type="dc:Point" x="802" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="963" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="963" y="704" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="883" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04t1zc2_di" bpmnElement="SequenceFlow_04t1zc2">
+        <di:waypoint xsi:type="dc:Point" x="560" y="621" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="702" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="575" y="588" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1pfpn41_di" bpmnElement="SDNCGet">
+        <dc:Bounds x="1143" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1iy3cqb_di" bpmnElement="SequenceFlow_1iy3cqb">
+        <di:waypoint xsi:type="dc:Point" x="1240" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="1313" y="794" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1277" y="779" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dgzhsm_di" bpmnElement="SequenceFlow_1dgzhsm">
+        <di:waypoint xsi:type="dc:Point" x="964" y="624" />
+        <di:waypoint xsi:type="dc:Point" x="964" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="1140" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="979" y="584.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0e73um9_di" bpmnElement="GetAAIParentSI">
+        <dc:Bounds x="843" y="199" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vg5rfa_di" bpmnElement="SequenceFlow_1vg5rfa">
+        <di:waypoint xsi:type="dc:Point" x="943" y="239" />
+        <di:waypoint xsi:type="dc:Point" x="1033" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="988" y="224.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1q51t9m_di" bpmnElement="ParentSIExists" isMarkerVisible="true">
+        <dc:Bounds x="1033" y="215" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1012" y="265" width="92" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_17p4ohs_di" bpmnElement="SequenceFlow_17p4ohs">
+        <di:waypoint xsi:type="dc:Point" x="1083" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1206" y="241" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1127" y="222" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1hzsbck_di" bpmnElement="ScriptTask_1hzsbck">
+        <dc:Bounds x="1008" y="77" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0x4moh8_di" bpmnElement="EndEvent_0x4moh8">
+        <dc:Bounds x="1040" y="6" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1058" y="47" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0f7u5pu_di" bpmnElement="SequenceFlow_0f7u5pu">
+        <di:waypoint xsi:type="dc:Point" x="1058" y="215" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="186" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="157" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1034" y="173.413457125764" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_16o7col_di" bpmnElement="SequenceFlow_16o7col">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="77" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="42" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1074" y="59.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true">
+        <dc:Bounds x="53" y="910" width="783" height="195" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx">
+        <dc:Bounds x="150" y="987" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="168" y="1028" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi">
+        <dc:Bounds x="783" y="987" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="801" y="1028" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ScriptTask_0ji3121">
+        <dc:Bounds x="245" y="965" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1kgumd4_di" bpmnElement="ScriptTask_1kgumd4">
+        <dc:Bounds x="616" y="965" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs">
+        <di:waypoint xsi:type="dc:Point" x="186" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="245" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="216" y="990" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t4ut76_di" bpmnElement="SequenceFlow_0t4ut76">
+        <di:waypoint xsi:type="dc:Point" x="716" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="748" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="748" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="783" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="763" y="1005" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v">
+        <di:waypoint xsi:type="dc:Point" x="345" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="434" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="390" y="990" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="UpdateAAIARActive">
+        <dc:Bounds x="914" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rfj6et_di" bpmnElement="UpdateAAIARCreated">
+        <dc:Bounds x="516" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0c8nrax_di" bpmnElement="PreProcessSDNCGet">
+        <dc:Bounds x="1140" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1xa2jlo_di" bpmnElement="postProcessSDNCGetResponse">
+        <dc:Bounds x="1140" y="754" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_030mhcm_di" bpmnElement="SequenceFlow_030mhcm">
+        <di:waypoint xsi:type="dc:Point" x="1190" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="1190" y="621" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1205" y="603" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0q1hz2p_di" bpmnElement="SequenceFlow_0q1hz2p">
+        <di:waypoint xsi:type="dc:Point" x="1193" y="704" />
+        <di:waypoint xsi:type="dc:Point" x="1193" y="753" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1208" y="728.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="ActiveARinAAI" isMarkerVisible="true">
+        <dc:Bounds x="700" y="215" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="695" y="184" width="75" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1m8u8dl_di" bpmnElement="SequenceFlow_1m8u8dl">
+        <di:waypoint xsi:type="dc:Point" x="750" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="843" y="239" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="777" y="224" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0z8luou_di" bpmnElement="SequenceFlow_0z8luou">
+        <di:waypoint xsi:type="dc:Point" x="725" y="265" />
+        <di:waypoint xsi:type="dc:Point" x="725" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="1190" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="1190" y="505" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="737" y="270.89473684210526" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8">
+        <dc:Bounds x="-70" y="527" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-79" y="568" width="60" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9">
+        <di:waypoint xsi:type="dc:Point" x="-34" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="42" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="4" y="530" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0sb45m9_di" bpmnElement="IntermediateThrowEvent_1lqaeh8">
+        <dc:Bounds x="1408" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1456" y="234" width="76" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="found" sourceElement="_BPMNShape_ExclusiveGateway_229">
+        <di:waypoint xsi:type="dc:Point" x="416" y="241" />
+        <di:waypoint xsi:type="dc:Point" x="506" y="242" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="432" y="220.27119611047112" width="17" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gbsa12_di" bpmnElement="SequenceFlow_0gbsa12">
+        <di:waypoint xsi:type="dc:Point" x="606" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="700" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="653" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0pjzuns_di" bpmnElement="generateOutputs">
+        <dc:Bounds x="1314" y="754" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_09xwplc_di" bpmnElement="SequenceFlow_09xwplc">
+        <di:waypoint xsi:type="dc:Point" x="1414" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="1527" y="794" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1471" y="779" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0s6hs9u_di" bpmnElement="CallActivity_0s6hs9u">
+        <dc:Bounds x="434" y="965" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cxj4yz_di" bpmnElement="SequenceFlow_1cxj4yz">
+        <di:waypoint xsi:type="dc:Point" x="534" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="616" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="575" y="980" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceTXCRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceTXCRollback.bpmn
new file mode 100644
index 0000000..1c31913
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceTXCRollback.bpmn
@@ -0,0 +1,635 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateAllottedResourceTXCRollback" name="DoCreateAllottedResourceTXCRollback" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bfuk6l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_0ymy62j</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCDeactivate" targetRef="PostProcessSDNCDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCDeactivate" targetRef="DeleteSDNC" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCDelete" targetRef="postProcessSDNCDelete" />
+    <bpmn2:callActivity id="SDNCDeactivate" name="SDNC Deactivate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeactivateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1fvfplx</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCDeactivate" name="PostProcess SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeactivateResponse")
+
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.validateSDNCResp(execution, response, "deactivate" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCDelete" name="SDNC Delete" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeleteRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0m483rd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCDelete" name="PostProcess SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_149adfw</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0sh1u69</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeleteResponse")
+
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.validateSDNCResp(execution, response, "delete" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCUnassign" name="SDNC Unassign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncUnassignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncUnassignResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_04hdt5s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCUnassign" name="PostProcess SDNC Unassign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_041l824</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncUnassignResponse")
+
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.validateSDNCResp(execution, response, "unassign" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCUnassign" targetRef="PostProcessSDNCUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCUnassign" targetRef="DeleteAAIAR" />
+    <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1ibe7qx">
+        <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1fgqhmi">
+        <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ProcessError" name="Process Errors" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXCRollback rbk= new DoCreateAllottedResourceTXCRollback()
+rbk.processRollbackException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ProcessError" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ProcessError" targetRef="EndEvent_1fgqhmi" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="DeleteAAIAR" name="Delete AAI AR " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_13mhe5h</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_03bkrg4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.deleteAaiAR(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="DeleteSDNC" name="Delete SDNC?&#10;" default="SequenceFlow_0m483st">
+      <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0m483rd</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0m483st</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks">
+      <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="ExclusiveGateway_0vw18rq" />
+    <bpmn2:scriptTask id="UpdateAAIARPendingDelete" name="Update AAI AR PendingDelete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_144pxkp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0g4cl5f</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.updateAaiAROrchStatus(execution, "PendingDelete")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v13nt6" name="To SDNCTasks">
+      <bpmn2:incoming>SequenceFlow_0g4cl5f</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0g4cl5f" sourceRef="UpdateAAIARPendingDelete" targetRef="IntermediateThrowEvent_0v13nt6" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ymy62j" sourceRef="postProcessRequest" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483rd" name="Yes" sourceRef="DeleteSDNC" targetRef="SDNCDelete">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("deleteSdnc" ) == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483st" name="No" sourceRef="DeleteSDNC" targetRef="IntermediateThrowEvent_0apj7jy" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0bfuk6l" sourceRef="initialization" targetRef="ExclusiveGateway_1txpz34" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0xm9g9s" name="No" sourceRef="ExclusiveGateway_1086eg7" targetRef="IntermediateThrowEvent_0lwqzlv" />
+    <bpmn2:subProcess id="SubProcess_0g5bd80" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_11nscgh">
+        <bpmn2:outgoing>SequenceFlow_0ebobc7</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:scriptTask id="ScriptTask_0cexvpg" name="Process Java Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0ebobc7</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1ugqw84</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXCRollback rbk= new DoCreateAllottedResourceTXCRollback()
+rbk.processRollbackJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:endEvent id="EndEvent_1ce2d7j">
+        <bpmn2:incoming>SequenceFlow_1ugqw84</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_0ebobc7" name="" sourceRef="StartEvent_11nscgh" targetRef="ScriptTask_0cexvpg" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1ugqw84" name="" sourceRef="ScriptTask_0cexvpg" targetRef="EndEvent_1ce2d7j" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="postProcessRequest" name="Post Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_03bkrg4</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0oe57h4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ymy62j</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0mys1pj" name="Unassign SDNC?" default="SequenceFlow_0m483td">
+      <bpmn2:incoming>SequenceFlow_0sh1u69</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04hdt5s</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0m483td</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0sh1u69" sourceRef="postProcessSDNCDelete" targetRef="ExclusiveGateway_0mys1pj" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04hdt5s" name="Yes" sourceRef="ExclusiveGateway_0mys1pj" targetRef="SDNCUnassign">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("unassignSdnc" ) == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_03bkrg4" sourceRef="DeleteAAIAR" targetRef="postProcessRequest" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1086eg7" name="Rollback SDNC?" default="SequenceFlow_0xm9g9s">
+      <bpmn2:incoming>SequenceFlow_1c07scr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xm9g9s</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_144pxkp</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_144pxkp" name="Yes" sourceRef="ExclusiveGateway_1086eg7" targetRef="UpdateAAIARPendingDelete">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackSDNC" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lwqzlv" name="To AAI Delete">
+      <bpmn2:incoming>SequenceFlow_0xm9g9s</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="AAI Delete" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0mdm7ig" name="To AAI Delete">
+      <bpmn2:incoming>SequenceFlow_0m483td</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="AAI Delete" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483td" name="No" sourceRef="ExclusiveGateway_0mys1pj" targetRef="IntermediateThrowEvent_0mdm7ig" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0kdn6a5" name="AAI Delete">
+      <bpmn2:outgoing>SequenceFlow_13mhe5h</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="AAI Delete" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_13mhe5h" sourceRef="IntermediateCatchEvent_0kdn6a5" targetRef="DeleteAAIAR" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1txpz34" name="Skip Rollback?" default="SequenceFlow_1c07scr">
+      <bpmn2:incoming>SequenceFlow_0bfuk6l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1c07scr</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0oe57h4</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1c07scr" name="No" sourceRef="ExclusiveGateway_1txpz34" targetRef="ExclusiveGateway_1086eg7" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0oe57h4" name="Yes" sourceRef="ExclusiveGateway_1txpz34" targetRef="postProcessRequest">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0vw18rq" name="Deactiavate SDNC?&#10;" default="SequenceFlow_0dzz8fp">
+      <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1fvfplx</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0dzz8fp</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1fvfplx" name="Yes" sourceRef="ExclusiveGateway_0vw18rq" targetRef="SDNCDeactivate">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("deactivateSdnc" ) == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0dzz8fp" name="No" sourceRef="ExclusiveGateway_0vw18rq" targetRef="IntermediateThrowEvent_1vkyj76" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1vkyj76" name="To SDNC Delete">
+      <bpmn2:incoming>SequenceFlow_0dzz8fp</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNC Delete" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0apj7jy" name="To SDNC Unassign">
+      <bpmn2:incoming>SequenceFlow_0m483st</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNC Unassign" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1dkzo0o" name="SDNC Delete">
+      <bpmn2:outgoing>SequenceFlow_149adfw</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNC Delete" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0vz52ri" name="SDNC Unassign">
+      <bpmn2:outgoing>SequenceFlow_041l824</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNC Unassign" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_149adfw" sourceRef="IntermediateCatchEvent_1dkzo0o" targetRef="postProcessSDNCDelete" />
+    <bpmn2:sequenceFlow id="SequenceFlow_041l824" sourceRef="IntermediateCatchEvent_0vz52ri" targetRef="PostProcessSDNCUnassign" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" />
+  <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceTXCRollback">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="66" y="392" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="84" y="433" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="160" y="370" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="101" y="412" />
+        <di:waypoint xsi:type="dc:Point" x="160" y="412" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="131" y="397" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="966" y="646" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="984" y="687" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q">
+        <di:waypoint xsi:type="dc:Point" x="92" y="710" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="727.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o">
+        <di:waypoint xsi:type="dc:Point" x="142" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="198" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="170" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb">
+        <di:waypoint xsi:type="dc:Point" x="359" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCDeactivate">
+        <dc:Bounds x="42" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCDeactivate">
+        <dc:Bounds x="42" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCDelete">
+        <dc:Bounds x="309" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCDelete">
+        <dc:Bounds x="309" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCUnassign">
+        <dc:Bounds x="590" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCUnassign">
+        <dc:Bounds x="590" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq">
+        <di:waypoint xsi:type="dc:Point" x="640" y="704" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="724.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43">
+        <di:waypoint xsi:type="dc:Point" x="690" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="787" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="739" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true">
+        <dc:Bounds x="-9" y="962" width="367" height="150" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx">
+        <dc:Bounds x="20" y="1025" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="38" y="1066" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi">
+        <dc:Bounds x="295" y="1025" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="313" y="1066" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ProcessError">
+        <dc:Bounds x="125" y="1003" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs">
+        <di:waypoint xsi:type="dc:Point" x="56" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="125" y="1043" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="91" y="1028" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v">
+        <di:waypoint xsi:type="dc:Point" x="225" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="264" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="264" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="295" y="1043" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="279" y="1043" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="DeleteAAIAR">
+        <dc:Bounds x="787" y="742" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="DeleteSDNC" isMarkerVisible="true">
+        <dc:Bounds x="197" y="761" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="219" y="648" width="71" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8">
+        <dc:Bounds x="-180" y="767" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-189" y="808" width="59" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9">
+        <di:waypoint xsi:type="dc:Point" x="-144" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="-112" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="-112" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="-79" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-97" y="785" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1k13o3m_di" bpmnElement="UpdateAAIARPendingDelete">
+        <dc:Bounds x="627" y="381" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0v13nt6_di" bpmnElement="IntermediateThrowEvent_0v13nt6">
+        <dc:Bounds x="659" y="298" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="650" y="275" width="73" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0g4cl5f_di" bpmnElement="SequenceFlow_0g4cl5f">
+        <di:waypoint xsi:type="dc:Point" x="677" y="381" />
+        <di:waypoint xsi:type="dc:Point" x="677" y="334" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="692" y="357.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ymy62j_di" bpmnElement="SequenceFlow_0ymy62j">
+        <di:waypoint xsi:type="dc:Point" x="887" y="664" />
+        <di:waypoint xsi:type="dc:Point" x="966" y="664" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="927" y="649" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_197vrli_di" bpmnElement="SequenceFlow_0m483rd">
+        <di:waypoint xsi:type="dc:Point" x="222" y="761" />
+        <di:waypoint xsi:type="dc:Point" x="222" y="672" />
+        <di:waypoint xsi:type="dc:Point" x="303" y="672" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="230" y="732.7173913043479" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ue1x4e_di" bpmnElement="SequenceFlow_0m483st">
+        <di:waypoint xsi:type="dc:Point" x="223" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="224" y="836" />
+        <di:waypoint xsi:type="dc:Point" x="224" y="868" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="205" y="825.0864835800907" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bfuk6l_di" bpmnElement="SequenceFlow_0bfuk6l">
+        <di:waypoint xsi:type="dc:Point" x="260" y="413" />
+        <di:waypoint xsi:type="dc:Point" x="334" y="413" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="297" y="398" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xm9g9s_di" bpmnElement="SequenceFlow_0xm9g9s">
+        <di:waypoint xsi:type="dc:Point" x="495" y="386" />
+        <di:waypoint xsi:type="dc:Point" x="496" y="334" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="477" y="353.9807135698298" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_0g5bd80_di" bpmnElement="SubProcess_0g5bd80" isExpanded="true">
+        <dc:Bounds x="515" y="979" width="405" height="139" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_11nscgh_di" bpmnElement="StartEvent_11nscgh">
+        <dc:Bounds x="563" y="1036" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="581" y="1077" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0cexvpg_di" bpmnElement="ScriptTask_0cexvpg">
+        <dc:Bounds x="683" y="1014" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1ce2d7j_di" bpmnElement="EndEvent_1ce2d7j">
+        <dc:Bounds x="845" y="1036" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="863" y="1077" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ebobc7_di" bpmnElement="SequenceFlow_0ebobc7">
+        <di:waypoint xsi:type="dc:Point" x="599" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="652" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="652" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="683" y="1054" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="667" y="1054" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ugqw84_di" bpmnElement="SequenceFlow_1ugqw84">
+        <di:waypoint xsi:type="dc:Point" x="783" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="813" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="813" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="845" y="1054" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="828" y="1054" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_13b9eww_di" bpmnElement="postProcessRequest">
+        <dc:Bounds x="787" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0mys1pj_di" bpmnElement="ExclusiveGateway_0mys1pj" isMarkerVisible="true">
+        <dc:Bounds x="470" y="760" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="490" y="640" width="86" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0sh1u69_di" bpmnElement="SequenceFlow_0sh1u69">
+        <di:waypoint xsi:type="dc:Point" x="409" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="437" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="437" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="470" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="452" y="785" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04hdt5s_di" bpmnElement="SequenceFlow_04hdt5s">
+        <di:waypoint xsi:type="dc:Point" x="495" y="759" />
+        <di:waypoint xsi:type="dc:Point" x="495" y="664" />
+        <di:waypoint xsi:type="dc:Point" x="590" y="664" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="502" y="732" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_03bkrg4_di" bpmnElement="SequenceFlow_03bkrg4">
+        <di:waypoint xsi:type="dc:Point" x="837" y="742" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="704" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="852" y="723" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1086eg7_di" bpmnElement="ExclusiveGateway_1086eg7" isMarkerVisible="true">
+        <dc:Bounds x="469" y="385" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="458" y="439" width="83" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_144pxkp_di" bpmnElement="SequenceFlow_144pxkp">
+        <di:waypoint xsi:type="dc:Point" x="519" y="410" />
+        <di:waypoint xsi:type="dc:Point" x="627" y="410" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="550" y="392.99583286074477" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0lwqzlv_di" bpmnElement="IntermediateThrowEvent_0lwqzlv">
+        <dc:Bounds x="479" y="298" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="473" y="277" width="67" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0mdm7ig_di" bpmnElement="IntermediateThrowEvent_0mdm7ig">
+        <dc:Bounds x="476" y="872" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460" y="911" width="67" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0m483td_di" bpmnElement="SequenceFlow_0m483td">
+        <di:waypoint xsi:type="dc:Point" x="495" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="494" y="872" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="510" y="803" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0kdn6a5_di" bpmnElement="IntermediateCatchEvent_0kdn6a5">
+        <dc:Bounds x="819" y="876" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="809" y="916" width="53" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13mhe5h_di" bpmnElement="SequenceFlow_13mhe5h">
+        <di:waypoint xsi:type="dc:Point" x="837" y="876" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="848" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="826" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="852" y="862" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1txpz34_di" bpmnElement="ExclusiveGateway_1txpz34" isMarkerVisible="true">
+        <dc:Bounds x="334" y="385" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="323" y="370" width="72" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1c07scr_di" bpmnElement="SequenceFlow_1c07scr">
+        <di:waypoint xsi:type="dc:Point" x="384" y="410" />
+        <di:waypoint xsi:type="dc:Point" x="469" y="410" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="421" y="394.9978753852595" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0oe57h4_di" bpmnElement="SequenceFlow_0oe57h4">
+        <di:waypoint xsi:type="dc:Point" x="359" y="435" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="589" y="520" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0vw18rq_di" bpmnElement="ExclusiveGateway_0vw18rq" isMarkerVisible="true">
+        <dc:Bounds x="-79" y="760" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-53" y="631" width="62" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fvfplx_di" bpmnElement="SequenceFlow_1fvfplx">
+        <di:waypoint xsi:type="dc:Point" x="-54" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="-54" y="664" />
+        <di:waypoint xsi:type="dc:Point" x="42" y="664" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-49" y="733.3483834130782" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dzz8fp_di" bpmnElement="SequenceFlow_0dzz8fp">
+        <di:waypoint xsi:type="dc:Point" x="-54" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="-54" y="863" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-46" y="792.5" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1vkyj76_di" bpmnElement="IntermediateThrowEvent_1vkyj76">
+        <dc:Bounds x="-72" y="863" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-78" y="901" width="79" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0apj7jy_di" bpmnElement="IntermediateThrowEvent_0apj7jy">
+        <dc:Bounds x="206" y="871" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="200" y="908" width="47" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1dkzo0o_di" bpmnElement="IntermediateCatchEvent_1dkzo0o">
+        <dc:Bounds x="341" y="876" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="325" y="916" width="65" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0vz52ri_di" bpmnElement="IntermediateCatchEvent_0vz52ri">
+        <dc:Bounds x="622" y="872" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="599" y="912" width="80" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_149adfw_di" bpmnElement="SequenceFlow_149adfw">
+        <di:waypoint xsi:type="dc:Point" x="359" y="876" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="850.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_041l824_di" bpmnElement="SequenceFlow_041l824">
+        <di:waypoint xsi:type="dc:Point" x="640" y="872" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="848.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteAllottedResourceBRG.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteAllottedResourceBRG.bpmn
new file mode 100644
index 0000000..82524a1
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteAllottedResourceBRG.bpmn
@@ -0,0 +1,422 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoDeleteAllottedResourceBRG" name="DoDeleteAllottedResourceBRG" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bfuk6l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="GetAAIAR" name="Get AAI AR" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0bfuk6l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xm9g9s</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.getAaiAR(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_0ymy62j</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="PreProcessSDNCDeactivate" targetRef="SDNCDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCDeactivate" targetRef="PostProcessSDNCDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCDeactivate" targetRef="ARFoundInSDNC" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="PreProcessSDNCDelete" targetRef="SDNCDelete" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCDelete" targetRef="postProcessSDNCDelete" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCDelete" targetRef="PreProcessSDNCUnassign" />
+    <bpmn2:scriptTask id="PreProcessSDNCDeactivate" name="PreProcess SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.preProcessSDNCDeactivate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCDeactivate" name="SDNC Deactivate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeactivateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCDeactivate" name="PostProcess SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeactivateResponse")
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.validateSDNCResp(execution, response, "deactivate" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCDelete" name="PreProcess SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>foundInSDNC</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.preProcessSDNCDelete(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCDelete" name="SDNC Delete" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeleteRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCDelete" name="PostProcess SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeleteResponse")
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.validateSDNCResp(execution, response, "delete" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCUnassign" name="PreProcess SDNC Unassign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_06w33tk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.preProcessSDNCUnassign(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCUnassign" name="SDNC Unassign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncUnassignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncUnassignResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_06w33tk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCUnassign" name="PostProcess SDNC Unassign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncUnassignResponse")
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.validateSDNCResp(execution, response, "unassign" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_06w33tk" sourceRef="PreProcessSDNCUnassign" targetRef="SDNCUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCUnassign" targetRef="PostProcessSDNCUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCUnassign" targetRef="DeleteAAIAR" />
+    <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Unexpected Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1ibe7qx">
+        <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1fgqhmi">
+        <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ProcessError" name="Log/Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ProcessError" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ProcessError" targetRef="EndEvent_1fgqhmi" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="DeleteAAIAR" name="Delete AAI AR " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming>
+      <bpmn2:incoming>notFoundInSDNC</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ymy62j</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.deleteAaiAR(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ARFoundInSDNC" name="AR Found in SDNC?" default="foundInSDNC">
+      <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming>
+      <bpmn2:outgoing>foundInSDNC</bpmn2:outgoing>
+      <bpmn2:outgoing>notFoundInSDNC</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks">
+      <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="PreProcessSDNCDeactivate" />
+    <bpmn2:scriptTask id="UpdateAAIARPendingDelete" name="Update AAI AR PendingDelete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0xm9g9s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0g4cl5f</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.updateAaiAROrchStatus(execution, "PendingDelete")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v13nt6" name="To SDNCTasks">
+      <bpmn2:incoming>SequenceFlow_0g4cl5f</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0g4cl5f" sourceRef="UpdateAAIARPendingDelete" targetRef="IntermediateThrowEvent_0v13nt6" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ymy62j" sourceRef="DeleteAAIAR" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="foundInSDNC" name="Yes" sourceRef="ARFoundInSDNC" targetRef="PreProcessSDNCDelete" />
+    <bpmn2:sequenceFlow id="notFoundInSDNC" name="No" sourceRef="ARFoundInSDNC" targetRef="DeleteAAIAR">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("ARNotFoundInSDNC" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0bfuk6l" sourceRef="initialization" targetRef="GetAAIAR" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0xm9g9s" sourceRef="GetAAIAR" targetRef="UpdateAAIARPendingDelete" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" />
+  <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteAllottedResourceBRG">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="217" y="227" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="235" y="268" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="336" y="203" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="253" y="245" />
+        <di:waypoint xsi:type="dc:Point" x="336" y="245" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="295" y="230" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="GetAAIAR">
+        <dc:Bounds x="503" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1060" y="514" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1078" y="555" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm">
+        <di:waypoint xsi:type="dc:Point" x="92" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="609.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q">
+        <di:waypoint xsi:type="dc:Point" x="92" y="710" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="727.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o">
+        <di:waypoint xsi:type="dc:Point" x="142" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="206" y="748" />
+        <di:waypoint xsi:type="dc:Point" x="206" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="206" y="751.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp">
+        <di:waypoint xsi:type="dc:Point" x="359" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="604.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb">
+        <di:waypoint xsi:type="dc:Point" x="359" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq">
+        <di:waypoint xsi:type="dc:Point" x="409" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="486" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="486" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="590" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="501" y="665" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="PreProcessSDNCDeactivate">
+        <dc:Bounds x="42" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCDeactivate">
+        <dc:Bounds x="42" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCDeactivate">
+        <dc:Bounds x="42" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="PreProcessSDNCDelete">
+        <dc:Bounds x="309" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCDelete">
+        <dc:Bounds x="309" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCDelete">
+        <dc:Bounds x="309" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0zm728u_di" bpmnElement="PreProcessSDNCUnassign">
+        <dc:Bounds x="590" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCUnassign">
+        <dc:Bounds x="590" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCUnassign">
+        <dc:Bounds x="590" y="754" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_06w33tk_di" bpmnElement="SequenceFlow_06w33tk">
+        <di:waypoint xsi:type="dc:Point" x="640" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="604.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq">
+        <di:waypoint xsi:type="dc:Point" x="640" y="704" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="754" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="729" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43">
+        <di:waypoint xsi:type="dc:Point" x="690" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="532" />
+        <di:waypoint xsi:type="dc:Point" x="874" y="532" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="797" y="663" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true">
+        <dc:Bounds x="107" y="897" width="521" height="191" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx">
+        <dc:Bounds x="204" y="970" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="222" y="1011" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi">
+        <dc:Bounds x="481" y="970" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="499" y="1011" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ProcessError">
+        <dc:Bounds x="311" y="948" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs">
+        <di:waypoint xsi:type="dc:Point" x="240" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="311" y="988" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="276" y="973" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v">
+        <di:waypoint xsi:type="dc:Point" x="411" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="450" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="450" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="481" y="988" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="465" y="988" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="DeleteAAIAR">
+        <dc:Bounds x="874" y="492" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="ARFoundInSDNC" isMarkerVisible="true">
+        <dc:Bounds x="181" y="520" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="128" y="461" width="63" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8">
+        <dc:Bounds x="-70" y="527" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-79" y="568" width="60" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9">
+        <di:waypoint xsi:type="dc:Point" x="-34" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="42" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="4" y="530" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1k13o3m_di" bpmnElement="UpdateAAIARPendingDelete">
+        <dc:Bounds x="667" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0v13nt6_di" bpmnElement="IntermediateThrowEvent_0v13nt6">
+        <dc:Bounds x="837" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="887" y="234" width="71" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0g4cl5f_di" bpmnElement="SequenceFlow_0g4cl5f">
+        <di:waypoint xsi:type="dc:Point" x="767" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="802" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ymy62j_di" bpmnElement="SequenceFlow_0ymy62j">
+        <di:waypoint xsi:type="dc:Point" x="974" y="532" />
+        <di:waypoint xsi:type="dc:Point" x="1060" y="532" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1017" y="517" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_197vrli_di" bpmnElement="foundInSDNC">
+        <di:waypoint xsi:type="dc:Point" x="231" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="309" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="260" y="530" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ue1x4e_di" bpmnElement="notFoundInSDNC">
+        <di:waypoint xsi:type="dc:Point" x="206" y="520" />
+        <di:waypoint xsi:type="dc:Point" x="206" y="421" />
+        <di:waypoint xsi:type="dc:Point" x="924" y="421" />
+        <di:waypoint xsi:type="dc:Point" x="924" y="492" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="558" y="406" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bfuk6l_di" bpmnElement="SequenceFlow_0bfuk6l">
+        <di:waypoint xsi:type="dc:Point" x="436" y="243" />
+        <di:waypoint xsi:type="dc:Point" x="503" y="243" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="470" y="228" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xm9g9s_di" bpmnElement="SequenceFlow_0xm9g9s">
+        <di:waypoint xsi:type="dc:Point" x="603" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="667" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="635" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteAllottedResourceTXC.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteAllottedResourceTXC.bpmn
new file mode 100644
index 0000000..cac6c24
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteAllottedResourceTXC.bpmn
@@ -0,0 +1,422 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoDeleteAllottedResourceTXC" name="DoDeleteAllottedResourceTXC" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bfuk6l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="GetAAIAR" name="Get AAI AR" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0bfuk6l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xm9g9s</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.getAaiAR(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_0ymy62j</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="PreProcessSDNCDeactivate" targetRef="SDNCDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCDeactivate" targetRef="PostProcessSDNCDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCDeactivate" targetRef="ARFoundInSDNC" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="PreProcessSDNCDelete" targetRef="SDNCDelete" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCDelete" targetRef="postProcessSDNCDelete" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCDelete" targetRef="PreProcessSDNCUnassign" />
+    <bpmn2:scriptTask id="PreProcessSDNCDeactivate" name="PreProcess SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.preProcessSDNCDeactivate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCDeactivate" name="SDNC Deactivate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeactivateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCDeactivate" name="PostProcess SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeactivateResponse")
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.validateSDNCResp(execution, response, "deactivate" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCDelete" name="PreProcess SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>foundInSDNC</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.preProcessSDNCDelete(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCDelete" name="SDNC Delete" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeleteRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCDelete" name="PostProcess SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeleteResponse")
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.validateSDNCResp(execution, response, "delete" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCUnassign" name="PreProcess SDNC Unassign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_06w33tk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.preProcessSDNCUnassign(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCUnassign" name="SDNC Unassign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncUnassignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncUnassignResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_06w33tk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCUnassign" name="PostProcess SDNC Unassign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncUnassignResponse")
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.validateSDNCResp(execution, response, "unassign" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_06w33tk" sourceRef="PreProcessSDNCUnassign" targetRef="SDNCUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCUnassign" targetRef="PostProcessSDNCUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCUnassign" targetRef="DeleteAAIAR" />
+    <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Unexpected Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1ibe7qx">
+        <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1fgqhmi">
+        <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ProcessError" name="Log/Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ProcessError" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ProcessError" targetRef="EndEvent_1fgqhmi" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="DeleteAAIAR" name="Delete AAI AR " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming>
+      <bpmn2:incoming>notFoundInSDNC</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ymy62j</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.deleteAaiAR(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ARFoundInSDNC" name="AR Found in SDNC?" default="foundInSDNC">
+      <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming>
+      <bpmn2:outgoing>foundInSDNC</bpmn2:outgoing>
+      <bpmn2:outgoing>notFoundInSDNC</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks">
+      <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="PreProcessSDNCDeactivate" />
+    <bpmn2:scriptTask id="UpdateAAIARPendingDelete" name="Update AAI AR PendingDelete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0xm9g9s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0g4cl5f</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.updateAaiAROrchStatus(execution, "PendingDelete")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v13nt6" name="To SDNCTasks">
+      <bpmn2:incoming>SequenceFlow_0g4cl5f</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0g4cl5f" sourceRef="UpdateAAIARPendingDelete" targetRef="IntermediateThrowEvent_0v13nt6" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ymy62j" sourceRef="DeleteAAIAR" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="foundInSDNC" name="Yes" sourceRef="ARFoundInSDNC" targetRef="PreProcessSDNCDelete" />
+    <bpmn2:sequenceFlow id="notFoundInSDNC" name="No" sourceRef="ARFoundInSDNC" targetRef="DeleteAAIAR">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("ARNotFoundInSDNC" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0bfuk6l" sourceRef="initialization" targetRef="GetAAIAR" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0xm9g9s" sourceRef="GetAAIAR" targetRef="UpdateAAIARPendingDelete" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" />
+  <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteAllottedResourceTXC">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="217" y="227" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="235" y="268" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="336" y="203" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="253" y="245" />
+        <di:waypoint xsi:type="dc:Point" x="336" y="245" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="295" y="230" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="GetAAIAR">
+        <dc:Bounds x="503" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1060" y="514" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1078" y="555" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm">
+        <di:waypoint xsi:type="dc:Point" x="92" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="609.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q">
+        <di:waypoint xsi:type="dc:Point" x="92" y="710" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="727.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o">
+        <di:waypoint xsi:type="dc:Point" x="142" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="206" y="748" />
+        <di:waypoint xsi:type="dc:Point" x="206" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="206" y="751.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp">
+        <di:waypoint xsi:type="dc:Point" x="359" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="604.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb">
+        <di:waypoint xsi:type="dc:Point" x="359" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq">
+        <di:waypoint xsi:type="dc:Point" x="409" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="486" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="486" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="590" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="501" y="665" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="PreProcessSDNCDeactivate">
+        <dc:Bounds x="42" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCDeactivate">
+        <dc:Bounds x="42" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCDeactivate">
+        <dc:Bounds x="42" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="PreProcessSDNCDelete">
+        <dc:Bounds x="309" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCDelete">
+        <dc:Bounds x="309" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCDelete">
+        <dc:Bounds x="309" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0zm728u_di" bpmnElement="PreProcessSDNCUnassign">
+        <dc:Bounds x="590" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCUnassign">
+        <dc:Bounds x="590" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCUnassign">
+        <dc:Bounds x="590" y="754" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_06w33tk_di" bpmnElement="SequenceFlow_06w33tk">
+        <di:waypoint xsi:type="dc:Point" x="640" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="604.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq">
+        <di:waypoint xsi:type="dc:Point" x="640" y="704" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="754" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="729" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43">
+        <di:waypoint xsi:type="dc:Point" x="690" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="532" />
+        <di:waypoint xsi:type="dc:Point" x="874" y="532" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="797" y="663" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true">
+        <dc:Bounds x="107" y="897" width="521" height="191" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx">
+        <dc:Bounds x="204" y="970" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="222" y="1011" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi">
+        <dc:Bounds x="481" y="970" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="499" y="1011" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ProcessError">
+        <dc:Bounds x="311" y="948" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs">
+        <di:waypoint xsi:type="dc:Point" x="240" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="311" y="988" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="276" y="973" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v">
+        <di:waypoint xsi:type="dc:Point" x="411" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="450" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="450" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="481" y="988" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="465" y="988" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="DeleteAAIAR">
+        <dc:Bounds x="874" y="492" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="ARFoundInSDNC" isMarkerVisible="true">
+        <dc:Bounds x="181" y="520" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="128" y="461" width="63" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8">
+        <dc:Bounds x="-70" y="527" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-79" y="568" width="60" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9">
+        <di:waypoint xsi:type="dc:Point" x="-34" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="42" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="4" y="530" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1k13o3m_di" bpmnElement="UpdateAAIARPendingDelete">
+        <dc:Bounds x="667" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0v13nt6_di" bpmnElement="IntermediateThrowEvent_0v13nt6">
+        <dc:Bounds x="837" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="887" y="234" width="71" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0g4cl5f_di" bpmnElement="SequenceFlow_0g4cl5f">
+        <di:waypoint xsi:type="dc:Point" x="767" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="802" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ymy62j_di" bpmnElement="SequenceFlow_0ymy62j">
+        <di:waypoint xsi:type="dc:Point" x="974" y="532" />
+        <di:waypoint xsi:type="dc:Point" x="1060" y="532" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1017" y="517" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_197vrli_di" bpmnElement="foundInSDNC">
+        <di:waypoint xsi:type="dc:Point" x="231" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="309" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="260" y="530" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ue1x4e_di" bpmnElement="notFoundInSDNC">
+        <di:waypoint xsi:type="dc:Point" x="206" y="520" />
+        <di:waypoint xsi:type="dc:Point" x="206" y="421" />
+        <di:waypoint xsi:type="dc:Point" x="924" y="421" />
+        <di:waypoint xsi:type="dc:Point" x="924" y="492" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="558" y="406" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bfuk6l_di" bpmnElement="SequenceFlow_0bfuk6l">
+        <di:waypoint xsi:type="dc:Point" x="436" y="243" />
+        <di:waypoint xsi:type="dc:Point" x="503" y="243" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="470" y="228" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xm9g9s_di" bpmnElement="SequenceFlow_0xm9g9s">
+        <di:waypoint xsi:type="dc:Point" x="603" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="667" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="635" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy
new file mode 100644
index 0000000..f34f84a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy
@@ -0,0 +1,1131 @@
+package org.openecomp.mso.bpmn.vcpe.scripts
+

+

+import org.camunda.bpm.engine.ProcessEngineServices

+import org.camunda.bpm.engine.RepositoryService

+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity

+import org.camunda.bpm.engine.repository.ProcessDefinition

+import org.camunda.bpm.engine.runtime.Execution

+import org.junit.Before
+import org.junit.BeforeClass

+import org.junit.Rule

+import org.junit.Test
+import org.junit.Ignore

+import org.mockito.MockitoAnnotations
+import org.mockito.ArgumentCaptor
+import org.camunda.bpm.engine.delegate.BpmnError

+import org.openecomp.mso.bpmn.common.scripts.MsoUtils

+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.mock.FileUtil
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse
+import static com.github.tomakehurst.wiremock.client.WireMock.get
+import static com.github.tomakehurst.wiremock.client.WireMock.patch
+import static com.github.tomakehurst.wiremock.client.WireMock.put
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching
+import static org.junit.Assert.*;

+import static org.mockito.Mockito.*
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource
+import org.openecomp.mso.bpmn.core.RollbackData
+
+import com.github.tomakehurst.wiremock.junit.WireMockRule

+

+class DoCreateAllottedResourceBRGTest  {

+	

+	@Rule

+	public WireMockRule wireMockRule = new WireMockRule(28090)

+	
+		static def urnProps = new Properties()
+		static def aaiUriPfx
+	

+		String Prefix="DCARBRG_"

+		def utils = new MsoUtils()

+
+  		@BeforeClass
+		public static void setUpBeforeClass() {
+			def fr = new FileReader("src/test/resources/mso.bpmn.urn.properties")
+			urnProps.load(fr)
+			fr.close()
+			
+			aaiUriPfx = urnProps.get("aai.endpoint")
+		}
+		  

+	    @Before

+		public void init()

+		{

+			MockitoAnnotations.initMocks(this)

+		}
+		
+		
+		// ***** preProcessRequest *****

+				

+		@Test

+//		@Ignore  

+		public void preProcessRequest() {

+			ExecutionEntity mex = setupMock()
+			initPreProcess(mex)
+			

+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()

+			DoCreateAllottedResourceBRG.preProcessRequest(mex)

+

+			verify(mex).getVariable("isDebugLogEnabled")

+			verify(mex).setVariable("prefix", Prefix)

+					
+			assertTrue(checkMissingPreProcessRequest("URN_mso_workflow_sdncadapter_callback"))
+			assertTrue(checkMissingPreProcessRequest("serviceInstanceId"))
+			assertTrue(checkMissingPreProcessRequest("parentServiceInstanceId"))
+			assertTrue(checkMissingPreProcessRequest("allottedResourceModelInfo"))
+			assertTrue(checkMissingPreProcessRequest("vni"))
+			assertTrue(checkMissingPreProcessRequest("vgmuxBearerIP"))
+			assertTrue(checkMissingPreProcessRequest("brgWanMacAddress"))
+			assertTrue(checkMissingPreProcessRequest("allottedResourceRole"))
+			assertTrue(checkMissingPreProcessRequest("allottedResourceType"))

+		}
+		
+		
+		// ***** getAaiAR *****
+		
+		@Test
+//		@Ignore
+		public void getAaiAR() {
+			def arData = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml")
+			def arBrg = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
+			
+			wireMockRule
+				.stubFor(get(urlMatching("/aai/v[0-9]+/mylink"))
+						.willReturn(aResponse()
+							.withStatus(200)
+							.withHeader("Content-Type", "text/xml")
+							.withBodyFile("VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")))
+			
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
+			when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
+			when(mex.getVariable("CSI_service")).thenReturn(arData)
+			when(mex.getVariable("URN_aai_endpoint")).thenReturn(aaiUriPfx)
+			when(mex.getVariable("aaiAROrchStatus")).thenReturn("Active")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.getAaiAR(mex)
+			
+			verify(mex).setVariable("foundActiveAR", true)
+		}
+		
+		@Test
+//		@Ignore
+		public void getAaiAR_Duplicate() {
+			def arData = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml")
+			def arBrg = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
+			
+			wireMockRule
+				.stubFor(get(urlMatching("/aai/v[0-9]+/mylink"))
+						.willReturn(aResponse()
+							.withStatus(200)
+							.withHeader("Content-Type", "text/xml")
+							.withBodyFile("VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")))
+			
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
+			when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
+			when(mex.getVariable("CSI_service")).thenReturn(arData)
+			when(mex.getVariable("URN_aai_endpoint")).thenReturn(aaiUriPfx)
+			when(mex.getVariable("aaiAROrchStatus")).thenReturn("Active")
+			
+			// fail if duplicate
+			when(mex.getVariable("failExists")).thenReturn("true")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError( { _ -> DoCreateAllottedResourceBRG.getAaiAR(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void getAaiAR_NotActive() {
+			def arData = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml")
+			def arBrg = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
+			
+			wireMockRule
+				.stubFor(get(urlMatching("/aai/v[0-9]+/mylink"))
+						.willReturn(aResponse()
+							.withStatus(200)
+							.withHeader("Content-Type", "text/xml")
+							.withBodyFile("VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")))
+			
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
+			when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
+			when(mex.getVariable("CSI_service")).thenReturn(arData)
+			when(mex.getVariable("URN_aai_endpoint")).thenReturn(aaiUriPfx)
+			
+			// not active
+			when(mex.getVariable("aaiAROrchStatus")).thenReturn("not-active")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError( { _ -> DoCreateAllottedResourceBRG.getAaiAR(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void getAaiAR_NoStatus() {
+			def arData = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml")
+			def arBrg = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
+			
+			wireMockRule
+				.stubFor(get(urlMatching("/aai/v[0-9]+/mylink"))
+						.willReturn(aResponse()
+							.withStatus(200)
+							.withHeader("Content-Type", "text/xml")
+							.withBodyFile("VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")))
+			
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
+			when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
+			when(mex.getVariable("CSI_service")).thenReturn(arData)
+			when(mex.getVariable("URN_aai_endpoint")).thenReturn(aaiUriPfx)
+			
+			when(mex.getVariable("aaiAROrchStatus")).thenReturn(null)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.getAaiAR(mex)
+			
+			verify(mex, never()).setVariable("foundActiveAR", true)
+		}
+		
+		
+		// ***** createAaiAR *****
+		
+		@Test
+//		@Ignore
+		public void createAaiAR() {
+			ExecutionEntity mex = setupMock()
+			initCreateAaiAr(mex)
+			
+			wireMockRule
+				.stubFor(put(urlMatching("/aai/v[0-9]+/mypsi/allotted-resources/allotted-resource/myid"))
+						.willReturn(aResponse()
+							.withStatus(200)))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.createAaiAR(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(3)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("rollbackData", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			def data = valcap.getAllValues().get(valcap.getAllValues().size()-1)
+			assertNotNull(data)
+			assertTrue(data instanceof RollbackData)
+			
+			assertEquals("45", data.get(Prefix, "disableRollback"))
+			assertEquals("true", data.get(Prefix, "rollbackAAI"))
+			assertEquals("myid", data.get(Prefix, "allottedResourceId"))
+			assertEquals("sii", data.get(Prefix, "serviceInstanceId"))
+			assertEquals("psii", data.get(Prefix, "parentServiceInstanceId"))
+			assertEquals(aaiUriPfx+"/aai/v9/mypsi/allotted-resources/allotted-resource/myid", data.get(Prefix, "aaiARPath"))
+		}
+		
+		@Test
+//		@Ignore
+		public void createAaiAR_NoArid_NoModelUuids() {
+			ExecutionEntity mex = setupMock()
+			initCreateAaiAr(mex)
+				
+			// no allottedResourceId - will be generated
+			
+			when(mex.getVariable("allottedResourceId")).thenReturn(null)
+			
+			wireMockRule
+				.stubFor(put(urlMatching("/aai/v[0-9]+/mypsi/allotted-resources/allotted-resource/.*"))
+						.willReturn(aResponse()
+							.withStatus(200)))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.createAaiAR(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(4)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("allottedResourceId", keycap.getAllValues().get(0))
+			assertEquals("rollbackData", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			def arid = valcap.getAllValues().get(0)
+			assertNotNull(arid)
+			assertFalse(arid.isEmpty())
+			
+			def data = valcap.getAllValues().get(valcap.getAllValues().size()-1)
+			assertNotNull(data)
+			assertTrue(data instanceof RollbackData)
+			
+			assertEquals(arid, data.get(Prefix, "allottedResourceId"))
+		}
+		
+		@Test
+//		@Ignore
+		public void createAaiAR_MissingPsiLink() {
+			ExecutionEntity mex = setupMock()
+			initCreateAaiAr(mex)
+			
+			when(mex.getVariable("PSI_resourceLink")).thenReturn(null)
+			
+			wireMockRule
+				.stubFor(put(urlMatching("/aai/v[0-9]+/mypsi/allotted-resources/allotted-resource/myid"))
+						.willReturn(aResponse()
+							.withStatus(200)))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void createAaiAR_HttpFailed() {
+			ExecutionEntity mex = setupMock()
+			initCreateAaiAr(mex)
+			
+			// return 500 status
+			wireMockRule
+				.stubFor(put(urlMatching("/aai/v[0-9]+/mypsi/allotted-resources/allotted-resource/myid"))
+						.willReturn(aResponse()
+							.withStatus(500)))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void createAaiAR_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			initCreateAaiAr(mex)
+			
+			when(mex.getVariable("URN_aai_endpoint")).thenThrow(new BpmnError("expected exception"))
+			
+			wireMockRule
+				.stubFor(put(urlMatching("/aai/v[0-9]+/mypsi/allotted-resources/allotted-resource/myid"))
+						.willReturn(aResponse()
+							.withStatus(200)))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void createAaiAR_Ex() {
+			ExecutionEntity mex = setupMock()
+			initCreateAaiAr(mex)
+			
+			when(mex.getVariable("URN_aai_endpoint")).thenThrow(new RuntimeException("expected exception"))
+			
+			wireMockRule
+				.stubFor(put(urlMatching("/aai/v[0-9]+/mypsi/allotted-resources/allotted-resource/myid"))
+						.willReturn(aResponse()
+							.withStatus(200)))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
+		}
+		
+		
+		// ***** buildSDNCRequest *****
+		
+		@Test
+//		@Ignore
+		public void buildSDNCRequest() {
+			ExecutionEntity mex = setupMock()
+			initBuildSDNCRequest(mex)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			String result = DoCreateAllottedResourceBRG.buildSDNCRequest(mex, "myact", "myreq")
+			
+			assertTrue(result.indexOf("<sdncadapter:RequestId>myreq</") >= 0)
+			assertTrue(result.indexOf("<sdncadapter:SvcAction>myact</") >= 0)
+			assertTrue(result.indexOf("<allotted-resource-id>ari</") >= 0)
+			assertTrue(result.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
+			assertTrue(result.indexOf("<service-instance-id>psii</") >= 0)
+			assertTrue(result.indexOf("<parent-service-instance-id>psii</") >= 0)
+			assertTrue(result.indexOf("<sdncadapter:CallbackUrl>scu</") >= 0)
+			assertTrue(result.indexOf("<request-id>mri</") >= 0)
+			assertTrue(result.indexOf("<brg-wan-mac-address>bwma</") >= 0)
+			assertTrue(result.indexOf("<vni>myvni</") >= 0)
+			assertTrue(result.indexOf("<vgmux-bearer-ip>vbi</") >= 0)
+			assertTrue(result.indexOf("<model-invariant-uuid>miu</") >= 0)
+			assertTrue(result.indexOf("<model-uuid>mu</") >= 0)
+			assertTrue(result.indexOf("<model-customization-uuid>mcu</") >= 0)
+			assertTrue(result.indexOf("<model-version>mv</") >= 0)
+			assertTrue(result.indexOf("<model-name>mn</") >= 0)
+		}
+		
+		@Test
+//		@Ignore
+		public void buildSDNCRequest_EmptyModelInfo() {
+			ExecutionEntity mex = setupMock()
+			initBuildSDNCRequest(mex)
+			
+			when(mex.getVariable("allottedResourceModelInfo")).thenReturn("{}")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			String result = DoCreateAllottedResourceBRG.buildSDNCRequest(mex, "myact", "myreq")
+			
+			assertTrue(result.indexOf("<sdncadapter:RequestId>myreq</") >= 0)
+			assertTrue(result.indexOf("<sdncadapter:SvcAction>myact</") >= 0)
+			assertTrue(result.indexOf("<allotted-resource-id>ari</") >= 0)
+			assertTrue(result.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
+			assertTrue(result.indexOf("<service-instance-id>psii</") >= 0)
+			assertTrue(result.indexOf("<parent-service-instance-id>psii</") >= 0)
+			assertTrue(result.indexOf("<sdncadapter:CallbackUrl>scu</") >= 0)
+			assertTrue(result.indexOf("<request-id>mri</") >= 0)
+			assertTrue(result.indexOf("<brg-wan-mac-address>bwma</") >= 0)
+			assertTrue(result.indexOf("<vni>myvni</") >= 0)
+			assertTrue(result.indexOf("<vgmux-bearer-ip>vbi</") >= 0)
+			assertTrue(result.indexOf("<model-invariant-uuid/>") >= 0)
+			assertTrue(result.indexOf("<model-uuid/>") >= 0)
+			assertTrue(result.indexOf("<model-customization-uuid/>") >= 0)
+			assertTrue(result.indexOf("<model-version/>") >= 0)
+			assertTrue(result.indexOf("<model-name/>") >= 0)
+		}
+		
+		@Test
+//		@Ignore
+		public void buildSDNCRequest_Ex() {
+			ExecutionEntity mex = setupMock()
+			initBuildSDNCRequest(mex)
+			
+			when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.buildSDNCRequest(mex, "myact", "myreq") }))
+		}
+		
+		
+		// ***** preProcessSDNCAssign *****
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCAssign() {
+			ExecutionEntity mex = setupMock()
+			def data = initPreProcessSDNC(mex)
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessSDNCAssign(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(2)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("sdncAssignRequest", keycap.getAllValues().get(0))
+			assertEquals("rollbackData", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			def req = valcap.getAllValues().get(0)
+			assertNotNull(req)
+			
+			assertEquals(data, valcap.getAllValues().get(valcap.getAllValues().size()-1))
+			
+			def rbreq = data.get(Prefix, "sdncAssignRollbackReq")
+			
+			assertTrue(req.indexOf("<sdncadapter:SvcAction>assign</") >= 0)
+			assertTrue(req.indexOf("<request-action>CreateBRGInstance</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
+			
+			assertTrue(rbreq.indexOf("<sdncadapter:SvcAction>unassign</") >= 0)
+			assertTrue(rbreq.indexOf("<request-action>DeleteBRGInstance</") >= 0)
+			assertTrue(rbreq.indexOf("<sdncadapter:RequestId>") >= 0)
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCAssign_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNC(mex)
+			
+			when(mex.getVariable("rollbackData")).thenThrow(new BpmnError("expected exception"))
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCAssign(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCAssign_Ex() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNC(mex)
+			
+			when(mex.getVariable("rollbackData")).thenThrow(new RuntimeException("expected exception"))
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCAssign(mex) }))
+		}
+		
+		
+		// ***** preProcessSDNCCreate *****
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCCreate() {
+			ExecutionEntity mex = setupMock()
+			def data = initPreProcessSDNC(mex)
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessSDNCCreate(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(2)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("sdncCreateRequest", keycap.getAllValues().get(0))
+			assertEquals("rollbackData", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			def req = valcap.getAllValues().get(0)
+			assertNotNull(req)
+			
+			assertEquals(data, valcap.getAllValues().get(valcap.getAllValues().size()-1))
+			
+			def rbreq = data.get(Prefix, "sdncCreateRollbackReq")
+			
+			assertTrue(req.indexOf("<sdncadapter:SvcAction>create</") >= 0)
+			assertTrue(req.indexOf("<request-action>CreateBRGInstance</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
+			
+			assertTrue(rbreq.indexOf("<sdncadapter:SvcAction>delete</") >= 0)
+			assertTrue(rbreq.indexOf("<request-action>DeleteBRGInstance</") >= 0)
+			assertTrue(rbreq.indexOf("<sdncadapter:RequestId>") >= 0)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCCreate_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNC(mex)
+			
+			when(mex.getVariable("rollbackData")).thenThrow(new BpmnError("expected exception"))
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCCreate(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCCreate_Ex() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNC(mex)
+			
+			when(mex.getVariable("rollbackData")).thenThrow(new RuntimeException("expected exception"))
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCCreate(mex) }))
+		}
+		
+		
+		// ***** preProcessSDNCActivate *****
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCActivate() {
+			ExecutionEntity mex = setupMock()
+			def data = initPreProcessSDNC(mex)
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessSDNCActivate(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(2)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("sdncActivateRequest", keycap.getAllValues().get(0))
+			assertEquals("rollbackData", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			def req = valcap.getAllValues().get(0)
+			assertNotNull(req)
+			
+			assertEquals(data, valcap.getAllValues().get(valcap.getAllValues().size()-1))
+			
+			def rbreq = data.get(Prefix, "sdncActivateRollbackReq")
+			
+			assertTrue(req.indexOf("<sdncadapter:SvcAction>activate</") >= 0)
+			assertTrue(req.indexOf("<request-action>CreateBRGInstance</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
+			
+			assertTrue(rbreq.indexOf("<sdncadapter:SvcAction>deactivate</") >= 0)
+			assertTrue(rbreq.indexOf("<request-action>DeleteBRGInstance</") >= 0)
+			assertTrue(rbreq.indexOf("<sdncadapter:RequestId>") >= 0)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCActivate_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNC(mex)
+			
+			when(mex.getVariable("rollbackData")).thenThrow(new BpmnError("expected exception"))
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCActivate(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCActivate_Ex() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNC(mex)
+			
+			when(mex.getVariable("rollbackData")).thenThrow(new RuntimeException("expected exception"))
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCActivate(mex) }))
+		}
+		
+		
+		// ***** validateSDNCResp *****
+		
+		@Test
+//		@Ignore
+		public void validateSDNCResp() {
+			ExecutionEntity mex = setupMock()
+			def data = initValidateSDNCResp(mex)
+			def resp = initValidateSDNCResp_Resp()
+			
+			when(mex.getVariable(Prefix+"sdncResponseSuccess")).thenReturn(true)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create")
+			
+			verify(mex).getVariable("WorkflowException")
+			verify(mex).getVariable("SDNCA_SuccessIndicator")
+			verify(mex).getVariable("rollbackData")
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(4)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("rollbackData", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			assertEquals(data, valcap.getAllValues().get(valcap.getAllValues().size()-1))
+			
+			assertEquals("true", data.get(Prefix, "rollback" +  "SDNCcreate"))
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void validateSDNCResp_Get() {
+			ExecutionEntity mex = setupMock()
+			def data = initValidateSDNCResp(mex)
+			def resp = initValidateSDNCResp_Resp()
+			
+			when(mex.getVariable(Prefix+"sdncResponseSuccess")).thenReturn(true)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "get")
+			
+			verify(mex).getVariable("WorkflowException")
+			verify(mex).getVariable("SDNCA_SuccessIndicator")
+			
+			verify(mex, never()).getVariable("rollbackData")
+		}
+		
+		@Test
+//		@Ignore
+		public void validateSDNCResp_Unsuccessful() {
+			ExecutionEntity mex = setupMock()
+			initValidateSDNCResp(mex)
+			def resp = initValidateSDNCResp_Resp()
+			
+			// unsuccessful
+			when(mex.getVariable(Prefix+"sdncResponseSuccess")).thenReturn(false)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
+		}
+		
+		@Test
+//		@Ignore
+		public void validateSDNCResp_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			initValidateSDNCResp(mex)
+			def resp = initValidateSDNCResp_Resp()
+			
+			when(mex.getVariable("WorkflowException")).thenThrow(new BpmnError("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
+		}
+		
+		@Test
+//		@Ignore
+		public void validateSDNCResp_Ex() {
+			ExecutionEntity mex = setupMock()
+			initValidateSDNCResp(mex)
+			def resp = initValidateSDNCResp_Resp()
+			
+			when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
+		}
+		
+		
+		// ***** preProcessSDNCGet *****
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCGet_FoundAR() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNCGet(mex)
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessSDNCGet(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(1)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("sdncGetRequest", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			String req = valcap.getAllValues().get(valcap.getAllValues().size()-1)
+			
+			assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:SvcOperation>arlink</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:CallbackUrl>myurl</") >= 0)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCGet_NotFoundAR() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNCGet(mex)
+			
+			when(mex.getVariable("foundActiveAR")).thenReturn(false)
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessSDNCGet(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(1)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("sdncGetRequest", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			String req = valcap.getAllValues().get(valcap.getAllValues().size()-1)
+			
+			assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:SvcOperation>assignlink</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:CallbackUrl>myurl</") >= 0)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCGet_Ex() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNCGet(mex)
+			
+			when(mex.getVariable("foundActiveAR")).thenThrow(new RuntimeException("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCGet(mex) }))
+		}
+		
+		
+		// ***** updateAaiAROrchStatus *****
+		
+		@Test
+//		@Ignore
+		public void updateAaiAROrchStatus() {
+			ExecutionEntity mex = setupMock()
+			initUpdateAaiAROrchStatus(mex)
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.updateAaiAROrchStatus(mex, "success")
+		}
+		
+		
+		// ***** generateOutputs *****
+		
+		@Test
+//		@Ignore
+		public void generateOutputs() {
+			ExecutionEntity mex = setupMock()
+			def brgtop = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml")
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("enhancedCallbackRequestData")).thenReturn(brgtop)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.generateOutputs(mex)
+			
+			verify(mex).setVariable("allotedResourceName", "namefromrequest")
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void generateOutputs_BadXml() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("enhancedCallbackRequestData")).thenReturn("invalid xml")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.generateOutputs(mex)
+			
+			verify(mex, never()).setVariable(anyString(), anyString())
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void generateOutputs_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("enhancedCallbackRequestData")).thenThrow(new BpmnError("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.generateOutputs(mex)
+			verify(mex, never()).setVariable(anyString(), anyString())
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void generateOutputs_Ex() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("enhancedCallbackRequestData")).thenThrow(new RuntimeException("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.generateOutputs(mex)
+			verify(mex, never()).setVariable(anyString(), anyString())
+			
+		}
+		
+		
+		// ***** preProcessRollback *****
+		
+		@Test
+//		@Ignore
+		public void preProcessRollback() {
+			ExecutionEntity mex = setupMock()
+			WorkflowException wfe = mock(WorkflowException.class)
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("WorkflowException")).thenReturn(wfe)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessRollback(mex)
+			
+			verify(mex).setVariable("prevWorkflowException", wfe)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessRollback_NotWFE() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("WorkflowException")).thenReturn("I'm not a WFE")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessRollback(mex)
+			
+//			verify(mex, never()).setVariable("prevWorkflowException", any())
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessRollback_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("WorkflowException")).thenThrow(new BpmnError("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.preProcessRollback(mex)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessRollback_Ex() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.preProcessRollback(mex)
+			
+		}
+		
+		
+		// ***** postProcessRollback *****
+		
+		@Test
+//		@Ignore
+		public void postProcessRollback() {
+			ExecutionEntity mex = setupMock()
+			WorkflowException wfe = mock(WorkflowException.class)
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("prevWorkflowException")).thenReturn(wfe)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.postProcessRollback(mex)
+			
+			verify(mex).setVariable("WorkflowException", wfe)
+			verify(mex).setVariable("rollbackData", null)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void postProcessRollback_NotWFE() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("prevWorkflowException")).thenReturn("I'm not a WFE")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.postProcessRollback(mex)
+			
+//			verify(mex, never()).setVariable("WorkflowException", any())
+			verify(mex).setVariable("rollbackData", null)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void postProcessRollback_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("prevWorkflowException")).thenThrow(new BpmnError("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.postProcessRollback(mex) }))
+			verify(mex, never()).setVariable("rollbackData", null)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void postProcessRollback_Ex() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("prevWorkflowException")).thenThrow(new RuntimeException("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.postProcessRollback(mex)
+			verify(mex, never()).setVariable("rollbackData", null)
+			
+		}
+		
+		private boolean checkMissingPreProcessRequest(String fieldnm) {
+			ExecutionEntity mex = setupMock()
+			initPreProcess(mex)
+									
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			when(mex.getVariable(fieldnm)).thenReturn("")
+			
+			return doBpmnError( { _ -> DoCreateAllottedResourceBRG.preProcessRequest(mex) })
+		}
+		
+		private boolean doBpmnError(def func) {
+			
+			try {
+				func()
+				return false;
+				
+			} catch(BpmnError e) {
+				return true;
+			}
+		}
+		
+		private void initPreProcess(ExecutionEntity mex) {
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("sdncurn")
+			when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
+			when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
+			when(mex.getVariable("allottedResourceModelInfo")).thenReturn("armi")
+			when(mex.getVariable("vni")).thenReturn("myvni")
+			when(mex.getVariable("vgmuxBearerIP")).thenReturn("vbi")
+			when(mex.getVariable("brgWanMacAddress")).thenReturn("bwma")
+			when(mex.getVariable("allottedResourceRole")).thenReturn("arr")
+			when(mex.getVariable("allottedResourceType")).thenReturn("art")
+		}
+		
+		private initCreateAaiAr(ExecutionEntity mex) {				
+			when(mex.getVariable("disableRollback")).thenReturn(45)
+			when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
+			when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("allottedResourceId")).thenReturn("myid")
+			when(mex.getVariable("URN_aai_endpoint")).thenReturn(aaiUriPfx)
+			when(mex.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn(urnProps.get("mso.workflow.global.default.aai.namespace"))
+			when(mex.getVariable("PSI_resourceLink")).thenReturn(aaiUriPfx+"/aai/v9/mypsi")
+			when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
+			when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
+			when(mex.getVariable("CSI_resourceLink")).thenReturn(aaiUriPfx+"/aai/v9/mycsi")
+			when(mex.getVariable("allottedResourceModelInfo")).thenReturn("""
+					{
+						"modelInvariantUuid":"modelinvuuid",
+						"modelUuid":"modeluuid",
+						"modelCustomizationUuid":"modelcustuuid"
+					}
+				""")
+		}
+		
+		private initBuildSDNCRequest(ExecutionEntity mex) {
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("allottedResourceId")).thenReturn("ari")
+			when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
+			when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
+			when(mex.getVariable("sdncCallbackUrl")).thenReturn("scu")
+			when(mex.getVariable("msoRequestId")).thenReturn("mri")
+			when(mex.getVariable("brgWanMacAddress")).thenReturn("bwma")
+			when(mex.getVariable("vni")).thenReturn("myvni")
+			when(mex.getVariable("vgmuxBearerIP")).thenReturn("vbi")
+			when(mex.getVariable("allottedResourceModelInfo")).thenReturn("""
+					{
+						"modelInvariantUuid":"miu",
+						"modelUuid":"mu",
+						"modelCustomizationUuid":"mcu",
+						"modelVersion":"mv",
+						"modelName":"mn"
+					}
+				""")
+		}
+		
+		private RollbackData initPreProcessSDNC(ExecutionEntity mex) {
+			def data = new RollbackData()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("rollbackData")).thenReturn(data)
+			
+			return data
+		}
+		
+		private initPreProcessSDNCGet(ExecutionEntity mex) {
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("sdncCallbackUrl")).thenReturn("myurl")
+			when(mex.getVariable("foundActiveAR")).thenReturn(true)
+			when(mex.getVariable("aaiARGetResponse")).thenReturn("<selflink>arlink</selflink>")
+			when(mex.getVariable("sdncAssignResponse")).thenReturn("<response-data>&lt;object-path&gt;assignlink&lt;/object-path&gt;</response-data>")
+			when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
+			when(mex.getVariable("junitSleepMs")).thenReturn("5")
+			when(mex.getVariable("sdncCallbackUrl")).thenReturn("myurl")
+		}
+		
+		private RollbackData initValidateSDNCResp(ExecutionEntity mex) {
+			def data = new RollbackData()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("prefix")).thenReturn(Prefix)
+			when(mex.getVariable("SDNCA_SuccessIndicator")).thenReturn(true)
+			when(mex.getVariable("rollbackData")).thenReturn(data)
+			
+			return data
+		}
+		
+		private String initValidateSDNCResp_Resp() {
+			return "<response-data>&lt;response-code&gt;200&lt;/response-code&gt;</response-data>"
+		}
+		
+		private initUpdateAaiAROrchStatus(ExecutionEntity mex) {
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("aaiARPath")).thenReturn(aaiUriPfx+"/aai/v9/myurl")
+			
+			wireMockRule
+				.stubFor(patch(urlMatching("/aai/v[0-9]+/myurl"))
+							.willReturn(aResponse()
+								.withStatus(200)))
+		}

+		

+		private ExecutionEntity setupMock() {

+			

+			ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)

+			when(mockProcessDefinition.getKey()).thenReturn("DoCreateAllottedResourceBRG")

+			RepositoryService mockRepositoryService = mock(RepositoryService.class)

+			when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)

+			when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoCreateAllottedResourceBRG")

+			when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")

+			ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)

+			when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)

+			

+			ExecutionEntity mex = mock(ExecutionEntity.class)

+			

+			when(mex.getId()).thenReturn("100")

+			when(mex.getProcessDefinitionId()).thenReturn("DoCreateAllottedResourceBRG")

+			when(mex.getProcessInstanceId()).thenReturn("DoCreateAllottedResourceBRG")

+			when(mex.getProcessEngineServices()).thenReturn(mockProcessEngineServices)

+			when(mex.getProcessEngineServices().getRepositoryService().getProcessDefinition(mex.getProcessDefinitionId())).thenReturn(mockProcessDefinition)

+			

+			return mex

+		}

+		

+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/CreateVcpeResCustServiceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/CreateVcpeResCustServiceTest.java
new file mode 100644
index 0000000..893eceb
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/CreateVcpeResCustServiceTest.java
@@ -0,0 +1,590 @@
+package org.openecomp.mso.bpmn.vcpe;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetCustomer;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+//		TODO: uncomment when Homing BB is merged
+// import static org.openecomp.mso.bpmn.mock.StubResponseSNIRO.mockSNIRO;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+public class CreateVcpeResCustServiceTest extends WorkflowTest {
+
+	private final CallbackSet callbacks = new CallbackSet();
+	private final String request;
+	
+	public CreateVcpeResCustServiceTest() throws IOException {
+		callbacks.put("assign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyAssignCallback.xml"));
+		callbacks.put("query", FileUtil.readResourceFile("__files/VCPE/SDNCTopologyQueryCallbackNetworkInstance.xml"));
+		callbacks.put("activate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyActivateCallback.xml"));
+		callbacks.put("vnfCreate", FileUtil.readResourceFile("__files/VCPE/VfModularity/VNFAdapterRestCreateCallback.xml"));
+		callbacks.put("create", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyCreateCallback.xml"));
+		callbacks.put("queryTXC", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml"));
+		callbacks.put("queryBRG", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml"));
+		
+		callbacks.put("sniro", JSON, "SNIROResponse", FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallback2AR1Vnf"));
+		callbacks.put("sniro2", JSON, "SNIROResponse", FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallback2AR1Vnf2Net"));
+		callbacks.put("sniroNoSol", JSON, "SNIROResponse", FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackNoSolutionFound"));
+		callbacks.put("sniroPolicyEx", JSON, "SNIROResponse", FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackPolicyException"));
+		callbacks.put("sniroServiceEx", JSON, "SNIROResponse", FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackServiceException"));
+		
+		request = FileUtil.readResourceFile("__files/VCPE/request.json");
+	}
+
+
+//	/**
+//	 * End-to-End flow - Unit test for CreateVcpeResCustService.bpmn
+//	 *  - String input & String response
+//	 */
+//
+//	@Test
+//	@Ignore
+//	@Deployment(resources = {"process/CreateVcpeResCustService.bpmn",
+//			                 "subprocess/DoCreateServiceInstance.bpmn",
+//			                 "subprocess/DoCreateServiceInstanceRollback.bpmn",
+//			                 "subprocess/DoCreateNetworkInstance.bpmn",
+//			                 "subprocess/DoCreateNetworkInstanceRollback.bpmn",
+//			                 "subprocess/DoCreateVnfAndModules.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXC.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXCRollback.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRG.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRGRollback.bpmn",
+//			                 "subprocess/BuildingBlock/DecomposeService.bpmn",
+//			                 "subprocess/BuildingBlock/Homing.bpmn",
+//			                 "subprocess/GenericGetService.bpmn",
+//			                 "subprocess/GenericPutService.bpmn",
+//			                 "subprocess/SDNCAdapterV1.bpmn",
+//			                 "subprocess/DoCreateVnf.bpmn",
+//			                 "subprocess/GenericGetVnf.bpmn",
+//			                 "subprocess/GenericPutVnf.bpmn",
+//			                 "subprocess/FalloutHandler.bpmn",
+//			                 "subprocess/GenericDeleteService.bpmn",
+//			                 "subprocess/ReceiveWorkflowMessage.bpmn",
+//	                         "subprocess/CompleteMsoProcess.bpmn"})
+//
+//	public void invokeCreateServiceInstanceInfra_Success() throws Exception {
+//
+//		logStart();
+//
+//		// setup simulators
+//		//MockGetCustomer_VCPE();
+//		MockGetCustomer("MCBH-1610", "VCPE/getCustomer.xml");
+//		//MockGetNetworkCatalogData_VCPE();
+//		MockGetNetworkCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/getCatalogNetworkData.json");
+//		//MockGetVnfCatalogData_VCPE();
+//		MockGetVnfCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/getCatalogVnfData.json");
+//		//MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/getCatalogServiceResourcesData.json");
+//		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/getCatalogServiceResourcesDataNoNetworkVnf.json");
+//		MockGetServiceInstanceById_VCPE();
+//		MockPutServiceInstance_VCPE();
+//
+//		//SDNC Adapter Mocks
+//		mockSDNCAdapterRest();
+//		mockSDNCAdapter();
+//
+//		//from CreateNetworkInstanceTest
+//		sdncAdapterNetworkTopologySimulator_CreateNetworkV2();
+//		MockNetworkAdapterResponse_CreateSuccessV2();
+//		MockAAIResponse_queryName_CreateNetwork_404V2();         // 'network-name' not in AAI , Ok to Create.
+//		MockAAIResponse_cloudRegion25_Success();
+//		MockAAIResponse_queryId_CreateNetwork_SuccessV2();
+//		MockAAIResponse_queryVpnBinding_CreateNetwork_SuccessV2();
+//		MockAAIResponse_queryVpnBinding2_CreateNetwork_SuccessV2();
+//		MockAAIResponse_queryNetworkPolicy_CreateNetwork_SuccessV2();
+//		MockAAIResponse_queryNetworkTableRef_CreateNetwork_SuccessV2();
+//		MockAAIResponse_updateContrail_CreateNetwork_SuccessV2();
+//		MockDBUpdate_Success();
+//		MocksAAIResponse_queryNetworkInstance_CreateNetwork_Success();
+//
+//		//network AAI Mocks
+//		MockGetNetworkById("680b7453-0ec4-4d96-b355-280d981d418f", "VCPE/getNetwork.xml");
+//		MockGetNetworkById("444a701a-6419-45b2-aa52-b45a1b719cf6", "VCPE/getNetwork.xml");
+//		MockGetNetworkById("cf82a73f-de7f-4f84-8dfc-16a487c63a36", "VCPE/getNetwork.xml");
+//		MockPutNetwork("680b7453-0ec4-4d96-b355-280d981d418f");
+//		MockPutNetwork("cf82a73f-de7f-4f84-8dfc-16a487c63a36");
+//
+//		MockPutGenericVnf("9c61db87-345c-49ae-ac80-472211df5deb");
+//		
+//		mockSNIRO();
+//
+//		String businessKey = UUID.randomUUID().toString();
+////		String createVfModuleRequest =
+////			FileUtil.readResourceFile("__files/VCPE/CreateVfModule_VID_request.json");
+//
+//		Map<String, Object> variables = setupVariablesObjectMap();
+//
+//		TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVcpeResCustService",
+//			"v1", businessKey, getRequest(), variables);
+//
+//		WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+//
+//		String responseBody = response.getResponse();
+//		System.out.println("Workflow (Synch) Response:\n" + responseBody);
+//
+//		injectSDNCCallbacks(callbacks, "assign, query");
+//		injectSDNCCallbacks(callbacks, "activate");
+//
+//		// TODO add appropriate assertions
+//
+//		waitForProcessEnd(businessKey, 10000);
+//		checkVariable(businessKey, "CreateVcpeResCustServiceSuccessIndicator", true);
+//
+//		logEnd();
+//	}
+	
+	
+	/**
+	 * TEST Decompose + Homing - Unit test for CreateVcpeResCustService.bpmn
+	 *  - String input & String response
+	 */
+
+	@Test
+//  TODO: run this test when Homing BB is merged
+	@Ignore
+	@Deployment(resources = {"process/CreateVcpeResCustService.bpmn",
+			                 "subprocess/DoCreateServiceInstance.bpmn",
+			                 "subprocess/DoCreateServiceInstanceRollback.bpmn",
+			                 "subprocess/DoCreateNetworkInstance.bpmn",
+			                 "subprocess/DoCreateNetworkInstanceRollback.bpmn",
+			                 "subprocess/BuildingBlock/DecomposeService.bpmn",
+			                 "subprocess/BuildingBlock/Homing.bpmn",
+			                 "subprocess/GenericGetService.bpmn",
+			                 "subprocess/GenericPutService.bpmn",
+			                 "subprocess/SDNCAdapterV1.bpmn",
+			                 "subprocess/DoCreateVnf.bpmn",
+			                 "subprocess/GenericGetVnf.bpmn",
+			                 "subprocess/GenericPutVnf.bpmn",
+			                 "subprocess/FalloutHandler.bpmn",
+			                 "subprocess/GenericDeleteService.bpmn",
+			                 "subprocess/DoCreateAllottedResourceBRG.bpmn",
+			                 "subprocess/DoCreateAllottedResourceBRGRollback.bpmn",
+			                 "subprocess/DoCreateAllottedResourceTXC.bpmn",
+			                 "subprocess/DoCreateAllottedResourceTXCRollback.bpmn",
+	                         "subprocess/CompleteMsoProcess.bpmn"})
+
+	public void invokeDecompositionHomingCreateServiceInstanceNetwork() throws Exception {
+
+		logStart();
+
+		// setup simulators
+		MockGetCustomer("MCBH-1610", "VCPE/getCustomer.xml");
+
+		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/getCatalogVcpe.json");
+		
+//		MockPutServiceInstance_VCPE();
+		
+//		MockGetNetworkByIdWithDepth("680b7453-0ec4-4d96-b355-280d981d418f", "VCPE/CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+//		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "VCPE/CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+
+		MockPutGenericVnf("39ae1b77-4edd-4e94-846a-d087a35a2260");
+		
+		// stuff to satisfy TXC & BRG subflows
+		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSIUrlById.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0027%252FSW_INTERNET", "GenericFlows/getParentSIUrlById.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "GenericFlows/getParentServiceInstance.xml");
+		MockPutAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "arId-1");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "arId-1");
+		
+		mockSDNCAdapter(200);
+
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+//		TODO: uncomment when Homing BB is merged
+//		mockSNIRO();
+
+		//Below works for Homing/Sniro
+		
+		Map<String, Object> variables = setupVariablesObjectMap();
+
+		String businessKey = UUID.randomUUID().toString();
+		TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVcpeResCustService",
+			"v1", businessKey, request, variables);
+				
+		WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+		
+		String responseBody = response.getResponse();
+		System.out.println("Workflow (Synch) Response:\n" + responseBody);
+
+		injectWorkflowMessages(callbacks, "sniro");
+		injectSDNCCallbacks(callbacks, "assign, create, activate, queryTXC");
+		injectSDNCCallbacks(callbacks, "assign, create, activate, queryBRG");
+
+		waitForProcessEnd(businessKey, 10000);
+		checkVariable(businessKey, "CreateVcpeResCustServiceSuccessIndicator", true);
+
+		logEnd();
+	}
+	
+	
+	/**
+	 * TEST Decompose + Homing - Unit test for CreateVcpeResCustService.bpmn
+	 *  - String input & String response
+	 */
+
+//	@Test
+//	@Deployment(resources = {"process/CreateVcpeResCustService.bpmn",
+//			                 "subprocess/DoCreateServiceInstance.bpmn",
+//			                 "subprocess/DoCreateServiceInstanceRollback.bpmn",
+//			                 "subprocess/DoCreateNetworkInstance.bpmn",
+//			                 "subprocess/DoCreateNetworkInstanceRollback.bpmn",
+//			                 "subprocess/BuildingBlock/DecomposeService.bpmn",
+//			                 "subprocess/BuildingBlock/Homing.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXC.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXCRollback.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRG.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRGRollback.bpmn",
+//			                 "subprocess/GenericGetService.bpmn",
+//			                 "subprocess/GenericPutService.bpmn",
+//			                 "subprocess/SDNCAdapterV1.bpmn",
+//			                 "subprocess/DoCreateVnf.bpmn",
+//			                 "subprocess/GenericGetVnf.bpmn",
+//			                 "subprocess/GenericPutVnf.bpmn",
+//			                 "subprocess/FalloutHandler.bpmn",
+//			                 "subprocess/GenericDeleteService.bpmn",
+//			                 "subprocess/ReceiveWorkflowMessage.bpmn",
+//	                         "subprocess/CompleteMsoProcess.bpmn"})
+//
+//	public void invokeDecompositionHomingCreateServiceInstanceARs() throws Exception {
+//
+//		logStart();
+//
+//		// setup simulators
+//		MockGetCustomer("MCBH-1610", "VCPE/getCustomer.xml");
+//
+//		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/getCatalogServiceResourcesDataServiceAllotted.json");
+//		
+//		MockPutServiceInstance_VCPE();
+//		//network AAI Mocks
+//		MockGetNetworkById("cf82a73f-de7f-4f84-8dfc-16a487c63a36", "VCPE/getNetwork.xml");
+//		MockPutNetwork("cf82a73f-de7f-4f84-8dfc-16a487c63a36");
+//		
+//		MockNodeQueryServiceInstanceById("c763d462-dfe4-4577-9706-fa3a9db640be", "VCPE/getSIUrlById.xml");
+//		
+//		mockSDNCAdapter();
+//
+//		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSIUrlById.xml");
+//		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET");
+//		MockPutAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1");
+//		MockPutAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET_in-use", "arId-1");
+//		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET_in-use", "arId-1");
+//		
+//		
+//		MockDBUpdateVfModule();
+//		
+//		mockSNIRO();
+//
+//		String businessKey = UUID.randomUUID().toString();
+//
+//		//Below works for Homing/Sniro
+//		
+//		Map<String, Object> variables = setupVariablesObjectMap();
+//		TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVcpeResCustService", "v1", businessKey, getRequest(), variables);
+//		WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+//		String responseBody = response.getResponse();
+//		System.out.println("Workflow (Synch) Response:\n" + responseBody);
+//		
+//		//Below is from CreateVcpeResCustService
+////		Map<String, String> variables = setupVariables();
+////		WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "CreateVcpeResCustService", variables);
+////		waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
+////		String workflowResp = BPMNUtil.getVariable(processEngineRule, "CreateVcpeResCustService", "WorkflowResponse");
+//
+//		injectWorkflowMessages(callbacks, "sniro");
+//		// TODO add appropriate assertions
+//		injectSDNCCallbacks(callbacks, "assign, query, create, activate, queryTXC, assign, create, activate, queryBRG");
+//		waitForProcessEnd(businessKey, 10000);
+//
+////		checkVariable(businessKey, "CreateVcpeResCustServiceSuccessIndicator", true);
+//
+//		logEnd();
+//	}
+//
+//	
+//	/**
+//	 * TEST Decompose + Homing - Unit test for CreateVcpeResCustService.bpmn
+//	 *  - String input & String response
+//	 */
+//
+//	@Test
+//	//@Ignore
+//	@Deployment(resources = {"process/CreateVcpeResCustService.bpmn",
+//			                 "subprocess/DoCreateServiceInstance.bpmn",
+//			                 "subprocess/DoCreateServiceInstanceRollback.bpmn",
+//			                 "subprocess/DoCreateNetworkInstance.bpmn",
+//			                 "subprocess/DoCreateNetworkInstanceRollback.bpmn",
+//			                 "subprocess/BuildingBlock/DecomposeService.bpmn",
+//			                 "subprocess/BuildingBlock/Homing.bpmn",
+//			                 "subprocess/DoCreateVnfAndModules.bpmn",
+//			                 "subprocess/DoCreateVnfAndModulesRollback.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXC.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXCRollback.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRG.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRGRollback.bpmn",
+//			                 "subprocess/GenericGetService.bpmn",
+//			                 "subprocess/GenericPutService.bpmn",
+//			                 "subprocess/SDNCAdapterV1.bpmn",
+//			                 "subprocess/DoCreateVnf.bpmn",
+//			                 "subprocess/GenericGetVnf.bpmn",
+//			                 "subprocess/GenericPutVnf.bpmn",
+//			                 "subprocess/FalloutHandler.bpmn",
+//			                 "subprocess/GenericDeleteService.bpmn",
+//			                 "subprocess/ReceiveWorkflowMessage.bpmn",
+//	                         "subprocess/CompleteMsoProcess.bpmn"})
+//
+//	public void invokeDecompositionHomingCreateServiceVnf() throws Exception {
+//
+//		logStart();
+//
+//		// setup simulators
+//		MockGetCustomer("MCBH-1610", "VCPE/getCustomer.xml");
+//
+//		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/getCatalogServiceResourcesServiceVnf.json");
+//		
+//		MockPutServiceInstance_VCPE();
+//		//network AAI Mocks
+//		MockGetNetworkById("cf82a73f-de7f-4f84-8dfc-16a487c63a36", "VCPE/getNetwork.xml");
+//		MockPutNetwork("cf82a73f-de7f-4f84-8dfc-16a487c63a36");
+//		
+//		MockNodeQueryServiceInstanceById("c763d462-dfe4-4577-9706-fa3a9db640be", "VCPE/getSIUrlById.xml");
+//		
+//		
+//		MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVcpe.xml");
+//		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET");
+//		MockGetGenericVnfById_404("testVnfId");
+//		MockPutGenericVnf(".*");
+//		MockAAIVfModule();
+//		MockPatchGenericVnf("skask");
+//		MockPatchVfModuleId("skask", ".*");
+//		MockSDNCAdapterVfModule();		
+//		MockVNFAdapterRestVfModule();
+//		MockDBUpdateVfModule();	
+//		
+//		
+//		mockSDNCAdapter();
+//		//mockSDNCAdapterRest();
+//		
+//		//MockSDNCAdapterServiceInstanceModule();
+//		
+//		//mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologyRsrcAssignResponse.xml", "SvcAction>assign");
+//		
+//		MockDBUpdateVfModule();
+//		
+//		mockSNIRO();
+//
+//		String businessKey = UUID.randomUUID().toString();
+//
+//		//Below works for Homing/Sniro
+//		
+//		Map<String, Object> variables = setupVariablesObjectMap();
+//		TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVcpeResCustService", "v1", businessKey, getRequest(), variables);
+//		WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+//		String responseBody = response.getResponse();
+//		System.out.println("Workflow (Synch) Response:\n" + responseBody);
+//		
+//		//Below is from CreateVcpeResCustService
+////		Map<String, String> variables = setupVariables();
+////		WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "CreateVcpeResCustService", variables);
+////		waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
+////		String workflowResp = BPMNUtil.getVariable(processEngineRule, "CreateVcpeResCustService", "WorkflowResponse");
+//
+//		injectWorkflowMessages(callbacks, "sniro");
+//		// TODO add appropriate assertions
+//		injectSDNCCallbacks(callbacks, "assign, query");
+//		waitForProcessEnd(businessKey, 10000);
+//
+////		checkVariable(businessKey, "CreateVcpeResCustServiceSuccessIndicator", true);
+//
+//		logEnd();
+//	}
+//	
+//	
+//	/**
+//	 * TEST Decompose + Homing - Unit test for CreateVcpeResCustService.bpmn
+//	 *  - String input & String response
+//	 */
+//
+//	@Test
+//	//@Ignore
+//	@Deployment(resources = {"process/CreateVcpeResCustService.bpmn",
+//			                 "subprocess/DoCreateServiceInstance.bpmn",
+//			                 "subprocess/DoCreateServiceInstanceRollback.bpmn",
+//			                 "subprocess/DoCreateNetworkInstance.bpmn",
+//			                 "subprocess/DoCreateNetworkInstanceRollback.bpmn",
+//			                 "subprocess/BuildingBlock/DecomposeService.bpmn",
+//			                 "subprocess/BuildingBlock/Homing.bpmn",
+//			                 "subprocess/DoCreateVnfAndModules.bpmn",
+//			                 "subprocess/DoCreateVnfAndModulesRollback.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXC.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXCRollback.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRG.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRGRollback.bpmn",
+//			                 "subprocess/GenericGetService.bpmn",
+//			                 "subprocess/GenericPutService.bpmn",
+//			                 "subprocess/SDNCAdapterV1.bpmn",
+//			                 "subprocess/DoCreateVnf.bpmn",
+//			                 "subprocess/GenericGetVnf.bpmn",
+//			                 "subprocess/GenericPutVnf.bpmn",
+//			                 "subprocess/FalloutHandler.bpmn",
+//			                 "subprocess/GenericDeleteService.bpmn",
+//			                 "subprocess/ReceiveWorkflowMessage.bpmn",
+//	                         "subprocess/CompleteMsoProcess.bpmn"})
+//
+//	public void invokeCreateAll() throws Exception {
+//
+//		logStart();
+//
+//		// setup simulators
+//		MockGetCustomer("MCBH-1610", "VCPE/getCustomer.xml");
+//
+//		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/getCatalogServiceResourcesData.json");
+//		
+//		MockPutServiceInstance_VCPE();
+//		//network AAI Mocks
+//		MockGetNetworkById("cf82a73f-de7f-4f84-8dfc-16a487c63a36", "VCPE/getNetwork.xml");
+//		MockPutNetwork("cf82a73f-de7f-4f84-8dfc-16a487c63a36");
+//		
+//		MockNodeQueryServiceInstanceById("c763d462-dfe4-4577-9706-fa3a9db640be", "VCPE/getSIUrlById.xml");
+//		
+//		MockGetNetworkByIdWithDepth("680b7453-0ec4-4d96-b355-280d981d418f", "VCPE/CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+//		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "VCPE/CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+//		MockNetworkAdapterPost("CreateNetworkV2/createNetworkResponse_Success.xml", "VCPE/createNetworkRequest");
+//		MockGetNetworkVpnBindingWithDepth("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017", "all");
+//		MockGetNetworkVpnBindingWithDepth("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6", "all");
+//		MockGetNetworkPolicyWithDepth("CreateNetworkV2/createNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg", "all");
+//		MockGetNetworkTableReferenceWithDepth("CreateNetworkV2/createNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1", "all");
+//		MockGetNetworkTableReferenceWithDepth("CreateNetworkV2/createNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN2", "all");
+//		MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "680b7453-0ec4-4d96-b355-280d981d418f", "1");
+//		MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1");
+//		
+//		
+//		MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVcpe.xml");
+//		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET");
+//		MockGetGenericVnfById_404("testVnfId");
+//		MockPutGenericVnf(".*");
+//		MockAAIVfModule();
+//		MockPatchGenericVnf("skask");
+//		MockPatchVfModuleId("skask", ".*");
+//		MockSDNCAdapterVfModule();		
+//		MockVNFAdapterRestVfModule();
+//		MockDBUpdateVfModule();	
+//		
+//		
+//		mockSDNCAdapter();
+//		//mockSDNCAdapterRest();
+//		
+//		//MockSDNCAdapterServiceInstanceModule();
+//		
+//		//mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologyRsrcAssignResponse.xml", "SvcAction>assign");
+//		
+//		MockDBUpdateVfModule();
+//		
+//		mockSNIRO();
+//
+//		String businessKey = UUID.randomUUID().toString();
+//
+//		//Below works for Homing/Sniro
+//		
+//		Map<String, Object> variables = setupVariablesObjectMap();
+//		TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVcpeResCustService", "v1", businessKey, getRequest(), variables);
+//		WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+//		String responseBody = response.getResponse();
+//		System.out.println("Workflow (Synch) Response:\n" + responseBody);
+//		
+//		//Below is from CreateVcpeResCustService
+////		Map<String, String> variables = setupVariables();
+////		WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "CreateVcpeResCustService", variables);
+////		waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
+////		String workflowResp = BPMNUtil.getVariable(processEngineRule, "CreateVcpeResCustService", "WorkflowResponse");
+//
+//		injectWorkflowMessages(callbacks, "sniro");
+//		// TODO add appropriate assertions
+//		injectSDNCCallbacks(callbacks, "assign, query");
+//		waitForProcessEnd(businessKey, 10000);
+//
+////		checkVariable(businessKey, "CreateVcpeResCustServiceSuccessIndicator", true);
+//
+//		logEnd();
+//	}
+	
+	// *****************
+	// Utility Section
+	// *****************
+
+	// Success Scenario
+	private Map<String, Object> setupVariablesObjectMap() {
+		Map<String, Object> variables = new HashMap<>();
+		variables.put("requestId", "testRequestId");
+		variables.put("request-id", "testRequestId");
+		variables.put("CREVAS_testServiceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4"); // assigned for testing
+		variables.put("serviceInstanceId", "c763d462-dfe4-4577-9706-fa3a9db640be");// unit test
+		variables.put("sourceNetworkId", "c763d462-dfe4-4577-9706-fa3a9db640be");// unit test
+		variables.put("networkId", "c763d462-dfe4-4577-9706-fa3a9db640be");// unit test
+		variables.put("sourceNetworkRole", "whoknows");// unit test
+		variables.put("allottedResourceId", "arId-1");
+		variables.put("junitSleepMs", "5");
+		return variables;
+
+	}
+
+//	private Map<String, String> setupVariables() {
+//		Map<String, String> variables = new HashMap<String, String>();
+//		variables.put("bpmnRequest", getRequest());
+//		variables.put("mso-request-id", "testRequestId");
+//		variables.put("CREVAS_testServiceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4"); // assigned for testing
+//		variables.put("serviceInstanceId", "c763d462-dfe4-4577-9706-fa3a9db640be");// unit test
+//		variables.put("sourceNetworkId", "c763d462-dfe4-4577-9706-fa3a9db640be");// unit test
+//		variables.put("sourceNetworkRole", "whoknows");// unit test
+//		variables.put("allottedResourceId", "arId-1");
+//		variables.put("junitSleepMs", "5");
+//		return variables;
+//
+//	}
+	
+	// start of mocks used locally and by other VF Module unit tests
+	public static void MockSDNCAdapterVfModule() {
+		// simplified the implementation to return "success" for all requests
+		stubFor(post(urlEqualTo("/SDNCAdapter"))
+//			.withRequestBody(containing("SvcInstanceId><"))
+			.willReturn(aResponse()
+				.withStatus(200)
+				.withHeader("Content-Type", "text/xml")
+				.withBodyFile("VfModularity/StandardSDNCSynchResponse.xml")));
+//		stubFor(post(urlEqualTo("/SDNCAdapter"))
+//				.withRequestBody(containing("vnf-type>STMTN"))
+//				.willReturn(aResponse()
+//					.withStatus(200)
+//					.withHeader("Content-Type", "text/xml")
+//					.withBodyFile("VfModularity/StandardSDNCSynchResponse.xml")));
+//		stubFor(post(urlEqualTo("/SDNCAdapter"))
+//				.withRequestBody(containing("SvcAction>query"))
+//				.willReturn(aResponse()
+//					.withStatus(200)
+//					.withHeader("Content-Type", "text/xml")
+//					.withBodyFile("VfModularity/StandardSDNCSynchResponse.xml")));
+	}
+	
+
+	
+	
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceBRGRollbackTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceBRGRollbackTest.java
new file mode 100644
index 0000000..b702313
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceBRGRollbackTest.java
@@ -0,0 +1,96 @@
+/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.core.RollbackData;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+
+public class DoCreateAllottedResourceBRGRollbackTest extends WorkflowTest {
+
+	private static final String RbType = "DCARBRG_";
+	private final CallbackSet callbacks = new CallbackSet();
+	
+	public DoCreateAllottedResourceBRGRollbackTest() throws IOException {
+		callbacks.put("deactivate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeactivateCallback.xml"));
+		callbacks.put("delete", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeleteCallback.xml"));
+		callbacks.put("unassign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyUnassignCallback.xml"));
+	}
+	
+	@Test
+	@Deployment(resources = {
+			"subprocess/SDNCAdapterV1.bpmn",
+			"subprocess/FalloutHandler.bpmn",
+			"subprocess/DoCreateAllottedResourceBRGRollback.bpmn"})
+	public void testDoCreateAllottedResourceBRGRollback_success() throws Exception {
+		
+		MockGetAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1");
+		MockDeleteAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "1490627351232");
+		mockSDNCAdapter(200);
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<>();
+		setVariablesSuccess(variables, "testRequestId1");
+		
+		invokeSubProcess("DoCreateAllottedResourceBRGRollback", businessKey, variables);
+		
+		injectSDNCCallbacks(callbacks, "deactivate");
+		injectSDNCCallbacks(callbacks, "delete");
+		injectSDNCCallbacks(callbacks, "unassign");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateAllottedResourceBRGRollback", "WorkflowException");
+		System.out.println("workflowException:\n" + workflowException);
+		assertEquals(null, workflowException);
+	}
+
+	private void setVariablesSuccess(Map<String, Object> variables, String requestId) {
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("failNotFound", "true");
+		variables.put("msoRequestId", requestId);
+		variables.put("mso-request-id", "requestId");
+		variables.put("allottedResourceId", "arId-1");
+		
+		variables.put("serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		variables.put("parentServiceInstanceId","MIS%252F1604%252F0026%252FSW_INTERNET");
+		RollbackData rollbackData = new RollbackData();
+
+		rollbackData.put(RbType, "serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		rollbackData.put(RbType, "serviceSubscriptionType", "123456789");
+		rollbackData.put(RbType, "disablerollback", "false");
+		rollbackData.put(RbType, "rollbackAAI", "true");
+		rollbackData.put(RbType, "rollbackSDNCassign", "true");
+		rollbackData.put(RbType, "rollbackSDNCactivate", "true");
+		rollbackData.put(RbType, "rollbackSDNCcreate", "true");
+		rollbackData.put(RbType, "aaiARPath", "http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1");
+		
+		rollbackData.put(RbType, "sdncActivateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncActivateRollbackReq.xml"));
+		rollbackData.put(RbType, "sdncCreateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncCreateRollbackReq.xml")); 
+		rollbackData.put(RbType, "sdncAssignRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncAssignRollbackReq.xml"));
+		
+		variables.put("rollbackData",rollbackData);
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceBRGTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceBRGTest.java
new file mode 100644
index 0000000..bc3bdd2
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceBRGTest.java
@@ -0,0 +1,107 @@
+/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+
+public class DoCreateAllottedResourceBRGTest extends WorkflowTest {
+
+	private final CallbackSet callbacks = new CallbackSet();
+
+	public DoCreateAllottedResourceBRGTest() throws IOException {
+		callbacks.put("assign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyAssignCallback.xml"));
+		callbacks.put("create", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyCreateCallback.xml"));
+		callbacks.put("activate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyActivateCallback.xml"));
+		callbacks.put("query", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml"));
+	}
+	
+	@Test
+	@Deployment(resources = {
+			"subprocess/GenericGetService.bpmn", 
+			"subprocess/SDNCAdapterV1.bpmn", 
+			"subprocess/FalloutHandler.bpmn",
+			"subprocess/DoCreateAllottedResourceBRG.bpmn",
+			"subprocess/DoCreateAllottedResourceBRGRollback.bpmn"})
+	public void testDoCreateAllottedResourceBRG_success() throws Exception{
+
+		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSIUrlById.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0027%252FSW_INTERNET", "GenericFlows/getParentSIUrlById.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "GenericFlows/getParentServiceInstance.xml");
+		MockPutAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "arId-1");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "arId-1");
+		mockSDNCAdapter(200);
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<>();
+		setVariablesSuccess(variables, "testRequestId123");
+		
+		invokeSubProcess("DoCreateAllottedResourceBRG", businessKey, variables);
+		
+		injectSDNCCallbacks(callbacks, "assign");
+		injectSDNCCallbacks(callbacks, "create");
+		injectSDNCCallbacks(callbacks, "activate");
+		injectSDNCCallbacks(callbacks, "query");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		String allotedResourceName = BPMNUtil.getVariable(processEngineRule, "DoCreateAllottedResourceBRG", "allotedResourceName");
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateAllottedResourceBRG", "WorkflowException");
+		assertEquals("namefromrequest", allotedResourceName);
+		assertEquals(null, workflowException);
+	}
+
+	private void setVariablesSuccess(Map<String, Object> variables, String requestId) {
+		// TODO: need all of these?
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("failExists", "true");
+		variables.put("disableRollback", "true");
+		variables.put("msoRequestId", requestId);
+		variables.put("mso-request-id", "requestId");
+		variables.put("sourceNetworkId", "snId");
+		variables.put("sourceNetworkRole", "snRole");
+		variables.put("allottedResourceRole", "txc");
+		variables.put("allottedResourceType", "BRG");
+		variables.put("allottedResourceId", "arId-1");
+		variables.put("vni", "BRG");
+		variables.put("vgmuxBearerIP", "bearerip");
+		variables.put("brgWanMacAddress", "wanmac");
+		variables.put("junitSleepMs", "5");
+		
+		variables.put("serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		variables.put("parentServiceInstanceId","MIS%252F1604%252F0027%252FSW_INTERNET");
+		variables.put("serviceChainServiceInstanceId", "scsiId");
+		
+		String arModelInfo = "{ "+ "\"modelType\": \"allotted-resource\"," +
+				"\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
+				"\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+				"\"modelName\": \"vSAMP12\"," +
+				"\"modelVersion\": \"1.0\"," +
+				"\"modelCustomizationUuid\": \"MODEL-ID-1234\"," +
+				"}";
+		variables.put("allottedResourceModelInfo", arModelInfo);
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCRollbackTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCRollbackTest.java
new file mode 100644
index 0000000..de5e0f2
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCRollbackTest.java
@@ -0,0 +1,96 @@
+/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.core.RollbackData;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+
+public class DoCreateAllottedResourceTXCRollbackTest extends WorkflowTest {
+
+	private static final String RbType = "DCARTXC_";
+	private final CallbackSet callbacks = new CallbackSet();
+	
+	public DoCreateAllottedResourceTXCRollbackTest() throws IOException {
+		callbacks.put("deactivate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeactivateCallback.xml"));
+		callbacks.put("delete", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeleteCallback.xml"));
+		callbacks.put("unassign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyUnassignCallback.xml"));
+	}
+	
+	@Test
+	@Deployment(resources = {
+			"subprocess/SDNCAdapterV1.bpmn",
+			"subprocess/FalloutHandler.bpmn",
+			"subprocess/DoCreateAllottedResourceTXCRollback.bpmn"})
+	public void testDoCreateAllottedResourceTXCRollback_success() throws Exception{
+		
+		MockGetAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1");
+		MockDeleteAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "1490627351232");
+		mockSDNCAdapter(200);
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<>();
+		setVariablesSuccess(variables, "testRequestId1");
+		
+		invokeSubProcess("DoCreateAllottedResourceTXCRollback", businessKey, variables);
+		
+		injectSDNCCallbacks(callbacks, "deactivate");
+		injectSDNCCallbacks(callbacks, "delete");
+		injectSDNCCallbacks(callbacks, "unassign");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateAllottedResourceTXCRollback", "WorkflowException");
+		System.out.println("workflowException:\n" + workflowException);
+		assertEquals(null, workflowException);
+	}
+
+	private void setVariablesSuccess(Map<String, Object> variables, String requestId) {
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("failNotFound", "true");
+		variables.put("msoRequestId", requestId);
+		variables.put("mso-request-id", "requestId");
+		variables.put("allottedResourceId", "arId-1");
+		
+		variables.put("serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		variables.put("parentServiceInstanceId","MIS%252F1604%252F0026%252FSW_INTERNET");
+		RollbackData rollbackData = new RollbackData();
+
+		rollbackData.put(RbType, "serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		rollbackData.put(RbType, "serviceSubscriptionType", "123456789");
+		rollbackData.put(RbType, "disablerollback", "false");
+		rollbackData.put(RbType, "rollbackAAI", "true");
+		rollbackData.put(RbType, "rollbackSDNCassign", "true");
+		rollbackData.put(RbType, "rollbackSDNCactivate", "true");
+		rollbackData.put(RbType, "rollbackSDNCcreate", "true");
+		rollbackData.put(RbType, "aaiARPath", "http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1");
+		
+		rollbackData.put(RbType, "sdncActivateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml"));
+		rollbackData.put(RbType, "sdncCreateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml")); 
+		rollbackData.put(RbType, "sdncAssignRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml"));
+		
+		variables.put("rollbackData",rollbackData);
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCTest.java
new file mode 100644
index 0000000..936cb4a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCTest.java
@@ -0,0 +1,104 @@
+/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+
+public class DoCreateAllottedResourceTXCTest extends WorkflowTest {
+
+	private final CallbackSet callbacks = new CallbackSet();
+
+	public DoCreateAllottedResourceTXCTest() throws IOException {
+		callbacks.put("assign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyAssignCallback.xml"));
+		callbacks.put("create", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyCreateCallback.xml"));
+		callbacks.put("activate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyActivateCallback.xml"));
+		callbacks.put("query", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml"));
+	}
+	
+	@Test
+	@Deployment(resources = {
+			"subprocess/GenericGetService.bpmn", 
+			"subprocess/SDNCAdapterV1.bpmn", 
+			"subprocess/FalloutHandler.bpmn",
+			"subprocess/DoCreateAllottedResourceTXC.bpmn",
+			"subprocess/DoCreateAllottedResourceTXCRollback.bpmn"})
+	public void testDoCreateAllottedResourceTXC_success() throws Exception{
+
+		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSIUrlById.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0027%252FSW_INTERNET", "GenericFlows/getParentSIUrlById.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "GenericFlows/getParentServiceInstance.xml");
+		MockPutAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "arId-1");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "arId-1");
+		mockSDNCAdapter(200);
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<String, Object>();
+		setVariablesSuccess(variables, "testRequestId123");
+		
+		invokeSubProcess("DoCreateAllottedResourceTXC", businessKey, variables);
+		
+		injectSDNCCallbacks(callbacks, "assign");
+		injectSDNCCallbacks(callbacks, "create");
+		injectSDNCCallbacks(callbacks, "activate");
+		injectSDNCCallbacks(callbacks, "query");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateAllottedResourceTXC", "WorkflowException");
+		System.out.println("workflowException:\n" + workflowException);
+		assertEquals(null, workflowException);
+		logEnd();
+	}
+
+	private void setVariablesSuccess(Map<String, Object> variables, String requestId) {
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("failExists", "true");
+		variables.put("disableRollback", "true");
+		variables.put("msoRequestId", requestId);
+		variables.put("mso-request-id", "requestId");
+		variables.put("sourceNetworkId", "snId");
+		variables.put("sourceNetworkRole", "snRole");
+		variables.put("allottedResourceRole", "txc");
+		variables.put("allottedResourceType", "TunnelXConn");
+		variables.put("allottedResourceId", "arId-1");
+		variables.put("brgWanMacAddress", "wanmac");
+		variables.put("junitSleepMs", "5");
+		
+		variables.put("serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		variables.put("parentServiceInstanceId","MIS%252F1604%252F0027%252FSW_INTERNET");
+		variables.put("serviceChainServiceInstanceId", "scsiId");
+		
+		String arModelInfo = "{ "+ "\"modelType\": \"allotted-resource\"," +
+				"\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
+				"\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+				"\"modelName\": \"vSAMP12\"," +
+				"\"modelVersion\": \"1.0\"," +
+				"\"modelCustomizationUuid\": \"MODEL-ID-1234\"," +
+				"}";
+		variables.put("allottedResourceModelInfo", arModelInfo);
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoDeleteAllottedResourceBRGTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoDeleteAllottedResourceBRGTest.java
new file mode 100644
index 0000000..054b6f5
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoDeleteAllottedResourceBRGTest.java
@@ -0,0 +1,80 @@
+/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockQueryAllottedResourceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+
+public class DoDeleteAllottedResourceBRGTest extends WorkflowTest {
+
+	private final CallbackSet callbacks = new CallbackSet();
+	
+	public DoDeleteAllottedResourceBRGTest() throws IOException {
+		callbacks.put("deactivate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeactivateCallback.xml"));
+		callbacks.put("delete", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeleteCallback.xml"));
+		callbacks.put("unassign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyUnassignCallback.xml"));
+	}
+	
+	@Test
+	@Deployment(resources = {
+			"subprocess/SDNCAdapterV1.bpmn",
+			"subprocess/FalloutHandler.bpmn",
+			"subprocess/DoDeleteAllottedResourceBRG.bpmn"})
+	public void testDoDeleteAllottedResourceBRG_success() throws Exception {
+		
+		MockQueryAllottedResourceById("arId-1", "GenericFlows/getARUrlById.xml");
+		MockGetAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "VCPE/DoDeleteAllottedResourceBRG/arGetById.xml");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1");
+		MockDeleteAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "1490627351232");
+		mockSDNCAdapter(200);
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<>();
+		setVariablesSuccess(variables, "testRequestId1");
+		
+		invokeSubProcess("DoDeleteAllottedResourceBRG", businessKey, variables);
+		
+		injectSDNCCallbacks(callbacks, "deactivate");
+		injectSDNCCallbacks(callbacks, "delete");
+		injectSDNCCallbacks(callbacks, "unassign");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteAllottedResourceBRG", "WorkflowException");
+		System.out.println("workflowException:\n" + workflowException);
+		assertEquals(null, workflowException);
+	}
+
+	private void setVariablesSuccess(Map<String, Object> variables, String requestId) {
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("failNotFound", "true");
+		variables.put("msoRequestId", requestId);
+		variables.put("mso-request-id", "requestId");
+		variables.put("allottedResourceId", "arId-1");
+		
+		variables.put("serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		variables.put("parentServiceInstanceId","MIS%252F1604%252F0026%252FSW_INTERNET");
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoDeleteAllottedResourceTXCTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoDeleteAllottedResourceTXCTest.java
new file mode 100644
index 0000000..a3faef1
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoDeleteAllottedResourceTXCTest.java
@@ -0,0 +1,80 @@
+/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockQueryAllottedResourceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+
+public class DoDeleteAllottedResourceTXCTest extends WorkflowTest {
+
+	private final CallbackSet callbacks = new CallbackSet();
+	
+	public DoDeleteAllottedResourceTXCTest() throws IOException {
+		callbacks.put("deactivate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeactivateCallback.xml"));
+		callbacks.put("delete", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeleteCallback.xml"));
+		callbacks.put("unassign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyUnassignCallback.xml"));
+	}
+	
+	@Test
+	@Deployment(resources = {
+			"subprocess/SDNCAdapterV1.bpmn",
+			"subprocess/FalloutHandler.bpmn",
+			"subprocess/DoDeleteAllottedResourceTXC.bpmn"})
+	public void testDoDeleteAllottedResourceTXC_success() throws Exception {
+		
+		MockQueryAllottedResourceById("arId-1", "GenericFlows/getARUrlById.xml");
+		MockGetAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1");
+		MockDeleteAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "1490627351232");
+		mockSDNCAdapter(200);
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<>();
+		setVariablesSuccess(variables, "testRequestId1");
+		
+		invokeSubProcess("DoDeleteAllottedResourceTXC", businessKey, variables);
+		
+		injectSDNCCallbacks(callbacks, "deactivate");
+		injectSDNCCallbacks(callbacks, "delete");
+		injectSDNCCallbacks(callbacks, "unassign");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteAllottedResourceTXC", "WorkflowException");
+		System.out.println("workflowException:\n" + workflowException);
+		assertEquals(null, workflowException);
+	}
+
+	private void setVariablesSuccess(Map<String, Object> variables, String requestId) {
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("failNotFound", "true");
+		variables.put("msoRequestId", requestId);
+		variables.put("mso-request-id", "requestId");
+		variables.put("allottedResourceId", "arId-1");
+		
+		variables.put("serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		variables.put("parentServiceInstanceId","MIS%252F1604%252F0026%252FSW_INTERNET");
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf
new file mode 100644
index 0000000..19f18cc
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf
@@ -0,0 +1,107 @@
+{
+    "transactionId": "testRequestId",
+	"requestId": "testRequestId",
+	"requestState": "complete",
+	"statusMessage": "",
+    "solutionInfo": {
+        "licenseInfo": [
+            {
+                "entitlementPoolList": [
+                    "f1d563e8-e714-4393-8f99-cc480144a05e",
+                    "j1d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "licenseKeyGroupList": [
+                    "s1d563e8-e714-4393-8f99-cc480144a05e",
+                    "b1d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "resourceModuleName": "vHNPortalaaS_primary_1",
+                "serviceResourceId": "testResourceIdAR"
+            },
+            {
+                "entitlementPoolList": [
+                    "91d563e8-e714-4393-8f99-cc480144a05e",
+                    "21d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "licenseKeyGroupList": [
+                    "31d563e8-e714-4393-8f99-cc480144a05e",
+                    "71d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "resourceModuleName": "vHNPortalaaS_secondary_1",
+                "serviceResourceId": "testResourceIdVNF"
+            }
+        ],
+        "placement": [
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "MDTNJ01"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "KDTNJ01"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "dfwtx",
+                "inventoryType": "service",
+                "resourceModuleName": "ALLOTTED_RESOURCE",
+                "serviceInstanceId": "testSIID1",
+                "serviceResourceId": "testResourceIdAR"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "testVnfHostname2"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClli2"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionId2",
+                "inventoryType": "service",
+                "resourceModuleName": "ALLOTTED_RESOURCE",
+                "serviceInstanceId": "testSIID2",
+                "serviceResourceId": "testResourceIdAR2"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClli3"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionId3",
+                "inventoryType": "cloud",
+                "resourceModuleName": "VNF",
+                "serviceInstanceId": "",
+                "serviceResourceId": "testResourceIdVNF"
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf2Net b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf2Net
new file mode 100644
index 0000000..5a9ef4b
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf2Net
@@ -0,0 +1,165 @@
+{
+    "transactionId": "testRequestId",
+	"requestId": "testRequestId",
+	"requestState": "complete",
+	"statusMessage": "",
+    "solutionInfo": {
+        "licenseInfo": [
+            {
+                "entitlementPoolList": [
+                    "f1d563e8-e714-4393-8f99-cc480144a05e",
+                    "j1d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "licenseKeyGroupList": [
+                    "s1d563e8-e714-4393-8f99-cc480144a05e",
+                    "b1d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "resourceModuleName": "vHNPortalaaS_primary_1",
+                "serviceResourceId": "testResourceIdAR"
+            },
+            {
+                "entitlementPoolList": [
+                    "f1d563e8-e714-4393-8f99-cc480144a05n",
+                    "j1d563e8-e714-4393-8f99-cc480144a05n"
+                ],
+                "licenseKeyGroupList": [
+                    "s1d563e8-e714-4393-8f99-cc480144a05n",
+                    "b1d563e8-e714-4393-8f99-cc480144a05n"
+                ],
+                "resourceModuleName": "net",
+                "serviceResourceId": "testResourceIdNet2"
+            },
+            {
+                "entitlementPoolList": [
+                    "91d563e8-e714-4393-8f99-cc480144a05e",
+                    "21d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "licenseKeyGroupList": [
+                    "31d563e8-e714-4393-8f99-cc480144a05e",
+                    "71d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "resourceModuleName": "vHNPortalaaS_secondary_1",
+                "serviceResourceId": "testResourceIdVNF"
+            }
+        ],
+        "placement": [
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "MDTNJ01"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "KDTNJ01"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "dfwtx",
+                "inventoryType": "service",
+                "resourceModuleName": "ALLOTTED_RESOURCE",
+                "serviceInstanceId": "testSIID1",
+                "serviceResourceId": "testResourceIdAR"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "testVnfHostname2"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClli2"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionId2",
+                "inventoryType": "service",
+                "resourceModuleName": "ALLOTTED_RESOURCE",
+                "serviceInstanceId": "testSIID2",
+                "serviceResourceId": "testResourceIdAR2"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "testVnfHostNameNet"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClliNet"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionIdNet",
+                "inventoryType": "service",
+                "resourceModuleName": "NETWORK",
+                "serviceInstanceId": "testServiceInstanceIdNet",
+                "serviceResourceId": "testResourceIdNet"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClliNet2"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionIdNet2",
+                "inventoryType": "cloud",
+                "resourceModuleName": "NETWORK",
+                "serviceInstanceId": "",
+                "serviceResourceId": "testResourceIdNet2"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClli3"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionId3",
+                "inventoryType": "cloud",
+                "resourceModuleName": "VNF",
+                "serviceInstanceId": "",
+                "serviceResourceId": "testResourceIdVNF"
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackNoSolutionFound b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackNoSolutionFound
new file mode 100644
index 0000000..5cb748a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackNoSolutionFound
@@ -0,0 +1,15 @@
+{
+  "requestState": "",
+  "responseTime": "",
+  "solutionInfo": {
+    "placement": [],
+    "licenseInfo": {
+      "featureGroupId": ""
+    }
+  },
+  "percentProgress": "",
+  "requestId": "02c2e322-5839-4c97-9d46-0a5fa6bb642e",
+  "startTime": "",
+  "statusMessage": "No solution found for plan 08e1b8cf-144a-4bac-b293-d5e2eedc97e8",
+  "requestType": ""
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackPolicyException b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackPolicyException
new file mode 100644
index 0000000..b826884
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackPolicyException
@@ -0,0 +1,9 @@
+{
+	"requestError": {
+		"policyException": {
+		  "requestId": "ae81d9a8-c949-493a-999c-f76c80503233",
+		  "text": "Message content size exceeds the allowable limit",
+		  "messageId": "SVC0001"
+		}
+	}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackServiceException b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackServiceException
new file mode 100644
index 0000000..6cc78a7
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackServiceException
@@ -0,0 +1,12 @@
+{
+	"requestError": {
+		"serviceException": {
+		"variables": [
+		"severity", 400
+		],
+		 "requestId": "ae81d9a8-c949-493a-999c-f76c80503233",
+		  "text": "SNIROPlacementError: requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http://135.21.171.200:8091/v1/plans/97b4e303-5f75-492c-8fb2-21098281c8b8",
+		   "messageId": "SVC0001"
+		}
+	}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getARUrlById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getARUrlById.xml
new file mode 100644
index 0000000..e178583
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getARUrlById.xml
@@ -0,0 +1,6 @@
+<search-results xmlns="http://org.openecomp.aai.inventory">
+     <result-data>
+        <resource-type>allotted-resource</resource-type>
+        <resource-link>https://aai-ext1.test.com:8443/aai/v7/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</resource-link>
+     </result-data>
+</search-results>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getParentSIUrlById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getParentSIUrlById.xml
new file mode 100644
index 0000000..c29133e
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getParentSIUrlById.xml
@@ -0,0 +1,6 @@
+<search-results xmlns="http://org.openecomp.aai.inventory">
+     <result-data>
+        <resource-type>service-instance</resource-type>
+        <resource-link>https://aai-ext1.test.com:8443/aai/v7/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0027%252FSW_INTERNET</resource-link>
+     </result-data>
+</search-results>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getParentServiceInstance.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getParentServiceInstance.xml
new file mode 100644
index 0000000..bc810c6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getParentServiceInstance.xml
@@ -0,0 +1,30 @@
+<service-instance>
+   <service-instance-id>MIS/1604/0027/SW_INTERNET</service-instance-id>
+   <resource-version>123456789</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>cvlan-tag</related-to>
+         <related-link>https://aai-ext1.test.com:8443/aai/v2/network/vces/vce/832bace2-3fb0-49e0-a6a4-07c47223c535/port-groups/port-group/slcp1447vbc.ipag/cvlan-tags/cvlan-tag/2003/</related-link>
+         <relationship-data>
+            <relationship-key>cvlan-tag.cvlan-tag</relationship-key>
+            <relationship-value>2003</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>port-group.interface-id</relationship-key>
+            <relationship-value>slcp1447vbc.ipag</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>vce.vnf-id</relationship-key>
+            <relationship-value>832bace2-3fb0-49e0-a6a4-07c47223c535</relationship-value>
+         </relationship-data>
+      </relationship>
+      <relationship>
+         <related-to>vce</related-to>
+         	<related-link>https://aai-ext1.test.com:8443/aai/v2/network/vces/vce/832bace2-3fb0-49e0-a6a4-07c47223c535/</related-link>
+         <relationship-data>
+            <relationship-key>vce.vnf-id</relationship-key>
+            <relationship-value>832bace2-3fb0-49e0-a6a4-07c47223c535</relationship-value>
+         </relationship-data>
+      </relationship>
+   </relationship-list>
+</service-instance>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateServiceInstance/createServiceInstance_AAIResponse_success.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateServiceInstance/createServiceInstance_AAIResponse_success.xml
new file mode 100644
index 0000000..5f810ba
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateServiceInstance/createServiceInstance_AAIResponse_success.xml
@@ -0,0 +1,11 @@
+<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"

+                   statusCode="200">

+   <rest:headers>

+      <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>

+      <rest:header name="Content-Length" value="0"/>

+      <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>

+      <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:551-132672"/>

+      <rest:header name="Server" value="Apache-Coyote/1.1"/>

+      <rest:header name="Cache-Control" value="private"/>

+   </rest:headers>

+</rest:RESTResponse>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml
new file mode 100644
index 0000000..410ba05
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml
@@ -0,0 +1,37 @@
+<output xmlns="org:openecomp:sdnctl:vnf">

+<brg-topology  xmlns="org:openecomp:sdnctl:vnf">

+    <ecomp-model-information>

+        <model-invariant-uuid>36e20198-c67a-464b-96d0-aaa99eb2639e</model-invariant-uuid>

+        <model-uuid>5b9b15d0-5dd7-47dc-95b9-0440c340a3ba</model-uuid>

+        <model-version>1.0</model-version>

+        <model-name>BRGmodelname</model-name>

+        <model-customization-uuid>013bd784-9bca-4919-ae2f-ae57af27bad9</model-customization-uuid>

+    </ecomp-model-information>

+    <allotted-resource-identifiers>

+        <parent-service-instance-id>parent-service-instance-id</parent-service-instance-id>

+        <consuming-service-intance-id>consuming-service-instance-id</consuming-service-intance-id>

+        <allotted-resource-name>namefromrequest</allotted-resource-name>

+        <allotted-resource-type>brg</allotted-resource-type>

+        <allotted-resource-id>allottedresourceidfromrequest</allotted-resource-id>

+    </allotted-resource-identifiers>

+    <brg-assignments>

+        <fq-name>fq-name</fq-name>

+        <dest-network>

+            <network-id>d1</network-id>

+            <network-role>drole</network-role>

+        </dest-network>

+        <vlan-tag>vlan-tag</vlan-tag>

+        <source-network>

+            <network-id>s2</network-id>

+            <network-role>srole</network-role>

+        </source-network>

+        <txc-id>txc-id</txc-id>

+        <txc-applied-service>

+            <service-instance-id>1</service-instance-id>

+            <vnf-id>123</vnf-id>

+            <txc-fqdn>a.b.c.d</txc-fqdn>

+        </txc-applied-service>

+    </brg-assignments>

+</brg-topology>

+

+</output>

diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml
new file mode 100644
index 0000000..b6da551
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml
@@ -0,0 +1,8 @@
+<allotted-resource xmlns="http://org.openecomp.aai.inventory/v9">
+   <relationship-list>
+      <relationship>
+         <related-to>allotted-resource</related-to>
+         <related-link>http://localhost:28090/aai/v9/mylink</related-link>
+      </relationship>
+   </relationship-list>
+</allotted-resource>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml
new file mode 100644
index 0000000..361d440
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml
@@ -0,0 +1,31 @@
+<allotted-resource xmlns="http://org.openecomp.aai.inventory/v9">
+   <id>ar-1</id>
+   <orchestration-status>Active</orchestration-status>
+   <role>BRGr</role>
+   <type>BRGt</type>
+   <description>BRG</description>
+   <selflink/>
+   <resource-version>1490627351232</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>service-instance</related-to>
+         <related-link>http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</related-link>
+         <relationship-data>
+            <relationship-key>customer.global-customer-id</relationship-key>
+            <relationship-value>MCBH-1610</relationship-value>
+         </relationship-data> 
+         <relationship-data>
+            <relationship-key>service-subscription.service-type</relationship-key>
+            <relationship-value>vcpesvc</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-instance.service-instance-id</relationship-key>
+            <relationship-value>88819355-9a71-4ddc-9e22-373f0644b40b</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>service-instance.service-instance-name</property-key>
+            <property-value>vcpe-1702-m010904-name4</property-value>
+         </related-to-property>
+      </relationship>
+   </relationship-list>
+</allotted-resource>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml
new file mode 100644
index 0000000..6a35247
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml
@@ -0,0 +1,31 @@
+<allotted-resource xmlns="http://org.openecomp.aai.inventory/v9">
+   <id>ar-1</id>
+   <orchestration-status>Active</orchestration-status>
+   <role>BRG</role>
+   <type>BRG</type>
+   <description>BRG</description>
+   <selflink/>
+   <resource-version>1490627351232</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>service-instance</related-to>
+         <related-link>http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</related-link>
+         <relationship-data>
+            <relationship-key>customer.global-customer-id</relationship-key>
+            <relationship-value>MCBH-1610</relationship-value>
+         </relationship-data> 
+         <relationship-data>
+            <relationship-key>service-subscription.service-type</relationship-key>
+            <relationship-value>vcpesvc</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-instance.service-instance-id</relationship-key>
+            <relationship-value>88819355-9a71-4ddc-9e22-373f0644b40b</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>service-instance.service-instance-name</property-key>
+            <property-value>vcpe-1702-m010904-name4</property-value>
+         </related-to-property>
+      </relationship>
+   </relationship-list>
+</allotted-resource>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncActivateRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncActivateRollbackReq.xml
new file mode 100644
index 0000000..6f86e0f
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncActivateRollbackReq.xml
@@ -0,0 +1,51 @@
+<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+	<sdncadapter:RequestHeader>
+        <sdncadapter:RequestId>b043d290-140d-4a38-a9b6-95d3b8bd27d1</sdncadapter:RequestId>
+        <sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>
+        <sdncadapter:SvcAction>deactvate</sdncadapter:SvcAction>
+        <sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation>
+        <sdncadapter:CallbackUrl>http://localhost:28090/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>
+	</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+	<request-information>
+	<request-id>RaaTestRequestId1</request-id>
+	<request-action>DeleteBRGInstance</request-action>
+	<source>MSO</source>
+	<notification-url/>
+	<order-number/>
+	<order-version/>
+	</request-information>
+	<service-information>
+	<service-id></service-id>
+	<subscription-service-type></subscription-service-type>
+	<ecomp-model-information></ecomp-model-information>
+	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
+	<subscriber-name/>
+	<global-customer-id></global-customer-id>
+	</service-information>
+	<allotted-resource-information>
+	<allotted-resource-id>arId-1</allotted-resource-id>
+	<allotted-resource-type>brg</allotted-resource-type>
+	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
+	<ecomp-model-information>
+        <model-invariant-uuid></model-invariant-uuid>
+        <model-uuid></model-uuid>
+        <model-customization-uuid></model-customization-uuid>
+        <model-version></model-version>
+        <model-name></model-name>
+	</ecomp-model-information>
+	</allotted-resource-information>
+	<brg-request-input>
+	<source-network>
+        <network-id>${sourceNetworkId}</network-id>
+        <network-role>${sourceNetworkRole}</network-role>
+	</source-network>
+	<dest-network>
+        <network-id/>
+        <network-role></network-role>
+	</dest-network>
+	</brg-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncAssignRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncAssignRollbackReq.xml
new file mode 100644
index 0000000..30d4c7a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncAssignRollbackReq.xml
@@ -0,0 +1,51 @@
+<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+	<sdncadapter:RequestHeader>
+        <sdncadapter:RequestId>b043d290-140d-4a38-a9b6-95d3b8bd27d3</sdncadapter:RequestId>
+        <sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>
+        <sdncadapter:SvcAction>unassign</sdncadapter:SvcAction>
+        <sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation>
+        <sdncadapter:CallbackUrl>http://localhost:28090/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>
+	</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+	<request-information>
+	<request-id>RaaTestRequestId1</request-id>
+	<request-action>DeleteBRGInstance</request-action>
+	<source>MSO</source>
+	<notification-url/>
+	<order-number/>
+	<order-version/>
+	</request-information>
+	<service-information>
+	<service-id></service-id>
+	<subscription-service-type></subscription-service-type>
+	<ecomp-model-information></ecomp-model-information>
+	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
+	<subscriber-name/>
+	<global-customer-id></global-customer-id>
+	</service-information>
+	<allotted-resource-information>
+	<allotted-resource-id>arId-1</allotted-resource-id>
+	<allotted-resource-type>brg</allotted-resource-type>
+	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
+	<ecomp-model-information>
+        <model-invariant-uuid></model-invariant-uuid>
+        <model-uuid></model-uuid>
+        <model-customization-uuid></model-customization-uuid>
+        <model-version></model-version>
+        <model-name></model-name>
+	</ecomp-model-information>
+	</allotted-resource-information>
+	<brg-request-input>
+	<source-network>
+        <network-id>${sourceNetworkId}</network-id>
+        <network-role>${sourceNetworkRole}</network-role>
+	</source-network>
+	<dest-network>
+        <network-id/>
+        <network-role></network-role>
+	</dest-network>
+	</brg-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncCreateRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncCreateRollbackReq.xml
new file mode 100644
index 0000000..e20850a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncCreateRollbackReq.xml
@@ -0,0 +1,51 @@
+<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+	<sdncadapter:RequestHeader>
+        <sdncadapter:RequestId>b043d290-140d-4a38-a9b6-95d3b8bd27d2</sdncadapter:RequestId>
+        <sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>
+        <sdncadapter:SvcAction>delete</sdncadapter:SvcAction>
+        <sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation>
+        <sdncadapter:CallbackUrl>http://localhost:28090/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>
+	</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+	<request-information>
+	<request-id>RaaTestRequestId1</request-id>
+	<request-action>DeleteBRGInstance</request-action>
+	<source>MSO</source>
+	<notification-url/>
+	<order-number/>
+	<order-version/>
+	</request-information>
+	<service-information>
+	<service-id></service-id>
+	<subscription-service-type></subscription-service-type>
+	<ecomp-model-information></ecomp-model-information>
+	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
+	<subscriber-name/>
+	<global-customer-id></global-customer-id>
+	</service-information>
+	<allotted-resource-information>
+	<allotted-resource-id>arId-1</allotted-resource-id>
+	<allotted-resource-type>brg</allotted-resource-type>
+	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
+	<ecomp-model-information>
+        <model-invariant-uuid></model-invariant-uuid>
+        <model-uuid></model-uuid>
+        <model-customization-uuid></model-customization-uuid>
+        <model-version></model-version>
+        <model-name></model-name>
+	</ecomp-model-information>
+	</allotted-resource-information>
+	<brg-request-input>
+	<source-network>
+        <network-id>${sourceNetworkId}</network-id>
+        <network-role>${sourceNetworkRole}</network-role>
+	</source-network>
+	<dest-network>
+        <network-id/>
+        <network-role></network-role>
+	</dest-network>
+	</brg-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml
new file mode 100644
index 0000000..ac85be4
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml
@@ -0,0 +1,24 @@
+<output xmlns="org:openecomp:sdnctl:vnf">

+<tunnelxconn-topology  xmlns="org:openecomp:sdnctl:vnf">

+    <ecomp-model-information>

+        <model-invariant-uuid>36e20198-c67a-464b-96d0-aaa99eb2639e</model-invariant-uuid>

+        <model-uuid>5b9b15d0-5dd7-47dc-95b9-0440c340a3ba</model-uuid>

+        <model-version>1.0</model-version>

+        <model-name>TXCmodelname</model-name>

+        <model-customization-uuid>013bd784-9bca-4919-ae2f-ae57af27bad9</model-customization-uuid>

+    </ecomp-model-information>

+    <allotted-resource-identifiers>

+        <parent-service-instance-id>parent-service-instance-id</parent-service-instance-id>

+        <consuming-service-intance-id>consuming-service-instance-id</consuming-service-intance-id>

+        <allotted-resource-name>namefromrequest</allotted-resource-name>

+        <allotted-resource-type>tunnelxconn</allotted-resource-type>

+        <allotted-resource-id>allottedresourceidfromrequest</allotted-resource-id>

+    </allotted-resource-identifiers>

+    <tunnelxconn-assignments>

+    	<vni>my-vni</vni>

+    	<vgmux_bearer_ip>my-bearer-ip</vgmux_bearer_ip>

+    	<vgmux_lan_ip>my-lan-ip</vgmux_lan_ip>

+    </tunnelxconn-assignments>

+</tunnelxconn-topology>

+

+</output>

diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml
new file mode 100644
index 0000000..713ef56
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml
@@ -0,0 +1,31 @@
+<allotted-resource xmlns="http://org.openecomp.aai.inventory/v9">
+   <id>ar-1</id>
+   <orchestration-status>Active</orchestration-status>
+   <role>TunnelXConn</role>
+   <type>TunnelXConn</type>
+   <description>TunnelXConn</description>
+   <selflink/>
+   <resource-version>1490627351232</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>service-instance</related-to>
+         <related-link>http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</related-link>
+         <relationship-data>
+            <relationship-key>customer.global-customer-id</relationship-key>
+            <relationship-value>MCBH-1610</relationship-value>
+         </relationship-data> 
+         <relationship-data>
+            <relationship-key>service-subscription.service-type</relationship-key>
+            <relationship-value>vcpesvc</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-instance.service-instance-id</relationship-key>
+            <relationship-value>88819355-9a71-4ddc-9e22-373f0644b40b</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>service-instance.service-instance-name</property-key>
+            <property-value>vcpe-1702-m010904-name4</property-value>
+         </related-to-property>
+      </relationship>
+   </relationship-list>
+</allotted-resource>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml
new file mode 100644
index 0000000..efec7eb
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml
@@ -0,0 +1,51 @@
+<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+	<sdncadapter:RequestHeader>
+        <sdncadapter:RequestId>b043d290-140d-4a38-a9b6-95d3b8bd27d1</sdncadapter:RequestId>
+        <sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>
+        <sdncadapter:SvcAction>deactvate</sdncadapter:SvcAction>
+        <sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation>
+        <sdncadapter:CallbackUrl>http://localhost:8080/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>
+	</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+	<request-information>
+	<request-id>RaaTestRequestId1</request-id>
+	<request-action>DeleteTunnelXConnInstance</request-action>
+	<source>MSO</source>
+	<notification-url/>
+	<order-number/>
+	<order-version/>
+	</request-information>
+	<service-information>
+	<service-id></service-id>
+	<subscription-service-type></subscription-service-type>
+	<ecomp-model-information></ecomp-model-information>
+	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
+	<subscriber-name/>
+	<global-customer-id></global-customer-id>
+	</service-information>
+	<allotted-resource-information>
+	<allotted-resource-id>arId-1</allotted-resource-id>
+	<allotted-resource-type>tunnelxconn</allotted-resource-type>
+	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
+	<ecomp-model-information>
+        <model-invariant-uuid></model-invariant-uuid>
+        <model-uuid></model-uuid>
+        <model-customization-uuid></model-customization-uuid>
+        <model-version></model-version>
+        <model-name></model-name>
+	</ecomp-model-information>
+	</allotted-resource-information>
+	<tunnelxconn-request-input>
+	<source-network>
+        <network-id>${sourceNetworkId}</network-id>
+        <network-role>${sourceNetworkRole}</network-role>
+	</source-network>
+	<dest-network>
+        <network-id/>
+        <network-role></network-role>
+	</dest-network>
+	</tunnelxconn-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml
new file mode 100644
index 0000000..9f52758
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml
@@ -0,0 +1,51 @@
+<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+	<sdncadapter:RequestHeader>
+        <sdncadapter:RequestId>b043d290-140d-4a38-a9b6-95d3b8bd27d3</sdncadapter:RequestId>
+        <sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>
+        <sdncadapter:SvcAction>unassign</sdncadapter:SvcAction>
+        <sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation>
+        <sdncadapter:CallbackUrl>http://localhost:8080/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>
+	</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+	<request-information>
+	<request-id>RaaTestRequestId1</request-id>
+	<request-action>DeleteTunnelXConnInstance</request-action>
+	<source>MSO</source>
+	<notification-url/>
+	<order-number/>
+	<order-version/>
+	</request-information>
+	<service-information>
+	<service-id></service-id>
+	<subscription-service-type></subscription-service-type>
+	<ecomp-model-information></ecomp-model-information>
+	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
+	<subscriber-name/>
+	<global-customer-id></global-customer-id>
+	</service-information>
+	<allotted-resource-information>
+	<allotted-resource-id>arId-1</allotted-resource-id>
+	<allotted-resource-type>tunnelxconn</allotted-resource-type>
+	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
+	<ecomp-model-information>
+        <model-invariant-uuid></model-invariant-uuid>
+        <model-uuid></model-uuid>
+        <model-customization-uuid></model-customization-uuid>
+        <model-version></model-version>
+        <model-name></model-name>
+	</ecomp-model-information>
+	</allotted-resource-information>
+	<tunnelxconn-request-input>
+	<source-network>
+        <network-id>${sourceNetworkId}</network-id>
+        <network-role>${sourceNetworkRole}</network-role>
+	</source-network>
+	<dest-network>
+        <network-id/>
+        <network-role></network-role>
+	</dest-network>
+	</tunnelxconn-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml
new file mode 100644
index 0000000..025195e
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml
@@ -0,0 +1,51 @@
+<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+	<sdncadapter:RequestHeader>
+        <sdncadapter:RequestId>b043d290-140d-4a38-a9b6-95d3b8bd27d2</sdncadapter:RequestId>
+        <sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>
+        <sdncadapter:SvcAction>delete</sdncadapter:SvcAction>
+        <sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation>
+        <sdncadapter:CallbackUrl>http://localhost:8080/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>
+	</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+	<request-information>
+	<request-id>RaaTestRequestId1</request-id>
+	<request-action>DeleteTunnelXConnInstance</request-action>
+	<source>MSO</source>
+	<notification-url/>
+	<order-number/>
+	<order-version/>
+	</request-information>
+	<service-information>
+	<service-id></service-id>
+	<subscription-service-type></subscription-service-type>
+	<ecomp-model-information></ecomp-model-information>
+	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
+	<subscriber-name/>
+	<global-customer-id></global-customer-id>
+	</service-information>
+	<allotted-resource-information>
+	<allotted-resource-id>arId-1</allotted-resource-id>
+	<allotted-resource-type>tunnelxconn</allotted-resource-type>
+	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
+	<ecomp-model-information>
+        <model-invariant-uuid></model-invariant-uuid>
+        <model-uuid></model-uuid>
+        <model-customization-uuid></model-customization-uuid>
+        <model-version></model-version>
+        <model-name></model-name>
+	</ecomp-model-information>
+	</allotted-resource-information>
+	<tunnelxconn-request-input>
+	<source-network>
+        <network-id>${sourceNetworkId}</network-id>
+        <network-role>${sourceNetworkRole}</network-role>
+	</source-network>
+	<dest-network>
+        <network-id/>
+        <network-role></network-role>
+	</dest-network>
+	</tunnelxconn-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoDeleteAllottedResourceBRG/arGetById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoDeleteAllottedResourceBRG/arGetById.xml
new file mode 100644
index 0000000..6a35247
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoDeleteAllottedResourceBRG/arGetById.xml
@@ -0,0 +1,31 @@
+<allotted-resource xmlns="http://org.openecomp.aai.inventory/v9">
+   <id>ar-1</id>
+   <orchestration-status>Active</orchestration-status>
+   <role>BRG</role>
+   <type>BRG</type>
+   <description>BRG</description>
+   <selflink/>
+   <resource-version>1490627351232</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>service-instance</related-to>
+         <related-link>http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</related-link>
+         <relationship-data>
+            <relationship-key>customer.global-customer-id</relationship-key>
+            <relationship-value>MCBH-1610</relationship-value>
+         </relationship-data> 
+         <relationship-data>
+            <relationship-key>service-subscription.service-type</relationship-key>
+            <relationship-value>vcpesvc</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-instance.service-instance-id</relationship-key>
+            <relationship-value>88819355-9a71-4ddc-9e22-373f0644b40b</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>service-instance.service-instance-name</property-key>
+            <property-value>vcpe-1702-m010904-name4</property-value>
+         </related-to-property>
+      </relationship>
+   </relationship-list>
+</allotted-resource>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoDeleteAllottedResourceTXC/arGetById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoDeleteAllottedResourceTXC/arGetById.xml
new file mode 100644
index 0000000..713ef56
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoDeleteAllottedResourceTXC/arGetById.xml
@@ -0,0 +1,31 @@
+<allotted-resource xmlns="http://org.openecomp.aai.inventory/v9">
+   <id>ar-1</id>
+   <orchestration-status>Active</orchestration-status>
+   <role>TunnelXConn</role>
+   <type>TunnelXConn</type>
+   <description>TunnelXConn</description>
+   <selflink/>
+   <resource-version>1490627351232</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>service-instance</related-to>
+         <related-link>http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</related-link>
+         <relationship-data>
+            <relationship-key>customer.global-customer-id</relationship-key>
+            <relationship-value>MCBH-1610</relationship-value>
+         </relationship-data> 
+         <relationship-data>
+            <relationship-key>service-subscription.service-type</relationship-key>
+            <relationship-value>vcpesvc</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-instance.service-instance-id</relationship-key>
+            <relationship-value>88819355-9a71-4ddc-9e22-373f0644b40b</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>service-instance.service-instance-name</property-key>
+            <property-value>vcpe-1702-m010904-name4</property-value>
+         </related-to-property>
+      </relationship>
+   </relationship-list>
+</allotted-resource>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyCreateCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyCreateCallback.xml
new file mode 100644
index 0000000..11022f6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyCreateCallback.xml
@@ -0,0 +1,16 @@
+	<output xmlns="org:openecomp:sdnctl:vnf">

+		<vnf-information>

+			<vnf-id>skask</vnf-id>			

+		</vnf-information>

+		<response-code>200</response-code>

+		<svc-request-id>{{REQUEST-ID}}</svc-request-id>

+		<ack-final-indicator>Y</ack-final-indicator>

+		<service-information>

+			<subscriber-name>dontcare</subscriber-name>

+			<service-instance-id>0</service-instance-id>

+			<service-type>SDN-MOBILITY</service-type>

+		</service-information>

+		<instance-reference>

+			<object-path>restconf/SDNCObjectPath</object-path>

+		</instance-reference>

+	</output>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyDeactivateCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyDeactivateCallback.xml
new file mode 100644
index 0000000..acea145
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyDeactivateCallback.xml
@@ -0,0 +1,13 @@
+<output xmlns="org:openecomp:sdnctl:vnf">

+	<vnf-information>

+		<vnf-id>skask</vnf-id>

+	</vnf-information>

+	<response-code>200</response-code>

+	<svc-request-id>{{REQUEST-ID}}</svc-request-id>

+	<ack-final-indicator>Y</ack-final-indicator>

+	<service-information>

+		<subscriber-name>dontcare</subscriber-name>

+		<service-instance-id>0</service-instance-id>

+		<service-type>SDN-MOBILITY</service-type>

+	</service-information>

+</output>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyDeleteCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyDeleteCallback.xml
new file mode 100644
index 0000000..11022f6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyDeleteCallback.xml
@@ -0,0 +1,16 @@
+	<output xmlns="org:openecomp:sdnctl:vnf">

+		<vnf-information>

+			<vnf-id>skask</vnf-id>			

+		</vnf-information>

+		<response-code>200</response-code>

+		<svc-request-id>{{REQUEST-ID}}</svc-request-id>

+		<ack-final-indicator>Y</ack-final-indicator>

+		<service-information>

+			<subscriber-name>dontcare</subscriber-name>

+			<service-instance-id>0</service-instance-id>

+			<service-type>SDN-MOBILITY</service-type>

+		</service-information>

+		<instance-reference>

+			<object-path>restconf/SDNCObjectPath</object-path>

+		</instance-reference>

+	</output>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyUnassignCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyUnassignCallback.xml
new file mode 100644
index 0000000..11022f6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyUnassignCallback.xml
@@ -0,0 +1,16 @@
+	<output xmlns="org:openecomp:sdnctl:vnf">

+		<vnf-information>

+			<vnf-id>skask</vnf-id>			

+		</vnf-information>

+		<response-code>200</response-code>

+		<svc-request-id>{{REQUEST-ID}}</svc-request-id>

+		<ack-final-indicator>Y</ack-final-indicator>

+		<service-information>

+			<subscriber-name>dontcare</subscriber-name>

+			<service-instance-id>0</service-instance-id>

+			<service-type>SDN-MOBILITY</service-type>

+		</service-information>

+		<instance-reference>

+			<object-path>restconf/SDNCObjectPath</object-path>

+		</instance-reference>

+	</output>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/VNFAdapterRestCreateCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/VNFAdapterRestCreateCallback.xml
new file mode 100644
index 0000000..49ecd0b
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/VNFAdapterRestCreateCallback.xml
@@ -0,0 +1,55 @@
+<createVfModuleResponse>
+    <vnfId>skask</vnfId>
+    <vfModuleId>supercool</vfModuleId>
+    <vfModuleStackId>slowburn</vfModuleStackId>
+    <vfModuleCreated>true</vfModuleCreated>
+    <vfModuleOutputs>
+        <entry>
+            <key>key1</key>
+            <value>value1</value>
+        </entry>
+        <entry>
+            <key>key2</key>
+            <value>value2</value>
+        </entry>
+        <entry>
+<key>server1_private_ip</key>
+<value>192.168.28.3</value>
+</entry>
+<entry>
+<key>contrail-service-instance-fqdn</key>
+<value>default-domain:MSOTest:MsoNW-RA</value>
+</entry>
+<entry>
+<key>policyKey1_contrail_network_policy_fqdn</key>
+<value>MSOTest:DefaultPolicyFQDN1</value>
+</entry>
+<entry>
+<key>policyKey2_contrail_network_policy_fqdn</key>
+<value>MSOTest:DefaultPolicyFQDN2</value>
+</entry>
+<entry>
+<key>oam_management_v6_address</key>
+<value>2000:abc:bce:1111</value>
+</entry>
+<entry>
+<key>oam_management_v4_address</key>
+<value>127.0.0.1</value>
+</entry>
+    </vfModuleOutputs>
+    <rollback> <!-- JC's doc has "vfModuleRollback" -->
+        <vnfId>skask</vnfId>
+        <vfModuleId>supercool</vfModuleId>
+        <vfModuleStackId>slowburn</vfModuleStackId>
+        <vfModuleCreated>true</vfModuleCreated>
+        <tenantId>tenantId</tenantId>
+        <cloudSiteId>cloudSiteId</cloudSiteId>
+        <msoRequest>
+            <requestId>requestId</requestId>
+            <serviceInstanceId>serviceInstanceId</serviceInstanceId>
+        </msoRequest>
+        <messageId>{{MESSAGE-ID}}</messageId> <!-- JC's doc does not have this -->
+    </rollback>
+    <messageId>{{MESSAGE-ID}}</messageId>
+</createVfModuleResponse>
+
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/createServiceInstance_genericQueryByInstance_AAIResponse_200.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/createServiceInstance_genericQueryByInstance_AAIResponse_200.xml
new file mode 100644
index 0000000..2f38a4f
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/createServiceInstance_genericQueryByInstance_AAIResponse_200.xml
@@ -0,0 +1,13 @@
+<search-results xmlns="http://org.openecomp.aai.inventory">
+      <service-instances> 
+	   <service-instance>
+         <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+         <persona-model-id>gg0e927b-6087-5574-9ef8-c5e4d5847db5</persona-model-id>
+         <persona-model-version>V1.0</persona-model-version>
+         <service-instance-name>vMOG-AKRON-1234</service-instance-name>
+         <resource-version>1462561835</resource-version>
+         <relationship-list/> 
+         <metadata/> 
+		</service-instance>
+      </service-instances> 		
+      </search-results>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getARUrlById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getARUrlById.xml
new file mode 100644
index 0000000..e178583
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getARUrlById.xml
@@ -0,0 +1,6 @@
+<search-results xmlns="http://org.openecomp.aai.inventory">
+     <result-data>
+        <resource-type>allotted-resource</resource-type>
+        <resource-link>https://aai-ext1.test.com:8443/aai/v7/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</resource-link>
+     </result-data>
+</search-results>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogNetworkData.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogNetworkData.json
new file mode 100644
index 0000000..cab2637
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogNetworkData.json
@@ -0,0 +1,28 @@
+{
+  "serviceNetworks": [
+    {
+      "version": null,
+      "modelCustomizationUuid": "93a5f915-403f-487d-89e4-7107359635b0",
+      "modelName": "VIPR_TENANT_OAM_NET",
+      "modelInstanceName": "VIPR_TENANT_OAM_NET 1",
+      "modelUuid": "6524c8ad-dc17-44c0-ad24-08c4d2df52e6",
+      "modelVersion": "1.0",
+      "modelInvariantUuid": "b2667e06-1ec1-4a2a-a916-991b5510b603",
+      "networkResourceId": 100,
+      "created": 1484943975000,
+      "networkResource": {
+        "version": "1",
+        "id": 100,
+        "networkType": "VIPR_TENANT_OAM_NET",
+        "orchestrationMode": "HEAT",
+        "description": "manual record pointing to existing CONTRAIL30_BASIC template",
+        "templateId": 1,
+        "neutronNetworkType": "BASIC",
+        "aicVersionMin": "3.0",
+        "aicVersionMax": null,
+        "created": 1484936027000
+      },
+      "networkType": "VIPR_TENANT_OAM_NET"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesData.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesData.json
new file mode 100644
index 0000000..be0dfc8
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesData.json
@@ -0,0 +1,93 @@
+{ "serviceResources"    : {
+	"modelInfo"       : {
+		"modelName"          : "MSO Test Network",
+		"modelUuid"          : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
+		"modelInvariantUuid" : "52b49b5d-3086-4ffd-b5e6-1b1e5e7e062f",
+		"modelVersion"       : null
+	},
+	"serviceVnfs": [
+		{ "modelInfo"                    : {
+			"modelName"              : "vHNF for DHV Test",
+			"modelUuid"              : "7097d8bb-f6ad-4cf7-866e-6a04c8f1b332",
+			"modelInvariantUuid"     : "6ea0b528-e303-4686-aa77-aa2fcbdccb96",
+			"modelVersion"           : "2.0",
+			"modelCustomizationUuid" : "da86dd87-43c5-458c-b226-5315b7be9ad5",
+			"modelInstanceName"      : "vHNF for DHV Test 17"
+			},
+		"toscaNodeType"            : null,
+		"nfFunction"           	: null,
+		"nfType"              		: null,
+		"nfRole"              		: null,
+		"nfNamingCode"         	: null,
+			"vfModules": [
+				{
+					"modelInfo"               : { 
+						"modelName"              : "VhnfForDhvTest..base_TEST..module-0",
+						"modelUuid"              : "ebc3d18c-3e62-4c24-bcd6-961e98701a0a",
+						"modelInvariantUuid"     : "f5696ec0-ec71-4916-bf3b-93a654efcba4",
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a787"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "base_TEST",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				}
+			]
+		}
+		],
+	"serviceNetworks": [
+			{
+			"modelInfo"                : {
+				"modelName"              : "CONTRAIL_BASIC",
+				"modelUuid"              : "fe5be3a6-dbe0-46d6-bcac-44dc841a7edc",
+				"modelInvariantUuid"     : "ab07fbd8-185a-45ac-be45-db3eb02e98d5",
+				"modelVersion"           : null,
+				"modelCustomizationUuid" : "0cb9b26a-9820-48a7-86e5-16c510e993d9",
+				"modelInstanceName"      : "CONTRAIL_BASIC 5"
+		},
+			"toscaNodeType"            : null,
+			"networkType"              : null,
+			"networkTechnology"        : null,
+			"networkRole"              : null,
+			"networkScope"             : null
+		}
+		],
+	"serviceAllottedResources": [
+			{
+			"modelInfo"       : {
+				"modelName"              : "IP_MUX_Demux",
+				"modelUuid"              : "64a1a718-556b-48ce-b3b7-ed3237ccc94f",
+				"modelInvariantUuid"     : "f110ef53-a0a6-4d72-ab91-fd88a835e8c4",
+				"modelVersion"           : "2.0",
+				"modelCustomizationUuid" : "4bab0880-2f06-4aeb-87cb-3734c8e8bf93",
+				"modelInstanceName"      : "Pri_IP_MUX_Demux 1"
+			},
+			"toscaNodeType"              : null,
+			"allottedResourceType"              : "ContrailRoute",
+			"allottedResourceRole"              : null,
+			"providingServiceModelInvariantUuid"              : null,
+			"nfFunction"              : null,
+			"nfType"              : null,
+			"nfRole"              : null,
+			"nfNamingCode"              : null
+		},
+				{
+			"modelInfo"       : {
+				"modelName"              : "Service_Admin",
+				"modelUuid"              : "73501e03-ee76-4509-a8ce-96d2a9f33ee9",
+				"modelInvariantUuid"     : "462edf71-1a3c-487b-bf55-497460ab7de3",
+				"modelVersion"           : "2.0",
+				"modelCustomizationUuid" : "a896ffad-c8f9-404e-a527-7a8d0cc99ce6",
+				"modelInstanceName"      : "Pri_Service_Admin 5"
+			},
+			"toscaNodeType"              : null,
+			"allottedResourceType"              : "SecurityZone",
+			"allottedResourceRole"              : null,
+			"providingServiceModelInvariantUuid"              : null,
+			"nfFunction"              : null,
+			"nfType"              : null,
+			"nfRole"              : null,
+			"nfNamingCode"              : null
+		}
+		]
+	}}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataNoNetwork.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataNoNetwork.json
new file mode 100644
index 0000000..2003acf
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataNoNetwork.json
@@ -0,0 +1,62 @@
+{ "serviceResources"    : {
+	"modelName"          : "CMW_Service",
+	"modelUuid"          : "Cmw_123",
+	"modelInvariantUuid" : "cmw-123-456-789",
+	"modelVersion"       : null,
+	"serviceVnfs": [
+		{ "vnf"                    : {
+			"modelName"              : "MANUAL RECORD",
+			"modelUuid"              : null,
+			"modelInvariantUuid"     : "miu-vnf-15190",
+			"modelVersion"           : "1.0",
+			"modelCustomizationUuid" : "123456-789012-cmwabd",
+			"modelInstanceName"      : null,
+			"vfModules": [
+				{ "vfModule"               : { 
+					"modelName"              : "vSAMP12::base::module-0",
+					"modelUuid"              : null,
+					"modelInvariantUuid"     : "miu-1001",
+					"modelVersion"           : "1",
+					"modelCustomizationUuid" : "1001",
+					"vfModuleType"           : "Test/vSAMP12::vSAMP12::base::module-0",
+					"isBase"                 : true,
+					"vfModuleLabel"          : "base",
+					"initialCount"           : 1
+				}},
+				{ "vfModule"               : { 
+					"modelName"              : "base::module-0",
+					"modelUuid"              : null,
+					"modelInvariantUuid"     : "miu-1002",
+					"modelVersion"           : "1",
+					"modelCustomizationUuid" : "1002",
+					"vfModuleType"           : "Test/vSAMP12::base::module-0",
+					"isBase"                 : true,
+					"vfModuleLabel"          : "module-0",
+					"initialCount"           : 1
+				}},
+				{ "vfModule"               : { 
+					"modelName"              : "vSAMP12DEV::base::module-0",
+					"modelUuid"              : null,
+					"modelInvariantUuid"     : "miu-1003",
+					"modelVersion"           : "1",
+					"modelCustomizationUuid" : "f86e8800-7629-427f-b284-3dbfd04db01f",
+					"vfModuleType"           : "Test/vSAMP12::vSAMP12DEV::base::module-0",
+					"isBase"                 : true,
+					"vfModuleLabel"          : "base",
+					"initialCount"           : 0
+				}}
+			]
+		}}
+	],
+	"serviceNetworks": [],
+	"serviceAllottedResources": [
+		{ "allottedResource"       : {
+			"modelName"              : "Bruce Wayne",
+			"modelUuid"              : "123-123",
+			"modelInvariantUuid"     : "not yet implemented",
+			"modelVersion"           : "1.0",
+			"modelCustomizationUuid" : "ar-mod-custid-456-456",
+			"modelInstanceName"      : "Clark Kent"
+		}}
+	]
+	}}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataNoNetworkVnf.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataNoNetworkVnf.json
new file mode 100644
index 0000000..4364eaf
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataNoNetworkVnf.json
@@ -0,0 +1,26 @@
+{
+  "serviceResources": {
+    "modelName": "CMW_Service",
+    "modelUuid": "Cmw_123",
+    "modelInvariantUuid": "cmw-123-456-789",
+    "modelVersion": null,
+    "serviceVnfs": [],
+    "serviceNetworks": [],
+    "serviceAllottedResources": [
+      {
+        "allottedResource": {
+          "modelName": "Bruce Wayne",
+          "modelUuid": "123-123",
+          "modelInvariantUuid": "not yet implemented",
+          "modelVersion": "1.0",
+          "modelCustomizationUuid": "ar-mod-custid-456-456",
+          "modelInstanceName": "Clark Kent",
+          "toscaModelType": "undefined",
+          "allottedResourceType": "ContrailRoute",
+          "allottedResourceRole": "ALLOTTED_RESROUCE_ROLE",
+          "providingServiceModelInvariantUuid": "PROVIDING_SERVICE_MODEL_INVARIANT_UUID"
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataServiceAllotted.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataServiceAllotted.json
new file mode 100644
index 0000000..e865210
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataServiceAllotted.json
@@ -0,0 +1,84 @@
+{
+  "serviceResources": {
+    "modelInfo": {
+      "modelName": "SD-WAN",
+      "modelUuid": "ee9807ef-9814-4067-b997-5eee54c9e719",
+      "modelInvariantUuid": "7b0fafc1-83df-4590-9460-b5a8d9f9f277",
+      "modelVersion": null
+    },
+    "serviceVnfs": [],
+    "serviceNetworks": [],
+    "serviceAllottedResources": [
+      {
+        "modelInfo": {
+          "modelName": "IP_MUX_Demux",
+          "modelUuid": "64a1a718-556b-48ce-b3b7-ed3237ccc94f",
+          "modelInvariantUuid": "f110ef53-a0a6-4d72-ab91-fd88a835e8c4",
+          "modelVersion": "2.0",
+          "modelCustomizationUuid": "4bab0880-2f06-4aeb-87cb-3734c8e8bf93",
+          "modelInstanceName": "Pri_IP_MUX_Demux 1"
+        },
+        "toscaNodeType": null,
+        "allottedResourceType": "ContrailRoute",
+        "allottedResourceRole": "ContrailRoute",
+        "providingServiceModelInvariantUuid": null,
+        "nfFunction": null,
+        "nfType": null,
+        "nfRole": null,
+        "nfNamingCode": null,
+        "homingSolution": {
+          "inventoryType": "service",
+          "serviceInstanceId": "c763d462-dfe4-4577-9706-fa3a9db640be",
+          "vnfHostname": "MDTNJ01",
+          "cloudOwner": "aic",
+          "cloudRegionId": "dfwtx",
+          "aicClli": "KDTNJ01",
+          "aicVersion": "3.0",
+          "entitlementPoolList": [
+            "f1d563e8-e714-4393-8f99-cc480144a05e",
+            "j1d563e8-e714-4393-8f99-cc480144a05e"
+          ],
+          "licenseKeyGroupList": [
+            "s1d563e8-e714-4393-8f99-cc480144a05e",
+            "b1d563e8-e714-4393-8f99-cc480144a05e"
+          ]
+        }
+      },
+      {
+        "modelInfo": {
+          "modelName": "Service_Admin",
+          "modelUuid": "73501e03-ee76-4509-a8ce-96d2a9f33ee9",
+          "modelInvariantUuid": "462edf71-1a3c-487b-bf55-497460ab7de3",
+          "modelVersion": "2.0",
+          "modelCustomizationUuid": "a896ffad-c8f9-404e-a527-7a8d0cc99ce6",
+          "modelInstanceName": "Pri_Service_Admin 5"
+        },
+        "toscaNodeType": null,
+        "allottedResourceType": "SecurityZone",
+        "allottedResourceRole": "SecurityZone",
+        "providingServiceModelInvariantUuid": null,
+        "nfFunction": null,
+        "nfType": null,
+        "nfRole": null,
+        "nfNamingCode": null,
+        "homingSolution": {
+          "inventoryType": "service",
+          "serviceInstanceId": "c763d462-dfe4-4577-9706-fa3a9db640be",
+          "vnfHostname": "MDTNJ01",
+          "cloudOwner": "aic",
+          "cloudRegionId": "dfwtx",
+          "aicClli": "KDTNJ01",
+          "aicVersion": "3.0",
+          "entitlementPoolList": [
+            "f1d563e8-e714-4393-8f99-cc480144a05e",
+            "j1d563e8-e714-4393-8f99-cc480144a05e"
+          ],
+          "licenseKeyGroupList": [
+            "s1d563e8-e714-4393-8f99-cc480144a05e",
+            "b1d563e8-e714-4393-8f99-cc480144a05e"
+          ]
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataServiceInstanceOnly.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataServiceInstanceOnly.json
new file mode 100644
index 0000000..56af494
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataServiceInstanceOnly.json
@@ -0,0 +1,13 @@
+{
+  "serviceResources": {
+	"modelInfo"       : {
+		"modelName"          : "MSO Test Network",
+		"modelUuid"          : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
+		"modelInvariantUuid" : "52b49b5d-3086-4ffd-b5e6-1b1e5e7e062f",
+		"modelVersion"       : null
+	},
+    "serviceVnfs": [],
+    "serviceNetworks": [],
+    "serviceAllottedResources": []
+  }
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesServiceNetwork.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesServiceNetwork.json
new file mode 100644
index 0000000..821bd04
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesServiceNetwork.json
@@ -0,0 +1,27 @@
+{ "serviceResources"    : {
+	"modelInfo"       : {
+		"modelName"          : "MSO Test Network",
+		"modelUuid"          : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
+		"modelInvariantUuid" : "52b49b5d-3086-4ffd-b5e6-1b1e5e7e062f",
+		"modelVersion"       : null
+	},
+	"serviceVnfs": [],
+	"serviceNetworks": [
+		{
+			"modelInfo"                : {
+				"modelName"              : "CONTRAIL_BASIC",
+				"modelUuid"              : "fe5be3a6-dbe0-46d6-bcac-44dc841a7edc",
+				"modelInvariantUuid"     : "ab07fbd8-185a-45ac-be45-db3eb02e98d5",
+				"modelVersion"           : null,
+				"modelCustomizationUuid" : "0cb9b26a-9820-48a7-86e5-16c510e993d9",
+				"modelInstanceName"      : "CONTRAIL_BASIC 5"
+		},
+			"toscaNodeType"            : null,
+			"networkType"              : null,
+			"networkTechnology"        : null,
+			"networkRole"              : null,
+			"networkScope"             : null
+		}
+	],
+	"serviceAllottedResources": []
+	}}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesServiceVnf.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesServiceVnf.json
new file mode 100644
index 0000000..7893aff
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesServiceVnf.json
@@ -0,0 +1,40 @@
+{ "serviceResources"    : {
+	"modelInfo"       : {
+		"modelName"          : "MSO Test Network",
+		"modelUuid"          : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
+		"modelInvariantUuid" : "52b49b5d-3086-4ffd-b5e6-1b1e5e7e062f",
+		"modelVersion"       : null
+	},
+	"serviceVnfs": [
+		{ "modelInfo"                    : {
+			"modelName"              : "vHNF for DHV Test",
+			"modelUuid"              : "7097d8bb-f6ad-4cf7-866e-6a04c8f1b332",
+			"modelInvariantUuid"     : "6ea0b528-e303-4686-aa77-aa2fcbdccb96",
+			"modelVersion"           : "2.0",
+			"modelCustomizationUuid" : "da86dd87-43c5-458c-b226-5315b7be9ad5",
+			"modelInstanceName"      : "vHNF for DHV Test 17"
+			},
+		"toscaNodeType"            : null,
+		"nfFunction"           	: null,
+		"nfType"              		: null,
+		"nfRole"              		: null,
+		"nfNamingCode"         	: null,
+			"vfModules": [
+				{
+					"modelInfo"               : { 
+						"modelName"              : "VhnfForDhvTest..base_TEST..module-0",
+						"modelUuid"              : "ebc3d18c-3e62-4c24-bcd6-961e98701a0a",
+						"modelInvariantUuid"     : "f5696ec0-ec71-4916-bf3b-93a654efcba4",
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a787"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "base_TEST",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				}
+			]
+		}
+		],
+	"serviceNetworks": [],
+	"serviceAllottedResources": []
+	}}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogVcpe.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogVcpe.json
new file mode 100644
index 0000000..b95e45a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogVcpe.json
@@ -0,0 +1,76 @@
+{ "serviceResources"    : {
+	"modelInfo"       : {
+		"modelName"          : "MSO Test Network",
+		"modelUuid"          : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
+		"modelInvariantUuid" : "52b49b5d-3086-4ffd-b5e6-1b1e5e7e062f",
+		"modelVersion"       : null
+	},
+	"serviceVnfs": [
+		{ "modelInfo"                    : {
+			"modelName"              : "vHNF for DHV Test",
+			"modelUuid"              : "7097d8bb-f6ad-4cf7-866e-6a04c8f1b332",
+			"modelInvariantUuid"     : "6ea0b528-e303-4686-aa77-aa2fcbdccb96",
+			"modelVersion"           : "2.0",
+			"modelCustomizationUuid" : "da86dd87-43c5-458c-b226-5315b7be9ad5",
+			"modelInstanceName"      : "vHNF for DHV Test 17"
+			},
+		"toscaNodeType"            : null,
+		"nfFunction"           	: null,
+		"nfType"              		: null,
+		"nfRole"              		: null,
+		"nfNamingCode"         	: null,
+			"vfModules": [
+				{
+					"modelInfo"               : { 
+						"modelName"              : "VhnfForDhvTest..base_TEST..module-0",
+						"modelUuid"              : "ebc3d18c-3e62-4c24-bcd6-961e98701a0a",
+						"modelInvariantUuid"     : "f5696ec0-ec71-4916-bf3b-93a654efcba4",
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a787"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "base_TEST",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				}
+			]
+		}
+		],
+	"serviceAllottedResources": [
+			{
+			"modelInfo"       : {
+				"modelName"              : "IP_MUX_Demux",
+				"modelUuid"              : "64a1a718-556b-48ce-b3b7-ed3237ccc94f",
+				"modelInvariantUuid"     : "f110ef53-a0a6-4d72-ab91-fd88a835e8c4",
+				"modelVersion"           : "2.0",
+				"modelCustomizationUuid" : "4bab0880-2f06-4aeb-87cb-3734c8e8bf93",
+				"modelInstanceName"      : "Pri_IP_MUX_Demux 1"
+			},
+			"toscaNodeType"              : null,
+			"allottedResourceType"              : "TunnelXConn",
+			"allottedResourceRole"              : null,
+			"providingServiceModelInvariantUuid"              : null,
+			"nfFunction"              : null,
+			"nfType"              : null,
+			"nfRole"              : null,
+			"nfNamingCode"              : null
+		},
+				{
+			"modelInfo"       : {
+				"modelName"              : "Service_Admin",
+				"modelUuid"              : "73501e03-ee76-4509-a8ce-96d2a9f33ee9",
+				"modelInvariantUuid"     : "462edf71-1a3c-487b-bf55-497460ab7de3",
+				"modelVersion"           : "2.0",
+				"modelCustomizationUuid" : "a896ffad-c8f9-404e-a527-7a8d0cc99ce6",
+				"modelInstanceName"      : "Pri_Service_Admin 5"
+			},
+			"toscaNodeType"              : null,
+			"allottedResourceType"              : "BRG",
+			"allottedResourceRole"              : null,
+			"providingServiceModelInvariantUuid"              : null,
+			"nfFunction"              : null,
+			"nfType"              : null,
+			"nfRole"              : null,
+			"nfNamingCode"              : null
+		}
+		]
+	}}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogVnfData.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogVnfData.json
new file mode 100644
index 0000000..d95b313
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogVnfData.json
@@ -0,0 +1 @@
+{"serviceVnfs":[]}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCustomer.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCustomer.xml
new file mode 100644
index 0000000..6e35f24
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCustomer.xml
@@ -0,0 +1,7 @@
+<customer xmlns="http://org.openecomp.aai.inventory/v8">
+    <global-customer-id>MCBH-1610</global-customer-id>
+    <subscriber-name>MCBH-1610</subscriber-name>
+    <resource-version>1465943440</resource-version>
+    <service-subscriptions/>
+    <relationship-list/>
+</customer>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getNetwork.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getNetwork.xml
new file mode 100644
index 0000000..32a01b6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getNetwork.xml
@@ -0,0 +1,92 @@
+<l3-network xmlns="http://org.openecomp.aai.inventory/v8">
+   <network-id>cf82a73f-de7f-4f84-8dfc-16a487c63a36</network-id>
+   <network-name>Dev_NoBinding-2001</network-name>
+   <network-type>CONTRAIL30_BASIC</network-type>
+   <network-role>GN_EVPN_direct</network-role>
+   <network-technology>contrail</network-technology>
+   <neutron-network-id>968a47e3-e238-4158-af87-6be7f508a6c0</neutron-network-id>
+   <is-bound-to-vpn>false</is-bound-to-vpn>
+   <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+   <network-role-instance>0</network-role-instance>
+   <resource-version>1476384388</resource-version>
+   <orchestration-status>active</orchestration-status>
+   <heat-stack-id>Dev_NoBinding-2001/11c429ac-eab3-4566-a9d3-d8ca6fb4e803</heat-stack-id>
+   <contrail-network-fqdn>default-domain:IST_Automation_AAI_updated:Dev_NoBinding-2001</contrail-network-fqdn>
+   <physical-network-name/>
+   <is-provider-network>false</is-provider-network>
+   <is-shared-network>false</is-shared-network>
+   <is-external-network>false</is-external-network>
+   <subnets>
+      <subnet>
+         <subnet-id>5c559cd8-1ef2-45a8-b342-b4c9307d33ff</subnet-id>
+         <subnet-name/>
+         <neutron-subnet-id>48267a65-2209-4e10-ad44-fc30d4fcb508</neutron-subnet-id>
+         <gateway-address>218.210.11.1</gateway-address>
+         <network-start-address>218.210.11.0</network-start-address>
+         <cidr-mask>24</cidr-mask>
+         <ip-version>4</ip-version>
+         <orchestration-status>pending-update</orchestration-status>
+         <dhcp-enabled>true</dhcp-enabled>
+         <dhcp-start>218.210.11.3</dhcp-start>
+         <dhcp-end>218.210.11.64</dhcp-end>
+         <resource-version>1476384386</resource-version>
+      </subnet>
+   </subnets>
+   <relationship-list>
+      <relationship>
+         <related-to>tenant</related-to>
+         <related-link>https://aai-int1.test.openecomp.com:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/mtn6/tenants/tenant/fe4400a8e96e4caa85ccdca8a850255b</related-link>
+         <relationship-data>
+            <relationship-key>cloud-region.cloud-owner</relationship-key>
+            <relationship-value>att-aic</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>cloud-region.cloud-region-id</relationship-key>
+            <relationship-value>mtn6</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>tenant.tenant-id</relationship-key>
+            <relationship-value>fe4400a8e96e4caa85ccdca8a850255b</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>tenant.tenant-name</property-key>
+            <property-value>IST_Automation_AAI_updated</property-value>
+         </related-to-property>
+      </relationship>
+      <relationship>
+         <related-to>cloud-region</related-to>
+         <related-link>https://aai-int1.test.openecomp.com:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/mtn6</related-link>
+         <relationship-data>
+            <relationship-key>cloud-region.cloud-owner</relationship-key>
+            <relationship-value>att-aic</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>cloud-region.cloud-region-id</relationship-key>
+            <relationship-value>mtn6</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>cloud-region.owner-defined-type</property-key>
+         </related-to-property>
+      </relationship>
+      <relationship>
+         <related-to>service-instance</related-to>
+         <related-link>https://aai-int1.test.openecomp.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/ffdfebef-9cf0-4be4-ab29-0380f0da0341</related-link>
+         <relationship-data>
+            <relationship-key>customer.global-customer-id</relationship-key>
+            <relationship-value>MSO_1610_dev</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-subscription.service-type</relationship-key>
+            <relationship-value>MSO-dev-service-type</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-instance.service-instance-id</relationship-key>
+            <relationship-value>ffdfebef-9cf0-4be4-ab29-0380f0da0341</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>service-instance.service-instance-name</property-key>
+            <property-value>dm4251_SERVICE1</property-value>
+         </related-to-property>
+      </relationship>
+   </relationship-list>
+</l3-network>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getParentSIUrlById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getParentSIUrlById.xml
new file mode 100644
index 0000000..c29133e
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getParentSIUrlById.xml
@@ -0,0 +1,6 @@
+<search-results xmlns="http://org.openecomp.aai.inventory">
+     <result-data>
+        <resource-type>service-instance</resource-type>
+        <resource-link>https://aai-ext1.test.com:8443/aai/v7/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0027%252FSW_INTERNET</resource-link>
+     </result-data>
+</search-results>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getParentServiceInstance.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getParentServiceInstance.xml
new file mode 100644
index 0000000..bc810c6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getParentServiceInstance.xml
@@ -0,0 +1,30 @@
+<service-instance>
+   <service-instance-id>MIS/1604/0027/SW_INTERNET</service-instance-id>
+   <resource-version>123456789</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>cvlan-tag</related-to>
+         <related-link>https://aai-ext1.test.com:8443/aai/v2/network/vces/vce/832bace2-3fb0-49e0-a6a4-07c47223c535/port-groups/port-group/slcp1447vbc.ipag/cvlan-tags/cvlan-tag/2003/</related-link>
+         <relationship-data>
+            <relationship-key>cvlan-tag.cvlan-tag</relationship-key>
+            <relationship-value>2003</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>port-group.interface-id</relationship-key>
+            <relationship-value>slcp1447vbc.ipag</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>vce.vnf-id</relationship-key>
+            <relationship-value>832bace2-3fb0-49e0-a6a4-07c47223c535</relationship-value>
+         </relationship-data>
+      </relationship>
+      <relationship>
+         <related-to>vce</related-to>
+         	<related-link>https://aai-ext1.test.com:8443/aai/v2/network/vces/vce/832bace2-3fb0-49e0-a6a4-07c47223c535/</related-link>
+         <relationship-data>
+            <relationship-key>vce.vnf-id</relationship-key>
+            <relationship-value>832bace2-3fb0-49e0-a6a4-07c47223c535</relationship-value>
+         </relationship-data>
+      </relationship>
+   </relationship-list>
+</service-instance>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/request.json
new file mode 100644
index 0000000..9141d50
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/request.json
@@ -0,0 +1,40 @@
+{
+	"requestDetails":
+		{
+			"modelInfo":
+				{
+					"modelType":"service",
+					"modelInvariantUuid":"uuid-miu-svc-011-abcdef",
+					"modelVersionId":"ASDC_TOSCA_UUID",
+					"modelName":"SIModelName1",
+					"modelVersion":"2"
+				},
+			"subscriberInfo":
+				{
+					"globalSubscriberId":"MCBH-1610",
+					"subscriberName":"Kaneohe"
+				},
+			"requestInfo":
+				{
+					"instanceName":"VCPE1",
+					"source":"VID",
+					"suppressRollback":"false",
+					"productFamilyId":"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
+				},
+			"cloudConfiguration":
+				{
+					"lcpCloudRegionId":"mdt1",
+					"tenantId":"8b1df54faa3b49078e3416e21370a3ba"
+				},
+			"requestParameters":
+				{
+					"subscriptionServiceType":"vcpesvc",
+					"aLaCarte":"false",
+					"userParams":
+						{
+							"BRG_WAN_MAC_Address" : "brgmac"
+						}
+				}
+				
+		}
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/serviceDecompositionATMFW.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/serviceDecompositionATMFW.json
new file mode 100644
index 0000000..bc54c55
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/serviceDecompositionATMFW.json
@@ -0,0 +1,110 @@
+{
+"serviceResources" : {
+    "modelInfo" : {
+      "modelName" : "CMW_Service",
+      "modelUuid" : "",
+      "modelInvariantId" : "cmw-123-456-789",
+      "modelVersion" : "",
+      "modelCustomizationUuid" : "",
+      "modelInstanceName" : "",
+      "modelCustomizationName" : "",
+      "modelVersionId" : "Cmw_123",
+      "modelType" : ""
+    },
+    "serviceInstanceData" : {
+      "instanceId" : "ff5256d2-5a33-55df-13ab-12abad84e7ff"
+    },
+    "serviceNetworks" : [ {
+      "modelInfo" : {
+        "modelName" : "CONTRAIL30_BASIC",
+        "modelUuid" : "",
+        "modelInvariantId" : "not yet implemented",
+        "modelVersion" : "1.0",
+        "modelCustomizationUuid" : "z_network_123",
+        "modelInstanceName" : "",
+        "modelCustomizationName" : "",
+        "modelVersionId" : "mod-inst-uuid-123",
+        "modelType" : "network"
+      },
+      "instanceData" : { },
+      "networkType" : "CONTRAIL30_BASIC"
+    } ],
+    "serviceVnfs" : [ {
+      "modelInfo" : {
+        "modelName" : "vSAMP12",
+        "modelUuid" : "",
+        "modelInvariantId" : "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+        "modelVersion" : "1.0",
+        "modelCustomizationUuid" : "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+        "modelInstanceName" : "",
+        "modelCustomizationName" : "",
+        "modelVersionId" : "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+        "modelType" : "vnf"
+      },
+      "instanceData" : { },
+      "vfModules" : [ {
+        "modelInfo" : {
+          "modelName" : "vSAMP12::base::module-0",
+          "modelUuid" : "",
+          "modelInvariantId" : "miu-1001",
+          "modelVersion" : "1",
+          "modelCustomizationUuid" : "1001",
+          "modelInstanceName" : "",
+          "modelCustomizationName" : "",
+          "modelVersionId" : "",
+          "modelType" : "vfModule"
+        },
+        "instanceData" : { },
+        "hasVolumeGroup" : false,
+        "isBase" : true,
+        "initialCount" : 1
+      }, {
+        "modelInfo" : {
+          "modelName" : "base::module-0",
+          "modelUuid" : "",
+          "modelInvariantId" : "miu-1002",
+          "modelVersion" : "1",
+          "modelCustomizationUuid" : "1002",
+          "modelInstanceName" : "",
+          "modelCustomizationName" : "",
+          "modelVersionId" : "",
+          "modelType" : "vfModule"
+        },
+        "instanceData" : { },
+        "hasVolumeGroup" : false,
+        "isBase" : true,
+        "initialCount" : 1
+      }, {
+        "modelInfo" : {
+          "modelName" : "vSAMP12DEV::base::module-0",
+          "modelUuid" : "",
+          "modelInvariantId" : "miu-1003",
+          "modelVersion" : "1",
+          "modelCustomizationUuid" : "f86e8800-7629-427f-b284-3dbfd04db01f",
+          "modelInstanceName" : "",
+          "modelCustomizationName" : "",
+          "modelVersionId" : "",
+          "modelType" : "vfModule"
+        },
+        "instanceData" : { },
+        "hasVolumeGroup" : false,
+        "isBase" : true,
+        "initialCount" : 0
+      } ]
+    } ],
+    "serviceAllottedResources" : [ {
+      "modelInfo" : {
+        "modelName" : "Bruce Wayne",
+        "modelUuid" : "",
+        "modelInvariantId" : "not yet implemented",
+        "modelVersion" : "1.0",
+        "modelCustomizationUuid" : "ar-mod-custid-456-456",
+        "modelInstanceName" : "Clark Kent",
+        "modelCustomizationName" : "",
+        "modelVersionId" : "123-123",
+        "modelType" : "allottedResource"
+      },
+      "instanceData" : { }
+    } ]
+  }
+}
\ No newline at end of file
diff --git a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseAAI.java b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseAAI.java
index 06437fe..a9ec384 100644
--- a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseAAI.java
+++ b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseAAI.java
@@ -34,6 +34,7 @@
 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;

 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;

 

+

 /**

  * Reusable Mock StubResponses for AAI Endpoints

  *

@@ -58,6 +59,14 @@
 	/**

 	 * Allotted Resource Mock StubResponses below

 	 */

+	public static void MockGetAllottedResource(String globalCustId, String subscriptionType, String serviceInstanceId, String allottedResourceId, String responseFile) {

+		stubFor(get(urlMatching("/aai/v[0-9]+/business/customers/customer/" + globalCustId + "/service-subscriptions/service-subscription/" + subscriptionType + "/service-instances/service-instance/" + serviceInstanceId + "/allotted-resources/allotted-resource/" + allottedResourceId))

+				.willReturn(aResponse()

+						.withStatus(200)

+						.withHeader("Content-Type", "text/xml")

+						.withBodyFile(responseFile)));

+	}

+	

 	public static void MockPutAllottedResource(String globalCustId, String subscriptionType, String serviceInstanceId, String allottedResourceId) {

 		stubFor(put(urlMatching("/aai/v[0-9]+/business/customers/customer/" + globalCustId + "/service-subscriptions/service-subscription/" + subscriptionType + "/service-instances/service-instance/" + serviceInstanceId + "/allotted-resources/allotted-resource/" + allottedResourceId))

 				.willReturn(aResponse()

@@ -69,6 +78,26 @@
 				.willReturn(aResponse()

 						.withStatus(500)));

 	}

+	

+	public static void MockDeleteAllottedResource(String globalCustId, String subscriptionType, String serviceInstanceId, String allottedResourceId, String resourceVersion) {

+		stubFor(delete(urlMatching("/aai/v[0-9]+/business/customers/customer/" + globalCustId + "/service-subscriptions/service-subscription/" + subscriptionType + "/service-instances/service-instance/" + serviceInstanceId + "/allotted-resources/allotted-resource/" + allottedResourceId + "[?]resource-version=" + resourceVersion))

+				.willReturn(aResponse()

+						.withStatus(204)));

+	}

+	

+	public static void MockPatchAllottedResource(String globalCustId, String subscriptionType, String serviceInstanceId, String allottedResourceId) {

+		stubFor(patch(urlMatching("/aai/v[0-9]+/business/customers/customer/" + globalCustId + "/service-subscriptions/service-subscription/" + subscriptionType + "/service-instances/service-instance/" + serviceInstanceId + "/allotted-resources/allotted-resource/" + allottedResourceId))

+				.willReturn(aResponse()

+						.withStatus(200)));

+	}

+

+	public static void MockQueryAllottedResourceById(String allottedResourceId, String responseFile){

+		stubFor(get(urlMatching("/aai/v[0-9]+/search/nodes-query[?]search-node-type=allotted-resource[&]filter=id:EQUALS:" + allottedResourceId))

+				.willReturn(aResponse()

+						.withStatus(200)

+						.withHeader("Content-Type", "text/xml")

+						.withBodyFile(responseFile)));

+	}

 

 

 	/**

@@ -199,7 +228,6 @@
 						.withStatus(500)));

 	}

 

-

 	/**

 	 * Service-Subscription Mock StubResponses below

 	 */

@@ -795,6 +823,14 @@
 						.withBodyFile(responseFile)));

 	}

 	

+	public static void MockGetVfModuleByNameWithDepth(String vnfId, String vfModuleName, int depth, String responseFile, int statusCode) {

+		stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/" + vnfId + "/vf-modules/vf-module[?]vf-module-name=" + vfModuleName + "[?]depth=" + depth))

+				.willReturn(aResponse()

+						.withStatus(statusCode)

+						.withHeader("Content-Type", "text/xml")

+						.withBodyFile(responseFile)));

+	}

+	

 	public static void MockGetVfModuleIdNoResponse(String vnfId, String requestContaining, String vfModuleId) {

 		stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/" + vnfId + "/vf-modules/vf-module/" + vfModuleId))

 				.withRequestBody(containing(requestContaining))

diff --git a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseSNIRO.java b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseSNIRO.java
new file mode 100644
index 0000000..a8152d6
--- /dev/null
+++ b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseSNIRO.java
@@ -0,0 +1,51 @@
+/*

+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.

+ */

+package org.openecomp.mso.bpmn.mock;

+

+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;

+import static com.github.tomakehurst.wiremock.client.WireMock.post;

+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;

+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;

+

+/**

+ * Please describe the StubResponseSNIRO.java class

+ *

+ * @author cb645j

+ */

+public class StubResponseSNIRO {

+

+	public static void setupAllMocks() {

+

+	}

+

+	public static void mockSNIRO() {

+		stubFor(post(urlEqualTo("/sniro/api/v2/placement"))

+				.willReturn(aResponse()

+						.withStatus(202)

+						.withHeader("Content-Type", "application/json")));

+	}

+

+	public static void mockSNIRO(String responseFile) {

+		stubFor(post(urlEqualTo("/sniro/api/v2/placement"))

+				.willReturn(aResponse()

+						.withStatus(202)

+						.withHeader("Content-Type", "application/json")

+						.withBodyFile(responseFile)));

+	}

+

+	public static void mockSNIRO_400() {

+		stubFor(post(urlEqualTo("/sniro/api/v2/placement"))

+				.willReturn(aResponse()

+						.withStatus(400)

+						.withHeader("Content-Type", "application/json")));

+	}

+

+	public static void mockSNIRO_500() {

+		stubFor(post(urlEqualTo("/sniro/api/v2/placement"))

+				.willReturn(aResponse()

+						.withStatus(500)

+						.withHeader("Content-Type", "application/json")));

+	}

+

+}

diff --git a/packages/docker/src/main/docker/docker-files/Dockerfile.mso-arquillian b/packages/docker/src/main/docker/docker-files/Dockerfile.mso-arquillian
index c279597..6dfdfa3 100644
--- a/packages/docker/src/main/docker/docker-files/Dockerfile.mso-arquillian
+++ b/packages/docker/src/main/docker/docker-files/Dockerfile.mso-arquillian
@@ -77,6 +77,8 @@
 RUN echo "JAVA_OPTS=\"\$JAVA_OPTS -Xms64m -Xmx4g -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=1g -Djboss.bind.address=0.0.0.0 -Djboss.bind.address.management=0.0.0.0 -Dmso.db=MARIADB -Dmso.config.path=/etc/mso/config.d/ -javaagent:/tmp/jacoco/lib/jacocoagent.jar=destfile=/shared/jacoco-it.exec,dumponexit=true,append=false,includes=com.att.*:org.openecomp.*\"" >> $JBOSS_HOME/bin/standalone.conf
 RUN echo "LAUNCH_JBOSS_IN_BACKGROUND=true" >> $JBOSS_HOME/bin/standalone.conf
 
+RUN mkdir -p /etc/mso/config.d/ASDC && chown -R jboss:jboss /etc/mso/config.d/ASDC && chmod u+xrw /etc/mso/config.d/ASDC
+
 ### Open Ports
 EXPOSE 8080 9990
 
diff --git a/packages/docker/src/main/docker/docker-files/Dockerfile.mso-chef-final b/packages/docker/src/main/docker/docker-files/Dockerfile.mso-chef-final
index 16d062e..2e227be 100644
--- a/packages/docker/src/main/docker/docker-files/Dockerfile.mso-chef-final
+++ b/packages/docker/src/main/docker/docker-files/Dockerfile.mso-chef-final
@@ -79,6 +79,8 @@
 
 COPY ./maven/artifacts/* $JBOSS_HOME/standalone/deployments/
 
+RUN mkdir -p /etc/mso/config.d/ASDC && chown -R jboss:jboss /etc/mso/config.d/ASDC && chmod u+xrw /etc/mso/config.d/ASDC
+
 ### Open Ports
 EXPOSE 8080