Status message for create vf module event audit 09/85909/2
authorBenjamin, Max (mb388a) <mb388a@us.att.com>
Sun, 21 Apr 2019 15:11:21 +0000 (11:11 -0400)
committerBenjamin, Max (mb388a) <mb388a@us.att.com>
Mon, 22 Apr 2019 00:05:17 +0000 (20:05 -0400)
Added appc to application-test due to new dependency in openstack
Updated exception class to inject mock into class for junits.
Added error handling support for when create audit fails.
Added error handling for when create audit fails and added test
Updated test schema file to create table and added field.
Updated pom file to relfect typo in change made.
Updated locaton of pojos for audit code
Updated test schema file to create table and added field.
Updated pom file to relfect typo in change made.
Comitting files that i forgot to stage from previous commit
Updated locaton of pojos for audit code
Additional fixes including vnfcname and null check
Fixed bug in delete audit failure check and reverted gateway change.

Change-Id: I993ce377dd6407960a65b4940d83d8162b24633c
Issue-ID: SO-1792
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
24 files changed:
adapters/mso-openstack-adapters/pom.xml
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AbstractAuditService.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditCreateStackService.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditDeleteStackService.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditVServer.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/HeatStackAudit.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateAAIInventory.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateInventoryTask.java
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditStackServiceDataTest.java
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditVServerTest.java
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/HeatStackAuditTest.java
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/inventory/create/CreateAAIInventoryTest.java
adapters/mso-openstack-adapters/src/test/resources/application-nomigrate.yaml
adapters/mso-openstack-adapters/src/test/resources/application-test.yaml
adapters/mso-openstack-adapters/src/test/resources/schema.sql
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/BuildingBlockExecution.java
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/DelegateExecutionImpl.java
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/exception/ExceptionBuilder.java
bpmn/MSOCommonBPMN/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java
bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/exception/ExceptionBuilderTest.java
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateVfModuleBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteVfModuleBB.bpmn
common/src/main/java/org/onap/so/objects/audit/AAIObjectAudit.java [moved from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AAIObjectAudit.java with 96% similarity]
common/src/main/java/org/onap/so/objects/audit/AAIObjectAuditList.java [moved from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AAIObjectAuditList.java with 55% similarity]

index 088f949..d174de7 100644 (file)
@@ -82,7 +82,7 @@
                                                        <keep>true</keep>
                                                </configuration>
                                        </execution>
-                                       
+
                                        <execution>
                                                <id>generate-vnf-async-stubs</id>
                                                <phase>process-classes</phase>
                                    </configuration>
                                </execution>
                            </executions>
-                        </plugin>                      
+                        </plugin>
  -->
       <plugin>
         <groupId>org.jacoco</groupId>
index 52f5478..2e62beb 100644 (file)
@@ -3,6 +3,8 @@ package org.onap.so.adapters.audit;
 import java.util.Optional;
 import org.camunda.bpm.client.task.ExternalTask;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
+import org.onap.so.objects.audit.AAIObjectAudit;
+import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.MDC;
index 947c6dd..7722991 100644 (file)
@@ -9,9 +9,9 @@
  * 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.
@@ -29,6 +29,7 @@ import org.camunda.bpm.client.task.ExternalTask;
 import org.camunda.bpm.client.task.ExternalTaskService;
 import org.onap.so.audit.beans.AuditInventory;
 import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
+import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -57,6 +58,8 @@ public class AuditCreateStackService extends AbstractAuditService {
             Optional<AAIObjectAuditList> auditListOpt = heatStackAudit.auditHeatStack(auditInventory.getCloudRegion(),
                     auditInventory.getCloudOwner(), auditInventory.getTenantId(), auditInventory.getHeatStackName());
             if (auditListOpt.isPresent()) {
+                auditListOpt.get().setAuditType("create");
+                auditListOpt.get().setHeatStackName(auditInventory.getHeatStackName());
                 GraphInventoryCommonObjectMapperProvider objectMapper = new GraphInventoryCommonObjectMapperProvider();
                 variables.put("auditInventoryResult", objectMapper.getMapper().writeValueAsString(auditListOpt.get()));
                 success = !didCreateAuditFail(auditListOpt);
index 048e6db..dcf61ed 100644 (file)
@@ -7,9 +7,9 @@
  * 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.
@@ -27,6 +27,7 @@ import org.camunda.bpm.client.task.ExternalTask;
 import org.camunda.bpm.client.task.ExternalTaskService;
 import org.onap.so.audit.beans.AuditInventory;
 import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
+import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -55,9 +56,11 @@ public class AuditDeleteStackService extends AbstractAuditService {
             Optional<AAIObjectAuditList> auditListOpt = heatStackAudit.auditHeatStack(auditInventory.getCloudRegion(),
                     auditInventory.getCloudOwner(), auditInventory.getTenantId(), auditInventory.getHeatStackName());
             if (auditListOpt.isPresent()) {
+                auditListOpt.get().setAuditType("delete");
+                auditListOpt.get().setHeatStackName(auditInventory.getHeatStackName());
                 GraphInventoryCommonObjectMapperProvider objectMapper = new GraphInventoryCommonObjectMapperProvider();
                 variables.put("auditInventoryResult", objectMapper.getMapper().writeValueAsString(auditListOpt.get()));
-                success = didDeleteAuditFail(auditListOpt);
+                success = !didDeleteAuditFail(auditListOpt);
             }
         } catch (Exception e) {
             logger.error("Error during audit of stack", e);
index 5ca045d..e009c0e 100644 (file)
@@ -28,6 +28,8 @@ import org.onap.so.client.aai.AAIObjectType;
 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
 import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
+import org.onap.so.objects.audit.AAIObjectAudit;
+import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
index 889f6fe..2be87ff 100644 (file)
@@ -35,6 +35,7 @@ import org.onap.aai.domain.yang.LInterfaces;
 import org.onap.aai.domain.yang.Vlan;
 import org.onap.aai.domain.yang.Vlans;
 import org.onap.aai.domain.yang.Vserver;
+import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.onap.so.openstack.utils.MsoHeatUtils;
 import org.onap.so.openstack.utils.MsoNeutronUtils;
 import org.slf4j.Logger;
index 608832f..69e1698 100644 (file)
@@ -22,11 +22,11 @@ package org.onap.so.adapters.inventory.create;
 
 import java.util.Optional;
 import java.util.stream.Stream;
-import org.onap.so.adapters.audit.AAIObjectAudit;
-import org.onap.so.adapters.audit.AAIObjectAuditList;
 import org.onap.so.client.aai.AAIObjectType;
 import org.onap.so.client.aai.AAIResourcesClient;
 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
+import org.onap.so.objects.audit.AAIObjectAudit;
+import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.springframework.stereotype.Component;
 
 @Component
index 8d0c2bd..38dd908 100644 (file)
@@ -9,7 +9,7 @@
  * 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.
@@ -24,8 +24,8 @@ import java.io.IOException;
 import org.camunda.bpm.client.task.ExternalTask;
 import org.camunda.bpm.client.task.ExternalTaskService;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
-import org.onap.so.adapters.audit.AAIObjectAuditList;
 import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
+import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.MDC;
index 80b2a21..f23486c 100644 (file)
@@ -37,6 +37,7 @@ import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 import org.onap.so.audit.beans.AuditInventory;
+import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.springframework.core.env.Environment;
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.databind.JsonMappingException;
index d43dbd9..2075557 100644 (file)
@@ -48,6 +48,7 @@ import org.onap.so.client.aai.AAIResourcesClient;
 import org.onap.so.client.aai.entities.AAIResultWrapper;
 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
+import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.skyscreamer.jsonassert.JSONAssert;
 import com.fasterxml.jackson.annotation.JsonInclude.Include;
 import com.fasterxml.jackson.core.JsonParseException;
index bc7ce53..c995064 100644 (file)
@@ -43,6 +43,7 @@ import org.mockito.junit.MockitoJUnitRunner;
 import org.onap.aai.domain.yang.LInterface;
 import org.onap.aai.domain.yang.LInterfaces;
 import org.onap.aai.domain.yang.Vserver;
+import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.onap.so.openstack.utils.MsoHeatUtils;
 import org.onap.so.openstack.utils.MsoNeutronUtils;
 import org.skyscreamer.jsonassert.JSONAssert;
index 0fd2bd4..8226f4f 100644 (file)
@@ -38,12 +38,12 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
-import org.onap.so.adapters.audit.AAIObjectAuditList;
 import org.onap.so.audit.beans.AuditInventory;
 import org.onap.so.client.aai.AAIObjectType;
 import org.onap.so.client.aai.AAIResourcesClient;
 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
+import org.onap.so.objects.audit.AAIObjectAuditList;
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
index d1a5bd9..2038446 100644 (file)
@@ -113,3 +113,20 @@ management:
   endpoint:
     info:
       enabled: true
+
+appc:
+  client:
+    key: iaEMAfjsVsZnraBP
+    response:
+      timeout: '120000'
+    secret: wcivUjsjXzmGFBfxMmyJu9dz
+    poolMembers: localhost
+    service: ueb
+    topic:
+      read:
+        name: APPC-TEST-AMDOCS2
+        timeout: '120000'
+      write: APPC-TEST-AMDOCS1-DEV3
+      sdnc:
+        read: SDNC-LCM-READ
+        write: SDNC-LCM-WRITE
\ No newline at end of file
index 694aeda..058c1d2 100644 (file)
@@ -92,7 +92,7 @@ spring:
     generate-ddl: false
     show-sql: false
     hibernate:      
-      ddl-auto: none
+      ddl-auto: validate
     database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
   security:
     usercredentials:
@@ -106,7 +106,6 @@ mariaDB4j:
   port: 3308
   databaseName: catalogdb
 
-
 #Actuator
 management:
   endpoints:
@@ -121,3 +120,20 @@ management:
       prometheus:
         enabled: true # Whether exporting of metrics to Prometheus is enabled.
         step: 1m # Step size (i.e. reporting frequency) to use.  
+
+appc:
+  client:
+    key: iaEMAfjsVsZnraBP
+    response:
+      timeout: '120000'
+    secret: wcivUjsjXzmGFBfxMmyJu9dz
+    poolMembers: localhost
+    service: ueb
+    topic:
+      read:
+        name: APPC-TEST-AMDOCS2
+        timeout: '120000'
+      write: APPC-TEST-AMDOCS1-DEV3
+      sdnc:
+        read: SDNC-LCM-READ
+        write: SDNC-LCM-WRITE
index dbb3469..94c8e55 100644 (file)
@@ -717,6 +717,7 @@ CREATE TABLE `northbound_request_ref_lookup` (
   `MAX_API_VERSION` double DEFAULT NULL,
   `IS_TOPLEVELFLOW` tinyint(1) DEFAULT NULL,
   `CLOUD_OWNER` varchar(200) NOT NULL,
+  `service_type` varchar(50) NOT NULL,
   PRIMARY KEY (`id`),
   UNIQUE KEY `UK_northbound_request_ref_lookup` (`MIN_API_VERSION`,`REQUEST_SCOPE`,`ACTION`,`IS_ALACARTE`,`MACRO_ACTION`,`CLOUD_OWNER`)
 ) ENGINE=InnoDB AUTO_INCREMENT=86 DEFAULT CHARSET=latin1;
@@ -1196,6 +1197,14 @@ CREATE TABLE IF NOT EXISTS `pnf_resource_customization_to_service` (
   PRIMARY KEY (`SERVICE_MODEL_UUID`,`RESOURCE_MODEL_CUSTOMIZATION_UUID`)
 )ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
+CREATE TABLE IF NOT EXISTS `homing_instances` (
+`SERVICE_INSTANCE_ID` varchar(50) NOT NULL,
+`CLOUD_OWNER` VARCHAR(200) NOT NULL,
+`CLOUD_REGION_ID` VARCHAR(200) NOT NULL,
+`OOF_DIRECTIVES` longtext NULL DEFAULT NULL,
+PRIMARY KEY (`SERVICE_INSTANCE_ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
 CREATE TABLE IF NOT EXISTS `workflow` (
   `ID` int(11) NOT NULL AUTO_INCREMENT,
   `ARTIFACT_UUID` varchar(200) NOT NULL,
@@ -1226,4 +1235,134 @@ CREATE TABLE IF NOT EXISTS `vnf_resource_to_workflow` (
   CONSTRAINT `fk_vnf_resource_to_workflow__workflow1` FOREIGN KEY (`WORKFLOW_ID`) REFERENCES `workflow` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
+CREATE TABLE IF NOT EXISTS `activity_spec` (
+  `ID` INT(11) NOT NULL AUTO_INCREMENT,
+  `NAME` VARCHAR(200) NOT NULL,
+  `DESCRIPTION` VARCHAR(1200) NOT NULL,
+  `VERSION` DOUBLE NOT NULL,
+  `CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`ID`),
+  UNIQUE INDEX `UK_activity_spec` (`NAME` ASC, `VERSION` ASC))
+ENGINE = InnoDB
+DEFAULT CHARACTER SET = latin1;
+
+CREATE TABLE IF NOT EXISTS `user_parameters` (
+  `ID` INT(11) NOT NULL AUTO_INCREMENT,
+  `NAME` VARCHAR(200) NOT NULL,
+  `PAYLOAD_LOCATION` VARCHAR(500) NULL,
+  `LABEL` VARCHAR(200) NOT NULL,
+  `TYPE` VARCHAR(200) NOT NULL,
+  `DESCRIPTION` VARCHAR(1200) NULL,
+  `IS_REQUIRED` TINYINT(1) NOT NULL,
+  `MAX_LENGTH` INT(11) NULL,
+  `ALLOWABLE_CHARS` VARCHAR(200) NULL,
+  `CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`ID`),
+  UNIQUE INDEX `UK_user_parameters` (`NAME` ASC))
+ENGINE = InnoDB
+DEFAULT CHARACTER SET = latin1;
+
+CREATE TABLE IF NOT EXISTS `workflow_activity_spec_sequence` (
+  `ID` INT(11) NOT NULL AUTO_INCREMENT,
+  `WORKFLOW_ID` INT(11) NOT NULL,
+  `ACTIVITY_SPEC_ID` INT(11) NOT NULL,
+  `SEQ_NO` INT(11) NOT NULL,
+  PRIMARY KEY (`ID`),
+  UNIQUE INDEX `UK_workflow_activity_spec_sequence` (`WORKFLOW_ID` ASC, `ACTIVITY_SPEC_ID` ASC, `SEQ_NO` ASC),
+  INDEX `fk_workflow_activity_spec_sequence__activity_spec_idx` (`ACTIVITY_SPEC_ID` ASC),
+  INDEX `fk_workflow_activity_spec_sequence__workflow_actifact_uuid_idx` (`WORKFLOW_ID` ASC),
+  CONSTRAINT `fk_workflow_activity_spec_sequence__activity_spec1`
+    FOREIGN KEY (`ACTIVITY_SPEC_ID`)
+    REFERENCES `activity_spec` (`ID`)
+    ON DELETE CASCADE
+    ON UPDATE CASCADE,
+  CONSTRAINT `fk_workflow_activity_spec_sequence__workflow1`
+    FOREIGN KEY (`WORKFLOW_ID`)
+    REFERENCES `workflow` (`ID`)
+    ON DELETE CASCADE
+    ON UPDATE CASCADE)
+ENGINE = InnoDB
+DEFAULT CHARACTER SET = latin1;
+
+CREATE TABLE IF NOT EXISTS `activity_spec_parameters` (
+  `ID` INT(11) NOT NULL AUTO_INCREMENT,
+  `NAME` VARCHAR(200) NOT NULL,
+  `TYPE` VARCHAR(200) NOT NULL,
+  `DIRECTION` VARCHAR(200) NULL,
+  `DESCRIPTION` VARCHAR(1200) NULL,
+  `CREATION_TIMESTAMP` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`ID`),
+  UNIQUE INDEX `UK_activity_spec_parameters` (`NAME` ASC, `DIRECTION` ASC))
+ENGINE = InnoDB
+DEFAULT CHARACTER SET = latin1;
 
+CREATE TABLE IF NOT EXISTS `activity_spec_categories` (
+  `ID` INT(11) NOT NULL AUTO_INCREMENT,
+  `NAME` VARCHAR(200) NOT NULL,
+  PRIMARY KEY (`ID`),
+  UNIQUE INDEX `UK_activity_spec_categories` (`NAME` ASC))
+ENGINE = InnoDB
+DEFAULT CHARACTER SET = latin1;
+
+CREATE TABLE IF NOT EXISTS `activity_spec_to_activity_spec_categories` (
+  `ID` INT(11) NOT NULL AUTO_INCREMENT,
+  `ACTIVITY_SPEC_ID` INT(11) NOT NULL,
+  `ACTIVITY_SPEC_CATEGORIES_ID` INT(11) NOT NULL,
+  PRIMARY KEY (`ID`),
+  UNIQUE INDEX `UK_activity_spec_to_activity_spec_categories` (`ACTIVITY_SPEC_ID` ASC, `ACTIVITY_SPEC_CATEGORIES_ID` ASC),
+  INDEX `fk_activity_spec_to_activity_spec_categories__activity_spec_idx` (`ACTIVITY_SPEC_CATEGORIES_ID` ASC),
+  INDEX `fk_activity_spec_to_activity_spec_categories__activity_spec_idx1` (`ACTIVITY_SPEC_ID` ASC),
+  CONSTRAINT `fk_activity_spec_to_activity_spec_categories__activity_spec1`
+    FOREIGN KEY (`ACTIVITY_SPEC_ID`)
+    REFERENCES `activity_spec` (`ID`)
+    ON DELETE CASCADE
+    ON UPDATE CASCADE,
+  CONSTRAINT `fk_activity_spec_to_activity_spec_categories__activity_spec_c1`
+    FOREIGN KEY (`ACTIVITY_SPEC_CATEGORIES_ID`)
+    REFERENCES `activity_spec_categories` (`ID`)
+    ON DELETE CASCADE
+    ON UPDATE CASCADE)
+ENGINE = InnoDB
+DEFAULT CHARACTER SET = latin1;
+
+CREATE TABLE IF NOT EXISTS `activity_spec_to_activity_spec_parameters` (
+  `ID` INT(11) NOT NULL AUTO_INCREMENT,
+  `ACTIVITY_SPEC_ID` INT(11) NOT NULL,
+  `ACTIVITY_SPEC_PARAMETERS_ID` INT(11) NOT NULL,
+  PRIMARY KEY (`ID`),
+  INDEX `fk_activity_spec_to_activity_spec_params__act_sp_param_id_idx` (`ACTIVITY_SPEC_PARAMETERS_ID` ASC),
+  UNIQUE INDEX `UK_activity_spec_to_activity_spec_parameters` (`ACTIVITY_SPEC_ID` ASC, `ACTIVITY_SPEC_PARAMETERS_ID` ASC),
+  INDEX `fk_activity_spec_to_activity_spec_parameters__act_spec_id_idx` (`ACTIVITY_SPEC_ID` ASC),
+  CONSTRAINT `fk_activity_spec_to_activity_spec_parameters__activity_spec_1`
+    FOREIGN KEY (`ACTIVITY_SPEC_ID`)
+    REFERENCES `activity_spec` (`ID`)
+    ON DELETE CASCADE
+    ON UPDATE CASCADE,
+  CONSTRAINT `fk_activity_spec_to_activity_spec_parameters__activ_spec_param1`
+    FOREIGN KEY (`ACTIVITY_SPEC_PARAMETERS_ID`)
+    REFERENCES `activity_spec_parameters` (`ID`)
+    ON DELETE CASCADE
+    ON UPDATE CASCADE)
+ENGINE = InnoDB
+DEFAULT CHARACTER SET = latin1;
+
+CREATE TABLE IF NOT EXISTS `activity_spec_to_user_parameters` (
+  `ID` INT(11) NOT NULL AUTO_INCREMENT,
+  `ACTIVITY_SPEC_ID` INT(11) NOT NULL,
+  `USER_PARAMETERS_ID` INT(11) NOT NULL,
+  PRIMARY KEY (`ID`),
+  UNIQUE INDEX `UK_activity_spec_to_user_parameters` (`ACTIVITY_SPEC_ID` ASC, `USER_PARAMETERS_ID` ASC),
+  INDEX `fk_activity_spec_to_user_parameters__user_parameters1_idx` (`USER_PARAMETERS_ID` ASC),
+  INDEX `fk_activity_spec_to_user_parameters__activity_spec1_idx` (`ACTIVITY_SPEC_ID` ASC),
+  CONSTRAINT `fk_activity_spec_to_user_parameters__activity_spec1`
+    FOREIGN KEY (`ACTIVITY_SPEC_ID`)
+    REFERENCES `activity_spec` (`ID`)
+    ON DELETE CASCADE
+    ON UPDATE CASCADE,
+  CONSTRAINT `fk_activity_spec_to_user_parameters__user_parameters1`
+    FOREIGN KEY (`USER_PARAMETERS_ID`)
+    REFERENCES `user_parameters` (`ID`)
+    ON DELETE CASCADE
+    ON UPDATE CASCADE)
+ENGINE = InnoDB
+DEFAULT CHARACTER SET = latin1;
index c087d58..83a44cf 100644 (file)
@@ -9,7 +9,7 @@
  * 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.
index 31fef7c..734262a 100644 (file)
@@ -112,10 +112,6 @@ public class DelegateExecutionImpl implements BuildingBlockExecution, Serializab
         return this.get("flowToBeCalled");
     }
 
-    @JsonIgnore
-    public DelegateExecution getDelegateExecution() {
-        return this.execution;
-    }
 
     public void setDelegateExecution(final DelegateExecution execution) {
         this.execution = execution;
@@ -126,6 +122,11 @@ public class DelegateExecutionImpl implements BuildingBlockExecution, Serializab
         });
     }
 
+    @JsonIgnore
+    public DelegateExecution getDelegateExecution() {
+        return this.execution;
+    }
+
     @SuppressWarnings("unchecked")
     protected <T> T get(final String key) {
         final Object value = this.execution.getVariable(key);
index ae5e41f..b69ab15 100644 (file)
 
 package org.onap.so.client.exception;
 
+import java.io.IOException;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.camunda.bpm.engine.delegate.BpmnError;
 import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.onap.aai.domain.yang.LInterface;
+import org.onap.aai.domain.yang.Vserver;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
 import org.onap.so.bpmn.common.DelegateExecutionImpl;
 import org.onap.so.bpmn.core.WorkflowException;
 import org.onap.so.logger.ErrorCode;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
+import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
+import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
+import org.onap.so.client.aai.AAIObjectType;
+import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
 import org.onap.so.logger.MessageEnum;
+import org.onap.so.objects.audit.AAIObjectAudit;
+import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
+
 @Component
 public class ExceptionBuilder {
     private static final Logger logger = LoggerFactory.getLogger(ExceptionBuilder.class);
 
+
+    protected ExtractPojosForBB getExtractPojosForBB() {
+        return new ExtractPojosForBB();
+    }
+
     public void buildAndThrowWorkflowException(BuildingBlockExecution execution, int errorCode, Exception exception) {
         String msg = "Exception in %s.%s ";
         try {
@@ -132,4 +151,63 @@ public class ExceptionBuilder {
         return execution.getProcessEngineServices().getRepositoryService()
                 .getProcessDefinition(execution.getProcessDefinitionId()).getKey();
     }
+
+    public void processAuditException(DelegateExecutionImpl execution) {
+        logger.info("Building a WorkflowException for Subflow");
+
+        StringBuilder errorMessage = new StringBuilder();
+        String processKey = getProcessKey(execution.getDelegateExecution());
+        try {
+            ExtractPojosForBB extractPojosForBB = getExtractPojosForBB();
+            VfModule module = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+            String cloudRegionId = execution.getGeneralBuildingBlock().getCloudRegion().getLcpCloudRegionId();
+
+            GraphInventoryCommonObjectMapperProvider objectMapper = new GraphInventoryCommonObjectMapperProvider();
+            String auditListString = (String) execution.getVariable("auditInventoryResult");
+            AAIObjectAuditList auditList =
+                    objectMapper.getMapper().readValue(auditListString, AAIObjectAuditList.class);
+
+            errorMessage = errorMessage.append(auditList.getAuditType() + " VF-Module " + module.getVfModuleId()
+                    + " failed due to incomplete A&AI vserver inventory population after stack "
+                    + auditList.getHeatStackName() + " was successfully " + auditList.getAuditType()
+                    + "d in cloud region " + cloudRegionId + ". MSO Audit indicates that AIC RO did not "
+                    + auditList.getAuditType() + " ");
+
+            Stream<AAIObjectAudit> vServerLInterfaceAuditStream = auditList.getAuditList().stream()
+                    .filter(auditObject -> auditObject.getAaiObjectType().equals(AAIObjectType.VSERVER.typeName())
+                            || auditObject.getAaiObjectType().equals(AAIObjectType.L_INTERFACE.typeName()));
+            List<AAIObjectAudit> filteredAuditStream =
+                    vServerLInterfaceAuditStream.filter(a -> !a.isDoesObjectExist()).collect(Collectors.toList());
+
+            for (AAIObjectAudit object : filteredAuditStream) {
+                if (object.getAaiObjectType().equals(AAIObjectType.L_INTERFACE.typeName())) {
+                    LInterface li = objectMapper.getMapper().convertValue(object.getAaiObject(), LInterface.class);
+                    errorMessage = errorMessage
+                            .append(AAIObjectType.L_INTERFACE.typeName() + " " + li.getInterfaceId() + ", ");
+                } else {
+                    Vserver vs = objectMapper.getMapper().convertValue(object.getAaiObject(), Vserver.class);
+                    errorMessage =
+                            errorMessage.append(AAIObjectType.VSERVER.typeName() + " " + vs.getVserverId() + ", ");
+                }
+            }
+
+            if (errorMessage.length() > 0) {
+                errorMessage.setLength(errorMessage.length() - 2);
+                errorMessage = errorMessage.append(" in AAI. ");
+            }
+
+        } catch (IOException | BBObjectNotFoundException e) {
+            errorMessage = errorMessage.append("process objects in AAI. ");
+        }
+
+        errorMessage.append(
+                "Recommendation - Wait for nightly RO Audit to run and fix the data issue and resume vf-module creation in VID. If problem persists then report problem to AIC/RO Ops.");
+
+        WorkflowException exception = new WorkflowException(processKey, 400, errorMessage.toString());
+        execution.setVariable("WorkflowException", exception);
+        execution.setVariable("WorkflowExceptionErrorMessage", errorMessage);
+        logger.info("Outgoing WorkflowException is {}", exception);
+        logger.info("Throwing MSOWorkflowException");
+        throw new BpmnError("AAIInventoryFailure");
+    }
 }
index 79a94d5..3bb4177 100644 (file)
@@ -325,6 +325,7 @@ public class BuildingBlockTestDataSetup {
             gBBInput.setCustomer(buildCustomer());
         }
         gBBInput.getCustomer().getServiceSubscription().getServiceInstances().add(serviceInstance);
+        gBBInput.setServiceInstance(serviceInstance);
         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, serviceInstance.getServiceInstanceId());
 
         return serviceInstance;
index ef06685..4ade9db 100644 (file)
@@ -7,9 +7,9 @@
  * 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.
 package org.onap.so.client.exception;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
 import org.camunda.bpm.engine.delegate.BpmnError;
+import org.junit.Before;
 import org.junit.Test;
-import org.onap.so.bpmn.mock.FileUtil;
+import org.mockito.ArgumentMatchers;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.Spy;
+import org.onap.aai.domain.yang.Vserver;
 import org.onap.so.BaseTest;
+import org.onap.so.bpmn.common.DelegateExecutionImpl;
+import org.onap.so.bpmn.core.WorkflowException;
+import org.onap.so.bpmn.mock.FileUtil;
+import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
+import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
+import org.onap.so.client.aai.AAIObjectType;
+import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
+import org.onap.so.objects.audit.AAIObjectAudit;
+import org.onap.so.objects.audit.AAIObjectAuditList;
+import org.springframework.beans.BeanUtils;
+import com.fasterxml.jackson.core.JsonProcessingException;
 
 public class ExceptionBuilderTest extends BaseTest {
 
     private static final String RESOURCE_PATH = "__files/";
     private static final String VALID_ERROR_MESSAGE = "{test error message}";
 
+    @Mock
+    protected ExtractPojosForBB extractPojosForBB;
+
+    @Spy
+    @InjectMocks
+    private ExceptionBuilder exceptionBuilder = new ExceptionBuilder();
+
+    GraphInventoryCommonObjectMapperProvider objectMapper = new GraphInventoryCommonObjectMapperProvider();
+
+    @Before
+    public void before() throws BBObjectNotFoundException, JsonProcessingException {
+        setCloudRegion();
+        when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID)))
+                .thenReturn(buildVfModule());
+        AAIObjectAuditList auditList = new AAIObjectAuditList();
+        auditList.setAuditType("create");
+        auditList.setHeatStackName("testStackName");
+        AAIObjectAudit vserver = new AAIObjectAudit();
+        vserver.setAaiObjectType(AAIObjectType.VSERVER.typeName());
+        vserver.setDoesObjectExist(false);
+        Vserver vs = new Vserver();
+        vs.setVserverId("testVServerId");
+        Vserver vServerShallow = new Vserver();
+        BeanUtils.copyProperties(vs, vServerShallow, "LInterfaces");
+        vserver.setAaiObject(vServerShallow);
+        auditList.getAuditList().add(vserver);
+
+        execution.setVariable("auditInventoryResult", objectMapper.getMapper().writeValueAsString(auditList));
+    }
+
 
     @Test
     public void buildAndThrowWorkflowExceptionTest() {
@@ -77,4 +126,20 @@ public class ExceptionBuilderTest extends BaseTest {
             assertEquals("MSOWorkflowException", bpmnException.getErrorCode());
         }
     }
+
+    @Test
+    public void processAuditExceptionTest() {
+        try {
+            Mockito.doReturn(extractPojosForBB).when(exceptionBuilder).getExtractPojosForBB();
+            exceptionBuilder.processAuditException((DelegateExecutionImpl) execution);
+        } catch (BpmnError bpmnException) {
+            assertEquals("AAIInventoryFailure", bpmnException.getErrorCode());
+            WorkflowException we = execution.getVariable("WorkflowException");
+            assertNotNull(we);
+            assertEquals(
+                    "create VF-Module testVfModuleId1 failed due to incomplete A&AI vserver inventory population after stack testStackName was successfully created in cloud region testLcpCloudRegionId. MSO Audit indicates that AIC RO did not create vserver testVServerId in AAI. Recommendation - Wait for nightly RO Audit to run and fix the data issue and resume vf-module creation in VID. If problem persists then report problem to AIC/RO Ops.",
+                    we.getErrorMessage());
+        }
+    }
+
 }
index 289ab6e..435d85d 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.7.1">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="ActivateVfModuleBB" name="ActivateVfModuleBB" isExecutable="true">
     <bpmn:startEvent id="ActivateVfModuleBB_Start">
       <bpmn:outgoing>SequenceFlow_0ieafii</bpmn:outgoing>
@@ -9,9 +9,7 @@
       <bpmn:incoming>SequenceFlow_0xsp0pv</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:serviceTask id="ActivateVfModule" name="&#10;SDNC&#10;Activate&#10;(vf module)&#10;" camunda:expression="${SDNCActivateTasks.activateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
-      <bpmn:incoming>SequenceFlow_07ybdik</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_109oxx2</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_0arwo1o</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1b63lv4</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1a495wm</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:serviceTask id="UpdateVfModuleActiveStatus" name="&#10;AAI&#10;Update&#10;(vf module)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActivateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0xndboi</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0ee42yq</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_1v8bmbu" default="SequenceFlow_07ybdik">
-      <bpmn:incoming>SequenceFlow_1xqyur9</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_07ybdik</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0ghzwlo</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_07ybdik" sourceRef="ExclusiveGateway_1v8bmbu" targetRef="ActivateVfModule" />
-    <bpmn:sequenceFlow id="SequenceFlow_0ghzwlo" sourceRef="ExclusiveGateway_1v8bmbu" targetRef="Setup_AAI_Inventory_Audit">
+    <bpmn:sequenceFlow id="SequenceFlow_07ybdik" name="No" sourceRef="ExclusiveGateway_1v8bmbu" targetRef="ExclusiveGateway_0sqvzll" />
+    <bpmn:sequenceFlow id="SequenceFlow_0ghzwlo" name="Yes" sourceRef="ExclusiveGateway_1v8bmbu" targetRef="Setup_AAI_Inventory_Audit">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("auditInventoryNeeded") == true}]]></bpmn:conditionExpression>
     </bpmn:sequenceFlow>
     <bpmn:sequenceFlow id="SequenceFlow_0ee42yq" sourceRef="Audit_AAI_Inventory" targetRef="ExclusiveGateway_1h8avxn" />
       <bpmn:outgoing>SequenceFlow_1xqyur9</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_1xqyur9" sourceRef="CheckAuditVariable" targetRef="ExclusiveGateway_1v8bmbu" />
-    <bpmn:exclusiveGateway id="ExclusiveGateway_1h8avxn" default="SequenceFlow_1bo83qk">
-      <bpmn:incoming>SequenceFlow_0ee42yq</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_109oxx2</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1bo83qk</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_109oxx2" sourceRef="ExclusiveGateway_1h8avxn" targetRef="ActivateVfModule">
+    <bpmn:sequenceFlow id="SequenceFlow_109oxx2" name="No" sourceRef="ExclusiveGateway_1h8avxn" targetRef="ExclusiveGateway_0y0ek7t">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("auditIsSuccessful")== true }]]></bpmn:conditionExpression>
     </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1bo83qk" name="If Audit Fails" sourceRef="ExclusiveGateway_1h8avxn" targetRef="Create_AAI_Inventory" />
-    <bpmn:sequenceFlow id="SequenceFlow_0arwo1o" sourceRef="Create_AAI_Inventory" targetRef="ActivateVfModule" />
+    <bpmn:sequenceFlow id="SequenceFlow_1bo83qk" name="Yes" sourceRef="ExclusiveGateway_1h8avxn" targetRef="Create_AAI_Inventory" />
+    <bpmn:sequenceFlow id="SequenceFlow_0arwo1o" sourceRef="Create_AAI_Inventory" targetRef="ExclusiveGateway_0y0ek7t" />
     <bpmn:serviceTask id="Create_AAI_Inventory" name="Create A&#38;AI Inventory" camunda:type="external" camunda:topic="InventoryCreate">
       <bpmn:incoming>SequenceFlow_1bo83qk</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0arwo1o</bpmn:outgoing>
     </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1b63lv4" sourceRef="ExclusiveGateway_0sqvzll" targetRef="ActivateVfModule" />
+    <bpmn:sequenceFlow id="SequenceFlow_18faffa" sourceRef="ExclusiveGateway_0y0ek7t" targetRef="ExclusiveGateway_0sqvzll" />
+    <bpmn:subProcess id="SubProcess_0bpsptg" name="Audit Exception Sub Process" triggeredByEvent="true">
+      <bpmn:startEvent id="catchInventoryException">
+        <bpmn:outgoing>SequenceFlow_19gbhlj</bpmn:outgoing>
+        <bpmn:errorEventDefinition errorRef="Error_1s3kxze" />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_067jv1n">
+        <bpmn:incoming>SequenceFlow_0l4jzc5</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_19gbhlj" sourceRef="catchInventoryException" targetRef="processAuditException" />
+      <bpmn:sequenceFlow id="SequenceFlow_0l4jzc5" sourceRef="processAuditException" targetRef="EndEvent_067jv1n" />
+      <bpmn:serviceTask id="processAuditException" name="Proccess Error" camunda:expression="${ExceptionBuilder.processAuditException(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+        <bpmn:incoming>SequenceFlow_19gbhlj</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0l4jzc5</bpmn:outgoing>
+      </bpmn:serviceTask>
+    </bpmn:subProcess>
+    <bpmn:inclusiveGateway id="ExclusiveGateway_1v8bmbu" name="Audit Enabled?" default="SequenceFlow_07ybdik">
+      <bpmn:incoming>SequenceFlow_1xqyur9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_07ybdik</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0ghzwlo</bpmn:outgoing>
+    </bpmn:inclusiveGateway>
+    <bpmn:inclusiveGateway id="ExclusiveGateway_0sqvzll">
+      <bpmn:incoming>SequenceFlow_07ybdik</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_18faffa</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1b63lv4</bpmn:outgoing>
+    </bpmn:inclusiveGateway>
+    <bpmn:inclusiveGateway id="ExclusiveGateway_1h8avxn" name="Audit Failed?" default="SequenceFlow_1bo83qk">
+      <bpmn:incoming>SequenceFlow_0ee42yq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_109oxx2</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1bo83qk</bpmn:outgoing>
+    </bpmn:inclusiveGateway>
+    <bpmn:inclusiveGateway id="ExclusiveGateway_0y0ek7t">
+      <bpmn:incoming>SequenceFlow_109oxx2</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0arwo1o</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_18faffa</bpmn:outgoing>
+    </bpmn:inclusiveGateway>
   </bpmn:process>
   <bpmn:error id="Error_0q258vt" errorCode="7000" />
+  <bpmn:error id="Error_0zgccif" name="org.onap.so.adapters.inventory.create.InventoryException" errorCode="org.onap.so.adapters.inventory.create.InventoryException" />
+  <bpmn:error id="Error_1s3kxze" name="Error_3q664s5" errorCode="AAIInventoryFailure" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ActivateVfModuleBB">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="ActivateVfModuleBB_Start">
-        <dc:Bounds x="73" y="102" width="36" height="36" />
+        <dc:Bounds x="85" y="234" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="46" y="138" width="90" height="12" />
+          <dc:Bounds x="58" y="270" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0ieafii_di" bpmnElement="SequenceFlow_0ieafii">
-        <di:waypoint xsi:type="dc:Point" x="109" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="161" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="121" y="252" />
+        <di:waypoint xsi:type="dc:Point" x="201" y="252" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="90" y="99" width="90" height="12" />
+          <dc:Bounds x="116" y="231" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_1v967li_di" bpmnElement="ActivateVfModuleBB_End">
-        <dc:Bounds x="1104" y="102" width="36" height="36" />
+        <dc:Bounds x="1404" y="235" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="935" y="142" width="90" height="12" />
+          <dc:Bounds x="1235" y="275" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0hawa84_di" bpmnElement="ActivateVfModule">
-        <dc:Bounds x="647" y="80" width="100" height="80" />
+        <dc:Bounds x="958" y="212" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_175e9ul_di" bpmnElement="UpdateVfModuleActiveStatus">
-        <dc:Bounds x="952" y="80" width="100" height="80" />
+        <dc:Bounds x="1214" y="212" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0xsp0pv_di" bpmnElement="SequenceFlow_0xsp0pv">
-        <di:waypoint xsi:type="dc:Point" x="1052" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="1104" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="1314" y="252" />
+        <di:waypoint xsi:type="dc:Point" x="1404" y="253" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1033" y="99" width="90" height="12" />
+          <dc:Bounds x="1314" y="231.5" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="CallActivity_03jkesd_di" bpmnElement="CallActivity_sdncHandler">
-        <dc:Bounds x="794" y="80" width="100" height="80" />
+        <dc:Bounds x="1086" y="212" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1a495wm_di" bpmnElement="SequenceFlow_1a495wm">
-        <di:waypoint xsi:type="dc:Point" x="747" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="794" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="252" />
+        <di:waypoint xsi:type="dc:Point" x="1086" y="252" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="725.5" y="99" width="90" height="12" />
+          <dc:Bounds x="1027" y="231" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1j4x1ej_di" bpmnElement="SequenceFlow_1j4x1ej">
-        <di:waypoint xsi:type="dc:Point" x="894" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="952" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="1186" y="252" />
+        <di:waypoint xsi:type="dc:Point" x="1214" y="252" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="878" y="99" width="90" height="12" />
+          <dc:Bounds x="1155" y="231" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0xndboi_di" bpmnElement="SequenceFlow_0xndboi">
-        <di:waypoint xsi:type="dc:Point" x="365" y="256" />
-        <di:waypoint xsi:type="dc:Point" x="408" y="256" />
+        <di:waypoint xsi:type="dc:Point" x="491" y="175" />
+        <di:waypoint xsi:type="dc:Point" x="513" y="175" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="341.5" y="234.5" width="90" height="13" />
+          <dc:Bounds x="457" y="153.5" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0krf1ur_di" bpmnElement="Setup_AAI_Inventory_Audit">
-        <dc:Bounds x="265" y="216" width="100" height="80" />
+        <dc:Bounds x="391" y="135" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_08rxjeb_di" bpmnElement="Audit_AAI_Inventory">
-        <dc:Bounds x="408" y="216" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_1v8bmbu_di" bpmnElement="ExclusiveGateway_1v8bmbu" isMarkerVisible="true">
-        <dc:Bounds x="290" y="95" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="315" y="148" width="0" height="13" />
-        </bpmndi:BPMNLabel>
+        <dc:Bounds x="513" y="135" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_07ybdik_di" bpmnElement="SequenceFlow_07ybdik">
-        <di:waypoint xsi:type="dc:Point" x="340" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="647" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="355" y="277" />
+        <di:waypoint xsi:type="dc:Point" x="355" y="315" />
+        <di:waypoint xsi:type="dc:Point" x="881" y="315" />
+        <di:waypoint xsi:type="dc:Point" x="881" y="277" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="448.5" y="98.5" width="90" height="13" />
+          <dc:Bounds x="364" y="294" width="14" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0ghzwlo_di" bpmnElement="SequenceFlow_0ghzwlo">
-        <di:waypoint xsi:type="dc:Point" x="315" y="145" />
-        <di:waypoint xsi:type="dc:Point" x="315" y="216" />
+        <di:waypoint xsi:type="dc:Point" x="355" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="355" y="175" />
+        <di:waypoint xsi:type="dc:Point" x="391" y="175" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="330" y="174" width="0" height="13" />
+          <dc:Bounds x="362" y="185" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0ee42yq_di" bpmnElement="SequenceFlow_0ee42yq">
-        <di:waypoint xsi:type="dc:Point" x="508" y="256" />
-        <di:waypoint xsi:type="dc:Point" x="566" y="256" />
+        <di:waypoint xsi:type="dc:Point" x="613" y="175" />
+        <di:waypoint xsi:type="dc:Point" x="638" y="175" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="492" y="234.5" width="90" height="13" />
+          <dc:Bounds x="580.5" y="153.5" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1eg5ryx_di" bpmnElement="CheckAuditVariable">
-        <dc:Bounds x="161" y="80" width="100" height="80" />
+        <dc:Bounds x="201" y="212" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1xqyur9_di" bpmnElement="SequenceFlow_1xqyur9">
-        <di:waypoint xsi:type="dc:Point" x="261" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="290" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="301" y="252" />
+        <di:waypoint xsi:type="dc:Point" x="330" y="252" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="275.5" y="98.5" width="0" height="13" />
+          <dc:Bounds x="270.5" y="230.5" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ExclusiveGateway_1h8avxn_di" bpmnElement="ExclusiveGateway_1h8avxn" isMarkerVisible="true">
-        <dc:Bounds x="566" y="231" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="591" y="284" width="0" height="13" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_109oxx2_di" bpmnElement="SequenceFlow_109oxx2">
-        <di:waypoint xsi:type="dc:Point" x="616" y="256" />
-        <di:waypoint xsi:type="dc:Point" x="670" y="256" />
-        <di:waypoint xsi:type="dc:Point" x="670" y="160" />
+        <di:waypoint xsi:type="dc:Point" x="663" y="200" />
+        <di:waypoint xsi:type="dc:Point" x="663" y="230" />
+        <di:waypoint xsi:type="dc:Point" x="834" y="230" />
+        <di:waypoint xsi:type="dc:Point" x="834" y="200" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="643" y="234.5" width="0" height="13" />
+          <dc:Bounds x="670" y="207" width="14" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1bo83qk_di" bpmnElement="SequenceFlow_1bo83qk">
-        <di:waypoint xsi:type="dc:Point" x="591" y="281" />
-        <di:waypoint xsi:type="dc:Point" x="591" y="345" />
-        <di:waypoint xsi:type="dc:Point" x="656" y="345" />
+        <di:waypoint xsi:type="dc:Point" x="663" y="150" />
+        <di:waypoint xsi:type="dc:Point" x="663" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="691" y="101" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="560" y="358" width="61" height="12" />
+          <dc:Bounds x="667" y="111" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0arwo1o_di" bpmnElement="SequenceFlow_0arwo1o">
-        <di:waypoint xsi:type="dc:Point" x="706" y="305" />
-        <di:waypoint xsi:type="dc:Point" x="706" y="160" />
+        <di:waypoint xsi:type="dc:Point" x="791" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="834" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="834" y="150" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="721" y="226" width="0" height="13" />
+          <dc:Bounds x="767.5" y="79.5" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1eb09gr_di" bpmnElement="Create_AAI_Inventory">
-        <dc:Bounds x="656" y="305" width="100" height="80" />
+        <dc:Bounds x="691" y="61" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1b63lv4_di" bpmnElement="SequenceFlow_1b63lv4">
+        <di:waypoint xsi:type="dc:Point" x="906" y="252" />
+        <di:waypoint xsi:type="dc:Point" x="958" y="252" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="887" y="231" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18faffa_di" bpmnElement="SequenceFlow_18faffa">
+        <di:waypoint xsi:type="dc:Point" x="859" y="175" />
+        <di:waypoint xsi:type="dc:Point" x="881" y="175" />
+        <di:waypoint xsi:type="dc:Point" x="881" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="825" y="154" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_0mbkb7v_di" bpmnElement="SubProcess_0bpsptg" isExpanded="true">
+        <dc:Bounds x="293" y="449" width="350" height="200" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_12r96di_di" bpmnElement="catchInventoryException">
+        <dc:Bounds x="324" y="532" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="341.15269461077844" y="571.6127744510978" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_067jv1n_di" bpmnElement="EndEvent_067jv1n">
+        <dc:Bounds x="572.1526946107784" y="532" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="590.1526946107784" y="572" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_19gbhlj_di" bpmnElement="SequenceFlow_19gbhlj">
+        <di:waypoint xsi:type="dc:Point" x="360" y="550" />
+        <di:waypoint xsi:type="dc:Point" x="415" y="550" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="387.5" y="529" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0l4jzc5_di" bpmnElement="SequenceFlow_0l4jzc5">
+        <di:waypoint xsi:type="dc:Point" x="515" y="550" />
+        <di:waypoint xsi:type="dc:Point" x="572" y="550" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="543.5" y="529" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_08xffml_di" bpmnElement="processAuditException">
+        <dc:Bounds x="415" y="510" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_03pi9y4_di" bpmnElement="ExclusiveGateway_1v8bmbu">
+        <dc:Bounds x="330" y="227" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="383" y="246" width="73" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_16ap4e3_di" bpmnElement="ExclusiveGateway_0sqvzll">
+        <dc:Bounds x="856" y="227" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="836" y="281" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_00n600s_di" bpmnElement="ExclusiveGateway_1h8avxn">
+        <dc:Bounds x="638" y="150" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="693" y="169" width="63" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_0xx6c29_di" bpmnElement="ExclusiveGateway_0y0ek7t">
+        <dc:Bounds x="809" y="150" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="789" y="204" width="0" height="12" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
index e1b36cf..8be07a1 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.7.1">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="DeleteVfModuleBB" name="DeleteVfModuleBB" isExecutable="true">
     <bpmn:startEvent id="DeleteVfModuleBB_Start">
       <bpmn:outgoing>SequenceFlow_1537yw5</bpmn:outgoing>
     <bpmn:sequenceFlow id="SequenceFlow_01vfwtp" sourceRef="UpdateVfModuleHeatStackId" targetRef="UpdateVfModuleDeleteStatus" />
     <bpmn:sequenceFlow id="SequenceFlow_09l7pcg" sourceRef="UpdateVfModuleDeleteStatus" targetRef="DeleteVfModuleBB_End" />
     <bpmn:sequenceFlow id="SequenceFlow_0xyu3pk" sourceRef="DeleteNetworkPolicies" targetRef="UpdateVnfIpv4OamAddress" />
-    <bpmn:serviceTask id="DeleteNetworkPolicies" name="AAI Delete (network policies)" camunda:expression="${AAIDeleteTasks.deleteNetworkPolicies(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
-      <bpmn:incoming>SequenceFlow_14bu4ys</bpmn:incoming>
+    <bpmn:serviceTask id="DeleteNetworkPolicies" name="&#10;AAI&#10;Delete&#10;(net policies)&#10;" camunda:expression="${AAIDeleteTasks.deleteNetworkPolicies(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+      <bpmn:incoming>SequenceFlow_179btn2</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0xyu3pk</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:serviceTask id="UpdateVnfManagementV6Address" name="AAI Update (VNF)" camunda:expression="${AAIUpdateTasks.updateManagementV6AddressVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UpdateVnfManagementV6Address" name="&#10;AAI &#10;Update&#10;(vnf)&#10;" camunda:expression="${AAIUpdateTasks.updateManagementV6AddressVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0jtem3b</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0khqfnc</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_0jtem3b" sourceRef="UpdateVnfIpv4OamAddress" targetRef="UpdateVnfManagementV6Address" />
-    <bpmn:serviceTask id="UpdateVnfIpv4OamAddress" name="AAI Update (VNF)" camunda:expression="${AAIUpdateTasks.updateIpv4OamAddressVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UpdateVnfIpv4OamAddress" name="&#10;AAI &#10;Update &#10;(vnf)&#10;" camunda:expression="${AAIUpdateTasks.updateIpv4OamAddressVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0xyu3pk</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0jtem3b</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_0khqfnc" sourceRef="UpdateVnfManagementV6Address" targetRef="UpdateVfModuleContrailServiceInstanceFqdn" />
     <bpmn:sequenceFlow id="SequenceFlow_0yuz21z" sourceRef="UpdateVfModuleContrailServiceInstanceFqdn" targetRef="UpdateVfModuleHeatStackId" />
-    <bpmn:serviceTask id="UpdateVfModuleContrailServiceInstanceFqdn" name="AAI&#10;Update&#10;(vf module)&#10;" camunda:expression="${AAIUpdateTasks.updateContrailServiceInstanceFqdnVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UpdateVfModuleContrailServiceInstanceFqdn" name="&#10;AAI&#10;Update&#10;(vf module)&#10;" camunda:expression="${AAIUpdateTasks.updateContrailServiceInstanceFqdnVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0khqfnc</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0yuz21z</bpmn:outgoing>
     </bpmn:serviceTask>
@@ -80,7 +80,7 @@
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("auditInventoryNeeded") == true}]]></bpmn:conditionExpression>
     </bpmn:sequenceFlow>
     <bpmn:sequenceFlow id="SequenceFlow_0qfmmgt" sourceRef="Audit_Inventory" targetRef="ExclusiveGateway_1pydilb" />
-    <bpmn:sequenceFlow id="SequenceFlow_14bu4ys" sourceRef="ExclusiveGateway_1yvh16a" targetRef="DeleteNetworkPolicies" />
+    <bpmn:sequenceFlow id="SequenceFlow_14bu4ys" sourceRef="ExclusiveGateway_1yvh16a" targetRef="aaiThrow" />
     <bpmn:parallelGateway id="ExclusiveGateway_1yvh16a">
       <bpmn:incoming>SequenceFlow_02lpx87</bpmn:incoming>
       <bpmn:incoming>SequenceFlow_1ut7n32</bpmn:incoming>
       <bpmn:incoming>SequenceFlow_1mgunf3</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1ut7n32</bpmn:outgoing>
     </bpmn:exclusiveGateway>
+    <bpmn:subProcess id="SubProcess_0grvkj2" name="Audit Exception Sub Process" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_1euiddy">
+        <bpmn:outgoing>SequenceFlow_0xuodpy</bpmn:outgoing>
+        <bpmn:errorEventDefinition errorRef="Error_0jjnve8" />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_1gzq57j">
+        <bpmn:incoming>SequenceFlow_1fhst92</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:serviceTask id="ServiceTask_1isbxvo" name="Proccess Error" camunda:expression="${ExceptionBuilder.processAuditException(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+        <bpmn:incoming>SequenceFlow_0xuodpy</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1fhst92</bpmn:outgoing>
+      </bpmn:serviceTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0xuodpy" sourceRef="StartEvent_1euiddy" targetRef="ServiceTask_1isbxvo" />
+      <bpmn:sequenceFlow id="SequenceFlow_1fhst92" sourceRef="ServiceTask_1isbxvo" targetRef="EndEvent_1gzq57j" />
+    </bpmn:subProcess>
+    <bpmn:sequenceFlow id="SequenceFlow_179btn2" sourceRef="aaiCatch" targetRef="DeleteNetworkPolicies" />
+    <bpmn:intermediateThrowEvent id="aaiThrow" name="Update AAI">
+      <bpmn:incoming>SequenceFlow_14bu4ys</bpmn:incoming>
+      <bpmn:linkEventDefinition name="AAI" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateCatchEvent id="aaiCatch" name="Update AAI">
+      <bpmn:outgoing>SequenceFlow_179btn2</bpmn:outgoing>
+      <bpmn:linkEventDefinition name="AAI" />
+    </bpmn:intermediateCatchEvent>
   </bpmn:process>
+  <bpmn:error id="Error_0jjnve8" name="Error_3k24na6" errorCode="AAIInventoryFailure" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteVfModuleBB">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="DeleteVfModuleBB_Start">
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0pbhsub_di" bpmnElement="UpdateVfModuleDeleteStatus">
-        <dc:Bounds x="840" y="443" width="100" height="80" />
+        <dc:Bounds x="907" y="443" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_08tvhtf_di" bpmnElement="SequenceFlow_08tvhtf">
         <di:waypoint xsi:type="dc:Point" x="482" y="318" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_1rn6yvh_di" bpmnElement="DeleteVfModuleBB_End">
-        <dc:Bounds x="1087" y="465" width="36" height="36" />
+        <dc:Bounds x="1136" y="465" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1060" y="505" width="90" height="0" />
+          <dc:Bounds x="1109" y="505" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0whogn3_di" bpmnElement="VnfAdapter">
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_02lpx87_di" bpmnElement="SequenceFlow_02lpx87">
         <di:waypoint xsi:type="dc:Point" x="611" y="318" />
-        <di:waypoint xsi:type="dc:Point" x="836" y="318" />
-        <di:waypoint xsi:type="dc:Point" x="836" y="284" />
+        <di:waypoint xsi:type="dc:Point" x="847" y="318" />
+        <di:waypoint xsi:type="dc:Point" x="847" y="284" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="678.5" y="303" width="90" height="0" />
+          <dc:Bounds x="684" y="303" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="SubProcess_11p7mrh_di" bpmnElement="SubProcess_11p7mrh" isExpanded="true">
-        <dc:Bounds x="294" y="618" width="231" height="135" />
+        <dc:Bounds x="290" y="857" width="231" height="135" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="StartEvent_1xp6ewt_di" bpmnElement="StartEvent_1xp6ewt">
-        <dc:Bounds x="337" y="680" width="36" height="36" />
+        <dc:Bounds x="333" y="919" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="265" y="716" width="90" height="0" />
+          <dc:Bounds x="261" y="955" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_0guhjau_di" bpmnElement="EndEvent_0guhjau">
-        <dc:Bounds x="466" y="680" width="36" height="36" />
+        <dc:Bounds x="462" y="919" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="394" y="716" width="90" height="0" />
+          <dc:Bounds x="390" y="955" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0h607z0_di" bpmnElement="SequenceFlow_0h607z0">
-        <di:waypoint xsi:type="dc:Point" x="373" y="698" />
-        <di:waypoint xsi:type="dc:Point" x="466" y="698" />
+        <di:waypoint xsi:type="dc:Point" x="369" y="937" />
+        <di:waypoint xsi:type="dc:Point" x="462" y="937" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="375" y="677" width="90" height="0" />
+          <dc:Bounds x="371" y="916" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0vlgqod_di" bpmnElement="UpdateVfModuleHeatStackId">
-        <dc:Bounds x="706" y="443" width="100" height="80" />
+        <dc:Bounds x="779" y="443" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_01vfwtp_di" bpmnElement="SequenceFlow_01vfwtp">
-        <di:waypoint xsi:type="dc:Point" x="806" y="483" />
-        <di:waypoint xsi:type="dc:Point" x="840" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="879" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="907" y="483" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="778" y="468" width="90" height="0" />
+          <dc:Bounds x="848" y="468" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_09l7pcg_di" bpmnElement="SequenceFlow_09l7pcg">
-        <di:waypoint xsi:type="dc:Point" x="940" y="483" />
-        <di:waypoint xsi:type="dc:Point" x="1087" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="1007" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="1136" y="483" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="968.5" y="468" width="90" height="0" />
+          <dc:Bounds x="1026.5" y="468" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0xyu3pk_di" bpmnElement="SequenceFlow_0xyu3pk">
-        <di:waypoint xsi:type="dc:Point" x="998" y="259" />
-        <di:waypoint xsi:type="dc:Point" x="1072" y="259" />
-        <di:waypoint xsi:type="dc:Point" x="1072" y="399" />
-        <di:waypoint xsi:type="dc:Point" x="233" y="399" />
-        <di:waypoint xsi:type="dc:Point" x="233" y="483" />
-        <di:waypoint xsi:type="dc:Point" x="280" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="376" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="404" y="483" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="607.5" y="384" width="90" height="0" />
+          <dc:Bounds x="345" y="468" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0tty0ac_di" bpmnElement="DeleteNetworkPolicies">
-        <dc:Bounds x="898" y="219" width="100" height="80" />
+        <dc:Bounds x="276" y="443" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0lrrd16_di" bpmnElement="UpdateVnfManagementV6Address">
-        <dc:Bounds x="421" y="443" width="100" height="80" />
+        <dc:Bounds x="531" y="443" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0jtem3b_di" bpmnElement="SequenceFlow_0jtem3b">
-        <di:waypoint xsi:type="dc:Point" x="380" y="483" />
-        <di:waypoint xsi:type="dc:Point" x="421" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="504" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="531" y="483" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="355.5" y="468" width="90" height="0" />
+          <dc:Bounds x="472.5" y="468" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0w9805b_di" bpmnElement="UpdateVnfIpv4OamAddress">
-        <dc:Bounds x="280" y="443" width="100" height="80" />
+        <dc:Bounds x="404" y="443" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0khqfnc_di" bpmnElement="SequenceFlow_0khqfnc">
-        <di:waypoint xsi:type="dc:Point" x="521" y="483" />
-        <di:waypoint xsi:type="dc:Point" x="561" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="631" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="654" y="483" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="496" y="468" width="90" height="0" />
+          <dc:Bounds x="597.5" y="468" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0yuz21z_di" bpmnElement="SequenceFlow_0yuz21z">
-        <di:waypoint xsi:type="dc:Point" x="661" y="483" />
-        <di:waypoint xsi:type="dc:Point" x="706" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="754" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="779" y="483" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="638.5" y="468" width="90" height="0" />
+          <dc:Bounds x="721.5" y="468" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0v8naz9_di" bpmnElement="UpdateVfModuleContrailServiceInstanceFqdn">
-        <dc:Bounds x="561" y="443" width="100" height="80" />
+        <dc:Bounds x="654" y="443" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1n8gab5_di" bpmnElement="SequenceFlow_1n8gab5">
         <di:waypoint xsi:type="dc:Point" x="307" y="284" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0qfmmgt_di" bpmnElement="SequenceFlow_0qfmmgt">
         <di:waypoint xsi:type="dc:Point" x="754" y="108" />
-        <di:waypoint xsi:type="dc:Point" x="784" y="108" />
-        <di:waypoint xsi:type="dc:Point" x="784" y="149" />
+        <di:waypoint xsi:type="dc:Point" x="790" y="108" />
+        <di:waypoint xsi:type="dc:Point" x="790" y="149" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="724" y="86.5" width="90" height="13" />
+          <dc:Bounds x="727" y="86.5" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_14bu4ys_di" bpmnElement="SequenceFlow_14bu4ys">
-        <di:waypoint xsi:type="dc:Point" x="861" y="259" />
-        <di:waypoint xsi:type="dc:Point" x="898" y="259" />
+        <di:waypoint xsi:type="dc:Point" x="872" y="259" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="258" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="834.5" y="237.5" width="90" height="13" />
+          <dc:Bounds x="902" y="237" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ParallelGateway_02fjfb8_di" bpmnElement="ExclusiveGateway_1yvh16a">
-        <dc:Bounds x="811" y="234" width="50" height="50" />
+        <dc:Bounds x="822" y="234" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="790" y="287" width="90" height="13" />
+          <dc:Bounds x="801" y="287" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1mgunf3_di" bpmnElement="SequenceFlow_1mgunf3">
         <di:waypoint xsi:type="dc:Point" x="492" y="199" />
         <di:waypoint xsi:type="dc:Point" x="492" y="232" />
-        <di:waypoint xsi:type="dc:Point" x="784" y="232" />
-        <di:waypoint xsi:type="dc:Point" x="784" y="199" />
+        <di:waypoint xsi:type="dc:Point" x="790" y="232" />
+        <di:waypoint xsi:type="dc:Point" x="790" y="199" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="499" y="212" width="15" height="13" />
+          <dc:Bounds x="500.3082191780822" y="212" width="14" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1vmz3zo_di" bpmnElement="Check_Audit">
         <dc:Bounds x="531" y="68" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1ut7n32_di" bpmnElement="SequenceFlow_1ut7n32">
-        <di:waypoint xsi:type="dc:Point" x="809" y="174" />
-        <di:waypoint xsi:type="dc:Point" x="836" y="174" />
-        <di:waypoint xsi:type="dc:Point" x="836" y="234" />
+        <di:waypoint xsi:type="dc:Point" x="815" y="174" />
+        <di:waypoint xsi:type="dc:Point" x="847" y="174" />
+        <di:waypoint xsi:type="dc:Point" x="847" y="234" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="777.5" y="152.5" width="90" height="13" />
+          <dc:Bounds x="786" y="152.5" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1olwkdn_di" bpmnElement="ExclusiveGateway_1h2ystu" isMarkerVisible="true">
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_1d1pmqz_di" bpmnElement="ExclusiveGateway_1pydilb" isMarkerVisible="true">
-        <dc:Bounds x="759" y="149" width="50" height="50" />
+        <dc:Bounds x="765" y="149" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="202" width="90" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0grvkj2_di" bpmnElement="SubProcess_0grvkj2" isExpanded="true">
+        <dc:Bounds x="231" y="617" width="350" height="200" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1euiddy_di" bpmnElement="StartEvent_1euiddy">
+        <dc:Bounds x="262" y="700" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="234" y="740" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1gzq57j_di" bpmnElement="EndEvent_1gzq57j">
+        <dc:Bounds x="510" y="700" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="483" y="740" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1isbxvo_di" bpmnElement="ServiceTask_1isbxvo">
+        <dc:Bounds x="353" y="678" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xuodpy_di" bpmnElement="SequenceFlow_0xuodpy">
+        <di:waypoint xsi:type="dc:Point" x="298" y="718" />
+        <di:waypoint xsi:type="dc:Point" x="353" y="718" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="281.5" y="697" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fhst92_di" bpmnElement="SequenceFlow_1fhst92">
+        <di:waypoint xsi:type="dc:Point" x="453" y="718" />
+        <di:waypoint xsi:type="dc:Point" x="510" y="718" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="437.5" y="697" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_179btn2_di" bpmnElement="SequenceFlow_179btn2">
+        <di:waypoint xsi:type="dc:Point" x="195" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="276" y="483" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="235.5" y="462" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1sftyjz_di" bpmnElement="aaiThrow">
+        <dc:Bounds x="1022" y="241" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1014" y="280" width="55" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_13y483m_di" bpmnElement="aaiCatch">
+        <dc:Bounds x="159" y="465" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="694" y="202" width="0" height="13" />
+          <dc:Bounds x="150" y="505" width="55" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
@@ -1,4 +1,4 @@
-package org.onap.so.adapters.audit;
+package org.onap.so.objects.audit;
 
 import java.io.Serializable;
 import java.net.URI;
@@ -7,7 +7,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 public class AAIObjectAudit implements Serializable {
 
     /**
-     * 
+     *
      */
     private static final long serialVersionUID = -4560928512855386021L;
     private boolean doesObjectExist = false;
@@ -52,4 +52,5 @@ public class AAIObjectAudit implements Serializable {
     public void setResourceURI(URI resourceURI) {
         this.resourceURI = resourceURI;
     }
+
 }
@@ -1,17 +1,20 @@
-package org.onap.so.adapters.audit;
+package org.onap.so.objects.audit;
 
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+
 public class AAIObjectAuditList implements Serializable {
 
     /**
-     * 
+     *
      */
     private static final long serialVersionUID = 6712662349909726930L;
     private List<AAIObjectAudit> auditList = new ArrayList<>();
+    private String auditType;
+    private String heatStackName;
 
     @Override
     public String toString() {
@@ -22,4 +25,22 @@ public class AAIObjectAuditList implements Serializable {
         return auditList;
     }
 
+
+    public String getAuditType() {
+        return auditType;
+    }
+
+
+    public void setAuditType(String auditType) {
+        this.auditType = auditType;
+    }
+
+    public String getHeatStackName() {
+        return heatStackName;
+    }
+
+    public void setHeatStackName(String heatStackName) {
+        this.heatStackName = heatStackName;
+    }
+
 }