Merge remote-tracking branch 'origin/dublin' into 'origin/master' 30/89530/1
authorSteve Smokowski <ss835w@att.com>
Wed, 5 Jun 2019 20:24:37 +0000 (16:24 -0400)
committerSmokowski, Steve (ss835w) <ss835w@us.att.com>
Thu, 6 Jun 2019 15:26:38 +0000 (11:26 -0400)
Change-Id: I551ea3f29a76dc99532455ea4d7e84a316f9bf38
Issue-ID: SO-1980
Signed-off-by: Smokowski, Steve (ss835w) <ss835w@us.att.com>
35 files changed:
1  2 
INFO.yaml
adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateResponse.java
adapters/mso-adapters-rest-interface/src/test/java/org/onap/so/openstack/mappers/JAXBMarshallingTest.java
adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__MacroData.sql
adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientTest.java
adapters/mso-catalog-db-adapter/src/test/resources/db/migration/afterMigrate.sql
asdc-controller/src/main/java/org/onap/so/asdc/activity/DeployActivitySpecs.java
asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java
asdc-controller/src/main/java/org/onap/so/asdc/installer/VfResourceStructure.java
asdc-controller/src/main/java/org/onap/so/asdc/installer/bpmn/BpmnInstaller.java
asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/UpdateAAIGenericVnf.groovy
bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/VfModuleBase.groovy
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupMapperLayer.java
bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupMapperLayerTest.java
bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/infrastructure/MSOInfrastructureApplication.java
bpmn/pom.xml
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateResources.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy
bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/bpmn/infrastructure/process/CreateVcpeResCustServiceSimplifiedTest.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICreateTasks.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/activity/ExecuteActivity.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/VnfmAdapterServiceProviderImpl.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigDeployVnf.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java
common/src/main/java/org/onap/so/utils/TargetEntity.java
common/src/test/java/org/onap/so/client/dmaap/DmaapPublisherTest.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/InstanceManagement.java
mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ActivitySpecCategories.java
mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java
vnfm-simulator/vnfm-service/pom.xml

diff --cc INFO.yaml
Simple merge
@@@ -28,9 -30,10 +30,10 @@@ import com.fasterxml.jackson.databind.J
  import org.apache.commons.lang.builder.ToStringBuilder;
  
  @JsonInclude(JsonInclude.Include.NON_NULL)
- @JsonPropertyOrder({"template_type", "workload_id", "template_response"})
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ @JsonPropertyOrder({"template_type", "workload_id", "template_response", "workload_status_reason", "workload_status"})
  public class MulticloudCreateResponse implements Serializable {
 -    private final static long serialVersionUID = -5215028275577848311L;
 +    private static final long serialVersionUID = -5215028275577848311L;
  
      @JsonProperty("template_type")
      private String templateType;
@@@ -56,15 -53,11 +56,16 @@@ public class JAXBMarshallingTest 
  
          CreateVfModuleRequest request = new CreateVfModuleRequest();
          request.getVfModuleParams().put("test-null", null);
 +        request.getVfModuleParams().put("vcpe_image_name", "ubuntu-16-04-cloud-amd64");
 +        request.getVfModuleParams().put("test-empty", "");
          request.getVfModuleParams().put("test array", Arrays.asList("a", "b", "c"));
 +        request.getVfModuleParams().put("test map", Collections.singletonMap("d", "e"));
 +        request.getVfModuleParams().put("marshalling error", new ArrayList());
  
 -        assertEquals("documents are equal",
 +        assertEquals("documents should be equal",
                  new String(Files
--                        .readAllBytes(Paths.get("src/test/resources/VfRequest-marshalled-with-complex-object.xml"))),
++                        .readAllBytes(Paths.get("src/test/resources/VfRequest-marshalled-with-complex-object.xml")))
++                                .replaceAll("\\R", "\n"),
                  request.toXmlString());
  
      }
@@@ -784,4 -810,4 +810,6 @@@ UPDATE northbound_request_ref_lookup SE
  INSERT INTO building_block_detail(BUILDING_BLOCK_NAME, RESOURCE_TYPE, TARGET_ACTION)
  VALUES
  ('ConfigAssignVnfBB', 'NO_VALIDATE', 'CUSTOM'),
- ('ConfigDeployVnfBB', 'NO_VALIDATE', 'CUSTOM');
+ ('ConfigDeployVnfBB', 'NO_VALIDATE', 'CUSTOM');
++
++UPDATE rainy_day_handler_macro SET reg_ex_error_message = '*' WHERE reg_ex_error_message IS null;
@@@ -791,27 -784,27 +791,27 @@@ public class ASDCController 
                      errorMessage = e.getMessage();
                      logger.error("Exception occurred", e);
                  }
+             }
  
-                 if (!hasVFResource) {
+             if (!hasVFResource) {
  
-                     logger.debug("No resources found for Service: " + iNotif.getServiceUUID());
+                 logger.debug("No resources found for Service: " + iNotif.getServiceUUID());
  
-                     logger.debug("Preparing to deploy Service: {}", iNotif.getServiceUUID());
-                     try {
-                         this.deployResourceStructure(resourceStructure, toscaResourceStructure);
-                     } catch (ArtifactInstallerException e) {
-                         deployStatus = DistributionStatusEnum.DEPLOY_ERROR;
-                         errorMessage = e.getMessage();
-                         logger.error("Exception occurred", e);
-                     }
+                 logger.debug("Preparing to deploy Service: {}", iNotif.getServiceUUID());
+                 try {
+                     this.deployResourceStructure(resourceStructure, toscaResourceStructure);
+                 } catch (ArtifactInstallerException e) {
+                     deployStatus = DistributionStatusEnum.DEPLOY_ERROR;
+                     errorMessage = e.getMessage();
+                     logger.error("Exception occurred", e);
                  }
-                 this.sendCsarDeployNotification(iNotif, resourceStructure, toscaResourceStructure, deployStatus,
-                         errorMessage);
              }
  
+             this.sendCsarDeployNotification(iNotif, resourceStructure, toscaResourceStructure, deployStatus,
+                     errorMessage);
  
          } catch (ASDCDownloadException | UnsupportedEncodingException e) {
 -            logger.error("{} {} {} {} {} {}", MessageEnum.ASDC_GENERAL_EXCEPTION_ARG.toString(),
 +            logger.error(Strings.repeat("{} ", 6), MessageEnum.ASDC_GENERAL_EXCEPTION_ARG.toString(),
                      "Exception caught during Installation of artifact", "ASDC", "processResourceNotification",
                      ErrorCode.BusinessProcesssError.getValue(), "Exception in processResourceNotification", e);
          }
@@@ -33,8 -33,8 +33,9 @@@ import java.util.Enumeration
  import java.util.zip.ZipEntry;
  import java.util.zip.ZipFile;
  import java.util.zip.ZipInputStream;
 +import com.google.common.base.Strings;
  import org.apache.commons.io.IOUtils;
+ import org.apache.commons.lang3.StringUtils;
  import org.apache.http.HttpEntity;
  import org.apache.http.HttpResponse;
  import org.apache.http.client.HttpClient;
@@@ -1156,7 -1071,8 +1157,8 @@@ public class ToscaResourceInstaller 
                      break;
                  case ASDCConfiguration.HEAT_NET:
                  case ASDCConfiguration.OTHER:
 -                    logger.warn("{} {} {} {}", MessageEnum.ASDC_ARTIFACT_TYPE_NOT_SUPPORT.toString(),
+                 case ASDCConfiguration.CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT:
 +                    logger.warn(Strings.repeat("{} ", 4), MessageEnum.ASDC_ARTIFACT_TYPE_NOT_SUPPORT.toString(),
                              vfModuleArtifact.getArtifactInfo().getArtifactType() + "(Artifact Name:"
                                      + vfModuleArtifact.getArtifactInfo().getArtifactName() + ")",
                              ErrorCode.DataError.getValue(), "Artifact type not supported");
@@@ -107,395 -106,442 +107,442 @@@ public abstract class VfModuleBase exte
                                                        <network-name>${MsoUtils.xmlEscape(networkName)}</network-name>
                                                </vnf-networks>
                                        """
-                                       vnfNetworks = vnfNetworks + vnfNetwork
-                               }
-                       }
-               } catch (Exception e) {
-                       logger.warn(Strings.repeat("{} ", 5), MessageEnum.BPMN_GENERAL_WARNING.toString(),
-                                       'Exception transforming network params to vnfNetworks', "BPMN",
-                                       ErrorCode.UnknownError.getValue(), 'Exception is: \n' + e);
-               }
-               return vnfNetworks
-       }
-       /**
-        * Transform the parameter specifications from the incoming '*-params' root element to
-        * a corresponding list of 'entry's (typically used when invoking the VNF Rest Adpater).
-        * Each element in '*-params' is used to create an 'entry' element.
-        *
-        * @param paramsNode A Node representing a '*-params' element.
-        * @return a String of 'entry' elements, one for each 'param' element.
-        */
-       protected String transformParamsToEntries(String paramsRootXml) {
-               if ((paramsRootXml == null) || (paramsRootXml.isEmpty())) {
-                       return ''
-               }
-               def String entries = ''
-               try {
-                       paramsRootXml = utils.removeXmlNamespaces(paramsRootXml)
-                       def paramsNode = xmlParser.parseText(paramsRootXml)
-                       def params = utils.getIdenticalChildren(paramsNode, 'param')
-                       for (param in params) {
-                               def key = (String) param.attribute('name')
-                               if (key == null) {
-                                       key = ''
-                               }
-                               def value = (String) param.text()
-                               String entry = """
+                     vnfNetworks = vnfNetworks + vnfNetwork
+                 }
+             }
+         } catch (Exception e) {
 -            logger.warn("{} {} {} {} {}", MessageEnum.BPMN_GENERAL_WARNING.toString(),
++            logger.warn(Strings.repeat("{} ", 5), MessageEnum.BPMN_GENERAL_WARNING.toString(),
+                             'Exception transforming network params to vnfNetworks', "BPMN",
+                             ErrorCode.UnknownError.getValue(), 'Exception is: \n' + e);
+         }
+         return vnfNetworks
+     }
+     /**
+      * Transform the parameter specifications from the incoming '*-params' root element to
+      * a corresponding list of 'entry's (typically used when invoking the VNF Rest Adpater).
+      * Each element in '*-params' is used to create an 'entry' element.
+      *
+      * @param paramsNode A Node representing a '*-params' element.
+      * @return a String of 'entry' elements, one for each 'param' element.
+      */
+     protected String transformParamsToEntries(String paramsRootXml) {
+         if ((paramsRootXml == null) || (paramsRootXml.isEmpty())) {
+             return ''
+         }
+         def String entries = ''
+         try {
+             paramsRootXml = utils.removeXmlNamespaces(paramsRootXml)
+             def paramsNode = xmlParser.parseText(paramsRootXml)
+             def params = utils.getIdenticalChildren(paramsNode, 'param')
+             for (param in params) {
+                 def key = (String) param.attribute('name')
+                 if (key == null) {
+                     key = ''
+                 }
+                 def value = (String) param.text()
+                 String entry = """
                                        <entry>
                                                <key>${MsoUtils.xmlEscape(key)}</key>
                                                <value>${MsoUtils.xmlEscape(value)}</value>
                                        </entry>
                                """
-                               entries = entries + entry
-                       }
-               } catch (Exception e) {
-                       logger.warn(Strings.repeat("{} ", 5), MessageEnum.BPMN_GENERAL_WARNING.toString(),
-                                       'Exception transforming params to entries', "BPMN",
-                                       ErrorCode.UnknownError.getValue(), 'Exception transforming params to entries' + e);
-               }
-               return entries
-       }
-       
-       /**
-        * Transform the parameter specifications from the incoming '*-params' root element to
-        * a corresponding list of 'entry's (typically used when invoking the VNF Rest Adpater).
-        * Each element in '*-params' is used to create an 'entry' element.
-        *
-        * @param paramsNode A Node representing a '*-params' element.
-        * @return a String of 'entry' elements, one for each 'param' element.
-        */
-       protected String transformVolumeParamsToEntries(String paramsRootXml) {
-               if ((paramsRootXml == null) || (paramsRootXml.isEmpty())) {
-                       return ''
-               }
-               def String entries = ''
-               try {
-                       paramsRootXml = utils.removeXmlNamespaces(paramsRootXml)
-                       def paramsNode = xmlParser.parseText(paramsRootXml)
-                       def params = utils.getIdenticalChildren(paramsNode, 'param')
-                       for (param in params) {
-                               def key = (String) param.attribute('name')
-                               if (key == null) {
-                                       key = ''
-                               }
-                               if ( !(key in ['vnf_id', 'vnf_name', 'vf_module_id', 'vf_module_name'])) {
-                                       def value = (String) param.text()
-                                       String entry = """
+                 entries = entries + entry
+             }
+         } catch (Exception e) {
 -            logger.warn("{} {} {} {} {}", MessageEnum.BPMN_GENERAL_WARNING.toString(),
++            logger.warn(Strings.repeat("{} ", 5), MessageEnum.BPMN_GENERAL_WARNING.toString(),
+                             'Exception transforming params to entries', "BPMN",
+                             ErrorCode.UnknownError.getValue(), 'Exception transforming params to entries' + e);
+         }
+         return entries
+     }
+     /**
+      * Transform the parameter specifications from the incoming '*-params' root element to
+      * a corresponding list of 'entry's (typically used when invoking the VNF Rest Adpater).
+      * Each element in '*-params' is used to create an 'entry' element.
+      *
+      * @param paramsNode A Node representing a '*-params' element.
+      * @return a String of 'entry' elements, one for each 'param' element.
+      */
+     protected String transformVolumeParamsToEntries(String paramsRootXml) {
+         if ((paramsRootXml == null) || (paramsRootXml.isEmpty())) {
+             return ''
+         }
+         def String entries = ''
+         try {
+             paramsRootXml = utils.removeXmlNamespaces(paramsRootXml)
+             def paramsNode = xmlParser.parseText(paramsRootXml)
+             def params = utils.getIdenticalChildren(paramsNode, 'param')
+             for (param in params) {
+                 def key = (String) param.attribute('name')
+                 if (key == null) {
+                     key = ''
+                 }
+                 if ( !(key in [
+                     'vnf_id',
+                     'vnf_name',
+                     'vf_module_id',
+                     'vf_module_name'
+                 ])) {
+                     def value = (String) param.text()
+                     String entry = """
                                                <entry>
                                                        <key>${MsoUtils.xmlEscape(key)}</key>
                                                        <value>${MsoUtils.xmlEscape(value)}</value>
                                                </entry>
                                        """
-                                       entries = entries + entry
-                               }
-                       }
-               } catch (Exception e) {
-                       logger.warn(Strings.repeat("{} ", 5), MessageEnum.BPMN_GENERAL_WARNING.toString(),
-                                       'Exception transforming params to entries', "BPMN",
-                                       ErrorCode.UnknownError.getValue(), 'Exception transforming params to entries' + e);
-               }
-               return entries
-       }
-       /*
-        * Parses VNF parameters passed in on the incoming requests and SDNC parameters returned from SDNC get response
-        * and puts them into the format expected by VNF adapter.
-        * @param vnfParamsMap -  map of VNF parameters passed in the request body
-        * @param sdncGetResponse - response string from SDNC GET topology request
-        * @param vnfId
-        * @param vnfName
-        * @param vfModuleId
-        * @param vfModuleName
-        * @param vfModuleIndex - can be null
-        * @return a String of key/value entries for vfModuleParams
-        */
-         
-        
-        protected String buildVfModuleParams(Map<String, String> vnfParamsMap, String sdncGetResponse, String vnfId, String vnfName,
-               String vfModuleId, String vfModuleName, String vfModuleIndex, String environmentContext, String workloadContext) {
-               
-               //Get SDNC Response Data
-               
-               String data = utils.getNodeXml(sdncGetResponse, "response-data")
-               String serviceData = utils.getNodeXml(data, "service-data")
-               serviceData = utils.removeXmlPreamble(serviceData)
-               serviceData = utils.removeXmlNamespaces(serviceData)
-               String vnfRequestInfo = utils.getNodeXml(serviceData, "vnf-request-information")
-               String oldVnfId = utils.getNodeXml(vnfRequestInfo, "vnf-id")
-               oldVnfId = utils.removeXmlPreamble(oldVnfId)
-               oldVnfId = utils.removeXmlNamespaces(oldVnfId)
-               serviceData = serviceData.replace(oldVnfId, "")
-               def vnfId1 = utils.getNodeText(serviceData, "vnf-id")
-               
-               Map<String, String> paramsMap = new HashMap<String, String>()
-               
-               if (vfModuleIndex != null) {
-                       paramsMap.put("vf_module_index", "${vfModuleIndex}")
-               }
-               // Add-on data
-               paramsMap.put("vnf_id", "${vnfId}")
-               paramsMap.put("vnf_name", "${vnfName}")
-               paramsMap.put("vf_module_id", "${vfModuleId}")
-               paramsMap.put("vf_module_name", "${vfModuleName}")
-               paramsMap.put("environment_context", "${environmentContext}")
-               paramsMap.put("workload_context", "${workloadContext}")
-               
-               InputSource source = new InputSource(new StringReader(data));
-               DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
-               docFactory.setNamespaceAware(true)
-               DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
-               Document responseXml = docBuilder.parse(source)
-               // Availability Zones Data
-               
-               NodeList aZonesList = responseXml.getElementsByTagNameNS("*", "availability-zones")
-               String aZonePosition = "0"
-               for (int z = 0; z < aZonesList.getLength(); z++) {
-                       Node node = aZonesList.item(z)
-                       if (node.getNodeType() == Node.ELEMENT_NODE) {
-                               Element eElement = (Element) node
-                               String aZoneValue = utils.getElementText(eElement, "availability-zone")
-                               aZonePosition = z.toString()
-                               paramsMap.put("availability_zone_${aZonePosition}", "${aZoneValue}")
-                       }
-               }
-               // Map of network-roles and network-tags from vm-networks
-               
-               NodeList vmNetworksListGlobal = responseXml.getElementsByTagNameNS("*", "vm-networks")
-               Map<String, String> networkRoleMap = new HashMap<String, String>()
-               for(int n = 0; n < vmNetworksListGlobal.getLength(); n++){
-                       Node nodeNetworkKey = vmNetworksListGlobal.item(n)
-                       if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
-                               Element eElementNetworkKey = (Element) nodeNetworkKey
-                               String networkRole = utils.getElementText(eElementNetworkKey, "network-role")
-                               String networkRoleValue = utils.getElementText(eElementNetworkKey, "network-role-tag")
-                               if (networkRoleValue.isEmpty()) {
-                                       networkRoleValue = networkRole
-                               }
-                               networkRoleMap.put(networkRole, networkRoleValue)                               
-                       }
-               }               
-               // VNF Networks Data
-               
-               StringBuilder sbNet = new StringBuilder()
-               
-               NodeList vnfNetworkList = responseXml.getElementsByTagNameNS("*", "vnf-networks")
-               for (int x = 0; x < vnfNetworkList.getLength(); x++) {
-                       Node node = vnfNetworkList.item(x)
-                       if (node.getNodeType() == Node.ELEMENT_NODE) {
-                               Element eElement = (Element) node
-                               String vnfNetworkKey = utils.getElementText(eElement, "network-role-tag")
-                               String networkRole = utils.getElementText(eElement, "network-role")
-                               if (vnfNetworkKey.isEmpty()) {
-                                       vnfNetworkKey = networkRoleMap.get(networkRole)
-                                       if (vnfNetworkKey == null || vnfNetworkKey.isEmpty()) {
-                                               vnfNetworkKey = networkRole
-                                       }                                       
-                               }                               
-                               String vnfNetworkNeutronIdValue = utils.getElementText(eElement, "neutron-id")
-                               String vnfNetworkNetNameValue = utils.getElementText(eElement, "network-name")
-                               String vnfNetworkSubNetIdValue = utils.getElementText(eElement, "subnet-id")
-                               String vnfNetworkV6SubNetIdValue = utils.getElementText(eElement, "ipv6-subnet-id")
-                               String vnfNetworkNetFqdnValue = utils.getElementText(eElement, "contrail-network-fqdn")
-                               paramsMap.put("${vnfNetworkKey}_net_id", "${vnfNetworkNeutronIdValue}")
-                               paramsMap.put("${vnfNetworkKey}_net_name", "${vnfNetworkNetNameValue}")
-                               paramsMap.put("${vnfNetworkKey}_subnet_id", "${vnfNetworkSubNetIdValue}")
-                               paramsMap.put("${vnfNetworkKey}_v6_subnet_id", "${vnfNetworkV6SubNetIdValue}")
-                               paramsMap.put("${vnfNetworkKey}_net_fqdn", "${vnfNetworkNetFqdnValue}")
-                               
-                               NodeList sriovVlanFilterList = eElement.getElementsByTagNameNS("*","sriov-vlan-filter-list")
-                               StringBuffer sriovFilterBuf = new StringBuffer()
-                               String values = ""
-                               for(int i = 0; i < sriovVlanFilterList.getLength(); i++){
-                                       Node node1 = sriovVlanFilterList.item(i)
-                                       if (node1.getNodeType() == Node.ELEMENT_NODE) {
-                                               Element eElement1 = (Element) node1
-                                               String value = utils.getElementText(eElement1, "sriov-vlan-filter")
-                                               if (i != sriovVlanFilterList.getLength() - 1) {
-                                                       values = sriovFilterBuf.append(value + ",")
-                                               }
-                                               else {
-                                                       values = sriovFilterBuf.append(value);
-                                               }
-                                       }
-                               }
-                               if (!values.isEmpty()) {
-                                               paramsMap.put("${vnfNetworkKey}_ATT_VF_VLAN_FILTER", "${values}")
-                                       }
-                               }
-               }
-               // VNF-VMS Data
-               
-               def key
-               def value
-               def networkKey
-               def networkValue
-               def floatingIPKey
-               def floatingIPKeyValue
-               def floatingIPV6Key
-               def floatingIPV6KeyValue
-               StringBuilder sb = new StringBuilder()
-               NodeList vmsList = responseXml.getElementsByTagNameNS("*","vnf-vms")
-               for (int x = 0; x < vmsList.getLength(); x++) {
-                       Node node = vmsList.item(x)
-                       if (node.getNodeType() == Node.ELEMENT_NODE) {
-                               Element eElement = (Element) node
-                               key = utils.getElementText(eElement, "vm-type")
-                               String values
-                               String position = "0"
-                               StringBuilder sb1 = new StringBuilder()
-                               NodeList valueList = eElement.getElementsByTagNameNS("*","vm-names")
-                               NodeList vmNetworksList = eElement.getElementsByTagNameNS("*","vm-networks")
-                               for(int i = 0; i < valueList.getLength(); i++){
-                                       Node node1 = valueList.item(i)
-                                       if (node1.getNodeType() == Node.ELEMENT_NODE) {
-                                               Element eElement1 = (Element) node1
-                                               value = utils.getElementText(eElement1, "vm-name")
-                                               if (i != valueList.getLength() - 1) {
-                                                       values = sb1.append(value + ",")
-                                               }
-                                               else {
-                                                       values = sb1.append(value);
-                                               }
-                                               position = i.toString()
-                                               paramsMap.put("${key}_name_${position}", "${value}")
-                                       }
-                               }
-                               for(int n = 0; n < vmNetworksList.getLength(); n++){
-                                       String floatingIpKeyValueStr = ""
-                                       String floatingIpV6KeyValueStr = ""
-                                       Node nodeNetworkKey = vmNetworksList.item(n)
-                                       if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
-                                               Element eElementNetworkKey = (Element) nodeNetworkKey
-                                               String ipAddressValues
-                                               String ipV6AddressValues
-                                               String networkPosition = "0"
-                                               StringBuilder sb2 = new StringBuilder()
-                                               StringBuilder sb3 = new StringBuilder()
-                                               StringBuilder sb4 = new StringBuilder()
-                                               networkKey = utils.getElementText(eElementNetworkKey, "network-role-tag")
-                                               if (networkKey.isEmpty()) {
-                                                       networkKey = utils.getElementText(eElementNetworkKey, "network-role")
-                                               }
-                                               floatingIPKey = key + '_' + networkKey + '_floating_ip'
-                                               floatingIPKeyValue = utils.getElementText(eElementNetworkKey, "floating-ip")
-                                               if(!floatingIPKeyValue.isEmpty()){
-                                                       paramsMap.put("$floatingIPKey", "$floatingIPKeyValue")
-                                               }
-                                               floatingIPV6Key = key + '_' + networkKey + '_floating_v6_ip'
-                                               floatingIPV6KeyValue = utils.getElementText(eElementNetworkKey, "floating-ip-v6")
-                                               if(!floatingIPV6KeyValue.isEmpty()){
-                                                       paramsMap.put("$floatingIPV6Key", "$floatingIPV6KeyValue")
-                                               }
-                                               NodeList networkIpsList = eElementNetworkKey.getElementsByTagNameNS("*","network-ips")
-                                               for(int a = 0; a < networkIpsList.getLength(); a++){
-                                                       Node ipAddress = networkIpsList.item(a)
-                                                       if (ipAddress.getNodeType() == Node.ELEMENT_NODE) {
-                                                               Element eElementIpAddress = (Element) ipAddress
-                                                               String ipAddressValue = utils.getElementText(eElementIpAddress, "ip-address")
-                                                               if (a != networkIpsList.getLength() - 1) {
-                                                                       ipAddressValues = sb2.append(ipAddressValue + ",")
-                                                               }
-                                                               else {
-                                                                       ipAddressValues = sb2.append(ipAddressValue);
-                                                               }
-                                                               networkPosition = a.toString()
-                                                               paramsMap.put("${key}_${networkKey}_ip_${networkPosition}", "${ipAddressValue}")
-                                                       }
-                                               }
-                                               
-                                               paramsMap.put("${key}_${networkKey}_ips", "${ipAddressValues}")
-                                               
-                                               NodeList interfaceRoutePrefixesList = eElementNetworkKey.getElementsByTagNameNS("*","interface-route-prefixes")
-                                               String interfaceRoutePrefixValues = sb3.append("[")
-                                               
-                                               for(int a = 0; a < interfaceRoutePrefixesList.getLength(); a++){
-                                                       Node interfaceRoutePrefix = interfaceRoutePrefixesList.item(a)
-                                                       if (interfaceRoutePrefix.getNodeType() == Node.ELEMENT_NODE) {
-                                                               Element eElementInterfaceRoutePrefix = (Element) interfaceRoutePrefix
-                                                               String interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix-cidr")
-                                                               if (interfaceRoutePrefixValue == null || interfaceRoutePrefixValue.isEmpty()) {
-                                                                       interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix")
-                                                               }
-                                                               if (a != interfaceRoutePrefixesList.getLength() - 1) {
-                                                                       interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",")
-                                                               }
-                                                               else {
-                                                                       interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}")
-                                                               }
-                                                       }
-                                               }
-                                               interfaceRoutePrefixValues = sb3.append("]")
-                                               if (interfaceRoutePrefixesList.getLength() > 0) {
-                                                       paramsMap.put("${key}_${networkKey}_route_prefixes", "${interfaceRoutePrefixValues}")
-                                               }
-                                               
-                                               NodeList networkIpsV6List = eElementNetworkKey.getElementsByTagNameNS("*","network-ips-v6")
-                                               for(int a = 0; a < networkIpsV6List.getLength(); a++){
-                                                       Node ipV6Address = networkIpsV6List.item(a)
-                                                       if (ipV6Address.getNodeType() == Node.ELEMENT_NODE) {
-                                                               Element eElementIpV6Address = (Element) ipV6Address
-                                                               String ipV6AddressValue = utils.getElementText(eElementIpV6Address, "ip-address-ipv6")
-                                                               if (a != networkIpsV6List.getLength() - 1) {
-                                                                       ipV6AddressValues = sb4.append(ipV6AddressValue + ",")
-                                                               }
-                                                               else {
-                                                                       ipV6AddressValues = sb4.append(ipV6AddressValue);
-                                                               }
-                                                               networkPosition = a.toString()
-                                                               paramsMap.put("${key}_${networkKey}_v6_ip_${networkPosition}", "${ipV6AddressValue}")
-                                                       }
-                                               }
-                                               paramsMap.put("${key}_${networkKey}_v6_ips", "${ipV6AddressValues}")
-                                       }
-                               }
-                               paramsMap.put("${key}_names", "${values}")
-                       }
-               }
-       //SDNC Response Params
-               String sdncResponseParams = ""
-               List<String> sdncResponseParamsToSkip = ["vnf_id", "vf_module_id", "vnf_name", "vf_module_name"]
-               String vnfParamsChildNodes = utils.getChildNodes(data, "vnf-parameters")
-               if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){
-                       // No SDNC params
-               }else{
-                       NodeList paramsList = responseXml.getElementsByTagNameNS("*", "vnf-parameters")
-                       for (int z = 0; z < paramsList.getLength(); z++) {
-                               Node node = paramsList.item(z)
-                               Element eElement = (Element) node
-                               String vnfParameterName = utils.getElementText(eElement, "vnf-parameter-name")
-                               if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
-                                       String vnfParameterValue = utils.getElementText(eElement, "vnf-parameter-value")
-                                       paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")
-                               }
-                       }
-               }
-               
-               // Parameters received from the request should overwrite any parameters received from SDNC
-               if (vnfParamsMap != null) {
-                       for (Map.Entry<String, String> entry : vnfParamsMap.entrySet()) {
-                               String vnfKey = entry.getKey()
-                               String vnfValue = entry.getValue()
-                               paramsMap.put("$vnfKey", "$vnfValue")
-                       }
-               }
-               
-               StringBuilder sbParams = new StringBuilder()
-               def vfModuleParams = ""
-               for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
-                       String paramsXml
-                       String paramName = entry.getKey()
-                       String paramValue = entry.getValue()
-                       paramsXml =
-                                       """<entry>
+                     entries = entries + entry
+                 }
+             }
+         } catch (Exception e) {
 -            logger.warn("{} {} {} {} {}", MessageEnum.BPMN_GENERAL_WARNING.toString(),
++            logger.warn(Strings.repeat("{} ", 5), MessageEnum.BPMN_GENERAL_WARNING.toString(),
+                             'Exception transforming params to entries', "BPMN",
+                             ErrorCode.UnknownError.getValue(), 'Exception transforming params to entries' + e);
+         }
+         return entries
+     }
+     /*
+      * Parses VNF parameters passed in on the incoming requests and SDNC parameters returned from SDNC get response
+      * and puts them into the format expected by VNF adapter.
+      * @param vnfParamsMap -  map of VNF parameters passed in the request body
+      * @param sdncGetResponse - response string from SDNC GET topology request
+      * @param vnfId
+      * @param vnfName
+      * @param vfModuleId
+      * @param vfModuleName
+      * @param vfModuleIndex - can be null
+      * @return a String of key/value entries for vfModuleParams
+      */
+     protected String buildVfModuleParams(Map<String, String> vnfParamsMap, String sdncGetResponse, String vnfId, String vnfName,
+                     String vfModuleId, String vfModuleName, String vfModuleIndex, String environmentContext, String workloadContext) {
+         //Get SDNC Response Data
+         String data = utils.getNodeXml(sdncGetResponse, "response-data")
+         String serviceData = utils.getNodeXml(data, "service-data")
+         serviceData = utils.removeXmlPreamble(serviceData)
+         serviceData = utils.removeXmlNamespaces(serviceData)
+         String vnfRequestInfo = utils.getNodeXml(serviceData, "vnf-request-information")
+         String oldVnfId = utils.getNodeXml(vnfRequestInfo, "vnf-id")
+         oldVnfId = utils.removeXmlPreamble(oldVnfId)
+         oldVnfId = utils.removeXmlNamespaces(oldVnfId)
+         serviceData = serviceData.replace(oldVnfId, "")
+         def vnfId1 = utils.getNodeText(serviceData, "vnf-id")
+         Map<String, String> paramsMap = new HashMap<String, String>()
+         if (vfModuleIndex != null) {
+             paramsMap.put("vf_module_index", "${vfModuleIndex}")
+         }
+         // Add-on data
+         paramsMap.put("vnf_id", "${vnfId}")
+         paramsMap.put("vnf_name", "${vnfName}")
+         paramsMap.put("vf_module_id", "${vfModuleId}")
+         paramsMap.put("vf_module_name", "${vfModuleName}")
+         paramsMap.put("environment_context", "${environmentContext}")
+         paramsMap.put("workload_context", "${workloadContext}")
+         InputSource source = new InputSource(new StringReader(data));
+         DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+         docFactory.setNamespaceAware(true)
+         DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
+         Document responseXml = docBuilder.parse(source)
+         // Availability Zones Data
+         NodeList aZonesList = responseXml.getElementsByTagNameNS("*", "availability-zones")
+         String aZonePosition = "0"
+         for (int z = 0; z < aZonesList.getLength(); z++) {
+             Node node = aZonesList.item(z)
+             if (node.getNodeType() == Node.ELEMENT_NODE) {
+                 Element eElement = (Element) node
+                 String aZoneValue = utils.getElementText(eElement, "availability-zone")
+                 aZonePosition = z.toString()
+                 paramsMap.put("availability_zone_${aZonePosition}", "${aZoneValue}")
+             }
+         }
+         // Map of network-roles and network-tags from vm-networks
+         NodeList vmNetworksListGlobal = responseXml.getElementsByTagNameNS("*", "vm-networks")
+         Map<String, String> networkRoleMap = new HashMap<String, String>()
+         for(int n = 0; n < vmNetworksListGlobal.getLength(); n++){
+             Node nodeNetworkKey = vmNetworksListGlobal.item(n)
+             if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
+                 Element eElementNetworkKey = (Element) nodeNetworkKey
+                 String networkRole = utils.getElementText(eElementNetworkKey, "network-role")
+                 String networkRoleValue = utils.getElementText(eElementNetworkKey, "network-role-tag")
+                 if (networkRoleValue.isEmpty()) {
+                     networkRoleValue = networkRole
+                 }
+                 networkRoleMap.put(networkRole, networkRoleValue)
+             }
+         }
+         // VNF Networks Data
+         StringBuilder sbNet = new StringBuilder()
+         NodeList vnfNetworkList = responseXml.getElementsByTagNameNS("*", "vnf-networks")
+         for (int x = 0; x < vnfNetworkList.getLength(); x++) {
+             Node node = vnfNetworkList.item(x)
+             if (node.getNodeType() == Node.ELEMENT_NODE) {
+                 Element eElement = (Element) node
+                 String vnfNetworkKey = utils.getElementText(eElement, "network-role-tag")
+                 String networkRole = utils.getElementText(eElement, "network-role")
+                 if (vnfNetworkKey.isEmpty()) {
+                     vnfNetworkKey = networkRoleMap.get(networkRole)
+                     if (vnfNetworkKey == null || vnfNetworkKey.isEmpty()) {
+                         vnfNetworkKey = networkRole
+                     }
+                 }
+                 String vnfNetworkNeutronIdValue = utils.getElementText(eElement, "neutron-id")
+                 String vnfNetworkNetNameValue = utils.getElementText(eElement, "network-name")
+                 String vnfNetworkSubNetIdValue = utils.getElementText(eElement, "subnet-id")
+                 String vnfNetworkV6SubNetIdValue = utils.getElementText(eElement, "ipv6-subnet-id")
+                 String vnfNetworkNetFqdnValue = utils.getElementText(eElement, "contrail-network-fqdn")
+                 paramsMap.put("${vnfNetworkKey}_net_id", "${vnfNetworkNeutronIdValue}")
+                 paramsMap.put("${vnfNetworkKey}_net_name", "${vnfNetworkNetNameValue}")
+                 paramsMap.put("${vnfNetworkKey}_subnet_id", "${vnfNetworkSubNetIdValue}")
+                 paramsMap.put("${vnfNetworkKey}_v6_subnet_id", "${vnfNetworkV6SubNetIdValue}")
+                 paramsMap.put("${vnfNetworkKey}_net_fqdn", "${vnfNetworkNetFqdnValue}")
+                 NodeList sriovVlanFilterList = eElement.getElementsByTagNameNS("*","sriov-vlan-filter-list")
+                 StringBuffer sriovFilterBuf = new StringBuffer()
+                 String values = ""
+                 for(int i = 0; i < sriovVlanFilterList.getLength(); i++){
+                     Node node1 = sriovVlanFilterList.item(i)
+                     if (node1.getNodeType() == Node.ELEMENT_NODE) {
+                         Element eElement1 = (Element) node1
+                         String value = utils.getElementText(eElement1, "sriov-vlan-filter")
+                         if (i != sriovVlanFilterList.getLength() - 1) {
+                             values = sriovFilterBuf.append(value + ",")
+                         }
+                         else {
+                             values = sriovFilterBuf.append(value);
+                         }
+                     }
+                 }
+                 if (!values.isEmpty()) {
+                     paramsMap.put("${vnfNetworkKey}_ATT_VF_VLAN_FILTER", "${values}")
+                 }
+             }
+         }
+         // VNF-VMS Data
+         def key
+         def value
+         def networkKey
+         def networkValue
+         def floatingIPKey
+         def floatingIPKeyValue
+         def floatingIPV6Key
+         def floatingIPV6KeyValue
+         StringBuilder sb = new StringBuilder()
+         NodeList vmsList = responseXml.getElementsByTagNameNS("*","vnf-vms")
+         for (int x = 0; x < vmsList.getLength(); x++) {
+             Node node = vmsList.item(x)
+             if (node.getNodeType() == Node.ELEMENT_NODE) {
+                 Element eElement = (Element) node
+                 key = utils.getElementText(eElement, "vm-type")
+                 String values
+                 String position = "0"
+                 StringBuilder sb1 = new StringBuilder()
+                 NodeList valueList = eElement.getElementsByTagNameNS("*","vm-names")
+                 NodeList vmNetworksList = eElement.getElementsByTagNameNS("*","vm-networks")
+                 for(int i = 0; i < valueList.getLength(); i++){
+                     Node node1 = valueList.item(i)
+                     if (node1.getNodeType() == Node.ELEMENT_NODE) {
+                         Element eElement1 = (Element) node1
+                         value = utils.getElementText(eElement1, "vm-name")
+                         if (i != valueList.getLength() - 1) {
+                             values = sb1.append(value + ",")
+                         }
+                         else {
+                             values = sb1.append(value);
+                         }
+                         position = i.toString()
+                         paramsMap.put("${key}_name_${position}", "${value}")
+                     }
+                 }
+                 for(int n = 0; n < vmNetworksList.getLength(); n++){
+                     String floatingIpKeyValueStr = ""
+                     String floatingIpV6KeyValueStr = ""
+                     Node nodeNetworkKey = vmNetworksList.item(n)
+                     if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
+                         Element eElementNetworkKey = (Element) nodeNetworkKey
+                         String ipAddressValues
+                         String ipV6AddressValues
+                         String networkPosition = "0"
+                         StringBuilder sb2 = new StringBuilder()
+                         StringBuilder sb3 = new StringBuilder()
+                         StringBuilder sb4 = new StringBuilder()
+                         networkKey = utils.getElementText(eElementNetworkKey, "network-role-tag")
+                         if (networkKey.isEmpty()) {
+                             networkKey = utils.getElementText(eElementNetworkKey, "network-role")
+                         }
+                         floatingIPKey = key + '_' + networkKey + '_floating_ip'
+                         floatingIPKeyValue = utils.getElementText(eElementNetworkKey, "floating-ip")
+                         if(!floatingIPKeyValue.isEmpty()){
+                             paramsMap.put("$floatingIPKey", "$floatingIPKeyValue")
+                         }
+                         floatingIPV6Key = key + '_' + networkKey + '_floating_v6_ip'
+                         floatingIPV6KeyValue = utils.getElementText(eElementNetworkKey, "floating-ip-v6")
+                         if(!floatingIPV6KeyValue.isEmpty()){
+                             paramsMap.put("$floatingIPV6Key", "$floatingIPV6KeyValue")
+                         }
+                         NodeList networkIpsList = eElementNetworkKey.getElementsByTagNameNS("*","network-ips")
+                         for(int a = 0; a < networkIpsList.getLength(); a++){
+                             Node ipAddress = networkIpsList.item(a)
+                             if (ipAddress.getNodeType() == Node.ELEMENT_NODE) {
+                                 Element eElementIpAddress = (Element) ipAddress
+                                 String ipAddressValue = utils.getElementText(eElementIpAddress, "ip-address")
+                                 if (a != networkIpsList.getLength() - 1) {
+                                     ipAddressValues = sb2.append(ipAddressValue + ",")
+                                 }
+                                 else {
+                                     ipAddressValues = sb2.append(ipAddressValue);
+                                 }
+                                 networkPosition = a.toString()
+                                 paramsMap.put("${key}_${networkKey}_ip_${networkPosition}", "${ipAddressValue}")
+                             }
+                         }
+                         paramsMap.put("${key}_${networkKey}_ips", "${ipAddressValues}")
+                         NodeList interfaceRoutePrefixesList = eElementNetworkKey.getElementsByTagNameNS("*","interface-route-prefixes")
+                         String interfaceRoutePrefixValues = sb3.append("[")
+                         for(int a = 0; a < interfaceRoutePrefixesList.getLength(); a++){
+                             Node interfaceRoutePrefix = interfaceRoutePrefixesList.item(a)
+                             if (interfaceRoutePrefix.getNodeType() == Node.ELEMENT_NODE) {
+                                 Element eElementInterfaceRoutePrefix = (Element) interfaceRoutePrefix
+                                 String interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix-cidr")
+                                 if (interfaceRoutePrefixValue == null || interfaceRoutePrefixValue.isEmpty()) {
+                                     interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix")
+                                 }
+                                 if (a != interfaceRoutePrefixesList.getLength() - 1) {
+                                     interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",")
+                                 }
+                                 else {
+                                     interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}")
+                                 }
+                             }
+                         }
+                         interfaceRoutePrefixValues = sb3.append("]")
+                         if (interfaceRoutePrefixesList.getLength() > 0) {
+                             paramsMap.put("${key}_${networkKey}_route_prefixes", "${interfaceRoutePrefixValues}")
+                         }
+                         NodeList networkIpsV6List = eElementNetworkKey.getElementsByTagNameNS("*","network-ips-v6")
+                         for(int a = 0; a < networkIpsV6List.getLength(); a++){
+                             Node ipV6Address = networkIpsV6List.item(a)
+                             if (ipV6Address.getNodeType() == Node.ELEMENT_NODE) {
+                                 Element eElementIpV6Address = (Element) ipV6Address
+                                 String ipV6AddressValue = utils.getElementText(eElementIpV6Address, "ip-address-ipv6")
+                                 if (a != networkIpsV6List.getLength() - 1) {
+                                     ipV6AddressValues = sb4.append(ipV6AddressValue + ",")
+                                 }
+                                 else {
+                                     ipV6AddressValues = sb4.append(ipV6AddressValue);
+                                 }
+                                 networkPosition = a.toString()
+                                 paramsMap.put("${key}_${networkKey}_v6_ip_${networkPosition}", "${ipV6AddressValue}")
+                             }
+                         }
+                         paramsMap.put("${key}_${networkKey}_v6_ips", "${ipV6AddressValues}")
+                     }
+                 }
+                 paramsMap.put("${key}_names", "${values}")
+             }
+         }
+         //SDNC Response Params
+         String sdncResponseParams = ""
+         List<String> sdncResponseParamsToSkip = [
+             "vnf_id",
+             "vf_module_id",
+             "vnf_name",
+             "vf_module_name"
+         ]
+         String vnfParamsChildNodes = utils.getChildNodes(data, "vnf-parameters")
+         if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){
+             // No SDNC params
+         }else{
+             NodeList paramsList = responseXml.getElementsByTagNameNS("*", "vnf-parameters")
+             for (int z = 0; z < paramsList.getLength(); z++) {
+                 Node node = paramsList.item(z)
+                 Element eElement = (Element) node
+                 String vnfParameterName = utils.getElementText(eElement, "vnf-parameter-name")
+                 if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
+                     String vnfParameterValue = utils.getElementText(eElement, "vnf-parameter-value")
+                     paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")
+                 }
+             }
+         }
+         // make the sdnc_directives parameter
+         String sdncDirectives = "{}"
+         StringBuilder sdncDirectivesBuilder = new StringBuilder()
+         sdncDirectivesBuilder.append("{ \"attributes\": [")
+         int pcnt = 0
+         for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
+                 String attributeName = entry.getKey()
+                 String attributeValue = entry.getValue()
+                 if (pcnt > 0) {
+                     sdncDirectivesBuilder.append(",")
+                 }
+                 pcnt++
+                 sdncDirectivesBuilder.append("{\"attribute_name\":\"${attributeName}\",")
+                 sdncDirectivesBuilder.append("\"attribute_value\":\"${attributeValue}\"}")
+         }
+         if (pcnt > 0) {
+             sdncDirectives = sdncDirectivesBuilder.append("]}").toString()
+         }
+         paramsMap.put("sdnc_directives", "${sdncDirectives}")
+         // Parameters received from the request should overwrite any parameters received from SDNC
+         // Also build the user_directives parameter
+         String userDirectives = "{}"
+         if (vnfParamsMap != null) {
+             StringBuilder userDirectivesBuilder = new StringBuilder()
+             userDirectivesBuilder.append("{ \"attributes\": [")
+             pcnt = 0
+             for (Map.Entry<String, String> entry : vnfParamsMap.entrySet()) {
+                 String vnfKey = entry.getKey()
+                 String vnfValue = entry.getValue()
+                 paramsMap.put("$vnfKey", "$vnfValue")
+                 if (!"oof_directives".equals(vnfKey)) {
+                     if (pcnt > 0) {
+                         userDirectivesBuilder.append(",")
+                     }
+                     pcnt++
+                     userDirectivesBuilder.append("{\"attribute_name\":\"${vnfKey}\",")
+                     userDirectivesBuilder.append("\"attribute_value\":\"${vnfValue}\"}")
+                 }
+             }
+             if (pcnt > 0) {
+                 userDirectives = userDirectivesBuilder.append("]}").toString()
+             }
+         }
+         paramsMap.put("user_directives", "${userDirectives}")
+         StringBuilder sbParams = new StringBuilder()
+         def vfModuleParams = ""
+         for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
+             String paramsXml
+             String paramName = entry.getKey()
+             String paramValue = entry.getValue()
+             paramsXml =
+                             """<entry>
                                                        <key>${MsoUtils.xmlEscape(paramName)}</key>
                                                        <value>${MsoUtils.xmlEscape(paramValue)}</value>
                                                </entry>
@@@ -24,8 -24,7 +24,8 @@@ package org.onap.so.bpmn.infrastructure
  
  import java.util.List;
  import java.util.concurrent.Executor;
- import org.camunda.bpm.application.PostDeploy;
 +import com.google.common.base.Strings;
+ import javax.annotation.PostConstruct;
  import org.camunda.bpm.application.PreUndeploy;
  import org.camunda.bpm.application.ProcessApplicationInfo;
  import org.camunda.bpm.engine.ProcessEngine;
@@@ -118,23 -120,26 +121,26 @@@ public class MSOInfrastructureApplicati
      }
  
      public void deployCustomWorkflows(DeploymentBuilder deploymentBuilder) {
-         if (workflowRepository == null) {
-             return;
-         }
-         List<Workflow> workflows = workflowRepository.findAll();
-         if (workflows != null && workflows.size() != 0) {
-             for (Workflow workflow : workflows) {
-                 String workflowName = workflow.getName();
-                 String workflowBody = workflow.getBody();
-                 if (!workflowName.endsWith(BPMN_SUFFIX)) {
-                     workflowName += BPMN_SUFFIX;
-                 }
-                 if (workflowBody != null) {
-                     logger.info(Strings.repeat("{} ", 2), "Deploying custom workflow", workflowName);
-                     deploymentBuilder.addString(workflowName, workflowBody);
+         logger.debug("Attempting to deploy custom workflows");
+         try {
+             List<Workflow> workflows = catalogDbClient.findWorkflowBySource(SDC_SOURCE);
+             if (workflows != null && workflows.size() != 0) {
+                 for (Workflow workflow : workflows) {
+                     String workflowName = workflow.getName();
+                     String workflowBody = workflow.getBody();
+                     if (!workflowName.endsWith(BPMN_SUFFIX)) {
+                         workflowName += BPMN_SUFFIX;
+                     }
+                     if (workflowBody != null) {
 -                        logger.info("{} {}", "Deploying custom workflow", workflowName);
++                        logger.info(Strings.repeat("{} ", 2), "Deploying custom workflow", workflowName);
+                         deploymentBuilder.addString(workflowName, workflowBody);
+                     }
++                    deploymentBuilder.enableDuplicateFiltering(true);
++                    deploymentBuilder.deploy();
                  }
 -                deploymentBuilder.enableDuplicateFiltering(true);
 -                deploymentBuilder.deploy();
              }
-             deploymentBuilder.deploy();
+         } catch (Exception e) {
+             logger.warn("Unable to deploy custom workflows, " + e.getMessage());
          }
      }
  }
diff --cc bpmn/pom.xml
@@@ -24,7 -24,8 +24,8 @@@
      <xmlunit.version>2.4.0</xmlunit.version>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 -    <sdnc.northbound.version>1.5.1</sdnc.northbound.version>
 -    <appc.client.version>1.5.0</appc.client.version>
 +    <sdnc.northbound.version>1.5.2-SNAPSHOT</sdnc.northbound.version>
++    <appc.client.version>1.6.0-SNAPSHOT</appc.client.version>
    </properties>
  
    <modules>
  
  package org.onap.so.bpmn.infrastructure.scripts
  
- import com.google.common.base.Strings
 -import org.onap.aai.domain.yang.ServiceInstance
 -import org.onap.so.bpmn.core.domain.ServiceDecomposition
 -import org.onap.so.bpmn.core.domain.VnfResource
 -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.logger.ErrorCode;
--
  import static org.apache.commons.lang3.StringUtils.*
--
  import org.camunda.bpm.engine.delegate.BpmnError
  import org.camunda.bpm.engine.delegate.DelegateExecution
++import org.onap.aai.domain.yang.ServiceInstance
  import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
  import org.onap.so.bpmn.common.scripts.ExceptionUtil
  import org.onap.so.bpmn.common.scripts.MsoUtils
  import org.onap.so.bpmn.core.UrnPropertiesReader
  import org.onap.so.bpmn.core.WorkflowException
++import org.onap.so.bpmn.core.domain.ServiceDecomposition
++import org.onap.so.bpmn.core.domain.VnfResource
  import org.onap.so.bpmn.core.json.JsonUtils
++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.logger.ErrorCode;
  import org.onap.so.logger.MessageEnum
  import org.slf4j.Logger
  import org.slf4j.LoggerFactory
  import org.springframework.web.util.UriUtils
--
++import com.google.common.base.Strings
  import groovy.json.*
  
  /**
@@@ -352,5 -280,10 +352,10 @@@ public class DoCreateResources extends 
  
      public void postConfigRequest(DelegateExecution execution){
          //now do noting
+         ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+         for (VnfResource resource : serviceDecomposition.vnfResources) {
+             resource.setOrchestrationStatus("Active")
+         }
+         execution.setVariable("serviceDecomposition", serviceDecomposition)
      }
 -}
 +}
@@@ -306,58 -235,46 +306,58 @@@ public class DoDeleteResourcesV1 extend
       */
      public void executeResourceDelete(DelegateExecution execution) {
          logger.debug("======== Start executeResourceDelete Process ======== ")
 -              try {
 -              String requestId = execution.getVariable("msoRequestId")
 -              String serviceInstanceId = execution.getVariable("serviceInstanceId")
 -              String serviceType = execution.getVariable("serviceType")
 -      
 -              String resourceInstanceId = execution.getVariable("resourceInstanceId")
 -      
 -              Resource currentResource = execution.getVariable("currentResource")
 -              String action = "deleteInstance"
 -              JSONObject resourceRecipe = catalogDbUtils.getResourceRecipe(execution, currentResource.getModelInfo().getModelUuid(), action)
 -              String recipeUri = resourceRecipe.getString("orchestrationUri")
 -              int recipeTimeout = resourceRecipe.getInt("recipeTimeout")
 -              String recipeParamXsd = resourceRecipe.get("paramXSD")
 -      
 -      
 -              ResourceInput resourceInput = new ResourceInput();
 -              resourceInput.setServiceInstanceId(serviceInstanceId)
 -              resourceInput.setResourceInstanceName(currentResource.getResourceInstanceName())
 -              resourceInput.setResourceInstancenUuid(currentResource.getResourceId())
 -              resourceInput.setOperationId(execution.getVariable("operationId"))
 -              resourceInput.setOperationType(execution.getVariable("operationType"))
 -              String globalSubscriberId = execution.getVariable("globalSubscriberId") 
 -              resourceInput.setGlobalSubscriberId(globalSubscriberId)
 -              resourceInput.setResourceModelInfo(currentResource.getModelInfo());
 -                  ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
 -                      resourceInput.setServiceModelInfo(serviceDecomposition.getModelInfo());
 -              resourceInput.setServiceType(serviceType)
 -      
 -              String recipeURL = BPMNProperties.getProperty("bpelURL", "http://so-bpmn-infra.onap:8081") + recipeUri
 +        try {
 +            String requestId = execution.getVariable("msoRequestId")
 +            String serviceInstanceId = execution.getVariable("serviceInstanceId")
 +            String serviceType = execution.getVariable("serviceType")
 +
 +            String resourceInstanceId = execution.getVariable("resourceInstanceId")
 +
 +            Resource currentResource = execution.getVariable("currentResource")
 +            String action = "deleteInstance"
 +            JSONObject resourceRecipe = catalogDbUtils.getResourceRecipe(execution, currentResource.getModelInfo().getModelUuid(), action)
 +            String recipeUri = resourceRecipe.getString("orchestrationUri")
 +            int recipeTimeout = resourceRecipe.getInt("recipeTimeout")
 +            String recipeParamXsd = resourceRecipe.get("paramXSD")
 +
 +
 +            ResourceInput resourceInput = new ResourceInput();
 +            resourceInput.setServiceInstanceId(serviceInstanceId)
 +            resourceInput.setResourceInstanceName(currentResource.getResourceInstanceName())
 +            resourceInput.setResourceInstancenUuid(currentResource.getResourceId())
 +            resourceInput.setOperationId(execution.getVariable("operationId"))
 +            resourceInput.setOperationType(execution.getVariable("operationType"))
 +            String globalSubscriberId = execution.getVariable("globalSubscriberId")
 +            resourceInput.setGlobalSubscriberId(globalSubscriberId)
 +            resourceInput.setResourceModelInfo(currentResource.getModelInfo());
 +            ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
 +            resourceInput.setServiceModelInfo(serviceDecomposition.getModelInfo());
 +            resourceInput.setServiceType(serviceType)
 +            resourceInput.getResourceModelInfo().setModelType(currentResource.getResourceType().toString())
 +            if (currentResource.getResourceType() == ResourceType.GROUP) {
 +                Map<String, Map<String, Object>> parentVNF = execution.getVariable("parentVNF")
 +                if((null != parentVNF) && (null!=parentVNF.get(currentResource.getResourceId()))){
 +                    Map<String, Object> parentVNFData = parentVNF.get(currentResource.getResourceId())
 +                    ModelInfo parentVNFModel = parentVNFData.get("vfModelInfo")
 +                    String parentResourceId = parentVNFData.get("vnf-id")
 +                    resourceInput.setVfModelInfo(parentVNFModel)
 +                    resourceInput.setVnfId(parentResourceId)
 +                }
 +            }
 +
-             String recipeURL = BPMNProperties.getProperty("bpelURL", "http://mso:8080") + recipeUri
++            String recipeURL = BPMNProperties.getProperty("bpelURL", "http://so-bpmn-infra.onap:8081") + recipeUri
  
              BpmnRestClient bpmnRestClient = new BpmnRestClient()
 -              HttpResponse resp = bpmnRestClient.post(recipeURL, requestId, recipeTimeout, action, serviceInstanceId, serviceType, resourceInput.toString(), recipeParamXsd)
 -              logger.debug(" ======== END executeResourceDelete Process ======== ")
 -              }catch(BpmnError b){
 -                       logger.error("Rethrowing MSOWorkflowException")
 -                       throw b
 -               }catch(Exception e){
 -                       logger.error("Error occured within DoDeleteResourcesV1 executeResourceDelete method: " + e)
 -                       exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured during DoDeleteResourcesV1 executeResourceDelete Catalog")
 -               }
 +
 +            HttpResponse resp = bpmnRestClient.post(recipeURL, requestId, recipeTimeout, action, serviceInstanceId, serviceType, resourceInput.toString(), recipeParamXsd)
 +            logger.debug(" ======== END executeResourceDelete Process ======== ")
 +        } catch (BpmnError b) {
 +            logger.error("Rethrowing MSOWorkflowException")
 +            throw b
 +        } catch (Exception e) {
 +            logger.error("Error occured within DoDeleteResourcesV1 executeResourceDelete method: " + e)
 +            exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured during DoDeleteResourcesV1 executeResourceDelete Catalog")
 +        }
      }
  
  
@@@ -27,16 -27,14 +27,15 @@@ import static com.github.tomakehurst.wi
  import static com.github.tomakehurst.wiremock.client.WireMock.put;
  import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
  import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching;
++import static org.assertj.core.api.Assertions.assertThat;
  import static org.assertj.core.api.Assertions.fail;
  import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareAssertions.assertThat;
--import com.google.protobuf.Struct;
  import java.io.IOException;
  import java.util.List;
  import java.util.UUID;
- import org.camunda.bpm.engine.runtime.Execution;
  import org.camunda.bpm.engine.runtime.ProcessInstance;
  import org.junit.Before;
 +import org.junit.Ignore;
  import org.junit.Test;
  import org.onap.ccsdk.cds.controllerblueprints.common.api.ActionIdentifiers;
  import org.onap.ccsdk.cds.controllerblueprints.common.api.CommonHeader;
@@@ -47,6 -45,6 +46,7 @@@ import org.onap.so.bpmn.mock.FileUtil
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  import org.springframework.beans.factory.annotation.Autowired;
++import com.google.protobuf.Struct;
  
  
  /**
@@@ -103,6 -102,6 +104,7 @@@ public class CreateVcpeResCustServiceSi
  
      }
  
++    @Ignore
      @Test
      public void workflow_validInput_expectedOuput() throws InterruptedException {
  
@@@ -23,20 -23,7 +23,21 @@@ package org.onap.so.utils
  import java.util.EnumSet;
  
  public enum TargetEntity {
 -    OPENSTACK_ADAPTER, BPMN, GRM, AAI, DMAAP, POLICY, CATALOG_DB, REQUEST_DB, VNF_ADAPTER, SDNC_ADAPTER, SNIRO, SDC, EXTERNAL, MULTICLOUD, OOF;
 +    OPENSTACK_ADAPTER,
 +    BPMN,
 +    GRM,
 +    AAI,
 +    DMAAP,
 +    POLICY,
 +    CATALOG_DB,
 +    REQUEST_DB,
 +    VNF_ADAPTER,
 +    SDNC_ADAPTER,
 +    SNIRO,
 +    SDC,
 +    EXTERNAL,
-     MULTICLOUD;
++    MULTICLOUD,
++    OOF;
  
      private static final String PREFIX = "SO";
  
diff --cc common/src/test/java/org/onap/so/client/dmaap/DmaapPublisherTest.java
index 4bfac38,4bfac38..0000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,58 -1,58 +1,0 @@@
--/*-
-- * ============LICENSE_START=======================================================
-- * ONAP - SO
-- * ================================================================================
-- * Copyright (C) 2018 Huawei Intellectual Property. 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.
-- * ============LICENSE_END=========================================================
-- */
--package org.onap.so.client.dmaap;
--
--import org.junit.Test;
--import javax.ws.rs.ProcessingException;
--import java.io.IOException;
--import java.util.Optional;
--
--public class DmaapPublisherTest {
--
--    DmaapPublisher dmaapPublisher = new DmaapPublisher(120) {
--        @Override
--        public String getAuth() {
--            return "8F73A1691F6271E769329C176EE3EA48F52786AF12A3E16259007EED2A0F0CC3CB965F4AB5318483015723CCE1C0B48AB6C4DED6E251869393B01E4EC532FC88D4A128B92F4CDB34719B171923";
--        }
--
--        @Override
--        public String getKey() {
--            return "07a7159d3bf51a0e53be7a8f89699be7";
--        }
--
--        @Override
--        public String getTopic() {
--            return "test";
--        }
--
--        @Override
--        public Optional<String> getHost() {
--            return Optional.of("http://test");
--        }
--    };
--
--    public DmaapPublisherTest() throws IOException {}
--
--    @Test(expected = ProcessingException.class)
--    public void sendTest() throws Exception {
--        dmaapPublisher.send("{'key': 'value'}");
--    }
--
--}
@@@ -882,11 -893,8 +885,16 @@@ public class CatalogDbClient 
                  .queryParam(VNF_RESOURCE_MODEL_UUID, vnfResourceModelUUID).build().toString()));
      }
  
+     public List<Workflow> findWorkflowBySource(String source) {
+         return this.getMultipleResources(workflowClient,
+                 getUri(UriBuilder.fromUri(findWorkflowBySource).queryParam(SOURCE, source).build().toString()));
+     }
++
 +    public String getEndpoint() {
 +        return endpoint;
 +    }
 +
 +    public void setEndpoint(String endpoint) {
 +        this.endpoint = endpoint;
 +    }
  }
 -<project xmlns="http://maven.apache.org/POM/4.0.0"
 -    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-   <modelVersion>4.0.0</modelVersion>
-   <parent>
-     <groupId>org.onap.so.vnfm</groupId>
-     <artifactId>vnfm-simulator</artifactId>
-     <version>1.4.0-SNAPSHOT</version>
-   </parent>
-   <artifactId>vnfm-service</artifactId>
-   <name>${project.artifactId}</name>
+     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+     <modelVersion>4.0.0</modelVersion>
+     <parent>
+         <groupId>org.onap.so.vnfm</groupId>
+         <artifactId>vnfm-simulator</artifactId>
+         <version>1.4.0-SNAPSHOT</version>
+     </parent>
+     <artifactId>vnfm-service</artifactId>
+     <name>${project.artifactId}</name>
  
 -    <properties>
 -        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 -        <java.version>1.8</java.version>
 -        <okhttp-version>2.7.5</okhttp-version>
 -        <gson-version>2.8.1</gson-version>
 -    </properties>
 -    <dependencies>
 -        <dependency>
 -            <groupId>org.onap.so.adapters</groupId>
 -            <artifactId>mso-vnfm-adapter-ext-clients</artifactId>
 -            <version>${project.version}</version>
 -        </dependency>
 -        <dependency>
 -            <groupId>org.springframework.boot</groupId>
 -            <artifactId>spring-boot-starter-web</artifactId>
 -        </dependency>
 -        <dependency>
 -            <groupId>org.springframework.boot</groupId>
 -            <artifactId>spring-boot-starter-data-jpa</artifactId>
 -        </dependency>
 -        <dependency>
 -            <groupId>org.springframework.boot</groupId>
 -            <artifactId>spring-boot-starter-actuator</artifactId>
 -        </dependency>
 -        <dependency>
 -            <groupId>org.springframework.boot</groupId>
 -            <artifactId>spring-boot-starter-test</artifactId>
 -            <scope>test</scope>
 -        </dependency>
 -        <dependency>
 -            <groupId>org.springframework.boot</groupId>
 -            <artifactId>spring-boot-devtools</artifactId>
 -            <scope>runtime</scope>
 -        </dependency>
 -        <dependency>
 -            <groupId>junit</groupId>
 -            <artifactId>junit</artifactId>
 -            <scope>test</scope>
 -        </dependency>
 -        <dependency>
 -            <groupId>io.swagger</groupId>
 -            <artifactId>swagger-jaxrs</artifactId>
 -            <version>1.5.0</version>
 -        </dependency>
 -        <dependency>
 -            <groupId>org.apache.directory.studio</groupId>
 -            <artifactId>org.apache.commons.io</artifactId>
 -            <version>2.4</version>
 -        </dependency>
 -        <dependency>
 -            <groupId>com.googlecode.json-simple</groupId>
 -            <artifactId>json-simple</artifactId>
 -            <version>1.1.1</version>
 -        </dependency>
 +  <properties>
 +    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 +    <java.version>1.8</java.version>
 +    <okhttp-version>2.7.5</okhttp-version>
 +    <gson-version>2.8.1</gson-version>
 +  </properties>
 +  <dependencies>
 +    <dependency>
 +      <groupId>org.onap.so.adapters</groupId>
 +      <artifactId>mso-vnfm-adapter-ext-clients</artifactId>
 +      <version>${project.version}</version>
 +    </dependency>
 +    <dependency>
 +      <groupId>org.springframework.boot</groupId>
 +      <artifactId>spring-boot-starter-web</artifactId>
 +    </dependency>
 +    <dependency>
 +      <groupId>org.springframework.boot</groupId>
 +      <artifactId>spring-boot-starter-data-jpa</artifactId>
 +    </dependency>
 +    <dependency>
 +      <groupId>org.springframework.boot</groupId>
 +      <artifactId>spring-boot-starter-actuator</artifactId>
 +    </dependency>
 +    <dependency>
 +      <groupId>org.springframework.boot</groupId>
 +      <artifactId>spring-boot-starter-test</artifactId>
 +      <scope>test</scope>
 +    </dependency>
 +    <dependency>
 +      <groupId>org.springframework.boot</groupId>
 +      <artifactId>spring-boot-devtools</artifactId>
 +      <scope>runtime</scope>
 +    </dependency>
 +    <dependency>
 +      <groupId>junit</groupId>
 +      <artifactId>junit</artifactId>
 +      <scope>test</scope>
 +    </dependency>
 +    <dependency>
 +      <groupId>io.swagger</groupId>
 +      <artifactId>swagger-jaxrs</artifactId>
 +      <version>1.5.0</version>
 +    </dependency>
 +    <dependency>
 +      <groupId>org.apache.directory.studio</groupId>
 +      <artifactId>org.apache.commons.io</artifactId>
 +      <version>2.4</version>
 +    </dependency>
 +    <dependency>
 +      <groupId>com.googlecode.json-simple</groupId>
 +      <artifactId>json-simple</artifactId>
 +      <version>1.1.1</version>
 +    </dependency>
  
 -        <dependency>
 -            <groupId>io.springfox</groupId>
 -            <artifactId>springfox-swagger-ui</artifactId>
 -            <version>2.6.1</version>
 -            <scope>compile</scope>
 -        </dependency>
 -        <dependency>
 -            <groupId>io.springfox</groupId>
 -            <artifactId>springfox-swagger2</artifactId>
 -            <version>2.6.1</version>
 -            <scope>compile</scope>
 -        </dependency>
 -        <dependency>
 -            <groupId>com.fasterxml.jackson.core</groupId>
 -            <artifactId>jackson-databind</artifactId>
 -            <version>2.9.8</version>
 -        </dependency>
 -        <dependency>
 -            <groupId>com.h2database</groupId>
 -            <artifactId>h2</artifactId>
 -        </dependency>
 -        <!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
 -        <dependency>
 -            <groupId>commons-beanutils</groupId>
 -            <artifactId>commons-beanutils</artifactId>
 -            <version>1.9.3</version>
 -        </dependency>
 -        <dependency>
 -            <groupId>org.modelmapper</groupId>
 -            <artifactId>modelmapper</artifactId>
 -            <version>2.3.0</version>
 -        </dependency>
 -        <dependency>
 -            <groupId>com.squareup.okio</groupId>
 -            <artifactId>okio</artifactId>
 -            <version>1.13.0</version>
 -        </dependency>
 -        <dependency>
 -            <groupId>com.squareup.okhttp</groupId>
 -            <artifactId>okhttp</artifactId>
 -            <version>${okhttp-version}</version>
 -        </dependency>
 -        <dependency>
 -            <groupId>com.squareup.okhttp</groupId>
 -            <artifactId>logging-interceptor</artifactId>
 -            <version>${okhttp-version}</version>
 -        </dependency>
 -        <dependency>
 -            <groupId>com.google.code.gson</groupId>
 -            <artifactId>gson</artifactId>
 -            <version>${gson-version}</version>
 -        </dependency>
 -        <dependency>
 -            <groupId>org.onap.so</groupId>
 -            <artifactId>common</artifactId>
 -            <version>${project.version}</version>
 -        </dependency>
 -    </dependencies>
 -    <build>
 -        <plugins>
 -            <plugin>
 -                <groupId>org.springframework.boot</groupId>
 -                <artifactId>spring-boot-maven-plugin</artifactId>
 -                <version>${springboot.version}</version>
 -                <configuration>
 -                    <mainClass>org.onap.svnfm.simulator.config.SvnfmApplication</mainClass>
 -                </configuration>
 -                <executions>
 -                    <execution>
 -                        <goals>
 -                            <goal>repackage</goal>
 -                        </goals>
 -                    </execution>
 -                </executions>
 -            </plugin>
 -            <plugin>
 -                <groupId>org.springframework.boot</groupId>
 -                <artifactId>spring-boot-maven-plugin</artifactId>
 -            </plugin>
 -        </plugins>
 -    </build>
 +    <dependency>
 +      <groupId>io.springfox</groupId>
 +      <artifactId>springfox-swagger-ui</artifactId>
 +      <version>2.6.1</version>
 +      <scope>compile</scope>
 +    </dependency>
 +    <dependency>
 +      <groupId>io.springfox</groupId>
 +      <artifactId>springfox-swagger2</artifactId>
 +      <version>2.6.1</version>
 +      <scope>compile</scope>
 +    </dependency>
 +    <dependency>
 +      <groupId>com.fasterxml.jackson.core</groupId>
 +      <artifactId>jackson-databind</artifactId>
 +      <version>2.9.8</version>
 +    </dependency>
 +    <dependency>
 +      <groupId>com.h2database</groupId>
 +      <artifactId>h2</artifactId>
 +    </dependency>
 +    <!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
 +    <dependency>
 +      <groupId>commons-beanutils</groupId>
 +      <artifactId>commons-beanutils</artifactId>
 +      <version>1.9.3</version>
 +    </dependency>
 +    <dependency>
 +      <groupId>org.modelmapper</groupId>
 +      <artifactId>modelmapper</artifactId>
 +      <version>2.3.0</version>
 +    </dependency>
 +    <dependency>
 +      <groupId>com.squareup.okio</groupId>
 +      <artifactId>okio</artifactId>
 +      <version>1.13.0</version>
 +    </dependency>
 +    <dependency>
 +      <groupId>com.squareup.okhttp</groupId>
 +      <artifactId>okhttp</artifactId>
 +      <version>${okhttp-version}</version>
 +    </dependency>
 +    <dependency>
 +      <groupId>com.squareup.okhttp</groupId>
 +      <artifactId>logging-interceptor</artifactId>
 +      <version>${okhttp-version}</version>
 +    </dependency>
 +    <dependency>
 +      <groupId>com.google.code.gson</groupId>
 +      <artifactId>gson</artifactId>
 +      <version>${gson-version}</version>
 +    </dependency>
 +    <dependency>
 +      <groupId>org.onap.so</groupId>
 +      <artifactId>common</artifactId>
 +      <version>${project.version}</version>
 +    </dependency>
 +  </dependencies>
 +  <build>
 +    <plugins>
 +      <plugin>
 +        <groupId>org.springframework.boot</groupId>
 +        <artifactId>spring-boot-maven-plugin</artifactId>
 +        <version>${springboot.version}</version>
 +        <configuration>
 +          <mainClass>org.onap.svnfm.simulator.config.SvnfmApplication</mainClass>
 +        </configuration>
 +        <executions>
 +          <execution>
 +            <goals>
 +              <goal>repackage</goal>
 +            </goals>
 +          </execution>
 +        </executions>
 +      </plugin>
 +      <plugin>
 +        <groupId>org.springframework.boot</groupId>
 +        <artifactId>spring-boot-maven-plugin</artifactId>
 +      </plugin>
 +    </plugins>
 +  </build>
  </project>