Merge "Make CategoryParameter.getOptions() unmodifiable"
diff --git a/.gitignore b/.gitignore
index 978c4cb..fd4dc01 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,8 @@
 /vid-automation/.settings/org.eclipse.jdt.core.prefs
 /vid-automation/.settings/org.eclipse.m2e.core.prefs
 /vid-ext-services-simulator/.gitignore
+.idea/
+epsdk-app-onap/overlays/
+vid-app-common/overlays/
+vid-ext-services-simulator/target/
+
diff --git a/INFO.yaml b/INFO.yaml
new file mode 100644
index 0000000..234ab81
--- /dev/null
+++ b/INFO.yaml
@@ -0,0 +1,58 @@
+---
+project: 'vid'
+project_creation_date: '2017-02-02'
+project_category: ''
+lifecycle_state: 'Incubation'
+project_lead: &onap_vid_ptl
+    name: 'Ofir Sonsino'
+    email: 'os0695@att.com'
+    id: 'os0695'
+    company: 'ATT'
+    timezone: 'Israel/Lod'
+primary_contact: *onap_vid_ptl
+issue_tracking:
+    type: 'jira'
+    url: 'https://jira.onap.org/projects/VID'
+    key: 'VID'
+mailing_list:
+    type: 'groups.io'
+    url: 'lists.onap.org'
+    tag: '<[vid]>'
+realtime_discussion: ''
+meetings:
+    - type: 'zoom'
+        agenda: 'https://wiki.onap.org/display/DW/VID+Weekly+Meeting+Minutes'
+        url: 'https://wiki.onap.org/display/DW/Virtual+Infrastructure+Deployment+Project'
+        server: 'n/a'
+        channel: 'n/a'
+        repeats: 'weekly'
+        time: '13:00 UTC'
+repositories:
+    - 'vid'
+committers:
+    - <<: *onap_vid_ptl
+    - name: 'Amichai Hemli'
+        email: 'ah0398@intl.att.com'
+        company: 'ATT'
+        id: 'ahemli'
+        timezone: 'Asia/Jerusalem'
+    - name: 'Wojciech Sliwka'
+        email: 'wojciech.sliwka@nokia.com'
+        company: 'Nokia'
+        id: 'wsliwka'
+        timezone: 'Europe/Warsaw'
+    - name: 'Ittay Stern'
+        email: 'is9613@att.com'
+        company: 'ATT'
+        id: 'ittays'
+        timezone: 'Asia/Jerusalem'
+tsc:
+    approval: 'https://lists.onap.org/pipermail/onap-tsc'
+    changes:
+        - type: 'Addition'
+            name: 'Wojciech Sliwka'
+            name: 'Ittay Stern'
+            link: 'https://lists.onap.org/g/onap-tsc/message/4257'
+        - type: 'Removal'
+            name: 'Daniel Rose'
+            link: 'https://lists.onap.org/g/onap-tsc/message/4257'
diff --git a/deliveries/.gitignore b/deliveries/.gitignore
new file mode 100644
index 0000000..54a4f4f
--- /dev/null
+++ b/deliveries/.gitignore
@@ -0,0 +1,2 @@
+# provide developers possibility to add or override custom properties in compose without polluting code base
+docker-compose.override.yml
\ No newline at end of file
diff --git a/deliveries/pom.xml b/deliveries/pom.xml
index e366974..f096c2b 100755
--- a/deliveries/pom.xml
+++ b/deliveries/pom.xml
@@ -5,7 +5,7 @@
 	<parent>

 		<groupId>org.onap.vid</groupId>

 		<artifactId>vid-parent</artifactId>

-		<version>1.1.0-SNAPSHOT</version>

+		<version>4.0.0-SNAPSHOT</version>

 	</parent>

 

 	<packaging>pom</packaging>

diff --git a/deliveries/src/main/docker/docker-files/Dockerfile b/deliveries/src/main/docker/docker-files/Dockerfile
index 4b04e22..a115b5f 100755
--- a/deliveries/src/main/docker/docker-files/Dockerfile
+++ b/deliveries/src/main/docker/docker-files/Dockerfile
@@ -26,8 +26,7 @@
 ENV LOG4J_APPENDER rollingfile

 ENV LOG4J_LOGS_DIRECTORY ${ROOT_DIR}/logs

 

-ENV VID_AAI_HOST aai.api.simpledemo.onap.org

-ENV VID_AAI_PORT 8443

+ENV VID_AAI_URL https://aai.api.simpledemo.onap.org:8443

 ENV VID_APP_DISPLAY_NAME VID

 ENV VID_ECOMP_SHARED_CONTEXT_REST_URL https://portal.api.simpledemo.onap.org:8080/onapportal/context

 ENV VID_MSO_SERVER_URL http://vm1.mso.simpledemo.onap.org:8080/onap/so/infra

diff --git a/deliveries/src/main/docker/docker-files/docker-compose.yml b/deliveries/src/main/docker/docker-files/docker-compose.yml
index 6445901..eedf732 100755
--- a/deliveries/src/main/docker/docker-files/docker-compose.yml
+++ b/deliveries/src/main/docker/docker-files/docker-compose.yml
@@ -1,15 +1,21 @@
-version: '3.1'

+version: '3.2'

+

+# Please note this configuration is provided for local development. Do not use it on production.

 

 services:

     vid-server:

-        image: nexus3.onap.org:10001/onap/vid

+        image: onap/vid:latest

         ports:

             - "8080:8080"

-        links:

-            - vid-mariadb:vid-mariadb-docker-instance

         environment:

             VID_MYSQL_DBNAME: vid_openecomp_epsdk

             VID_MYSQL_PASS: YOUR_PASSWORD

+            VID_MYSQL_HOST: vid-mariadb

+            ASDC_CLIENT_REST_PROTOCOL: http

+            ASDC_CLIENT_REST_HOST: vid-simulator

+            ASDC_CLIENT_REST_PORT: 1080

+            VID_AAI_URL: http://vid-simulator:1080

+            VID_MSO_SERVER_URL: http://vid-simulator:1080

 

     vid-mariadb:

         image: mariadb:10

@@ -22,4 +28,7 @@
             MYSQL_DATABASE: vid_openecomp_epsdk

             MYSQL_USER: vidadmin

             MYSQL_PASSWORD: YOUR_PASSWORD

-            MYSQL_ROOT_PASSWORD: ROOT_PASSWORD
\ No newline at end of file
+            MYSQL_ROOT_PASSWORD: ROOT_PASSWORD

+

+    vid-simulator:

+        image: onap/vid-simulator:latest
\ No newline at end of file
diff --git a/deliveries/src/main/scripts/localize_system.sh b/deliveries/src/main/scripts/localize_system.sh
index 0947d49..a7e6cd3 100755
--- a/deliveries/src/main/scripts/localize_system.sh
+++ b/deliveries/src/main/scripts/localize_system.sh
@@ -13,8 +13,7 @@
 	-e 's/${VID_MYSQL_DBNAME}/'${VID_MYSQL_DBNAME}'/g' \
 	-e 's/${VID_MYSQL_USER}/'${VID_MYSQL_USER}'/g' \
 	-e 's/${VID_MYSQL_PASS}/'${VID_MYSQL_PASS}'/g' \
-	-e 's/${VID_AAI_HOST}/'${VID_AAI_HOST}'/g' \
-	-e 's/${VID_AAI_PORT}/'${VID_AAI_PORT}'/g' \
+	-e 's ${VID_AAI_URL} '${VID_AAI_URL}' g' \
 	-e 's/${AAI_USE_CLIENT_CERT}/'${AAI_USE_CLIENT_CERT}'/g' \
 	-e 's/${AAI_VID_UID}/'${AAI_VID_UID}'/g' \
 	-e 's/${AAI_VID_PASSWD_X}/'${AAI_VID_PASSWD_X}'/g' \
diff --git a/docs/administration.rst b/docs/administration.rst
index 7227e70..1eec480 100644
--- a/docs/administration.rst
+++ b/docs/administration.rst
@@ -23,4 +23,7 @@
   |  ``curl -X POST 'http://vid.api.simpledemo.onap.org:8080/vid/change-management/vnf_workflow_relation' -H 'Accept-Encoding: gzip, deflate' -H 'Content-Type:application/json' -d '{"workflowsDetails":[{"workflowName":"VNF In Place Software Update","vnfDetails":{"UUID":"X-X-X-X","invariantUUID":"Y-Y-Y-Y"}}, {"workflowName":"VNF Scale Out","vnfDetails":{"UUID":"X-X-X-X","invariantUUID":"Y-Y-Y-Y"}}]}'``
   
 - |  **VoLTE E2E services deployment support** 
-  |  VID supports VoLTE E2E services deployment. In order to trigger the E2E flow, the service category in the model (as SDC generates it) has to be set to "E2E Service".
\ No newline at end of file
+  |  VID supports VoLTE E2E services deployment. In order to trigger the E2E flow, the service category in the model (as SDC generates it) has to be set to "E2E Service".
+  
+- |  **Role management support** 
+  |  VID supports role management for its users with AAF integration. This feature is turned off by default. In order to activate it, update "role_management_activated" value in system.properties to "true".
\ No newline at end of file
diff --git a/docs/configuration.rst b/docs/configuration.rst
index 6357d5a..ab75738 100644
--- a/docs/configuration.rst
+++ b/docs/configuration.rst
@@ -18,6 +18,9 @@
 ``db.password``
   The password for the VID database
 
+``role_management_activated``
+  Role management activation flag, "false" by defauly. Change to "true" in order to activate this feature.
+  
 ``aai.server.url.base``
   Base URL for the A&AI server
 
diff --git a/docs/installation.rst b/docs/installation.rst
index 040baf2..f9d12e8 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -17,7 +17,7 @@
 
   docker pull mariadb:10
   docker login -u docker -p docker nexus3.onap.org:10001
-  docker pull nexus3.onap.org:10001/onap/vid:3.1.0
+  docker pull nexus3.onap.org:10001/onap/vid:3.2.1
 
 2. Install by running following command (Use the path for the lf_config folder under the VID git repository as CONFIG_PATH)
 
@@ -27,7 +27,7 @@
    docker run --name vid-mariadb -e MYSQL_DATABASE=vid_openecomp_epsdk -e MYSQL_USER=vidadmin -e MYSQL_PASSWORD=YOUR_PASSWORD -e MYSQL_ROOT_PASSWORD=ROOT_PASSWORD -v CONFIG_PATH/vid-my.cnf:/etc/mysql/my.cnf -v /var/lib/mysql -d mariadb:10
    
    #start VID server
-   docker run -e VID_MYSQL_DBNAME=vid_openecomp_epsdk -e VID_MYSQL_PASS=YOUR_PASSWORD --name vid-server -p 8080:8080 --link vid-mariadb:vid-mariadb-docker-instance -d nexus3.onap.org:10001/onap/vid:3.1.0
+   docker run -e VID_MYSQL_DBNAME=vid_openecomp_epsdk -e VID_MYSQL_PASS=YOUR_PASSWORD --name vid-server -p 8080:8080 --link vid-mariadb:vid-mariadb-docker-instance -d nexus3.onap.org:10001/onap/vid:3.2.1
 
 Or use docker-compose:
 
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index d1e39eb..962fe1b 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -3,10 +3,10 @@
 VID Release Notes
 =================
 
-Version: 3.2.0
+Version: 3.2.2
 --------------
 
-:Release Date: 2018-11-15
+:Release Date: 2018-11-30
 
 New Features
 ------------
@@ -52,13 +52,13 @@
 
 **Security Notes**
 
-VID code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The VID open Critical security vulnerabilities and their risk assessment have been documented as part of the `project <https://wiki.onap.org/pages/viewpage.action?pageId=28378623>`_.
+VID code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The VID open Critical security vulnerabilities and their risk assessment have been documented as part of the `project <https://wiki.onap.org/pages/viewpage.action?pageId=45300871>`_.
 
 Quick Links:
 
 - `VID project page <https://wiki.onap.org/display/DW/Virtual+Infrastructure+Deployment+Project>`_
 - `Passing Badge information for VID <https://bestpractices.coreinfrastructure.org/en/projects/1658>`_
-- `Project Vulnerability Review Table for VID <https://wiki.onap.org/pages/viewpage.action?pageId=28378623>`_
+- `Project Vulnerability Review Table for VID <https://wiki.onap.org/pages/viewpage.action?pageId=45300871>`_
 
 **Other**
 
diff --git a/epsdk-app-onap/pom.xml b/epsdk-app-onap/pom.xml
index 9b0136f..85731d1 100755
--- a/epsdk-app-onap/pom.xml
+++ b/epsdk-app-onap/pom.xml
@@ -319,6 +319,10 @@
 					<groupId>com.fasterxml.jackson.core</groupId>

 					<artifactId>jackson-core</artifactId>

 				</exclusion>

+				<exclusion>

+					<groupId>com.lowagie</groupId>

+					<artifactId>itext</artifactId>

+				</exclusion>

 			</exclusions>

 		</dependency>

 		<dependency>

diff --git a/epsdk-app-onap/src/main/resources/vid-data.sql b/epsdk-app-onap/src/main/resources/vid-data.sql
index e2af216..9c48f85 100755
--- a/epsdk-app-onap/src/main/resources/vid-data.sql
+++ b/epsdk-app-onap/src/main/resources/vid-data.sql
@@ -625,6 +625,12 @@
 --

 INSERT INTO `fn_role` VALUES (1,'System Administrator','Y',1) ON DUPLICATE KEY UPDATE ROLE_NAME='System Administrator', ACTIVE_YN='Y', PRIORITY=1;

 INSERT INTO `fn_role` VALUES (16,'Standard User','Y',5) ON DUPLICATE KEY UPDATE ROLE_NAME='Standard User', ACTIVE_YN='Y', PRIORITY=5;

+INSERT INTO `fn_role` VALUES (17,'Demonstration___vFWCL','Y',5) ON DUPLICATE KEY UPDATE ROLE_NAME='Demonstration___vFWCL', ACTIVE_YN='Y', PRIORITY=5;

+INSERT INTO `fn_role` VALUES (18,'Demonstration___vFW','Y',5) ON DUPLICATE KEY UPDATE ROLE_NAME='Demonstration___vFW', ACTIVE_YN='Y', PRIORITY=5;

+INSERT INTO `fn_role` VALUES (19,'Demonstration___vCPE','Y',5) ON DUPLICATE KEY UPDATE ROLE_NAME='Demonstration___vCPE', ACTIVE_YN='Y', PRIORITY=5;

+INSERT INTO `fn_role` VALUES (20,'Demonstration___vIMS','Y',5) ON DUPLICATE KEY UPDATE ROLE_NAME='Demonstration___vIMS', ACTIVE_YN='Y', PRIORITY=5;

+INSERT INTO `fn_role` VALUES (21,'Demonstration___vLB','Y',5) ON DUPLICATE KEY UPDATE ROLE_NAME='Demonstration___vLB', ACTIVE_YN='Y', PRIORITY=5;

+INSERT INTO `fn_role` VALUES (22,'Demonstration___gNB','Y',5) ON DUPLICATE KEY UPDATE ROLE_NAME='Demonstration___gNB', ACTIVE_YN='Y', PRIORITY=5;

 

 --

 -- Dumping data for table `fn_role_composite`

@@ -735,3 +741,10 @@
 INSERT IGNORE `fn_user_role` VALUES (3,1,NULL,1);

 INSERT IGNORE `fn_user_role` VALUES (4,1,NULL,1);

 INSERT IGNORE `fn_user_role` VALUES (5,1,NULL,1);

+INSERT IGNORE `fn_user_role` VALUES (1,17,NULL,1);

+INSERT IGNORE `fn_user_role` VALUES (1,18,NULL,1);

+INSERT IGNORE `fn_user_role` VALUES (1,19,NULL,1);

+INSERT IGNORE `fn_user_role` VALUES (1,20,NULL,1);

+INSERT IGNORE `fn_user_role` VALUES (1,21,NULL,1);

+INSERT IGNORE `fn_user_role` VALUES (1,22,NULL,1);

+

diff --git a/epsdk-app-onap/src/main/webapp/WEB-INF/conf/system_template.properties b/epsdk-app-onap/src/main/webapp/WEB-INF/conf/system_template.properties
index 06a2e6b..149ad99 100755
--- a/epsdk-app-onap/src/main/webapp/WEB-INF/conf/system_template.properties
+++ b/epsdk-app-onap/src/main/webapp/WEB-INF/conf/system_template.properties
@@ -64,10 +64,10 @@
 element_map_icon_path = app/vid/icons/

 

 #aai related properties

-aai.server.url.base=https://${VID_AAI_HOST}:${VID_AAI_PORT}/aai/

-aai.server.url=https://${VID_AAI_HOST}:${VID_AAI_PORT}/aai/v13/

-aai.oldserver.url.base=https://${VID_AAI_HOST}:${VID_AAI_PORT}/aai/servers/

-aai.oldserver.url=https://${VID_AAI_HOST}:${VID_AAI_PORT}/aai/servers/v3/

+aai.server.url.base=${VID_AAI_URL}/aai/

+aai.server.url=${VID_AAI_URL}/aai/v13/

+aai.oldserver.url.base=${VID_AAI_URL}/aai/servers/

+aai.oldserver.url=${VID_AAI_URL}/aai/servers/v3/

 aai.truststore.filename=${AAI_TRUSTSTORE_FILENAME}

 aai.truststore.passwd.x=${AAI_TRUSTSTORE_PASSWD_X}

 aai.keystore.filename=${AAI_KEYSTORE_FILENAME}

diff --git a/pom.xml b/pom.xml
index 7ec5032..93f4f77 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,6 +3,7 @@
 	<modelVersion>4.0.0</modelVersion>

 	<groupId>org.onap.vid</groupId>

 	<artifactId>vid-parent</artifactId>

+	<version>4.0.0-SNAPSHOT</version>

 	<packaging>pom</packaging>

 	<name>vid</name>

 

@@ -268,5 +269,4 @@
 			<version>4.5.3</version>

 		</dependency>

 	</dependencies>

-	<version>4.0.0-SNAPSHOT</version>

 </project>

diff --git a/vid-app-common/pom.xml b/vid-app-common/pom.xml
index 4795103..658bf71 100755
--- a/vid-app-common/pom.xml
+++ b/vid-app-common/pom.xml
@@ -1,583 +1,595 @@
-<?xml version="1.0"?>

-<project

-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"

-	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

-	<modelVersion>4.0.0</modelVersion>

-

-	<!-- This is the Maven project object model (POM) file for VID web application 

-		based on the ECOMP SDK distribution. This file stands alone; it does not 

-		inherit from a parent maven module. -->

-	<groupId>org.onap.vid</groupId>

-	<artifactId>vid-app-common</artifactId>

-	<version>4.0.0-SNAPSHOT</version>

-	<packaging>war</packaging>

-	<name>VID Common</name>

-	<description>VID Common code for opensource version</description>

-

-	<properties>

-		<encoding>UTF-8</encoding>

-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

-		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

-		<epsdk.version>2.4.0</epsdk.version>

-		<springframework.version>4.2.9.RELEASE</springframework.version>

-		<hibernate.version>4.3.11.Final</hibernate.version>

-		<!-- Skip assembling the zip by default -->

-		<skipassembly>true</skipassembly>

-		<!-- Tests usually require some setup that maven cannot do, so skip. -->

-		<skiptests>false</skiptests>

-		<nexusproxy>https://nexus.onap.org</nexusproxy>

-		<snapshotNexusPath>/content/repositories/snapshots/</snapshotNexusPath>

-		<releaseNexusPath>/content/repositories/releases/</releaseNexusPath>

-		<stagingNexusPath>/content/repositories/staging/</stagingNexusPath>

-		<sitePath>/content/sites/site/org/onap/vid/${project.version}</sitePath>

-	</properties>

-

-

-	<!-- this should be commented for local debugging -->

-	<!-- <deployenv>local</deployenv> -->

-

-	<repositories>

-		<repository>

-			<id>ecomp-releases</id>

-			<name>VID Release Repository</name>

-			<url>${nexusproxy}${releaseNexusPath}</url>

-		</repository>

-		<repository>

-			<id>ecomp-snapshots</id>

-			<name>VID Snapshot Repository</name>

-			<url>${nexusproxy}${snapshotNexusPath}</url>

-		</repository>

-		<repository>

-			<id>ecomp-staging</id>

-			<name>VID Staging Repository</name>

-			<url>${nexusproxy}${stagingNexusPath}</url>

-		</repository>

-		<repository>

-			<!-- Snapshots repository has ECOMP snapshot artifacts -->

-			<id>oss-snapshots</id>

-			<name>oss Central - Snapshots</name>

-			<url>https://oss.sonatype.org/service/local/repositories/releases/content/</url>

-		</repository>

-

-	</repositories>

-	<distributionManagement>

-		<repository>

-			<id>ecomp-releases</id>

-			<name>VID Release Repository</name>

-			<url>${nexusproxy}/${releaseNexusPath}</url>

-		</repository>

-		<snapshotRepository>

-			<id>ecomp-snapshots</id>

-			<name>VID Snapshot Repository</name>

-			<url>${nexusproxy}/${snapshotNexusPath}</url>

-		</snapshotRepository>

-		<!-- added for javadoc -->

-		<site>

-			<id>ecomp-site</id>

-			<url>dav:${nexusproxy}${sitePath}</url>

-		</site>

-	</distributionManagement>

-

-	<build>

-		<finalName>vid-common</finalName>

-

-		<plugins>

-			<plugin>

-				<groupId>org.sonatype.plugins</groupId>

-				<artifactId>nexus-staging-maven-plugin</artifactId>

-				<version>1.6.7</version>

-				<extensions>true</extensions>

-				<configuration>

-					<nexusUrl>${nexusproxy}</nexusUrl>

-					<stagingProfileId>176c31dfe190a</stagingProfileId>

-					<serverId>ecomp-staging</serverId>

-				</configuration>

-			</plugin>

-			<plugin>

-				<groupId>org.jacoco</groupId>

-				<artifactId>jacoco-maven-plugin</artifactId>

-				<version>0.7.9</version>

-				<executions>

-					<execution>

-						<id>default-prepare-agent</id>

-						<goals>

-							<goal>prepare-agent</goal>

-						</goals>

-					</execution>

-					<execution>

-						<id>default-report</id>

-						<goals>

-							<goal>report</goal>

-						</goals>

-					</execution>

-				</executions>

-			</plugin>

-			<plugin>

-				<groupId>org.apache.tomcat.maven</groupId>

-				<artifactId>tomcat6-maven-plugin</artifactId>

-				<version>2.2</version>

-			</plugin>

-			<plugin>

-				<groupId>org.apache.tomcat.maven</groupId>

-				<artifactId>tomcat7-maven-plugin</artifactId>

-				<version>2.2</version>

-			</plugin>

-

-			<!-- Generate POJOs from MSO json schema -->

-			<plugin>

-				<groupId>org.jsonschema2pojo</groupId>

-				<artifactId>jsonschema2pojo-maven-plugin</artifactId>

-				<version>0.4.23</version>

-				<configuration>

-					<sourceDirectory>${basedir}/src/main/resources/json/mso</sourceDirectory>

-					<targetPackage>org.onap.vid.domain.mso</targetPackage>

-					<outputDirectory>${project.build.directory}/generated-sources</outputDirectory>

-				</configuration>

-				<executions>

-					<execution>

-						<goals>

-							<goal>generate</goal>

-						</goals>

-					</execution>

-				</executions>

-			</plugin>

-

-			<plugin>

-				<groupId>org.apache.maven.plugins</groupId>

-				<artifactId>maven-compiler-plugin</artifactId>

-				<version>3.1</version>

-				<configuration>

-					<source>1.8</source>

-					<target>1.8</target>

-				</configuration>

-			</plugin>

-

-			<plugin>

-				<groupId>org.apache.maven.plugins</groupId>

-				<artifactId>maven-surefire-plugin</artifactId>

-				<version>2.19.1</version>

-				<configuration>

-					<skipTests>${skiptests}</skipTests>

-					<includes>

-						<include>**/Test*.java</include>

-						<include>**/*Test.java</include>

-						<include>**/*TestCase.java</include>

-					</includes>

-					<excludes>

-						<exclude>**/selenium/*.java</exclude>

-						<exclude>**/integrationTest/*.java</exclude>

-					</excludes>

-					<additionalClasspathElements>

-						<additionalClasspathElement>${basedir}/war</additionalClasspathElement>

-					</additionalClasspathElements>

-					<systemPropertyVariables>

-						<container.classpath>classpath:</container.classpath>

-					</systemPropertyVariables>

-				</configuration>

-			</plugin>

-

-			<plugin>

-				<artifactId>maven-assembly-plugin</artifactId>

-				<configuration>

-					<skipAssembly>${skipassembly}</skipAssembly>

-					<descriptors>

-						<descriptor>${basedir}/distribution.xml</descriptor>

-					</descriptors>

-				</configuration>

-				<executions>

-					<execution>

-						<id>make-assembly</id>

-						<phase>package</phase>

-						<goals>

-							<goal>single</goal>

-						</goals>

-					</execution>

-				</executions>

-			</plugin>

-

-

-			<plugin>

-				<groupId>org.apache.maven.plugins</groupId>

-				<artifactId>maven-war-plugin</artifactId>

-				<version>3.0.0</version>

-				<configuration>

-					<!-- Build a jar with all the Java classes -->

-					<attachClasses>true</attachClasses>

-					<!-- Do not put any jars in the war -->

-					<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>

-				</configuration>

-			</plugin>

-			<plugin>

-				<groupId>org.apache.maven.plugins</groupId>

-				<artifactId>maven-site-plugin</artifactId>

-				<version>3.6</version>

-				<dependencies>

-					<dependency>

-						<groupId>org.apache.maven.wagon</groupId>

-						<artifactId>wagon-webdav-jackrabbit</artifactId>

-						<version>2.10</version>

-					</dependency>

-				</dependencies>

-			</plugin>

-			<plugin>

-				<groupId>pl.project13.maven</groupId>

-				<artifactId>git-commit-id-plugin</artifactId>

-				<version>2.2.4</version>

-				<executions>

-					<execution>

-						<id>get-the-git-infos</id>

-						<goals>

-							<goal>revision</goal>

-						</goals>

-					</execution>

-				</executions>

-				<configuration>

-					<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>

-					<dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat>

-					<dateFormatTimeZone>${user.timezone}</dateFormatTimeZone>

-					<generateGitPropertiesFile>true</generateGitPropertiesFile>

-					<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>

-					<includeOnlyProperties>

-						 <includeOnlyProperty>^git.commit.id$</includeOnlyProperty>

-						 <includeOnlyProperty>^git.commit.message.short$</includeOnlyProperty>

-						 <includeOnlyProperty>^git.commit.time$</includeOnlyProperty>

-					</includeOnlyProperties>

-				</configuration>

-			</plugin>

-		</plugins>

-	</build>

-

-	<reporting>

-		<plugins>

-			<plugin>

-				<groupId>org.apache.maven.plugins</groupId>

-				<artifactId>maven-javadoc-plugin</artifactId>

-				<version>2.10.4</version>

-				<configuration>

-					<failOnError>false</failOnError>

-					<doclet>org.umlgraph.doclet.UmlGraphDoc</doclet>

-					<docletArtifact>

-						<groupId>org.umlgraph</groupId>

-						<artifactId>umlgraph</artifactId>

-						<version>5.6</version>

-					</docletArtifact>

-					<additionalparam>-views</additionalparam>

-					<useStandardDocletOptions>true</useStandardDocletOptions>

-				</configuration>

-			</plugin>

-		</plugins>

-	</reporting>

-

-	<dependencies>

-	

-		<dependency>

-		    <groupId>com.opencsv</groupId>

-		    <artifactId>opencsv</artifactId>

-		    <version>4.1</version>

-		</dependency>

-			

-		<!-- HTTP client -->

-

-		<dependency>

-			<groupId>io.joshworks.unirest</groupId>

-			<artifactId>unirest-java</artifactId>

-			<version>0.2.1</version>

-		</dependency>

-		<dependency>

-			<groupId>org.apache.httpcomponents</groupId>

-			<artifactId>httpclient</artifactId>

-			<version>4.3.6</version>

-		</dependency>

-		<dependency>

-			<groupId>org.apache.httpcomponents</groupId>

-			<artifactId>httpasyncclient</artifactId>

-			<version>4.0.2</version>

-		</dependency>

-		<dependency>

-			<groupId>org.apache.httpcomponents</groupId>

-			<artifactId>httpmime</artifactId>

-			<version>4.3.6</version>

-		</dependency>

-		<dependency>

-			<groupId>com.xebialabs.restito</groupId>

-			<artifactId>restito</artifactId>

-			<version>0.9.3</version>

-			<scope>test</scope>

-		</dependency>

-

-		<!-- Helpers -->

-		<dependency>

-			<groupId>org.projectlombok</groupId>

-			<artifactId>lombok</artifactId>

-			<version>1.18.2</version>

-			<scope>provided</scope>

-		</dependency>

-		<dependency>

-			<groupId>io.vavr</groupId>

-			<artifactId>vavr</artifactId>

-			<version>0.9.2</version>

-		</dependency>

-

-		<!-- SDK overlay war -->

-		<dependency>

-			<groupId>org.onap.portal.sdk</groupId>

-			<artifactId>epsdk-app-overlay</artifactId>

-			<version>${epsdk.version}</version>

-			<type>war</type>

-		</dependency>

-		<dependency>

-			<groupId>org.onap.portal.sdk</groupId>

-			<artifactId>epsdk-app-common</artifactId>

-			<version>${epsdk.version}</version>

-			<type>jar</type>

-		</dependency>

-

-		<dependency>

-			<groupId>org.onap.portal.sdk</groupId>

-			<artifactId>epsdk-core</artifactId>

-			<version>${epsdk.version}</version>

-		</dependency>

-		<dependency>

-			<groupId>org.onap.portal.sdk</groupId>

-			<artifactId>epsdk-analytics</artifactId>

-			<version>${epsdk.version}</version>

-		</dependency>

-		<dependency>

-			<groupId>org.onap.portal.sdk</groupId>

-			<artifactId>epsdk-workflow</artifactId>

-			<version>${epsdk.version}</version>

-		</dependency>

-		<dependency>

-			<groupId>com.att.eelf</groupId>

-			<artifactId>eelf-core</artifactId>

-			<version>1.0.0</version>

-		</dependency>

-		<dependency>

-			<groupId>ch.qos.logback</groupId>

-			<artifactId>logback-core</artifactId>

-			<version>1.2.3</version>

-		</dependency>

-		<dependency>

-			<groupId>ch.qos.logback</groupId>

-			<artifactId>logback-classic</artifactId>

-			<version>1.2.3</version>

-		</dependency>

-

-		<!-- Mapper -->

-		<dependency>

-			<groupId>com.fasterxml.jackson.core</groupId>

-			<artifactId>jackson-annotations</artifactId>

-			<version>2.6.3</version>

-		</dependency>

-		<dependency>

-			<groupId>com.fasterxml.jackson.core</groupId>

-			<artifactId>jackson-core</artifactId>

-			<version>2.8.6</version>

-		</dependency>

-		<dependency>

-			<groupId>com.fasterxml.jackson.core</groupId>

-			<artifactId>jackson-databind</artifactId>

-			<version>2.6.7.1</version>

-		</dependency>

-		<dependency>

-			<groupId>org.codehaus.jackson</groupId>

-			<artifactId>jackson-mapper-asl</artifactId>

-			<version>1.9.13</version>

-		</dependency>

-		<dependency>

-			<groupId>com.mchange</groupId>

-			<artifactId>c3p0</artifactId>

-			<version>0.9.5.2</version>

-		</dependency>

-		<dependency>

-			<groupId>io.searchbox</groupId>

-			<artifactId>jest</artifactId>

-			<version>2.0.0</version>

-			<exclusions>

-				<exclusion>

-					<groupId>commons-logging</groupId>

-					<artifactId>commons-logging</artifactId>

-				</exclusion>

-			</exclusions>

-		</dependency>

-		<dependency>

-			<groupId>javax.servlet</groupId>

-			<artifactId>javax.servlet-api</artifactId>

-			<version>3.1.0</version>

-			<scope>provided</scope>

-		</dependency>

-		<dependency>

-			<groupId>junit</groupId>

-			<artifactId>junit</artifactId>

-			<version>4.12</version>

-		</dependency>

-		<dependency>

-			<groupId>commons-io</groupId>

-			<artifactId>commons-io</artifactId>

-			<version>2.4</version>

-			<!--<scope>test</scope>-->

-		</dependency>

-		<dependency>

-			<groupId>com.google.code.bean-matchers</groupId>

-			<artifactId>bean-matchers</artifactId>

-			<version>0.11</version>

-			<scope>test</scope>

-		</dependency>

-		<dependency>

-			<groupId>org.json</groupId>

-			<artifactId>json</artifactId>

-			<version>20160212</version>

-		</dependency>

-		<dependency>

-			<groupId>org.quartz-scheduler</groupId>

-			<artifactId>quartz</artifactId>

-			<version>2.2.1</version>

-			<exclusions>

-				<!-- exclude 0.9.1.1 to avoid dupe of com.mchange:c3p0:0.9.2.1 -->

-				<exclusion>

-					<groupId>c3p0</groupId>

-					<artifactId>c3p0</artifactId>

-				</exclusion>

-			</exclusions>

-		</dependency>

-		<!-- bridge to implement commons-logging using slf4j -->

-		<dependency>

-			<groupId>org.slf4j</groupId>

-			<artifactId>jcl-over-slf4j</artifactId>

-			<version>1.7.12</version>

-		</dependency>

-		<dependency>

-			<groupId>org.springframework</groupId>

-			<artifactId>spring-context-support</artifactId>

-			<version>${springframework.version}</version>

-		</dependency>

-		<dependency>

-			<groupId>org.springframework</groupId>

-			<artifactId>spring-core</artifactId>

-			<version>${springframework.version}</version>

-			<exclusions>

-				<exclusion>

-					<groupId>commons-logging</groupId>

-					<artifactId>commons-logging</artifactId>

-				</exclusion>

-			</exclusions>

-		</dependency>

-		<dependency>

-			<groupId>org.springframework</groupId>

-			<artifactId>spring-test</artifactId>

-			<version>${springframework.version}</version>

-		</dependency>

-		<dependency>

-			<groupId>org.springframework</groupId>

-			<artifactId>spring-tx</artifactId>

-			<version>${springframework.version}</version>

-		</dependency>

-		<dependency>

-			<groupId>org.springframework</groupId>

-			<artifactId>spring-web</artifactId>

-			<version>${springframework.version}</version>

-		</dependency>

-		<dependency>

-			<groupId>org.springframework</groupId>

-			<artifactId>spring-webmvc</artifactId>

-			<version>${springframework.version}</version>

-		</dependency>

-		<dependency>

-			<groupId>org.glassfish.jersey.core</groupId>

-			<artifactId>jersey-client</artifactId>

-			<version>2.23.1</version>

-		</dependency>

-		<dependency>

-			<groupId>org.glassfish.jersey.connectors</groupId>

-			<artifactId>jersey-jetty-connector</artifactId>

-			<version>2.23.1</version>

-		</dependency>

-		<dependency>

-			<groupId>com.fasterxml.jackson.jaxrs</groupId>

-			<artifactId>jackson-jaxrs-json-provider</artifactId>

-			<version>2.6.3</version>

-		</dependency>

-		<dependency>

-			<groupId>commons-beanutils</groupId>

-			<artifactId>commons-beanutils</artifactId>

-			<version>1.9.3</version>

-		</dependency>

-		<dependency>

-			<groupId>com.googlecode.json-simple</groupId>

-			<artifactId>json-simple</artifactId>

-			<version>1.1.1</version>

-		</dependency>

-		<dependency>

-			<groupId>org.seleniumhq.selenium</groupId>

-			<artifactId>selenium-java</artifactId>

-			<version>2.53.1</version>

-			<scope>test</scope>

-		</dependency>

-		<dependency>

-			<groupId>org.seleniumhq.selenium</groupId>

-			<artifactId>selenium-api</artifactId>

-			<version>2.53.1</version>

-			<scope>test</scope>

-		</dependency>

-		<dependency>

-			<groupId>org.testng</groupId>

-			<artifactId>testng</artifactId>

-			<version>6.8</version>

-			<scope>test</scope>

-		</dependency>

-		<dependency>

-			<groupId>org.seleniumhq.selenium</groupId>

-			<artifactId>selenium-firefox-driver</artifactId>

-			<version>2.53.1</version>

-		</dependency>

-		<dependency>

-			<groupId>xml-apis</groupId>

-			<artifactId>xml-apis</artifactId>

-			<version>1.4.01</version>

-		</dependency>

-		<dependency>

-			<groupId>org.yaml</groupId>

-			<artifactId>snakeyaml</artifactId>

-			<version>1.16</version>

-		</dependency>

-	        <dependency>

-	            <groupId>org.skyscreamer</groupId>

-	            <artifactId>jsonassert</artifactId>

-	            <version>1.5.0</version>

-	        </dependency>

-	        <dependency>

-	            <groupId>org.onap.sdc.sdc-tosca</groupId>

-	            <artifactId>sdc-tosca</artifactId>

-            	    <version>1.4.1</version>

-            	    <scope>compile</scope>

-	        </dependency>

-	        <dependency>

-	            <groupId>net.javacrumbs.json-unit</groupId>

-	            <artifactId>json-unit</artifactId>

-	            <version>1.23.0</version>

-	            <scope>test</scope>

-	        </dependency>

-	        <dependency>

-	            <groupId>org.apache.commons</groupId>

-	            <artifactId>commons-text</artifactId>

-	            <version>1.1</version>

-	        </dependency>

-	        <dependency>

-	            <groupId>org.hamcrest</groupId>

-	            <artifactId>java-hamcrest</artifactId>

-	            <version>2.0.0.0</version>

-	            <scope>test</scope>

-	        </dependency>

-	        <dependency>

-	            <groupId>org.togglz</groupId>

-	            <artifactId>togglz-spring-core</artifactId>

-	            <version>2.5.0.Final</version>

-	        </dependency>

-			<dependency>

-				<groupId>org.assertj</groupId>

-				<artifactId>assertj-core</artifactId>

-				<version>3.10.0</version>

-				<scope>compile</scope>

-		 	</dependency>

-		</dependencies>

-</project>

+<?xml version="1.0"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+
+	<!-- This is the Maven project object model (POM) file for VID web application 
+		based on the ECOMP SDK distribution. This file stands alone; it does not 
+		inherit from a parent maven module. -->
+	<groupId>org.onap.vid</groupId>
+	<artifactId>vid-app-common</artifactId>
+	<version>4.0.0-SNAPSHOT</version>
+	<packaging>war</packaging>
+	<name>VID Common</name>
+	<description>VID Common code for opensource version</description>
+
+	<properties>
+		<encoding>UTF-8</encoding>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+		<epsdk.version>2.4.0</epsdk.version>
+		<springframework.version>4.2.9.RELEASE</springframework.version>
+		<hibernate.version>4.3.11.Final</hibernate.version>
+		<!-- Skip assembling the zip by default -->
+		<skipassembly>true</skipassembly>
+		<!-- Tests usually require some setup that maven cannot do, so skip. -->
+		<skiptests>false</skiptests>
+		<nexusproxy>https://nexus.onap.org</nexusproxy>
+		<snapshotNexusPath>/content/repositories/snapshots/</snapshotNexusPath>
+		<releaseNexusPath>/content/repositories/releases/</releaseNexusPath>
+		<stagingNexusPath>/content/repositories/staging/</stagingNexusPath>
+		<sitePath>/content/sites/site/org/onap/vid/${project.version}</sitePath>
+	</properties>
+
+
+	<!-- this should be commented for local debugging -->
+	<!-- <deployenv>local</deployenv> -->
+
+	<repositories>
+		<repository>
+			<id>ecomp-releases</id>
+			<name>VID Release Repository</name>
+			<url>${nexusproxy}${releaseNexusPath}</url>
+		</repository>
+		<repository>
+			<id>ecomp-snapshots</id>
+			<name>VID Snapshot Repository</name>
+			<url>${nexusproxy}${snapshotNexusPath}</url>
+		</repository>
+		<repository>
+			<id>ecomp-staging</id>
+			<name>VID Staging Repository</name>
+			<url>${nexusproxy}${stagingNexusPath}</url>
+		</repository>
+		<repository>
+			<!-- Snapshots repository has ECOMP snapshot artifacts -->
+			<id>oss-snapshots</id>
+			<name>oss Central - Snapshots</name>
+			<url>https://oss.sonatype.org/service/local/repositories/releases/content/</url>
+		</repository>
+
+	</repositories>
+	<distributionManagement>
+		<repository>
+			<id>ecomp-releases</id>
+			<name>VID Release Repository</name>
+			<url>${nexusproxy}/${releaseNexusPath}</url>
+		</repository>
+		<snapshotRepository>
+			<id>ecomp-snapshots</id>
+			<name>VID Snapshot Repository</name>
+			<url>${nexusproxy}/${snapshotNexusPath}</url>
+		</snapshotRepository>
+		<!-- added for javadoc -->
+		<site>
+			<id>ecomp-site</id>
+			<url>dav:${nexusproxy}${sitePath}</url>
+		</site>
+	</distributionManagement>
+
+	<build>
+		<finalName>vid-common</finalName>
+
+		<plugins>
+			<plugin>
+				<groupId>org.sonatype.plugins</groupId>
+				<artifactId>nexus-staging-maven-plugin</artifactId>
+				<version>1.6.7</version>
+				<extensions>true</extensions>
+				<configuration>
+					<nexusUrl>${nexusproxy}</nexusUrl>
+					<stagingProfileId>176c31dfe190a</stagingProfileId>
+					<serverId>ecomp-staging</serverId>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.jacoco</groupId>
+				<artifactId>jacoco-maven-plugin</artifactId>
+				<version>0.7.9</version>
+				<executions>
+					<execution>
+						<id>default-prepare-agent</id>
+						<goals>
+							<goal>prepare-agent</goal>
+						</goals>
+					</execution>
+					<execution>
+						<id>default-report</id>
+						<goals>
+							<goal>report</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.tomcat.maven</groupId>
+				<artifactId>tomcat6-maven-plugin</artifactId>
+				<version>2.2</version>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.tomcat.maven</groupId>
+				<artifactId>tomcat7-maven-plugin</artifactId>
+				<version>2.2</version>
+			</plugin>
+
+			<!-- Generate POJOs from MSO json schema -->
+			<plugin>
+				<groupId>org.jsonschema2pojo</groupId>
+				<artifactId>jsonschema2pojo-maven-plugin</artifactId>
+				<version>0.4.23</version>
+				<configuration>
+					<sourceDirectory>${basedir}/src/main/resources/json/mso</sourceDirectory>
+					<targetPackage>org.onap.vid.domain.mso</targetPackage>
+					<outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
+				</configuration>
+				<executions>
+					<execution>
+						<goals>
+							<goal>generate</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.1</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<version>2.19.1</version>
+				<configuration>
+					<skipTests>${skiptests}</skipTests>
+					<includes>
+						<include>**/Test*.java</include>
+						<include>**/*Test.java</include>
+						<include>**/*TestCase.java</include>
+					</includes>
+					<excludes>
+						<exclude>**/selenium/*.java</exclude>
+						<exclude>**/integrationTest/*.java</exclude>
+					</excludes>
+					<additionalClasspathElements>
+						<additionalClasspathElement>${basedir}/war</additionalClasspathElement>
+					</additionalClasspathElements>
+					<systemPropertyVariables>
+						<container.classpath>classpath:</container.classpath>
+					</systemPropertyVariables>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<configuration>
+					<skipAssembly>${skipassembly}</skipAssembly>
+					<descriptors>
+						<descriptor>${basedir}/distribution.xml</descriptor>
+					</descriptors>
+				</configuration>
+				<executions>
+					<execution>
+						<id>make-assembly</id>
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-war-plugin</artifactId>
+				<version>3.0.0</version>
+				<configuration>
+					<!-- Build a jar with all the Java classes -->
+					<attachClasses>true</attachClasses>
+					<!-- Do not put any jars in the war -->
+					<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-site-plugin</artifactId>
+				<version>3.6</version>
+				<dependencies>
+					<dependency>
+						<groupId>org.apache.maven.wagon</groupId>
+						<artifactId>wagon-webdav-jackrabbit</artifactId>
+						<version>2.10</version>
+					</dependency>
+				</dependencies>
+			</plugin>
+			<plugin>
+				<groupId>pl.project13.maven</groupId>
+				<artifactId>git-commit-id-plugin</artifactId>
+				<version>2.2.4</version>
+				<executions>
+					<execution>
+						<id>get-the-git-infos</id>
+						<goals>
+							<goal>revision</goal>
+						</goals>
+					</execution>
+				</executions>
+				<configuration>
+					<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
+					<dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat>
+					<dateFormatTimeZone>${user.timezone}</dateFormatTimeZone>
+					<generateGitPropertiesFile>true</generateGitPropertiesFile>
+					<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
+					<includeOnlyProperties>
+						 <includeOnlyProperty>^git.commit.id$</includeOnlyProperty>
+						 <includeOnlyProperty>^git.commit.message.short$</includeOnlyProperty>
+						 <includeOnlyProperty>^git.commit.time$</includeOnlyProperty>
+					</includeOnlyProperties>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+	<reporting>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.10.4</version>
+				<configuration>
+					<failOnError>false</failOnError>
+					<doclet>org.umlgraph.doclet.UmlGraphDoc</doclet>
+					<docletArtifact>
+						<groupId>org.umlgraph</groupId>
+						<artifactId>umlgraph</artifactId>
+						<version>5.6</version>
+					</docletArtifact>
+					<additionalparam>-views</additionalparam>
+					<useStandardDocletOptions>true</useStandardDocletOptions>
+				</configuration>
+			</plugin>
+		</plugins>
+	</reporting>
+
+	<dependencies>
+	
+		<dependency>
+		    <groupId>com.opencsv</groupId>
+		    <artifactId>opencsv</artifactId>
+		    <version>4.1</version>
+		</dependency>
+			
+		<!-- HTTP client -->
+
+		<dependency>
+			<groupId>io.joshworks.unirest</groupId>
+			<artifactId>unirest-java</artifactId>
+			<version>0.2.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpclient</artifactId>
+			<version>4.3.6</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpasyncclient</artifactId>
+			<version>4.0.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpmime</artifactId>
+			<version>4.3.6</version>
+		</dependency>
+		<dependency>
+			<groupId>com.xebialabs.restito</groupId>
+			<artifactId>restito</artifactId>
+			<version>0.9.3</version>
+			<scope>test</scope>
+		</dependency>
+
+		<!-- Helpers -->
+		<dependency>
+			<groupId>io.vavr</groupId>
+			<artifactId>vavr</artifactId>
+			<version>0.9.2</version>
+		</dependency>
+
+		<!-- SDK overlay war -->
+		<dependency>
+			<groupId>org.onap.portal.sdk</groupId>
+			<artifactId>epsdk-app-overlay</artifactId>
+			<version>${epsdk.version}</version>
+			<type>war</type>
+		</dependency>
+		<dependency>
+			<groupId>org.onap.portal.sdk</groupId>
+			<artifactId>epsdk-app-common</artifactId>
+			<version>${epsdk.version}</version>
+			<type>jar</type>
+		</dependency>
+
+		<dependency>
+			<groupId>org.onap.portal.sdk</groupId>
+			<artifactId>epsdk-core</artifactId>
+			<version>${epsdk.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.onap.portal.sdk</groupId>
+			<artifactId>epsdk-analytics</artifactId>
+			<version>${epsdk.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>com.lowagie</groupId>
+					<artifactId>itext</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.onap.portal.sdk</groupId>
+			<artifactId>epsdk-workflow</artifactId>
+			<version>${epsdk.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.att.eelf</groupId>
+			<artifactId>eelf-core</artifactId>
+			<version>1.0.0</version>
+			<exclusions>
+				<exclusion>
+					<artifactId>powermock-api-mockito</artifactId>
+					<groupId>org.powermock</groupId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>ch.qos.logback</groupId>
+			<artifactId>logback-core</artifactId>
+			<version>1.2.3</version>
+		</dependency>
+		<dependency>
+			<groupId>ch.qos.logback</groupId>
+			<artifactId>logback-classic</artifactId>
+			<version>1.2.3</version>
+		</dependency>
+
+		<!-- Mapper -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-annotations</artifactId>
+			<version>2.6.3</version>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-core</artifactId>
+			<version>2.8.6</version>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-databind</artifactId>
+			<version>2.6.7.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.codehaus.jackson</groupId>
+			<artifactId>jackson-mapper-asl</artifactId>
+			<version>1.9.13</version>
+		</dependency>
+		<dependency>
+			<groupId>com.mchange</groupId>
+			<artifactId>c3p0</artifactId>
+			<version>0.9.5.2</version>
+		</dependency>
+		<dependency>
+			<groupId>io.searchbox</groupId>
+			<artifactId>jest</artifactId>
+			<version>2.0.0</version>
+			<exclusions>
+				<exclusion>
+					<groupId>commons-logging</groupId>
+					<artifactId>commons-logging</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>javax.servlet-api</artifactId>
+			<version>3.1.0</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.12</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-io</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>2.4</version>
+			<!--<scope>test</scope>-->
+		</dependency>
+		<dependency>
+			<groupId>com.google.code.bean-matchers</groupId>
+			<artifactId>bean-matchers</artifactId>
+			<version>0.11</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.json</groupId>
+			<artifactId>json</artifactId>
+			<version>20160212</version>
+		</dependency>
+		<dependency>
+			<groupId>org.quartz-scheduler</groupId>
+			<artifactId>quartz</artifactId>
+			<version>2.2.1</version>
+			<exclusions>
+				<!-- exclude 0.9.1.1 to avoid dupe of com.mchange:c3p0:0.9.2.1 -->
+				<exclusion>
+					<groupId>c3p0</groupId>
+					<artifactId>c3p0</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<!-- bridge to implement commons-logging using slf4j -->
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>jcl-over-slf4j</artifactId>
+			<version>1.7.12</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context-support</artifactId>
+			<version>${springframework.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-core</artifactId>
+			<version>${springframework.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>commons-logging</groupId>
+					<artifactId>commons-logging</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-test</artifactId>
+			<version>${springframework.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-tx</artifactId>
+			<version>${springframework.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-web</artifactId>
+			<version>${springframework.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-webmvc</artifactId>
+			<version>${springframework.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.glassfish.jersey.core</groupId>
+			<artifactId>jersey-client</artifactId>
+			<version>2.23.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.glassfish.jersey.connectors</groupId>
+			<artifactId>jersey-jetty-connector</artifactId>
+			<version>2.23.1</version>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.jaxrs</groupId>
+			<artifactId>jackson-jaxrs-json-provider</artifactId>
+			<version>2.6.3</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-beanutils</groupId>
+			<artifactId>commons-beanutils</artifactId>
+			<version>1.9.3</version>
+		</dependency>
+		<dependency>
+			<groupId>com.googlecode.json-simple</groupId>
+			<artifactId>json-simple</artifactId>
+			<version>1.1.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.seleniumhq.selenium</groupId>
+			<artifactId>selenium-java</artifactId>
+			<version>2.53.1</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.seleniumhq.selenium</groupId>
+			<artifactId>selenium-api</artifactId>
+			<version>2.53.1</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.testng</groupId>
+			<artifactId>testng</artifactId>
+			<version>6.8</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-core</artifactId>
+			<version>2.23.0</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.seleniumhq.selenium</groupId>
+			<artifactId>selenium-firefox-driver</artifactId>
+			<version>2.53.1</version>
+		</dependency>
+		<dependency>
+			<groupId>xml-apis</groupId>
+			<artifactId>xml-apis</artifactId>
+			<version>1.4.01</version>
+		</dependency>
+		<dependency>
+			<groupId>org.yaml</groupId>
+			<artifactId>snakeyaml</artifactId>
+			<version>1.16</version>
+		</dependency>
+	        <dependency>
+	            <groupId>org.skyscreamer</groupId>
+	            <artifactId>jsonassert</artifactId>
+	            <version>1.5.0</version>
+	        </dependency>
+	        <dependency>
+	            <groupId>org.onap.sdc.sdc-tosca</groupId>
+	            <artifactId>sdc-tosca</artifactId>
+            	    <version>1.4.1</version>
+            	    <scope>compile</scope>
+	        </dependency>
+	        <dependency>
+	            <groupId>net.javacrumbs.json-unit</groupId>
+	            <artifactId>json-unit</artifactId>
+	            <version>1.23.0</version>
+	            <scope>test</scope>
+	        </dependency>
+	        <dependency>
+	            <groupId>org.apache.commons</groupId>
+	            <artifactId>commons-text</artifactId>
+	            <version>1.1</version>
+	        </dependency>
+	        <dependency>
+	            <groupId>org.hamcrest</groupId>
+	            <artifactId>java-hamcrest</artifactId>
+	            <version>2.0.0.0</version>
+	            <scope>test</scope>
+	        </dependency>
+	        <dependency>
+	            <groupId>org.togglz</groupId>
+	            <artifactId>togglz-spring-core</artifactId>
+	            <version>2.5.0.Final</version>
+	        </dependency>
+            <dependency>
+				<groupId>org.assertj</groupId>
+				<artifactId>assertj-core</artifactId>
+				<version>3.10.0</version>
+				<scope>compile</scope>
+		 	</dependency>
+    </dependencies>
+</project>
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
index 06e0f01..baf92b8 100644
--- a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
+++ b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
@@ -8,16 +8,17 @@
 import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.vid.aai.model.AaiGetAicZone.AicZones;
 import org.onap.vid.aai.model.*;
 import org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.*;
 import org.onap.vid.aai.model.AaiGetOperationalEnvironments.OperationalEnvironmentList;
 import org.onap.vid.aai.model.AaiGetPnfs.Pnf;
 import org.onap.vid.aai.model.AaiGetServicesRequestModel.GetServicesAAIRespone;
-import org.onap.vid.aai.model.AaiGetTenatns.GetTenantsResponse;
 import org.onap.vid.aai.model.Relationship;
 import org.onap.vid.aai.model.RelationshipData;
 import org.onap.vid.aai.model.RelationshipList;
+import org.onap.vid.aai.model.AaiGetTenatns.GetTenantsResponse;
 import org.onap.vid.aai.util.AAIRestInterface;
 import org.onap.vid.aai.util.VidObjectMapperType;
 import org.onap.vid.exceptions.GenericUncheckedException;
@@ -26,7 +27,6 @@
 import org.onap.vid.model.probes.ExternalComponentStatus;
 import org.onap.vid.model.probes.HttpRequestMetadata;
 import org.onap.vid.utils.Logging;
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.springframework.web.util.UriUtils;
 
 import javax.inject.Inject;
@@ -37,7 +37,10 @@
 import java.net.URLEncoder;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.UUID;
 
 import static java.util.Collections.emptyList;
 import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;
@@ -297,6 +300,10 @@
 
     @Override
     public Response getVersionByInvariantId(List<String> modelInvariantId) {
+        if (modelInvariantId.isEmpty()) {
+            throw new GenericUncheckedException("Zero invariant-ids provided to getVersionByInvariantId; request is rejected as this will cause full models listing");
+        }
+
         StringBuilder sb = new StringBuilder();
         for (String id : modelInvariantId){
             sb.append(MODEL_INVARIANT_ID);
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/AaiOverTLSClient.java b/vid-app-common/src/main/java/org/onap/vid/aai/AaiOverTLSClient.java
new file mode 100644
index 0000000..6e25e27
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/aai/AaiOverTLSClient.java
@@ -0,0 +1,101 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2018 Nokia 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.vid.aai;
+
+import static org.onap.vid.aai.AaiOverTLSClientInterface.HEADERS.ACCEPT;
+import static org.onap.vid.aai.AaiOverTLSClientInterface.HEADERS.CONTENT_TYPE;
+import static org.onap.vid.aai.AaiOverTLSClientInterface.HEADERS.FROM_APP_ID_HEADER;
+import static org.onap.vid.aai.AaiOverTLSClientInterface.HEADERS.REQUEST_ID;
+import static org.onap.vid.aai.AaiOverTLSClientInterface.HEADERS.TRANSACTION_ID_HEADER;
+
+import io.joshworks.restclient.http.HttpResponse;
+import io.vavr.collection.HashMap;
+import java.nio.charset.StandardCharsets;
+import java.util.Base64;
+import java.util.Collections;
+import java.util.Map;
+import javax.ws.rs.core.MediaType;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.vid.aai.model.AaiNodeQueryResponse;
+import org.onap.vid.aai.model.ResourceType;
+import org.onap.vid.aai.util.AAIProperties;
+import org.onap.vid.client.SyncRestClientInterface;
+import org.onap.vid.model.SubscriberList;
+
+public class AaiOverTLSClient implements AaiOverTLSClientInterface {
+
+    private final AaiOverTLSPropertySupplier propertySupplier;
+    private SyncRestClientInterface syncRestClient;
+    private boolean useClientCert;
+    private static final String CALLER_APP_ID = "VidAaiController";
+    private String urlBase;
+
+    public AaiOverTLSClient(SyncRestClientInterface syncRestClient, AaiOverTLSPropertySupplier propertySupplier) {
+        this(syncRestClient, propertySupplier, SystemProperties.getProperty(AAIProperties.AAI_SERVER_URL));
+    }
+
+    AaiOverTLSClient(SyncRestClientInterface syncRestClient, AaiOverTLSPropertySupplier propertySupplier, String baseUrl) {
+        this.syncRestClient = syncRestClient;
+        this.propertySupplier = propertySupplier;
+        this.urlBase = baseUrl;
+    }
+
+    @Override
+    public void setUseClientCert(boolean useClientCert) {
+        this.useClientCert = useClientCert;
+    }
+
+    @Override
+    public HttpResponse<AaiNodeQueryResponse> searchNodeTypeByName(String name, ResourceType type) {
+        String uri = urlBase + String.format(URIS.NODE_TYPE_BY_NAME, type.getAaiFormat(), type.getNameFilter(), name);
+        return syncRestClient.get(uri, getRequestHeaders(), Collections.emptyMap(), AaiNodeQueryResponse.class);
+    }
+
+    @Override
+    public HttpResponse<SubscriberList> getAllSubscribers() {
+        String uri = urlBase + String.format(URIS.SUBSCRIBERS, 0);
+        return syncRestClient.get(uri, getRequestHeaders(), Collections.emptyMap(), SubscriberList.class);
+    }
+
+    private Map<String, String> getRequestHeaders() {
+        Map<String, String> result = HashMap.of(
+                TRANSACTION_ID_HEADER, propertySupplier.getRandomUUID(),
+                FROM_APP_ID_HEADER, CALLER_APP_ID,
+                CONTENT_TYPE, MediaType.APPLICATION_JSON,
+                REQUEST_ID, propertySupplier.getRequestId(),
+                ACCEPT, MediaType.APPLICATION_JSON)
+                .toJavaMap();
+        result.putAll(getAuthorizationHeader());
+        return result;
+    }
+
+    private Map<String, String> getAuthorizationHeader() {
+        if (!useClientCert) {
+            String vidUsername = propertySupplier.getUsername();
+            String vidPassword = propertySupplier.getPassword();
+            String encoded = Base64.getEncoder()
+                    .encodeToString((vidUsername + ":" + vidPassword).getBytes(StandardCharsets.UTF_8));
+            return HashMap.of("Authorization", "Basic " + encoded).toJavaMap();
+        }
+        return HashMap.<String, String>empty().toJavaMap();
+    }
+
+}
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/AaiOverTLSClientInterface.java b/vid-app-common/src/main/java/org/onap/vid/aai/AaiOverTLSClientInterface.java
new file mode 100644
index 0000000..ad43746
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/aai/AaiOverTLSClientInterface.java
@@ -0,0 +1,51 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2018 Nokia. 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.vid.aai;
+
+import io.joshworks.restclient.http.HttpResponse;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.vid.aai.model.AaiNodeQueryResponse;
+import org.onap.vid.aai.model.ResourceType;
+import org.onap.vid.model.SubscriberList;
+
+public interface AaiOverTLSClientInterface {
+
+    class URIS {
+
+        static final String SUBSCRIBERS = "business/customers?subscriber-type=INFRA&depth=%s";
+        static final String NODE_TYPE_BY_NAME = "search/nodes-query?search-node-type=%s&filter=%s:EQUALS:%s";
+    }
+
+    class HEADERS {
+        static final String TRANSACTION_ID_HEADER = "X-TransactionId";
+        static final String FROM_APP_ID_HEADER = "X-FromAppId";
+        static final String CONTENT_TYPE = "Content-Type";
+        static final String REQUEST_ID = SystemProperties.ECOMP_REQUEST_ID;
+        static final String ACCEPT = "Accept";
+    }
+
+    void setUseClientCert(boolean useClientCert);
+
+    HttpResponse<AaiNodeQueryResponse> searchNodeTypeByName(String name, ResourceType type);
+
+    HttpResponse<SubscriberList> getAllSubscribers();
+
+}
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/AaiOverTLSPropertySupplier.java b/vid-app-common/src/main/java/org/onap/vid/aai/AaiOverTLSPropertySupplier.java
new file mode 100644
index 0000000..33b44b1
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/aai/AaiOverTLSPropertySupplier.java
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2018 Nokia 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.vid.aai;
+
+import java.util.UUID;
+import org.eclipse.jetty.util.security.Password;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.vid.aai.util.AAIProperties;
+import org.onap.vid.utils.Logging;
+
+public class AaiOverTLSPropertySupplier {
+
+    public String getUsername() {
+        return SystemProperties.getProperty(AAIProperties.AAI_VID_USERNAME);
+    }
+
+    public String getPassword() {
+        return Password.deobfuscate(SystemProperties.getProperty(AAIProperties.AAI_VID_PASSWD_X));
+    }
+
+    public String getRequestId() {
+        return Logging.extractOrGenerateRequestId();
+    }
+
+    public String getRandomUUID(){
+       return UUID.randomUUID().toString();
+    }
+
+}
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/exceptions/InvalidAAIResponseException.java b/vid-app-common/src/main/java/org/onap/vid/aai/exceptions/InvalidAAIResponseException.java
index f80cae5..0e40369 100644
--- a/vid-app-common/src/main/java/org/onap/vid/aai/exceptions/InvalidAAIResponseException.java
+++ b/vid-app-common/src/main/java/org/onap/vid/aai/exceptions/InvalidAAIResponseException.java
@@ -1,3 +1,24 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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.vid.aai.exceptions;
 
 import org.onap.vid.aai.AaiResponse;
@@ -10,4 +31,8 @@
     public InvalidAAIResponseException(AaiResponse aaiResponse) {
         super(String.format("errorCode: %d, raw: %s", aaiResponse.getHttpCode(), aaiResponse.getErrorMessage()));
     }
+
+    public InvalidAAIResponseException(int statusCode, String message) {
+        super(String.format("errorCode: %d, raw: %s", statusCode, message));
+    }
 }
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/model/ServiceInstance.java b/vid-app-common/src/main/java/org/onap/vid/aai/model/ServiceInstance.java
deleted file mode 100644
index 381f9bc..0000000
--- a/vid-app-common/src/main/java/org/onap/vid/aai/model/ServiceInstance.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.onap.vid.aai.model;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-public class ServiceInstance {
-	
-	@JsonProperty("service-instance-id")
-	public String serviceInstanceId;
-
-	@JsonProperty("service-instance-name")
-	public String serviceInstanceName;
-	
-	@JsonProperty("persona-model-id")
-	public String personaModelId;
-	
-	@JsonProperty("persona-model-version")
-	public String personaModelVersion;
-	
-	@JsonProperty("resource-version")
-	public String resourceVersion;
-	
-	@JsonProperty("orchestration-status")
-	public String orchestrationStatus;
-
-	
-}
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/model/ServiceInstances.java b/vid-app-common/src/main/java/org/onap/vid/aai/model/ServiceInstances.java
deleted file mode 100644
index 0fced4c..0000000
--- a/vid-app-common/src/main/java/org/onap/vid/aai/model/ServiceInstances.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.onap.vid.aai.model;
-
-import java.util.List;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-public class ServiceInstances {
-	
-	@JsonProperty("service-instance")
-	public List<ServiceInstance> serviceInstance;
-
-}
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/model/ServiceSubscription.java b/vid-app-common/src/main/java/org/onap/vid/aai/model/ServiceSubscription.java
deleted file mode 100644
index 91582e8..0000000
--- a/vid-app-common/src/main/java/org/onap/vid/aai/model/ServiceSubscription.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.onap.vid.aai.model;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-public class ServiceSubscription {
-	
-    @JsonProperty("service-type")
-    public String serviceType;
-
-    @JsonProperty("resource-version")
-    public String resourceVersion;
-
-    @JsonProperty("service-instances")
-    public ServiceInstances serviceInstances;
-
-
-}
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/model/Services.java b/vid-app-common/src/main/java/org/onap/vid/aai/model/Services.java
deleted file mode 100644
index 3ba4b22..0000000
--- a/vid-app-common/src/main/java/org/onap/vid/aai/model/Services.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.onap.vid.aai.model;
-
-import java.util.List;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-public class Services {
-    @JsonProperty("global-customer-id")
-    public String globalCustomerId;
-
-    @JsonProperty("subscriber-name")
-    public String subscriberName;
-
-    @JsonProperty("subscriber-type")
-    public String subscriberType;
-
-    @JsonProperty("resource-version")
-    public String resourceVersion;
-    
-    @JsonProperty("service-subscriptions")
-    public List<ServiceSubscription> serviceSubscriptions;
-
-
-}
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl2.java b/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl2.java
index 17fb29b..57d80ce 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl2.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl2.java
@@ -1,7 +1,6 @@
 package org.onap.vid.asdc.parser;
 
-import org.onap.vid.asdc.beans.Service;
-import org.onap.vid.model.*;
+import org.apache.commons.lang3.StringUtils;
 import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
 import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
 import org.onap.sdc.tosca.parser.impl.FilterType;
@@ -11,6 +10,8 @@
 import org.onap.sdc.toscaparser.api.*;
 import org.onap.sdc.toscaparser.api.elements.Metadata;
 import org.onap.sdc.toscaparser.api.parameters.Input;
+import org.onap.vid.asdc.beans.Service;
+import org.onap.vid.model.*;
 
 import java.nio.file.Path;
 import java.util.*;
@@ -417,7 +418,22 @@
     private boolean isInputMatchesToGroup(List<Property> annotationProperties, org.onap.vid.model.Group group){
         for(Property property: annotationProperties){
             if(property.getName().equals(VF_MODULE_LABEL)){
-                return getPropertyValueAsString(property).equals(group.getProperties().getVfModuleLabel());
+                final Object values = property.getValue();
+                final String vfModuleLabel = group.getProperties().getVfModuleLabel();
+                if (values instanceof List) {
+                    if (listContainsAsString((List) values, vfModuleLabel)) return true;
+                } else {
+                    return getPropertyValueAsString(property).equals(vfModuleLabel);
+                }
+            }
+        }
+        return false;
+    }
+
+    private boolean listContainsAsString(List list, String value) {
+        for (Object v : list) {
+            if (StringUtils.equals(v.toString(), value)) {
+                return true;
             }
         }
         return false;
@@ -428,7 +444,7 @@
     }
 
     private String removeSquareBrackets(String stringWithSquareBrackets){
-        return stringWithSquareBrackets.substring(1, stringWithSquareBrackets.length()-1);
+        return stringWithSquareBrackets.replaceAll("(^\\[|\\]$)", "");
     }
 
     private GroupProperties extractVfModuleProperties(Group group, ISdcCsarHelper csarHelper){
@@ -507,7 +523,10 @@
         for (Property property : properties) {
             //special handling to necessary sub-property "ecomp_generated_naming"
             if(property.getName().equals("nf_naming")){
-                propertiesMap.put(removeSquareBrackets(((LinkedHashMap)(property.getValue())).keySet().toString()) ,((LinkedHashMap)(property.getValue())).get("ecomp_generated_naming").toString());
+                final Object ecompGeneratedNaming = ((Map) (property.getValue())).get("ecomp_generated_naming");
+                if (ecompGeneratedNaming != null) {
+                    propertiesMap.put("ecomp_generated_naming", ecompGeneratedNaming.toString());
+                }
             }
             propertiesMap.put(property.getName(), property.getValue().toString());
         }
diff --git a/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClient.java b/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClient.java
index a3ff5f9..9e50c44 100644
--- a/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClient.java
+++ b/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClient.java
@@ -25,42 +25,33 @@
 import io.joshworks.restclient.http.RestClient;
 import io.joshworks.restclient.http.exceptions.RestClientException;
 import io.joshworks.restclient.http.mapper.ObjectMapper;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import io.joshworks.restclient.request.GetRequest;
 import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
-import org.eclipse.jetty.util.security.Password;
-import org.apache.http.impl.client.HttpClients;
 import org.apache.http.conn.ssl.SSLContexts;
-import io.vavr.CheckedFunction1;
-import lombok.SneakyThrows;
-import lombok.val;
-
-import java.security.UnrecoverableKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.security.KeyManagementException;
-import java.security.cert.CertificateException;
-import javax.net.ssl.SSLException;
-import java.security.KeyStoreException;
-import java.text.SimpleDateFormat;
-import javax.net.ssl.SSLContext;
-import java.io.FileInputStream;
-import java.security.KeyStore;
-import java.text.DateFormat;
-import java.io.InputStream;
-import java.io.IOException;
-import java.util.Date;
-import java.util.Map;
-import java.io.File;
+import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.eclipse.jetty.util.security.Password;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.portalsdk.core.util.SystemProperties;
 import org.onap.vid.properties.VidProperties;
 
-public class SyncRestClient implements SyncRestClientInterface {
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLException;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.KeyManagementException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.UnrecoverableKeyException;
+import java.security.cert.CertificateException;
+import java.util.Map;
 
-    private static final String CANNOT_INITIALIZE_CUSTOM_HTTP_CLIENT = "Cannot initialize custom http client from current configuration. Using default one.";
-    private static final String TRY_TO_CALL_OVER_HTTP = "SSL Handshake problem occured. Will try to retry over Http.";
+public class SyncRestClient implements SyncRestClientInterface {
     private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SyncRestClient.class);
-    private static final DateFormat DATE_FORMAT = new SimpleDateFormat("HH:mm:ss:SSSS");
     private static final String[] SUPPORTED_SSL_VERSIONS = {"TLSv1", "TLSv1.2"};
     private static final String HTTPS_SCHEMA = "https://";
     private static final String HTTP_SCHEMA = "http://";
@@ -91,13 +82,13 @@
     @Override
     public <T> HttpResponse<T> post(String url, Map<String, String> headers, Object body, Class<T> responseClass) {
         return callWithRetryOverHttp(url,
-            url2 -> restClient.post(url2).headers(headers).body(body).asObject(responseClass));
+                url2 -> restClient.post(url2).headers(headers).body(body).asObject(responseClass));
     }
 
     @Override
     public HttpResponse<JsonNode> get(String url, Map<String, String> headers, Map<String, String> routeParams) {
         return callWithRetryOverHttp(url, url2 -> {
-            val getRequest = restClient.get(url2).headers(headers);
+            GetRequest getRequest = restClient.get(url2).headers(headers);
             routeParams.forEach(getRequest::routeParam);
             return getRequest.asJson();
         });
@@ -105,9 +96,9 @@
 
     @Override
     public <T> HttpResponse<T> get(String url, Map<String, String> headers, Map<String, String> routeParams,
-        Class<T> responseClass) {
+                                   Class<T> responseClass) {
         return callWithRetryOverHttp(url, url2 -> {
-            val getRequest = restClient.get(url2).headers(headers);
+            GetRequest getRequest = restClient.get(url2).headers(headers);
             routeParams.forEach(getRequest::routeParam);
             return getRequest.asObject(responseClass);
         });
@@ -115,9 +106,9 @@
 
     @Override
     public HttpResponse<InputStream> getStream(String url, Map<String, String> headers,
-        Map<String, String> routeParams) {
+                                               Map<String, String> routeParams) {
         return callWithRetryOverHttp(url, url2 -> {
-            val getRequest = restClient.get(url2).headers(headers);
+            GetRequest getRequest = restClient.get(url2).headers(headers);
             routeParams.forEach(getRequest::routeParam);
             return getRequest.asBinary();
         });
@@ -131,7 +122,7 @@
     @Override
     public <T> HttpResponse<T> put(String url, Map<String, String> headers, Object body, Class<T> responseClass) {
         return callWithRetryOverHttp(url,
-            url2 -> restClient.put(url2).headers(headers).body(body).asObject(responseClass));
+                url2 -> restClient.put(url2).headers(headers).body(body).asObject(responseClass));
     }
 
     @Override
@@ -154,81 +145,100 @@
         restClient.shutdown();
     }
 
-    @SneakyThrows
-    private <T> HttpResponse<T> callWithRetryOverHttp(String url,
-                                                      CheckedFunction1<String, HttpResponse<T>> httpRequest) {
+    private <T> HttpResponse<T> callWithRetryOverHttp(String url, HttpRequest<T> httpRequest) {
+        try {
+            return callWithRetryOverHttpThrows(url, httpRequest);
+        } catch (IOException e) {
+            throw new SyncRestClientException("IOException while calling rest service", e);
+        }
+    }
+
+    private <T> HttpResponse<T> callWithRetryOverHttpThrows(String url, HttpRequest<T> httpRequest) throws IOException {
         try {
             return httpRequest.apply(url);
         } catch (RestClientException e) {
-            if (e.getCause() instanceof SSLException) {
-                logger.warn(EELFLoggerDelegate.debugLogger,
-                        DATE_FORMAT.format(new Date()) + TRY_TO_CALL_OVER_HTTP, e);
+            if (causedBySslHandshakeError(e)) {
+                logger.warn(EELFLoggerDelegate.debugLogger, "SSL Handshake problem occured. Will try to retry over Http.", e);
                 return httpRequest.apply(url.replaceFirst(HTTPS_SCHEMA, HTTP_SCHEMA));
             }
             throw e;
         }
     }
 
+    private boolean causedBySslHandshakeError(RestClientException exception) {
+        return exception.getCause() instanceof SSLException;
+    }
+
     private ObjectMapper defaultObjectMapper() {
-        val objectMapper = new org.codehaus.jackson.map.ObjectMapper();
+        org.codehaus.jackson.map.ObjectMapper objectMapper = new org.codehaus.jackson.map.ObjectMapper();
 
         return new ObjectMapper() {
             @Override
-            @SneakyThrows
             public <T> T readValue(String value, Class<T> aClass) {
-                return objectMapper.readValue(value, aClass);
+                try {
+                    return objectMapper.readValue(value, aClass);
+                } catch (IOException e) {
+                    throw new SyncRestClientException("IOException while reading value", e);
+                }
             }
 
             @Override
-            @SneakyThrows
             public String writeValue(Object value) {
-                return objectMapper.writeValueAsString(value);
+                try {
+                    return objectMapper.writeValueAsString(value);
+                } catch (IOException e) {
+                    throw new SyncRestClientException("IOException while writing value", e);
+                }
             }
         };
     }
 
     private CloseableHttpClient defaultHttpClient() {
         try {
-            val trustStorePath = SystemProperties.getProperty(VidProperties.VID_TRUSTSTORE_FILENAME);
-            val trustStorePass = SystemProperties.getProperty(VidProperties.VID_TRUSTSTORE_PASSWD_X);
-            val decryptedTrustStorePass = Password.deobfuscate(trustStorePass);
+            String trustStorePath = SystemProperties.getProperty(VidProperties.VID_TRUSTSTORE_FILENAME);
+            String trustStorePass = SystemProperties.getProperty(VidProperties.VID_TRUSTSTORE_PASSWD_X);
+            String decryptedTrustStorePass = Password.deobfuscate(trustStorePass);
 
-            val trustStore = loadTruststore(trustStorePath, decryptedTrustStorePass);
-            val sslContext = trustOwnCACerts(decryptedTrustStorePass, trustStore);
-            val sslSf = allowTLSProtocols(sslContext);
+            KeyStore trustStore = loadTruststore(trustStorePath, decryptedTrustStorePass);
+            SSLContext sslContext = trustOwnCACerts(decryptedTrustStorePass, trustStore);
+            SSLConnectionSocketFactory sslSf = allowTLSProtocols(sslContext);
 
             return HttpClients.custom().setSSLSocketFactory(sslSf).build();
         } catch (IOException | CertificateException | UnrecoverableKeyException | NoSuchAlgorithmException | KeyStoreException | KeyManagementException e) {
-            logger.warn(EELFLoggerDelegate.debugLogger,
-                DATE_FORMAT.format(new Date()) + CANNOT_INITIALIZE_CUSTOM_HTTP_CLIENT, e);
+            logger.warn(EELFLoggerDelegate.debugLogger, "Cannot initialize custom http client from current configuration. Using default one.", e);
             return HttpClients.createDefault();
         }
     }
 
     private SSLConnectionSocketFactory allowTLSProtocols(SSLContext sslcontext) {
         return new SSLConnectionSocketFactory(
-            sslcontext,
-            SUPPORTED_SSL_VERSIONS,
-            null,
-            SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
+                sslcontext,
+                SUPPORTED_SSL_VERSIONS,
+                null,
+                SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
     }
 
     private SSLContext trustOwnCACerts(String trustStorePass, KeyStore trustStore)
-        throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
+            throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
         return SSLContexts.custom()
-            .useTLS()
-            .loadKeyMaterial(trustStore, trustStorePass.toCharArray())
-            .loadTrustMaterial(trustStore, new TrustSelfSignedStrategy())
-            .build();
+                .useTLS()
+                .loadKeyMaterial(trustStore, trustStorePass.toCharArray())
+                .loadTrustMaterial(trustStore, new TrustSelfSignedStrategy())
+                .build();
     }
 
     private KeyStore loadTruststore(String trustStorePath, String trustStorePass)
-        throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException {
-        val trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
+            throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException {
+        KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
         try (FileInputStream instream = new FileInputStream(new File(trustStorePath))) {
             trustStore.load(instream, trustStorePass.toCharArray());
         }
         return trustStore;
     }
 
+    @FunctionalInterface
+    private interface HttpRequest<T> {
+        HttpResponse<T> apply(String url) throws IOException;
+    }
+
 }
diff --git a/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClientException.java b/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClientException.java
new file mode 100644
index 0000000..2a4f093
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClientException.java
@@ -0,0 +1,7 @@
+package org.onap.vid.client;
+
+public class SyncRestClientException extends RuntimeException {
+    public SyncRestClientException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/VidController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/VidController.java
index 39a1f2b..b9d67b6 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controllers/VidController.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controllers/VidController.java
@@ -71,9 +71,7 @@
         SecureServices secureServices = new SecureServices();
         List<Role> roles = roleProvider.getUserRoles(request);
         secureServices.setServices(aaiService.getServicesByDistributionStatus());
-        //Disable roles until AAF integration finishes
-        //secureServices.setReadOnly(roleProvider.userPermissionIsReadOnly(roles));
-        secureServices.setReadOnly(false);
+		secureServices.setReadOnly(roleProvider.userPermissionIsReadOnly(roles));
         return secureServices;
     }
 
diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/WebConfig.java b/vid-app-common/src/main/java/org/onap/vid/controllers/WebConfig.java
index 0f4b536..56dce9a 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controllers/WebConfig.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controllers/WebConfig.java
@@ -21,9 +21,14 @@
 
 package org.onap.vid.controllers;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import io.joshworks.restclient.http.mapper.ObjectMapper;
+import java.io.IOException;
 import org.onap.vid.aai.AaiClient;
 import org.onap.vid.aai.AaiClientInterface;
+import org.onap.vid.aai.AaiOverTLSClient;
+import org.onap.vid.aai.AaiOverTLSClientInterface;
+import org.onap.vid.aai.AaiOverTLSPropertySupplier;
 import org.onap.vid.aai.AaiResponseTranslator;
 import org.onap.vid.aai.PombaClientImpl;
 import org.onap.vid.aai.PombaClientInterface;
@@ -48,7 +53,6 @@
 import org.onap.vid.services.VidServiceImpl;
 import org.onap.vid.scheduler.SchedulerRestInterface;
 import org.onap.vid.scheduler.SchedulerRestInterfaceIfc;
-import org.onap.vid.services.*;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -66,8 +70,8 @@
      * @return the object mapper
      */
     @Bean
-    public ObjectMapper getObjectMapper() {
-        return new ObjectMapper();
+    public com.fasterxml.jackson.databind.ObjectMapper getObjectMapper() {
+        return new com.fasterxml.jackson.databind.ObjectMapper();
     }
 
 
@@ -161,4 +165,62 @@
     public SchedulerRestInterfaceIfc getSchedulerRestInterface(){
         return new SchedulerRestInterface();
     }
+
+    @Bean(name = "aaiClientForFasterXmlMapping")
+    public AaiOverTLSClientInterface getAaiClientForFasterXmlMapping(){
+         ObjectMapper objectMapper = new ObjectMapper() {
+
+            com.fasterxml.jackson.databind.ObjectMapper om = new com.fasterxml.jackson.databind.ObjectMapper();
+
+            @Override
+            public <T> T readValue(String s, Class<T> aClass) {
+                try {
+                    return om.readValue(s, aClass);
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+
+            @Override
+            public String writeValue(Object o) {
+                try {
+                    return om.writeValueAsString(o);
+                } catch (JsonProcessingException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        };
+
+        return new AaiOverTLSClient(new SyncRestClient(objectMapper), new AaiOverTLSPropertySupplier());
+    }
+
+
+    @Bean(name = "aaiClientForCodehausMapping")
+    public AaiOverTLSClientInterface getAaiClientForCodehausMapping() {
+
+       ObjectMapper objectMapper = new ObjectMapper() {
+
+            org.codehaus.jackson.map.ObjectMapper om = new org.codehaus.jackson.map.ObjectMapper();
+
+            @Override
+            public <T> T readValue(String s, Class<T> aClass) {
+                try {
+                    return om.readValue(s, aClass);
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+
+            @Override
+            public String writeValue(Object o) {
+                try {
+                    return om.writeValueAsString(o);
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        };
+
+        return new AaiOverTLSClient(new SyncRestClient(objectMapper), new AaiOverTLSPropertySupplier());
+    }
 }
diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/MsoException.java b/vid-app-common/src/main/java/org/onap/vid/mso/MsoException.java
new file mode 100644
index 0000000..02d54c3
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/mso/MsoException.java
@@ -0,0 +1,7 @@
+package org.onap.vid.mso;
+
+public class MsoException extends RuntimeException {
+    public MsoException(Throwable cause) {
+        super(cause);
+    }
+}
diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/MsoInterface.java b/vid-app-common/src/main/java/org/onap/vid/mso/MsoInterface.java
index 834f808..7c8ab89 100644
--- a/vid-app-common/src/main/java/org/onap/vid/mso/MsoInterface.java
+++ b/vid-app-common/src/main/java/org/onap/vid/mso/MsoInterface.java
@@ -20,13 +20,15 @@
  */
 package org.onap.vid.mso;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import io.joshworks.restclient.http.HttpResponse;
 import io.joshworks.restclient.http.mapper.ObjectMapper;
-import lombok.SneakyThrows;
 import org.onap.vid.aai.util.CustomJacksonJaxBJsonProvider;
 import org.onap.vid.changeManagement.RequestDetailsWrapper;
 import org.onap.vid.mso.rest.RequestDetails;
 
+import java.io.IOException;
+
 /**
  * Created by pickjonathan on 21/06/2017.
  */
@@ -123,16 +125,22 @@
       return new ObjectMapper() {
         CustomJacksonJaxBJsonProvider mapper = new CustomJacksonJaxBJsonProvider();
 
-        @SneakyThrows
         @Override
         public <T> T readValue(String s, Class<T> aClass) {
-          return mapper.getMapper().readValue(s, aClass);
+            try {
+                return mapper.getMapper().readValue(s, aClass);
+            } catch (IOException e) {
+                throw new MsoException(e);
+            }
         }
 
-        @SneakyThrows
         @Override
         public String writeValue(Object o) {
-          return mapper.getMapper().writeValueAsString(o);
+            try {
+                return mapper.getMapper().writeValueAsString(o);
+            } catch (JsonProcessingException e) {
+                throw new MsoException(e);
+            }
         }
       };
     }
diff --git a/vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java b/vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java
index 90b9a82..b83f751 100644
--- a/vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java
+++ b/vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java
@@ -2,7 +2,8 @@
  * ============LICENSE_START=======================================================
  * VID
  * ================================================================================
- * Modifications Copyright 2018 Nokia
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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.
@@ -22,6 +23,7 @@
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import io.joshworks.restclient.http.HttpResponse;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.portalsdk.core.web.support.UserUtils;
 import org.onap.vid.aai.AaiResponse;
@@ -58,8 +60,8 @@
 
     public void init() {
         LOG.debug(EELFLoggerDelegate.debugLogger, "Role provider => init method started");
-        AaiResponse<SubscriberList> subscribersResponse = aaiService.getFullSubscriberList();
-        subscribers = subscribersResponse.getT();
+        HttpResponse<SubscriberList> subscribersResponse = aaiService.getFullSubscriberList();
+        subscribers = subscribersResponse.getBody();
         LOG.debug(EELFLoggerDelegate.debugLogger, "Role provider => init method finished");
     }
 
@@ -69,10 +71,10 @@
         LOG.debug(EELFLoggerDelegate.debugLogger, logPrefix + "Entering to get user role for user " + UserUtils.getUserId(request));
 
         List<Role> roleList = new ArrayList<>();
-        //Disable roles until AAF integration finishes
-        /*HashMap roles = UserUtils.getRoles(request);
+
+        Map roles = UserUtils.getRoles(request);
         for (Object role : roles.keySet()) {
-            org.openecomp.portalsdk.core.domain.Role sdkRol = (org.openecomp.portalsdk.core.domain.Role) roles.get(role);
+            org.onap.portalsdk.core.domain.Role sdkRol = (org.onap.portalsdk.core.domain.Role) roles.get(role);
 
             LOG.debug(EELFLoggerDelegate.debugLogger, logPrefix + "Role " + sdkRol.getName() + " is being proccessed");
             try {
@@ -85,11 +87,11 @@
                 roleList.add(createRoleFromStringArr(roleParts, logPrefix));
                 String msg = String.format(logPrefix + " User %s got permissions %s", UserUtils.getUserId(request), Arrays.toString(roleParts));
                 LOG.debug(EELFLoggerDelegate.debugLogger, msg);
-            } catch (RoleParsingException e) {
+            } catch (Exception e) {
                 LOG.error(logPrefix + " Failed to parse permission");
 
             }
-        }*/
+        }
 
         return roleList;
     }
diff --git a/vid-app-common/src/main/java/org/onap/vid/services/AaiService.java b/vid-app-common/src/main/java/org/onap/vid/services/AaiService.java
index f3e0bfd..d2ee32c 100644
--- a/vid-app-common/src/main/java/org/onap/vid/services/AaiService.java
+++ b/vid-app-common/src/main/java/org/onap/vid/services/AaiService.java
@@ -1,5 +1,27 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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.vid.services;
 
+import io.joshworks.restclient.http.HttpResponse;
 import org.onap.vid.aai.AaiResponse;
 import org.onap.vid.aai.AaiResponseTranslator;
 import org.onap.vid.aai.SubscriberFilteredResults;
@@ -28,7 +50,7 @@
 
     AaiResponse getServiceInstanceSearchResults(String subscriberId, String instanceIdentifier, RoleValidator roleProvider, List<String> owningEntities, List<String> projects);
 
-    AaiResponse<SubscriberList> getFullSubscriberList();
+    HttpResponse<SubscriberList> getFullSubscriberList();
 
     AaiResponse getServices(RoleValidator roleValidator);
     
diff --git a/vid-app-common/src/main/java/org/onap/vid/services/AaiServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/AaiServiceImpl.java
index 4de2cc7..acdf0af 100644
--- a/vid-app-common/src/main/java/org/onap/vid/services/AaiServiceImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/services/AaiServiceImpl.java
@@ -1,5 +1,27 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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.vid.services;
 
+import io.joshworks.restclient.http.HttpResponse;
 import org.apache.http.HttpStatus;
 import org.codehaus.jackson.JsonNode;
 import org.onap.vid.aai.*;
@@ -30,6 +52,7 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
+import org.springframework.beans.factory.annotation.Qualifier;
 
 /**
  * Created by Oren on 7/4/17.
@@ -45,6 +68,10 @@
     private AaiClientInterface aaiClient;
 
     @Autowired
+    @Qualifier("aaiClientForCodehausMapping")
+    private AaiOverTLSClientInterface aaiOverTLSClient;
+
+    @Autowired
     private AaiResponseTranslator aaiResponseTranslator;
 
     private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(AaiServiceImpl.class);
@@ -162,11 +189,13 @@
 
     @Override
     public SubscriberFilteredResults getFullSubscriberList(RoleValidator roleValidator) {
-        AaiResponse<SubscriberList> subscriberResponse = aaiClient.getAllSubscribers();
-
-        return new SubscriberFilteredResults(roleValidator, subscriberResponse.getT(),
-                subscriberResponse.getErrorMessage(),
-                subscriberResponse.getHttpCode());
+        HttpResponse<SubscriberList> allSubscribers = aaiOverTLSClient.getAllSubscribers();
+        return new SubscriberFilteredResults(
+            roleValidator,
+            allSubscribers.getBody(),
+            allSubscribers.getStatusText(),
+            allSubscribers.getStatus()
+        );
     }
 
     @Override
@@ -175,8 +204,8 @@
     }
 
     @Override
-    public AaiResponse<SubscriberList> getFullSubscriberList() {
-        return aaiClient.getAllSubscribers();
+    public HttpResponse<SubscriberList> getFullSubscriberList() {
+        return aaiOverTLSClient.getAllSubscribers();
     }
 
     @Override
@@ -206,8 +235,7 @@
             resultList.add(getServicesByProjectNames(projects, roleValidator));
         }
         if (!resultList.isEmpty()) {
-            Intersection<ServiceInstanceSearchResult> intersection = new Intersection<>();
-            serviceInstancesSearchResults.serviceInstances = intersection.intersectMultipileArray(resultList);
+            serviceInstancesSearchResults.serviceInstances = Intersection.of(resultList);
         }
 
         return new AaiResponse<>(serviceInstancesSearchResults, null, HttpStatus.SC_OK);
diff --git a/vid-app-common/src/main/java/org/onap/vid/services/AsyncInstantiationBusinessLogicImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/AsyncInstantiationBusinessLogicImpl.java
index 7259301..df8e92d 100644
--- a/vid-app-common/src/main/java/org/onap/vid/services/AsyncInstantiationBusinessLogicImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/services/AsyncInstantiationBusinessLogicImpl.java
@@ -1,10 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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.vid.services;
 
 import com.google.common.collect.ImmutableMap;
+import io.joshworks.restclient.http.HttpResponse;
+import java.io.IOException;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.hibernate.SessionFactory;
 import org.onap.vid.aai.AaiClientInterface;
+import org.onap.vid.aai.AaiOverTLSClientInterface;
 import org.onap.vid.aai.AaiResponse;
 import org.onap.vid.aai.exceptions.InvalidAAIResponseException;
 import org.onap.vid.aai.model.AaiNodeQueryResponse;
@@ -35,6 +60,7 @@
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.portalsdk.core.service.DataAccessService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 import java.sql.Timestamp;
@@ -50,7 +76,7 @@
 
     private static final int MAX_RETRIES_GETTING_COUNTER = 100;
     private static final int MAX_RETRIES_GETTING_FREE_NAME_FROM_AAI = 10000;
-    public static final String NAME_FOR_CHECK_AAI_STATUS = "NAME_FOR_CHECK_AAI_STATUS";
+    private static final String NAME_FOR_CHECK_AAI_STATUS = "NAME_FOR_CHECK_AAI_STATUS";
 
     private final DataAccessService dataAccessService;
 
@@ -60,60 +86,62 @@
 
     private SessionFactory sessionFactory;
 
-    private AaiClientInterface aaiClient;
+    private AaiOverTLSClientInterface aaiOverTLSClient;
 
     private int maxRetriesGettingFreeNameFromAai = MAX_RETRIES_GETTING_FREE_NAME_FROM_AAI;
 
-    private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(AsyncInstantiationBusinessLogicImpl.class);
+    private static final EELFLoggerDelegate logger = EELFLoggerDelegate
+        .getLogger(AsyncInstantiationBusinessLogicImpl.class);
     private Map<String, JobStatus> msoStateToJobStatusMap = ImmutableMap.<String, JobStatus>builder()
-            .put("inprogress", JobStatus.IN_PROGRESS)
-            .put("failed", JobStatus.FAILED)
-            .put("pause", JobStatus.PAUSE)
-            .put("paused", JobStatus.PAUSE)
-            .put("complete", JobStatus.COMPLETED)
-            .put("pending", JobStatus.IN_PROGRESS)
-            .put("pendingmanualtask", JobStatus.PAUSE)
-            .put("unlocked", JobStatus.IN_PROGRESS)
-            .build();
+        .put("inprogress", JobStatus.IN_PROGRESS)
+        .put("failed", JobStatus.FAILED)
+        .put("pause", JobStatus.PAUSE)
+        .put("paused", JobStatus.PAUSE)
+        .put("complete", JobStatus.COMPLETED)
+        .put("pending", JobStatus.IN_PROGRESS)
+        .put("pendingmanualtask", JobStatus.PAUSE)
+        .put("unlocked", JobStatus.IN_PROGRESS)
+        .build();
 
 
     @Autowired
     public AsyncInstantiationBusinessLogicImpl(DataAccessService dataAccessService,
-                                               JobAdapter jobAdapter,
-                                               JobsBrokerService jobService,
-                                               SessionFactory sessionFactory,
-                                               AaiClientInterface aaiClient) {
+        JobAdapter jobAdapter,
+        JobsBrokerService jobService,
+        SessionFactory sessionFactory,
+        @Qualifier("aaiClientForFasterXmlMapping")  AaiOverTLSClientInterface aaiOverTLSClient) {
         this.dataAccessService = dataAccessService;
         this.jobAdapter = jobAdapter;
         this.jobService = jobService;
         this.sessionFactory = sessionFactory;
-        this.aaiClient = aaiClient;
+        this.aaiOverTLSClient = aaiOverTLSClient;
     }
 
     @Override
     public List<ServiceInfo> getAllServicesInfo() {
-        return dataAccessService.getList(ServiceInfo.class, filterByCreationDateAndNotDeleted(), orderByCreatedDateAndStatus(), null);
+        return dataAccessService
+            .getList(ServiceInfo.class, filterByCreationDateAndNotDeleted(), orderByCreatedDateAndStatus(), null);
     }
 
     private String filterByCreationDateAndNotDeleted() {
         LocalDateTime minus3Months = LocalDateTime.now().minusMonths(3);
         Timestamp filterDate = Timestamp.valueOf(minus3Months);
         return " where" +
-                "   hidden = false" +
-                "   and deleted_at is null" +  // don't fetch deleted
-                "   and created >= '" + filterDate + "' ";
+            "   hidden = false" +
+            "   and deleted_at is null" +  // don't fetch deleted
+            "   and created >= '" + filterDate + "' ";
     }
 
     private String orderByCreatedDateAndStatus() {
         return " createdBulkDate DESC ,\n" +
-                "  (CASE jobStatus\n" +
-                "   WHEN 'COMPLETED' THEN 0\n" +
-                "   WHEN 'FAILED' THEN 0\n" +
-                "   WHEN 'IN_PROGRESS' THEN 1\n" +
-                "   WHEN 'PAUSE' THEN 2\n" +
-                "   WHEN 'PENDING' THEN 3\n" +
-                "   WHEN 'STOPPED' THEN 3 END),\n" +
-                "  statusModifiedDate ";
+            "  (CASE jobStatus\n" +
+            "   WHEN 'COMPLETED' THEN 0\n" +
+            "   WHEN 'FAILED' THEN 0\n" +
+            "   WHEN 'IN_PROGRESS' THEN 1\n" +
+            "   WHEN 'PAUSE' THEN 2\n" +
+            "   WHEN 'PENDING' THEN 3\n" +
+            "   WHEN 'STOPPED' THEN 3 END),\n" +
+            "  statusModifiedDate ";
     }
 
     @Override
@@ -125,77 +153,87 @@
         for (int i = 0; i < bulkSize; i++) {
             Job job = jobAdapter.createJob(JobType.ServiceInstantiation, request, templateId, userId, i);
             UUID jobId = jobService.add(job);
-            auditVidStatus(jobId,job.getStatus());
+            auditVidStatus(jobId, job.getStatus());
             uuids.add(jobId);
-            dataAccessService.saveDomainObject(createServiceInfo(userId, request, jobId, templateId, createdBulkDate), DaoUtils.getPropsMap());
+            dataAccessService.saveDomainObject(createServiceInfo(userId, request, jobId, templateId, createdBulkDate),
+                DaoUtils.getPropsMap());
         }
         return uuids;
     }
 
-    private ServiceInfo createServiceInfo(String userId, ServiceInstantiation serviceInstantiation, UUID jobId, UUID templateId, Date createdBulkDate) {
+    private ServiceInfo createServiceInfo(String userId, ServiceInstantiation serviceInstantiation, UUID jobId,
+        UUID templateId, Date createdBulkDate) {
         return new ServiceInfo(
-                userId, Job.JobStatus.PENDING, serviceInstantiation.isPause(), jobId, templateId,
-                serviceInstantiation.getOwningEntityId(),
-                serviceInstantiation.getOwningEntityName(),
-                serviceInstantiation.getProjectName(),
-                serviceInstantiation.getAicZoneId(),
-                serviceInstantiation.getAicZoneName(),
-                serviceInstantiation.getTenantId(),
-                serviceInstantiation.getTenantName(),
-                serviceInstantiation.getLcpCloudRegionId(),
-                null,
-                serviceInstantiation.getSubscriptionServiceType(),
-                serviceInstantiation.getSubscriberName(),
-                null,
-                serviceInstantiation.getInstanceName(),
-                serviceInstantiation.getModelInfo().getModelInvariantId(),
-                serviceInstantiation.getModelInfo().getModelName(),
-                serviceInstantiation.getModelInfo().getModelVersion(),
-                createdBulkDate
+            userId, Job.JobStatus.PENDING, serviceInstantiation.isPause(), jobId, templateId,
+            serviceInstantiation.getOwningEntityId(),
+            serviceInstantiation.getOwningEntityName(),
+            serviceInstantiation.getProjectName(),
+            serviceInstantiation.getAicZoneId(),
+            serviceInstantiation.getAicZoneName(),
+            serviceInstantiation.getTenantId(),
+            serviceInstantiation.getTenantName(),
+            serviceInstantiation.getLcpCloudRegionId(),
+            null,
+            serviceInstantiation.getSubscriptionServiceType(),
+            serviceInstantiation.getSubscriberName(),
+            null,
+            serviceInstantiation.getInstanceName(),
+            serviceInstantiation.getModelInfo().getModelInvariantId(),
+            serviceInstantiation.getModelInfo().getModelName(),
+            serviceInstantiation.getModelInfo().getModelVersion(),
+            createdBulkDate
         );
     }
 
 
     @Override
-    public RequestDetailsWrapper<ServiceInstantiationRequestDetails> generateServiceInstantiationRequest(UUID jobId, ServiceInstantiation payload, String userId) {
+    public RequestDetailsWrapper<ServiceInstantiationRequestDetails> generateServiceInstantiationRequest(UUID jobId,
+        ServiceInstantiation payload, String userId) {
 
-           ServiceInstantiationRequestDetails.ServiceInstantiationOwningEntity owningEntity = new ServiceInstantiationRequestDetails.ServiceInstantiationOwningEntity(payload.getOwningEntityId(), payload.getOwningEntityName());
+        ServiceInstantiationRequestDetails.ServiceInstantiationOwningEntity owningEntity = new ServiceInstantiationRequestDetails.ServiceInstantiationOwningEntity(
+            payload.getOwningEntityId(), payload.getOwningEntityName());
 
         SubscriberInfo subscriberInfo = new SubscriberInfo();
         subscriberInfo.setGlobalSubscriberId(payload.getGlobalSubscriberId());
 
         String serviceInstanceName = null;
-        if(payload.isUserProvidedNaming()) {
+        if (payload.isUserProvidedNaming()) {
             serviceInstanceName = getUniqueName(payload.getInstanceName(), ResourceType.SERVICE_INSTANCE);
             String finalServiceInstanceName = serviceInstanceName;
             updateServiceInfo(jobId, x -> x.setServiceInstanceName(finalServiceInstanceName));
         }
         ServiceInstantiationRequestDetails.RequestInfo requestInfo = new ServiceInstantiationRequestDetails.RequestInfo(
-                serviceInstanceName,
-                payload.getProductFamilyId(),
-                "VID",
-                payload.isRollbackOnFailure(),
-                userId);
+            serviceInstanceName,
+            payload.getProductFamilyId(),
+            "VID",
+            payload.isRollbackOnFailure(),
+            userId);
 
         List<ServiceInstantiationRequestDetails.ServiceInstantiationService> serviceInstantiationService = new LinkedList<>();
-        List<Map<String, String>> unFilteredInstanceParams = payload.getInstanceParams() != null ? payload.getInstanceParams() : new LinkedList<>();
+        List<Map<String, String>> unFilteredInstanceParams =
+            payload.getInstanceParams() != null ? payload.getInstanceParams() : new LinkedList<>();
         List<Map<String, String>> filteredInstanceParams = removeUnNeededParams(unFilteredInstanceParams);
         ServiceInstantiationRequestDetails.ServiceInstantiationService serviceInstantiationService1 = new ServiceInstantiationRequestDetails.ServiceInstantiationService(
-                payload.getModelInfo(),
-                serviceInstanceName,
-                filteredInstanceParams,
-                createServiceInstantiationVnfList(payload)
+            payload.getModelInfo(),
+            serviceInstanceName,
+            filteredInstanceParams,
+            createServiceInstantiationVnfList(payload)
         );
         serviceInstantiationService.add(serviceInstantiationService1);
 
-        ServiceInstantiationRequestDetails.RequestParameters requestParameters = new ServiceInstantiationRequestDetails.RequestParameters(payload.getSubscriptionServiceType(), false, serviceInstantiationService);
+        ServiceInstantiationRequestDetails.RequestParameters requestParameters = new ServiceInstantiationRequestDetails.RequestParameters(
+            payload.getSubscriptionServiceType(), false, serviceInstantiationService);
 
-        ServiceInstantiationRequestDetails.Project project = payload.getProjectName() != null ?  new ServiceInstantiationRequestDetails.Project(payload.getProjectName()) : null;
+        ServiceInstantiationRequestDetails.Project project =
+            payload.getProjectName() != null ? new ServiceInstantiationRequestDetails.Project(payload.getProjectName())
+                : null;
 
-        ServiceInstantiationRequestDetails requestDetails = new ServiceInstantiationRequestDetails(payload.getModelInfo(), owningEntity, subscriberInfo,
-                project, requestInfo, requestParameters);
+        ServiceInstantiationRequestDetails requestDetails = new ServiceInstantiationRequestDetails(
+            payload.getModelInfo(), owningEntity, subscriberInfo,
+            project, requestInfo, requestParameters);
 
-        RequestDetailsWrapper<ServiceInstantiationRequestDetails> requestDetailsWrapper = new RequestDetailsWrapper(requestDetails);
+        RequestDetailsWrapper<ServiceInstantiationRequestDetails> requestDetailsWrapper = new RequestDetailsWrapper(
+            requestDetails);
         debugRequestDetails(requestDetailsWrapper, logger);
         return requestDetailsWrapper;
     }
@@ -204,10 +242,11 @@
         List<String> keysToRemove = new ArrayList<>();
         if (instanceParams != null && !instanceParams.isEmpty()) {
             for (String key : instanceParams.get(0).keySet()) {
-                for (String paramToIgnore : PARAMS_TO_IGNORE)
+                for (String paramToIgnore : PARAMS_TO_IGNORE) {
                     if ((key.equalsIgnoreCase(paramToIgnore))) {
                         keysToRemove.add(key);
                     }
+                }
             }
             for (String key : keysToRemove) {
                 instanceParams.get(0).remove(key);
@@ -220,7 +259,8 @@
         return instanceParams;
     }
 
-    private ServiceInstantiationRequestDetails.ServiceInstantiationVnfList createServiceInstantiationVnfList(ServiceInstantiation payload) {
+    private ServiceInstantiationRequestDetails.ServiceInstantiationVnfList createServiceInstantiationVnfList(
+        ServiceInstantiation payload) {
         CloudConfiguration cloudConfiguration = new CloudConfiguration();
         cloudConfiguration.setTenantId(payload.getTenantId());
         cloudConfiguration.setLcpCloudRegionId(payload.getLcpCloudRegionId());
@@ -230,16 +270,17 @@
         for (Vnf vnf : vnfs.values()) {
             Map<String, Map<String, VfModule>> vfModules = vnf.getVfModules();
             List<VfModule> convertedUnFilteredVfModules = convertVfModuleMapToList(vfModules);
-            List<VfModule> filteredVfModules = filterInstanceParamsFromVfModuleAndUniqueNames(convertedUnFilteredVfModules, vnf.isUserProvidedNaming());
+            List<VfModule> filteredVfModules = filterInstanceParamsFromVfModuleAndUniqueNames(
+                convertedUnFilteredVfModules, vnf.isUserProvidedNaming());
             ServiceInstantiationRequestDetails.ServiceInstantiationVnf serviceInstantiationVnf = new ServiceInstantiationRequestDetails.ServiceInstantiationVnf(
-                    vnf.getModelInfo(),
-                    cloudConfiguration,
-                    vnf.getPlatformName(),
-                    vnf.getLineOfBusiness(),
-                    payload.getProductFamilyId(),
-                    removeUnNeededParams(vnf.getInstanceParams()),
-                    filteredVfModules,
-                    vnf.isUserProvidedNaming() ? getUniqueName(vnf.getInstanceName(), ResourceType.GENERIC_VNF) : null
+                vnf.getModelInfo(),
+                cloudConfiguration,
+                vnf.getPlatformName(),
+                vnf.getLineOfBusiness(),
+                payload.getProductFamilyId(),
+                removeUnNeededParams(vnf.getInstanceParams()),
+                filteredVfModules,
+                vnf.isUserProvidedNaming() ? getUniqueName(vnf.getInstanceName(), ResourceType.GENERIC_VNF) : null
             );
             vnfList.add(serviceInstantiationVnf);
         }
@@ -251,27 +292,29 @@
         return vfModules.values().stream().flatMap(vfModule -> vfModule.values().stream()).collect(Collectors.toList());
     }
 
-    private List<VfModule> filterInstanceParamsFromVfModuleAndUniqueNames(List<VfModule> unFilteredVfModules, boolean isUserProvidedNaming) {
+    private List<VfModule> filterInstanceParamsFromVfModuleAndUniqueNames(List<VfModule> unFilteredVfModules,
+        boolean isUserProvidedNaming) {
         return unFilteredVfModules.stream().map(vfModule ->
-                new VfModule(
-                        vfModule.getModelInfo(),
-                        getUniqueNameIfNeeded(isUserProvidedNaming, vfModule.getInstanceName(), ResourceType.VF_MODULE),
-                        getUniqueNameIfNeeded(isUserProvidedNaming, vfModule.getVolumeGroupInstanceName(), ResourceType.VOLUME_GROUP),
-                        removeUnNeededParams(vfModule.getInstanceParams())))
-                .collect(Collectors.toList());
+            new VfModule(
+                vfModule.getModelInfo(),
+                getUniqueNameIfNeeded(isUserProvidedNaming, vfModule.getInstanceName(), ResourceType.VF_MODULE),
+                getUniqueNameIfNeeded(isUserProvidedNaming, vfModule.getVolumeGroupInstanceName(),
+                    ResourceType.VOLUME_GROUP),
+                removeUnNeededParams(vfModule.getInstanceParams())))
+            .collect(Collectors.toList());
     }
 
     private String getUniqueNameIfNeeded(boolean isUserProvidedNaming, String name, ResourceType resourceType) {
         return isUserProvidedNaming && !StringUtils.isEmpty(name) ?
-                getUniqueName(name, resourceType) : null;
+            getUniqueName(name, resourceType) : null;
     }
 
     @Override
     public String getServiceInstantiationPath(ServiceInstantiation serviceInstantiationRequest) {
         //in case pause flag is true - use assign , else - use create.
         return MsoBusinessLogicImpl.validateEndpointPath(
-                serviceInstantiationRequest.isPause() ?
-                        "mso.restapi.serviceInstanceAssign" : "mso.restapi.serviceInstanceCreate"
+            serviceInstantiationRequest.isPause() ?
+                "mso.restapi.serviceInstanceAssign" : "mso.restapi.serviceInstanceCreate"
         );
     }
 
@@ -290,7 +333,7 @@
 
     @Override
     public ServiceInfo updateServiceInfoAndAuditStatus(UUID jobUuid, JobStatus jobStatus) {
-        auditVidStatus(jobUuid,jobStatus);
+        auditVidStatus(jobUuid, jobStatus);
         return updateServiceInfo(jobUuid, x -> setServiceInfoStatus(x, jobStatus));
     }
 
@@ -300,9 +343,12 @@
     }
 
     public ServiceInfo getServiceInfoByJobId(UUID jobUUID) {
-        List<ServiceInfo> serviceInfoList = dataAccessService.getList(ServiceInfo.class, String.format(" where jobId = '%s' ", jobUUID), null, null);
+        List<ServiceInfo> serviceInfoList = dataAccessService
+            .getList(ServiceInfo.class, String.format(" where jobId = '%s' ", jobUUID), null, null);
         if (serviceInfoList.size() != 1) {
-            throw new GenericUncheckedException("Failed to retrieve job with uuid " + jobUUID + " from ServiceInfo table. Instances found: " + serviceInfoList.size());
+            throw new GenericUncheckedException(
+                "Failed to retrieve job with uuid " + jobUUID + " from ServiceInfo table. Instances found: "
+                    + serviceInfoList.size());
         }
         return serviceInfoList.get(0);
     }
@@ -310,43 +356,46 @@
     public List<JobAuditStatus> getAuditStatuses(UUID jobUUID, JobAuditStatus.SourceStatus source) {
         return dataAccessService.getList(
             JobAuditStatus.class,
-            String.format(" where SOURCE = '%s' and JOB_ID = '%s'",source, jobUUID),
+            String.format(" where SOURCE = '%s' and JOB_ID = '%s'", source, jobUUID),
             " CREATED_DATE ", null);
     }
 
-    private JobAuditStatus getLatestAuditStatus(UUID jobUUID, JobAuditStatus.SourceStatus source){
-        List<JobAuditStatus> list = getAuditStatuses(jobUUID,source);
-        return !list.isEmpty() ? list.get(list.size()-1) : null;
+    private JobAuditStatus getLatestAuditStatus(UUID jobUUID, JobAuditStatus.SourceStatus source) {
+        List<JobAuditStatus> list = getAuditStatuses(jobUUID, source);
+        return !list.isEmpty() ? list.get(list.size() - 1) : null;
     }
 
     @Override
-    public void auditVidStatus(UUID jobUUID, JobStatus jobStatus){
+    public void auditVidStatus(UUID jobUUID, JobStatus jobStatus) {
         JobAuditStatus vidStatus = new JobAuditStatus(jobUUID, jobStatus.toString(), JobAuditStatus.SourceStatus.VID);
         auditStatus(vidStatus);
     }
 
     @Override
-    public void auditMsoStatus(UUID jobUUID, AsyncRequestStatus.Request msoRequestStatus){
-        auditMsoStatus(jobUUID, msoRequestStatus.requestStatus.getRequestState(), msoRequestStatus.requestId, msoRequestStatus.requestStatus.getStatusMessage());
+    public void auditMsoStatus(UUID jobUUID, AsyncRequestStatus.Request msoRequestStatus) {
+        auditMsoStatus(jobUUID, msoRequestStatus.requestStatus.getRequestState(), msoRequestStatus.requestId,
+            msoRequestStatus.requestStatus.getStatusMessage());
     }
 
     @Override
-    public void auditMsoStatus(UUID jobUUID, String jobStatus, String requestId, String additionalInfo){
+    public void auditMsoStatus(UUID jobUUID, String jobStatus, String requestId, String additionalInfo) {
         JobAuditStatus msoStatus = new JobAuditStatus(jobUUID, jobStatus, JobAuditStatus.SourceStatus.MSO,
-                requestId != null ? UUID.fromString(requestId) : null,
-                additionalInfo);
+            requestId != null ? UUID.fromString(requestId) : null,
+            additionalInfo);
         auditStatus(msoStatus);
     }
 
-    private void auditStatus(JobAuditStatus jobAuditStatus){
-        JobAuditStatus latestStatus = getLatestAuditStatus(jobAuditStatus.getJobId(),jobAuditStatus.getSource());
-        if (latestStatus == null || !latestStatus.equals(jobAuditStatus))
+    private void auditStatus(JobAuditStatus jobAuditStatus) {
+        JobAuditStatus latestStatus = getLatestAuditStatus(jobAuditStatus.getJobId(), jobAuditStatus.getSource());
+        if (latestStatus == null || !latestStatus.equals(jobAuditStatus)) {
             dataAccessService.saveDomainObject(jobAuditStatus, DaoUtils.getPropsMap());
+        }
 
     }
 
     public Job.JobStatus calcStatus(AsyncRequestStatus asyncRequestStatus) {
-        String msoRequestState = asyncRequestStatus.request.requestStatus.getRequestState().toLowerCase().replaceAll("[^a-z]+", "");
+        String msoRequestState = asyncRequestStatus.request.requestStatus.getRequestState().toLowerCase()
+            .replaceAll("[^a-z]+", "");
         JobStatus jobStatus = msoStateToJobStatusMap.get(msoRequestState);
         return (jobStatus != null ? jobStatus : JobStatus.IN_PROGRESS);
     }
@@ -355,11 +404,11 @@
     public void handleFailedInstantiation(UUID jobUUID) {
         ServiceInfo serviceInfo = updateServiceInfoAndAuditStatus(jobUUID, JobStatus.FAILED);
         List<ServiceInfo> serviceInfoList = dataAccessService.getList(
-                ServiceInfo.class,
-                String.format(" where templateId = '%s' and jobStatus = '%s'",
-                        serviceInfo.getTemplateId(),
-                        JobStatus.PENDING),
-                null, null);
+            ServiceInfo.class,
+            String.format(" where templateId = '%s' and jobStatus = '%s'",
+                serviceInfo.getTemplateId(),
+                JobStatus.PENDING),
+            null, null);
         serviceInfoList.forEach(si -> updateServiceInfoAndAuditStatus(si.getJobId(), JobStatus.STOPPED));
     }
 
@@ -374,9 +423,9 @@
     public void hideServiceInfo(UUID jobUUID) {
         ServiceInfo serviceInfo = getServiceInfoByJobId(jobUUID);
         if (!serviceInfo.getJobStatus().isFinal()) {
-            String message = String.format( "jobId %s: Service status does not allow hide service, status = %s",
-                    serviceInfo.getJobId(),
-                    serviceInfo.getJobStatus());
+            String message = String.format("jobId %s: Service status does not allow hide service, status = %s",
+                serviceInfo.getJobId(),
+                serviceInfo.getJobStatus());
             logger.error(EELFLoggerDelegate.errorLogger, message);
             throw new OperationNotAllowedException(message);
         }
@@ -387,31 +436,29 @@
     @Override
     public int
 
-
     getCounterForName(String name) {
 
         String hqlSelectNC = "from NameCounter where name = :name";
         String hqlUpdateCounter = "update NameCounter set counter = :newCounter " +
-                "where name= :name " +
-                "and counter= :prevCounter";
+            "where name= :name " +
+            "and counter= :prevCounter";
 
         Integer counter = null;
         GenericUncheckedException lastException = null;
-        for (int i = 0; i< MAX_RETRIES_GETTING_COUNTER && counter==null; i++) {
+        for (int i = 0; i < MAX_RETRIES_GETTING_COUNTER && counter == null; i++) {
             try {
                 counter = calcCounter(name, hqlSelectNC, hqlUpdateCounter);
-            }
-            catch (GenericUncheckedException exception) {
+            } catch (GenericUncheckedException exception) {
                 lastException = exception; //do nothing, we will try again in the loop
             }
         }
 
-        if (counter!=null) {
+        if (counter != null) {
             return counter;
         }
 
-        throw lastException!=null ? new DbFailureUncheckedException(lastException) :
-                new DbFailureUncheckedException("Failed to get counter for "+name+" due to unknown error");
+        throw lastException != null ? new DbFailureUncheckedException(lastException) :
+            new DbFailureUncheckedException("Failed to get counter for " + name + " due to unknown error");
 
     }
 
@@ -419,14 +466,14 @@
         Integer counter;
         counter = DaoUtils.tryWithSessionAndTransaction(sessionFactory, session -> {
             NameCounter nameCounter = (NameCounter) session.createQuery(hqlSelectNC)
-                    .setText("name", name)
-                    .uniqueResult();
+                .setText("name", name)
+                .uniqueResult();
             if (nameCounter != null) {
                 int updatedRows = session.createQuery(hqlUpdateCounter)
-                        .setText("name", nameCounter.getName())
-                        .setInteger("prevCounter", nameCounter.getCounter())
-                        .setInteger("newCounter", nameCounter.getCounter() + 1)
-                        .executeUpdate();
+                    .setText("name", nameCounter.getName())
+                    .setInteger("prevCounter", nameCounter.getCounter())
+                    .setInteger("newCounter", nameCounter.getCounter() + 1)
+                    .executeUpdate();
                 if (updatedRows == 1) {
                     return nameCounter.getCounter() + 1;
                 }
@@ -459,7 +506,7 @@
         //Prevents unnecessary increasing of the counter while AAI doesn't response
         isNameFreeInAai(NAME_FOR_CHECK_AAI_STATUS, resourceType);
 
-        for (int i=0; i<getMaxRetriesGettingFreeNameFromAai(); i++) {
+        for (int i = 0; i < getMaxRetriesGettingFreeNameFromAai(); i++) {
             int counter = getCounterForName(name);
             String newName = formatNameAndCounter(name, counter);
             if (isNameFreeInAai(newName, resourceType)) {
@@ -467,7 +514,7 @@
             }
         }
 
-        throw new MaxRetriesException("find unused name for "+name, getMaxRetriesGettingFreeNameFromAai());
+        throw new MaxRetriesException("find unused name for " + name, getMaxRetriesGettingFreeNameFromAai());
     }
 
     //the method is protected so we can call it in the UT
@@ -476,11 +523,17 @@
     }
 
     private boolean isNameFreeInAai(String name, ResourceType resourceType) throws InvalidAAIResponseException {
-        AaiResponse<AaiNodeQueryResponse> aaiResponse = aaiClient.searchNodeTypeByName(name, resourceType);
-        if (aaiResponse.getHttpCode() > 399 || aaiResponse.getT() == null) {
-            throw new InvalidAAIResponseException(aaiResponse);
+        HttpResponse<AaiNodeQueryResponse> aaiResponse = aaiOverTLSClient
+            .searchNodeTypeByName(name, resourceType);
+        if (aaiResponse.getStatus() > 399 || aaiResponse.getBody() == null) {
+            try {
+                String message = IOUtils.toString(aaiResponse.getRawBody(), "UTF-8");
+                throw new InvalidAAIResponseException(aaiResponse.getStatus(), message);
+            } catch (IOException e) {
+                throw new InvalidAAIResponseException(aaiResponse.getStatus(), aaiResponse.getStatusText());
+            }
         }
-        return CollectionUtils.isEmpty(aaiResponse.getT().resultData);
+        return CollectionUtils.isEmpty(aaiResponse.getBody().resultData);
     }
 
 }
diff --git a/vid-app-common/src/main/java/org/onap/vid/services/RoleGenaratorServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/RoleGenaratorServiceImpl.java
index 635cb48..500f5ac 100644
--- a/vid-app-common/src/main/java/org/onap/vid/services/RoleGenaratorServiceImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/services/RoleGenaratorServiceImpl.java
@@ -1,7 +1,30 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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.vid.services;
 
+import io.joshworks.restclient.http.HttpResponse;
 import jline.internal.Log;
 import org.onap.vid.aai.AaiClientInterface;
+import org.onap.vid.aai.AaiOverTLSClientInterface;
 import org.onap.vid.aai.AaiResponse;
 import org.onap.vid.aai.ServiceSubscription;
 import org.onap.vid.aai.Services;
@@ -9,6 +32,7 @@
 import org.onap.vid.model.Subscriber;
 import org.onap.vid.model.SubscriberList;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 import java.util.HashMap;
@@ -17,9 +41,14 @@
 public class RoleGenaratorServiceImpl implements RoleGeneratorService {
 
     public static final String ROLE_ID_COLUMN = "ROLE_ID";
+
     @Autowired
     AaiClientInterface client;
 
+    @Autowired
+    @Qualifier("aaiClientForCodehausMapping")
+    AaiOverTLSClientInterface aaiOverTLSClient;
+
     public static final String DB_NAME =  "vid_portal";
     public static final String TBL_NAME = "fn_role";
     public static final String TEMP_DELIMITER ="***";
@@ -30,11 +59,11 @@
         String query =  "USE " + DB_NAME + ";\r\n" +
                 "SET SQL_SAFE_UPDATES = 0;\r\n";
         try {
-            AaiResponse<SubscriberList> subscribers = client.getAllSubscribers();
+            HttpResponse<SubscriberList> allSubscribers = aaiOverTLSClient.getAllSubscribers();
             if (firstRun) {
-                query += replaceRolesToTempDelimiter("subscriber",buildSubscribersValuesForMappingsTable(subscribers.getT()));
+                query += replaceRolesToTempDelimiter("subscriber",buildSubscribersValuesForMappingsTable(allSubscribers.getBody()));
             }
-            query += addAvailableRolesCombination(firstRun, subscribers);
+            query += addAvailableRolesCombination(firstRun, allSubscribers.getBody());
 
         }
         catch (Exception e) {
@@ -43,10 +72,10 @@
         return query;
     }
 
-    private String addAvailableRolesCombination(Boolean firstRun, AaiResponse<SubscriberList> subscribers) {
+    private String addAvailableRolesCombination(Boolean firstRun, SubscriberList subscribers) {
         String query, availableRoles="";
         HashMap<String,String> servicesNames = new HashMap<String,String>();
-        for (Subscriber subscriber: subscribers.getT().customer) {
+        for (Subscriber subscriber: subscribers.customer) {
             AaiResponse<Services> subscriberResponse = client.getSubscriberData(subscriber.globalCustomerId);
             for(ServiceSubscription service: subscriberResponse.getT().serviceSubscriptions.serviceSubscription) {
                 servicesNames.put(service.serviceType,"");
diff --git a/vid-app-common/src/main/java/org/onap/vid/utils/Intersection.java b/vid-app-common/src/main/java/org/onap/vid/utils/Intersection.java
index 6e0d1fc..ed1be5c 100644
--- a/vid-app-common/src/main/java/org/onap/vid/utils/Intersection.java
+++ b/vid-app-common/src/main/java/org/onap/vid/utils/Intersection.java
@@ -1,31 +1,48 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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.vid.utils;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
+import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
-import java.util.stream.Collectors;
+import java.util.Set;
 
-/**
- * Created by moriya1 on 10/10/2017.
- */
-public class Intersection<T> {
-    public List<T> intersectMultipileArray(List<List<T>> lists) {
-        if (lists.size() == 1) {
-            return lists.get(0);
-        } else {
-            List<T> intersectResult = intersectTwoArrays(lists.get(0),lists.get(1));
 
-            lists.remove(0);
-            lists.remove(0);
-            lists.add(0,intersectResult);
-            return intersectMultipileArray(lists);
-        }
-
+public class Intersection {
+    private Intersection() {
     }
 
-    public List<T> intersectTwoArrays(List<T> list1, List<T> list2) {
-
-        List<T> intersect = list1.stream()
-                .filter(list2::contains)
-                .collect(Collectors.toList());
-        return intersect;
+    /**
+     * Returns intersection of given lists. Treats those lists as sets, ignores repetitions.
+     */
+    public static <T> List<T> of(Collection<List<T>> lists) {
+        return lists
+                .stream()
+                .map(elements -> (Set<T>) Sets.newHashSet(elements))
+                .reduce(Sets::intersection)
+                .map(set -> (List<T>) Lists.newArrayList(set))
+                .orElse(Collections.emptyList());
     }
 }
diff --git a/vid-app-common/src/main/resources/1712_ADIOD.zip b/vid-app-common/src/main/resources/1712_ADIOD.zip
new file mode 100644
index 0000000..281ee8a
--- /dev/null
+++ b/vid-app-common/src/main/resources/1712_ADIOD.zip
Binary files differ
diff --git a/vid-app-common/src/main/resources/sdcservices.json b/vid-app-common/src/main/resources/sdcservices.json
index 1d9d160..e300597 100644
--- a/vid-app-common/src/main/resources/sdcservices.json
+++ b/vid-app-common/src/main/resources/sdcservices.json
@@ -71,6 +71,20 @@
       "resources": null
     },
     {
+      "uuid": "90fe6842-aa76-4b68-8329-5c86ff564407",
+      "invariantUUID": "0311f998-9268-4fd6-bbba-afff15087b72",
+      "name": "4-27_vMME_Service",
+      "version": "1.0",
+      "toscaModelURL": "./1712_ADIOD.zip",
+      "category": "Mobility",
+      "lifecycleState": "CERTIFIED",
+      "lastUpdaterUserId": "rg276b",
+      "lastUpdaterFullName": null,
+      "distributionStatus": "DISTRIBUTED",
+      "artifacts": null,
+      "resources": null
+    },
+    {
       "uuid": "73e1322a-8a9a-49dc-9558-b0c5c5770e4a",
       "invariantUUID": "f430728a-4530-42be-a577-1206b9484cef",
       "name": "4-27_vMME_Service",
diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js
index 6029ed2..c6c9edf 100644
--- a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js
+++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js
@@ -94,14 +94,14 @@
 
                                                 _.forEach(newVNFName.vfModules, function (mdl, key) {
                                                     mdl.scale = false; //defaults to not scale unless user changes it
-                                                    if(mdl.properties && mdl.properties.max_vf_module_instances) {
+                                                    if(mdl.properties && mdl.properties.maxCountInstances) {
 
                                                         //how many vf modules of the same customizationId belong to that vnf instance
                                                         mdl.currentCount = _.filter(vm.vfModules, function(item){
                                                             return modulesAaiIds.indexOf(item.id) > -1 && item.properties["model-customization-id"] === mdl.customizationUuid;
                                                         }).length;
 
-                                                        mdl.scalable = mdl.properties.max_vf_module_instances.value - mdl.currentCount > 0;
+                                                        mdl.scalable = mdl.properties.maxCountInstances - mdl.currentCount > 0;
                                                     }else{
                                                         mdl.scalable = false;
                                                     }
diff --git a/vid-app-common/src/test/java/org/onap/vid/aai/AaiClientTest.java b/vid-app-common/src/test/java/org/onap/vid/aai/AaiClientTest.java
index 43ac289..201ec09 100644
--- a/vid-app-common/src/test/java/org/onap/vid/aai/AaiClientTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/aai/AaiClientTest.java
@@ -72,15 +72,12 @@
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import static org.apache.commons.lang3.StringUtils.equalsIgnoreCase;
 import static org.hamcrest.CoreMatchers.*;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.equalToIgnoringCase;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.*;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
 import static org.testng.Assert.*;
 
 @ContextConfiguration(classes = {LocalWebConfig.class, SystemProperties.class})
@@ -114,7 +111,7 @@
 
         when(aaiClientMock.getLogicalLink(any(String.class))).thenCallRealMethod();
         aaiClientMock.getLogicalLink(link);
-        Mockito.verify(aaiClientMock).doAaiGet(argThat(equalToIgnoringCase(expectedUrl)), any(Boolean.class));
+        Mockito.verify(aaiClientMock).doAaiGet(argThat(s -> equalsIgnoreCase(s, expectedUrl)), any(Boolean.class));
     }
 
     @DataProvider
@@ -217,7 +214,7 @@
     @Test
     public void getTenants_Arguments_Are_Null_Or_Empty() {
 
-        when(aaiClientMock.getTenants(any(String.class), any(String.class))).thenCallRealMethod();
+        when(aaiClientMock.getTenants(any(), any())).thenCallRealMethod();
 
         AaiResponse response = aaiClientMock.getTenants("", "");
 
diff --git a/vid-app-common/src/test/java/org/onap/vid/aai/AaiOverTLSClientServerTest.java b/vid-app-common/src/test/java/org/onap/vid/aai/AaiOverTLSClientServerTest.java
new file mode 100644
index 0000000..d4f59e7
--- /dev/null
+++ b/vid-app-common/src/test/java/org/onap/vid/aai/AaiOverTLSClientServerTest.java
@@ -0,0 +1,199 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2018 Nokia 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.vid.aai;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.xebialabs.restito.semantics.Action;
+import io.joshworks.restclient.http.HttpResponse;
+import io.joshworks.restclient.http.mapper.ObjectMapper;
+import org.assertj.core.api.Assertions;
+import org.glassfish.grizzly.http.util.HttpStatus;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.vid.aai.model.AaiNodeQueryResponse;
+import org.onap.vid.aai.model.ResourceType;
+import org.onap.vid.client.SyncRestClient;
+import org.onap.vid.model.SubscriberList;
+import org.onap.vid.testUtils.StubServerUtil;
+
+import java.io.IOException;
+
+@RunWith(MockitoJUnitRunner.class)
+public class AaiOverTLSClientServerTest {
+
+    @Mock
+    private AaiOverTLSPropertySupplier propertySupplier;
+
+    private static StubServerUtil serverUtil;
+
+    private String searchNodesQueryResponsePayload =
+        "{\n"
+            + "\"result-data\": [\n"
+            + "  {\n"
+            + "\"resource-type\": \"generic-vnf\",\n"
+            + "\"resource-link\": \"/aai/v13/network/generic-vnfs/generic-vnf/6eac8e69-c98d-4ac5-ab90-69fe0cabda76\"\n"
+            + "},\n"
+            + "  {\n"
+            + "\"resource-type\": \"generic-vnf\",\n"
+            + "\"resource-link\": \"/aai/v13/network/generic-vnfs/generic-vnf/e3766bc5-40a7-4dbe-9d4a-1d8c8f284913\"\n"
+            + "},\n"
+            + "  {\n"
+            + "\"resource-type\": \"generic-vnf\",\n"
+            + "\"resource-link\": \"/aai/v13/network/generic-vnfs/generic-vnf/6aa153ee-6637-4b49-beb5-a5e756e00393\"\n"
+            + "},\n"
+            + "  {\n"
+            + "\"resource-type\": \"generic-vnf\",\n"
+            + "\"resource-link\": \"/aai/v13/network/generic-vnfs/generic-vnf/5a981c30-de25-4ea9-98fa-ed398f13ea41\"\n"
+            + "},\n"
+            + "  {\n"
+            + "\"resource-type\": \"generic-vnf\",\n"
+            + "\"resource-link\": \"/aai/v13/network/generic-vnfs/generic-vnf/b0ef2271-8ac0-4268-b9a5-09cb50c20c85\"\n"
+            + "}\n"
+            + "],\n"
+            + "}";
+
+    private String subscribersResponsePayload =
+        "{\n"
+        + "\"customer\": [\n"
+        + "  {\n"
+        + "\"global-customer-id\": \"DemoCust_752df078-d8e9-4731-abf6-8ae7348075bb\",\n"
+        + "\"subscriber-name\": \"DemoCust_752df078-d8e9-4731-abf6-8ae7348075bb\",\n"
+        + "\"subscriber-type\": \"INFRA\",\n"
+        + "\"resource-version\": \"1536158347585\"\n"
+        + "},\n"
+        + "  {\n"
+        + "\"global-customer-id\": \"DemoCust_62bf43a3-4888-4c82-ae98-3ebc3d782761\",\n"
+        + "\"subscriber-name\": \"DemoCust_62bf43a3-4888-4c82-ae98-3ebc3d782761\",\n"
+        + "\"subscriber-type\": \"INFRA\",\n"
+        + "\"resource-version\": \"1536240894581\"\n"
+        + "},\n"
+        + "  {\n"
+        + "\"global-customer-id\": \"DemoCust_e84256d6-ef3e-4a28-9741-9987019c3a8f\",\n"
+        + "\"subscriber-name\": \"DemoCust_e84256d6-ef3e-4a28-9741-9987019c3a8f\",\n"
+        + "\"subscriber-type\": \"INFRA\",\n"
+        + "\"resource-version\": \"1536330956393\"\n"
+        + "},\n"
+        + "  {\n"
+        + "\"global-customer-id\": \"ETE_Customer_377bb124-2638-4025-a315-cdae04f52bce\",\n"
+        + "\"subscriber-name\": \"ETE_Customer_377bb124-2638-4025-a315-cdae04f52bce\",\n"
+        + "\"subscriber-type\": \"INFRA\",\n"
+        + "\"resource-version\": \"1536088625538\"\n"
+        + "}\n"
+        + "],\n"
+        + "}";
+
+    @BeforeClass
+    public static void setUpClass(){
+        serverUtil = new StubServerUtil();
+        serverUtil.runServer();
+    }
+
+    @AfterClass
+    public static void tearDown(){
+        serverUtil.stopServer();
+    }
+
+    @Test
+    public void shouldSearchNodeTypeByName() throws IOException, ParseException {
+        ObjectMapper objectMapper = getFasterXmlObjectMapper();
+        AaiOverTLSClient aaiOverTLSClient = new AaiOverTLSClient(new SyncRestClient(objectMapper),  propertySupplier, serverUtil.constructTargetUrl("http", ""));
+
+        serverUtil.prepareGetCall("/search/nodes-query", new JSONParser().parse(searchNodesQueryResponsePayload), Action.status(HttpStatus.OK_200));
+
+        HttpResponse<AaiNodeQueryResponse> aaiNodeQueryResponseHttpResponse = aaiOverTLSClient
+            .searchNodeTypeByName("any", ResourceType.GENERIC_VNF);
+
+        AaiNodeQueryResponse body = aaiNodeQueryResponseHttpResponse.getBody();
+        Assertions.assertThat(body.resultData.size()).isEqualTo(5);
+        Assertions.assertThat(aaiNodeQueryResponseHttpResponse.getStatus()).isEqualTo(200);
+    }
+
+    @Test
+    public void shouldGetSubscribers() throws ParseException, JsonProcessingException {
+        ObjectMapper objectMapper = getCodehausObjectMapper();
+        AaiOverTLSClient aaiOverTLSClient = new AaiOverTLSClient(new SyncRestClient(objectMapper),  propertySupplier, serverUtil.constructTargetUrl("http", ""));
+
+        serverUtil.prepareGetCall("/business/customers", new JSONParser().parse(subscribersResponsePayload), Action.status(HttpStatus.OK_200));
+
+        HttpResponse<SubscriberList> allSubscribers = aaiOverTLSClient.getAllSubscribers();
+
+        SubscriberList subscriberList = allSubscribers.getBody();
+        Assertions.assertThat(subscriberList.customer.size()).isEqualTo(4);
+        Assertions.assertThat(allSubscribers.getStatus()).isEqualTo(200);
+    }
+
+    private ObjectMapper getCodehausObjectMapper() {
+        return new ObjectMapper() {
+
+            org.codehaus.jackson.map.ObjectMapper om = new org.codehaus.jackson.map.ObjectMapper();
+
+            @Override
+            public <T> T readValue(String s, Class<T> aClass) {
+                try {
+                    return om.readValue(s, aClass);
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+
+            @Override
+            public String writeValue(Object o) {
+                try {
+                    return om.writeValueAsString(o);
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        };
+    }
+
+    private ObjectMapper getFasterXmlObjectMapper() {
+        return new ObjectMapper() {
+
+            com.fasterxml.jackson.databind.ObjectMapper om = new com.fasterxml.jackson.databind.ObjectMapper();
+
+            @Override
+            public <T> T readValue(String s, Class<T> aClass) {
+                try {
+                    return om.readValue(s, aClass);
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+
+            @Override
+            public String writeValue(Object o) {
+                try {
+                    return om.writeValueAsString(o);
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        };
+    }
+
+}
diff --git a/vid-app-common/src/test/java/org/onap/vid/aai/AaiOverTLSClientTest.java b/vid-app-common/src/test/java/org/onap/vid/aai/AaiOverTLSClientTest.java
new file mode 100644
index 0000000..f281e84
--- /dev/null
+++ b/vid-app-common/src/test/java/org/onap/vid/aai/AaiOverTLSClientTest.java
@@ -0,0 +1,89 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2018 Nokia 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.vid.aai;
+
+import com.google.common.collect.ImmutableMap;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.vid.aai.model.AaiNodeQueryResponse;
+import org.onap.vid.aai.model.ResourceType;
+import org.onap.vid.client.SyncRestClient;
+import org.onap.vid.model.SubscriberList;
+
+import java.util.Collections;
+import java.util.Map;
+
+import static org.mockito.ArgumentMatchers.contains;
+import static org.mockito.ArgumentMatchers.eq;
+
+@RunWith(MockitoJUnitRunner.class)
+public class AaiOverTLSClientTest {
+
+    private static final String SEARCH_NODES_QUERY_SEARCH_NODE_TYPE = "search/nodes-query?search-node-type=generic-vnf&filter=vnf-name:EQUALS:name";
+    private static final String SUBSCRIBERS = "business/customers?subscriber-type=INFRA&depth=0";
+    private AaiOverTLSClient aaiRestClient;
+
+    @Mock
+    private SyncRestClient syncRestClient;
+    @Mock
+    private AaiOverTLSPropertySupplier propertySupplier;
+
+    @Before
+    public void setUp() {
+        aaiRestClient = new AaiOverTLSClient(syncRestClient,  propertySupplier);
+    }
+
+    @Test
+    public void testSearchNodeTypeByName() {
+        mockPropertyReader();
+
+        aaiRestClient.searchNodeTypeByName("name", ResourceType.GENERIC_VNF);
+        Mockito.verify(syncRestClient).get(contains(SEARCH_NODES_QUERY_SEARCH_NODE_TYPE),
+            eq(getHeaders()), eq(Collections.emptyMap()), eq(AaiNodeQueryResponse.class));
+    }
+
+    @Test
+    public void  testGetAllSubscribers(){
+        mockPropertyReader();
+
+        aaiRestClient.getAllSubscribers();
+        Mockito.verify(syncRestClient).get(contains(SUBSCRIBERS),
+            eq(getHeaders()), eq(Collections.emptyMap()), eq(SubscriberList.class));
+    }
+
+    private void mockPropertyReader() {
+        Mockito.when(propertySupplier.getPassword()).thenReturn("Pass");
+        Mockito.when(propertySupplier.getUsername()).thenReturn("User");
+        Mockito.when(propertySupplier.getRequestId()).thenReturn("1");
+        Mockito.when(propertySupplier.getRandomUUID()).thenReturn("2");
+    }
+
+    private Map<String,String> getHeaders(){
+        return ImmutableMap.<String, String>builder().put("Authorization", "Basic VXNlcjpQYXNz").
+            put("X-FromAppId", "VidAaiController").put("Accept", "application/json").put("X-ECOMP-RequestID", "1").
+            put("X-TransactionId", "2").put("Content-Type", "application/json").build();
+    }
+
+}
\ No newline at end of file
diff --git a/vid-app-common/src/test/java/org/onap/vid/aai/util/HttpsAuthClientTest.java b/vid-app-common/src/test/java/org/onap/vid/aai/util/HttpsAuthClientTest.java
index f000dc8..ce957ab 100644
--- a/vid-app-common/src/test/java/org/onap/vid/aai/util/HttpsAuthClientTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/aai/util/HttpsAuthClientTest.java
@@ -21,21 +21,11 @@
 
 package org.onap.vid.aai.util;
 
-import org.junit.Before;
-import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.runners.MockitoJUnitRunner;
-import org.onap.vid.aai.exceptions.HttpClientBuilderException;
+import org.mockito.junit.MockitoJUnitRunner;
 
 import javax.net.ssl.SSLContext;
-import java.util.Optional;
-
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
 public class HttpsAuthClientTest {
diff --git a/vid-app-common/src/test/java/org/onap/vid/aai/util/SingleAAIRestInterfaceTest.java b/vid-app-common/src/test/java/org/onap/vid/aai/util/SingleAAIRestInterfaceTest.java
index cd2b8ff..7fad901 100644
--- a/vid-app-common/src/test/java/org/onap/vid/aai/util/SingleAAIRestInterfaceTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/aai/util/SingleAAIRestInterfaceTest.java
@@ -25,7 +25,7 @@
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.mockito.runners.MockitoJUnitRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.onap.vid.aai.exceptions.InvalidPropertyException;
 import org.testng.Assert;
 
diff --git a/vid-app-common/src/test/java/org/onap/vid/asdc/parser/ToscaParserImpl2Test.java b/vid-app-common/src/test/java/org/onap/vid/asdc/parser/ToscaParserImpl2Test.java
index 1282a6f..e1c5e92 100644
--- a/vid-app-common/src/test/java/org/onap/vid/asdc/parser/ToscaParserImpl2Test.java
+++ b/vid-app-common/src/test/java/org/onap/vid/asdc/parser/ToscaParserImpl2Test.java
@@ -15,8 +15,8 @@
 import org.onap.vid.asdc.AsdcCatalogException;
 import org.onap.vid.asdc.AsdcClient;
 import org.onap.vid.asdc.local.LocalAsdcClient;
-import org.onap.vid.model.*;
 import org.onap.vid.controllers.ToscaParserMockHelper;
+import org.onap.vid.model.*;
 import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -196,6 +196,28 @@
         JsonAssert.assertJsonEquals(expectedConfigurations, actualConfigurations);
     }
 
+    @Test
+    public void modelWithAnnotatedInputWithTwoProperties_vfModuleGetsTheInput() throws Exception {
+        final ToscaParserMockHelper mockHelper = new ToscaParserMockHelper("90fe6842-aa76-4b68-8329-5c86ff564407", "empty.json");
+        final ServiceModel serviceModel = toscaParserImpl2.makeServiceModel(getCsarPath(mockHelper.getUuid()), getServiceByUuid(mockHelper.getUuid()));
+
+        assertJsonStringEqualsIgnoreNulls("{ vfModules: { 201712488_adiodvpe10..201712488AdiodVpe1..ADIOD_vRE_BV..module-1: { inputs: { 201712488_adiodvpe10_availability_zone_0: { } } } } }", om.writeValueAsString(serviceModel));
+    }
+
+    @Test
+    public void modelWithNfNamingWithToValues_ecompGeneratedNamingIsExtracted() throws Exception {
+        final ToscaParserMockHelper mockHelper = new ToscaParserMockHelper("90fe6842-aa76-4b68-8329-5c86ff564407", "empty.json");
+        final ServiceModel serviceModel = toscaParserImpl2.makeServiceModel(getCsarPath(mockHelper.getUuid()), getServiceByUuid(mockHelper.getUuid()));
+
+        assertJsonStringEqualsIgnoreNulls("" +
+                "{ vnfs: " +
+                "  { \"201712-488_ADIOD-vPE-1 0\": " +
+                "    { properties: { " +
+                "      ecomp_generated_naming: \"true\", " +
+                "      nf_naming: \"{naming_policy=SDNC_Policy.Config_MS_1806SRIOV_VPE_ADIoDJson, ecomp_generated_naming=true}\" " +
+                "} } } }", om.writeValueAsString(serviceModel));
+    }
+
     private void setPprobeServiceProxy(Map<String, PortMirroringConfig> expectedConfigurations){
         //Port Mirroring Configuration By Policy 0 doesn't contains pProbe.
         // But due to sdc design if pProbe not exists parser expects to get it from other source.
diff --git a/vid-app-common/src/test/java/org/onap/vid/asdc/rest/SdcRestClientTest.java b/vid-app-common/src/test/java/org/onap/vid/asdc/rest/SdcRestClientTest.java
index c1d6ab7..642569c 100644
--- a/vid-app-common/src/test/java/org/onap/vid/asdc/rest/SdcRestClientTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/asdc/rest/SdcRestClientTest.java
@@ -25,7 +25,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.onap.vid.asdc.AsdcCatalogException;
 import org.onap.vid.asdc.beans.Service;
 import org.onap.vid.client.SyncRestClient;
@@ -37,9 +37,7 @@
 import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.Is.is;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyMapOf;
-import static org.mockito.Matchers.matches;
+import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
@@ -82,7 +80,7 @@
     @Test
     public void shouldReturnServiceForGivenUUID() throws AsdcCatalogException {
         String url = String.format(METADATA_URL_REGEX, randomId);
-        when(mockedSyncRestClient.get(matches(url), anyMapOf(String.class, String.class), anyMapOf(String.class, String.class), any())).thenReturn(httpResponse);
+        when(mockedSyncRestClient.get(matches(url), anyMap(), anyMap(), any())).thenReturn(httpResponse);
         when(httpResponse.getBody()).thenReturn(sampleService);
 
         Service service = restClient.getService(randomId);
@@ -94,7 +92,7 @@
     @Test(expected = AsdcCatalogException.class)
     public void shouldRaiseAsdcExceptionWhenClientFails() throws AsdcCatalogException {
         String url = String.format(METADATA_URL_REGEX, randomId);
-        when(mockedSyncRestClient.get(matches(url), anyMapOf(String.class, String.class), anyMapOf(String.class, String.class), any())).thenThrow(new RuntimeException());
+        when(mockedSyncRestClient.get(matches(url), anyMap(), anyMap(), any())).thenThrow(new RuntimeException());
 
         restClient.getService(randomId);
     }
@@ -119,7 +117,7 @@
     @Test(expected = AsdcCatalogException.class)
     public void shouldRaiseAsdcExceptionWhenDownloadFails() throws AsdcCatalogException {
         String url = String.format(MODEL_URL_REGEX, randomId);
-        when(mockedSyncRestClient.getStream(matches(url), anyMapOf(String.class, String.class), anyMapOf(String.class, String.class))).thenThrow(new RuntimeException());
+        when(mockedSyncRestClient.getStream(matches(url), anyMap(), anyMap())).thenThrow(new RuntimeException());
 
 
         restClient.getServiceToscaModel(randomId);
diff --git a/vid-app-common/src/test/java/org/onap/vid/config/JobCommandsConfigWithMockedMso.java b/vid-app-common/src/test/java/org/onap/vid/config/JobCommandsConfigWithMockedMso.java
index 56ac28d..c1ac6a2 100644
--- a/vid-app-common/src/test/java/org/onap/vid/config/JobCommandsConfigWithMockedMso.java
+++ b/vid-app-common/src/test/java/org/onap/vid/config/JobCommandsConfigWithMockedMso.java
@@ -21,13 +21,19 @@
 
 package org.onap.vid.config;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
 import org.hibernate.SessionFactory;
 import org.mockito.Mockito;
 import org.onap.portalsdk.core.service.DataAccessService;
-import org.onap.vid.aai.AaiClientInterface;
+import org.onap.vid.aai.AaiOverTLSClient;
+import org.onap.vid.aai.AaiOverTLSClientInterface;
+import org.onap.vid.aai.AaiOverTLSPropertySupplier;
 import org.onap.vid.aai.util.HttpsAuthClient;
 import org.onap.vid.aai.util.SSLContextProvider;
 import org.onap.vid.aai.util.SystemPropertyHelper;
+import org.onap.vid.client.SyncRestClient;
 import org.onap.vid.job.JobAdapter;
 import org.onap.vid.job.JobsBrokerService;
 import org.onap.vid.job.command.InProgressStatusCommand;
@@ -84,12 +90,40 @@
     }
 
     @Bean
+    public AaiOverTLSClientInterface AaiOverTLSClient(){
+        io.joshworks.restclient.http.mapper.ObjectMapper objectMapper = new io.joshworks.restclient.http.mapper.ObjectMapper() {
+
+            ObjectMapper om = new ObjectMapper();
+
+            @Override
+            public <T> T readValue(String s, Class<T> aClass) {
+                try {
+                    return om.readValue(s, aClass);
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+
+            @Override
+            public String writeValue(Object o) {
+                try {
+                    return om.writeValueAsString(o);
+                } catch (JsonProcessingException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        };
+
+        return new AaiOverTLSClient(new SyncRestClient(objectMapper), new AaiOverTLSPropertySupplier());
+    }
+
+    @Bean
     public AsyncInstantiationBusinessLogic asyncInstantiationBusinessLogic(DataAccessService dataAccessService,
                                                                            JobAdapter jobAdapter,
                                                                            JobsBrokerService jobsBrokerService,
                                                                            SessionFactory sessionFactory,
-                                                                           AaiClientInterface aaiClient) {
-        return new AsyncInstantiationBusinessLogicImpl(dataAccessService, jobAdapter, jobsBrokerService, sessionFactory, aaiClient);
+                                                                           AaiOverTLSClientInterface aaiOverTLSClientInterface) {
+        return new AsyncInstantiationBusinessLogicImpl(dataAccessService, jobAdapter, jobsBrokerService, sessionFactory, aaiOverTLSClientInterface);
     }
 
     @Bean
diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/ClientCredentialsFilterTest.java b/vid-app-common/src/test/java/org/onap/vid/controller/ClientCredentialsFilterTest.java
index 61f18f5..113bf2b 100644
--- a/vid-app-common/src/test/java/org/onap/vid/controller/ClientCredentialsFilterTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/controller/ClientCredentialsFilterTest.java
@@ -13,7 +13,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
 
 
 /**
@@ -71,7 +71,7 @@
         FilterChain chain = Mockito.mock(FilterChain.class);
 
 
-        Mockito.when(filter.verifyClientCredentials(any(String.class),any(String.class))).thenReturn(clientVerified);
+        Mockito.when(filter.verifyClientCredentials(any(),any())).thenReturn(clientVerified);
         Mockito.doNothing().when(response).sendError(401);
 
         Mockito.doCallRealMethod().when(filter).doFilter(request,response,chain);
diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/PromiseEcompRequestIdFilterTest.java b/vid-app-common/src/test/java/org/onap/vid/controller/PromiseEcompRequestIdFilterTest.java
index 3bcb2d0..4f42171 100644
--- a/vid-app-common/src/test/java/org/onap/vid/controller/PromiseEcompRequestIdFilterTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/controller/PromiseEcompRequestIdFilterTest.java
@@ -19,11 +19,12 @@
 import java.util.*;
 import java.util.function.Function;
 
+import static org.apache.commons.lang3.StringUtils.equalsIgnoreCase;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.*;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.argThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.argThat;
 import static org.onap.portalsdk.core.util.SystemProperties.ECOMP_REQUEST_ID;
 
 @Test
@@ -130,8 +131,8 @@
     private HttpServletRequest createMockedHttpServletRequest(Map<String, String> requestHeaders) {
         HttpServletRequest servletRequest = Mockito.mock(HttpServletRequest.class);
         requestHeaders.forEach((k, v) -> {
-            Mockito.when(servletRequest.getHeader(argThat(equalToIgnoringCase(k)))).thenReturn(v);
-            Mockito.when(servletRequest.getHeaders(argThat(equalToIgnoringCase(k)))).then(returnEnumerationAnswer(v));
+            Mockito.when(servletRequest.getHeader(argThat(s -> equalsIgnoreCase(s, k)))).thenReturn(v);
+            Mockito.when(servletRequest.getHeaders(argThat(s -> equalsIgnoreCase(s, k)))).then(returnEnumerationAnswer(v));
         });
         Mockito.when(servletRequest.getHeaderNames()).then(returnEnumerationAnswer(requestHeaders.keySet()));
         return servletRequest;
diff --git a/vid-app-common/src/test/java/org/onap/vid/controllers/ChangeManagementControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controllers/ChangeManagementControllerTest.java
index 317bd97..58406a6 100644
--- a/vid-app-common/src/test/java/org/onap/vid/controllers/ChangeManagementControllerTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/controllers/ChangeManagementControllerTest.java
@@ -1,23 +1,19 @@
 package org.onap.vid.controllers;
 
-import java.util.Collection;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.codehaus.jackson.map.ObjectMapper;
 import org.json.simple.JSONArray;
 import org.junit.Test;
 import org.onap.vid.changeManagement.ChangeManagementRequest;
 import org.onap.vid.changeManagement.GetVnfWorkflowRelationRequest;
 import org.onap.vid.changeManagement.VnfWorkflowRelationRequest;
 import org.onap.vid.mso.MsoResponseWrapperInterface;
-import org.onap.vid.services.ChangeManagementService;
 import org.onap.vid.services.ChangeManagementServiceImpl;
-import org.onap.vid.services.WorkflowService;
 import org.onap.vid.services.WorkflowServiceImpl;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import java.util.Collection;
+
 public class ChangeManagementControllerTest {
 
     private ChangeManagementController createTestSubject() {
diff --git a/vid-app-common/src/test/java/org/onap/vid/controllers/HealthCheckControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controllers/HealthCheckControllerTest.java
index da9cdaa..4894f35 100644
--- a/vid-app-common/src/test/java/org/onap/vid/controllers/HealthCheckControllerTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/controllers/HealthCheckControllerTest.java
@@ -5,7 +5,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.onap.vid.dao.FnAppDoaImpl;
 import org.springframework.http.MediaType;
 import org.springframework.test.web.servlet.MockMvc;
@@ -13,8 +13,8 @@
 
 import java.sql.SQLException;
 
+import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.BDDMockito.given;
-import static org.mockito.Matchers.anyString;
 import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
 import static org.springframework.http.HttpStatus.OK;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
diff --git a/vid-app-common/src/test/java/org/onap/vid/controllers/MaintenanceControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controllers/MaintenanceControllerTest.java
index 7bdd6b8..3a9d88f 100644
--- a/vid-app-common/src/test/java/org/onap/vid/controllers/MaintenanceControllerTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/controllers/MaintenanceControllerTest.java
@@ -22,22 +22,8 @@
  * ============LICENSE_END=========================================================
  */
 
-import static org.mockito.BDDMockito.given;
-import static org.mockito.BDDMockito.then;
-import static org.mockito.BDDMockito.willThrow;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.times;
-import static org.onap.vid.model.CategoryParameter.Family.PARAMETER_STANDARDIZATION;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-import java.util.Collections;
-import java.util.function.BiFunction;
-import javax.ws.rs.ForbiddenException;
 import org.apache.log4j.BasicConfigurator;
 import org.codehaus.jackson.map.ObjectMapper;
 import org.junit.Before;
@@ -45,7 +31,7 @@
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentMatcher;
 import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.onap.vid.category.AddCategoryOptionResponse;
 import org.onap.vid.category.AddCategoryOptionsRequest;
 import org.onap.vid.category.CategoryParameterOptionRep;
@@ -61,6 +47,19 @@
 import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 
+import javax.ws.rs.ForbiddenException;
+import java.util.Collections;
+import java.util.function.BiFunction;
+
+import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.BDDMockito.*;
+import static org.mockito.Mockito.times;
+import static org.onap.vid.model.CategoryParameter.Family.PARAMETER_STANDARDIZATION;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
 @RunWith(MockitoJUnitRunner.class)
 public class MaintenanceControllerTest {
 
diff --git a/vid-app-common/src/test/java/org/onap/vid/controllers/PromiseEcompRequestIdFilterTest.java b/vid-app-common/src/test/java/org/onap/vid/controllers/PromiseEcompRequestIdFilterTest.java
index 77dba37..f174039 100644
--- a/vid-app-common/src/test/java/org/onap/vid/controllers/PromiseEcompRequestIdFilterTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/controllers/PromiseEcompRequestIdFilterTest.java
@@ -19,11 +19,12 @@
 import java.util.*;
 import java.util.function.Function;
 
+import static org.apache.commons.lang3.StringUtils.equalsIgnoreCase;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.*;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.argThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.argThat;
 import static org.onap.portalsdk.core.util.SystemProperties.ECOMP_REQUEST_ID;
 
 @Test
@@ -130,8 +131,8 @@
     private HttpServletRequest createMockedHttpServletRequest(Map<String, String> requestHeaders) {
         HttpServletRequest servletRequest = Mockito.mock(HttpServletRequest.class);
         requestHeaders.forEach((k, v) -> {
-            Mockito.when(servletRequest.getHeader(argThat(equalToIgnoringCase(k)))).thenReturn(v);
-            Mockito.when(servletRequest.getHeaders(argThat(equalToIgnoringCase(k)))).then(returnEnumerationAnswer(v));
+            Mockito.when(servletRequest.getHeader(argThat(s -> equalsIgnoreCase(s, k)))).thenReturn(v);
+            Mockito.when(servletRequest.getHeaders(argThat(s -> equalsIgnoreCase(s, k)))).then(returnEnumerationAnswer(v));
         });
         Mockito.when(servletRequest.getHeaderNames()).then(returnEnumerationAnswer(requestHeaders.keySet()));
         return servletRequest;
diff --git a/vid-app-common/src/test/java/org/onap/vid/controllers/VidControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controllers/VidControllerTest.java
index 168d900..198680a 100644
--- a/vid-app-common/src/test/java/org/onap/vid/controllers/VidControllerTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/controllers/VidControllerTest.java
@@ -21,6 +21,37 @@
 package org.onap.vid.controllers;
 
 
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import org.apache.log4j.BasicConfigurator;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.vid.asdc.AsdcCatalogException;
+import org.onap.vid.asdc.beans.SecureServices;
+import org.onap.vid.asdc.beans.Service;
+import org.onap.vid.asdc.beans.ServiceBuilder;
+import org.onap.vid.model.*;
+import org.onap.vid.model.PombaInstance.PombaRequest;
+import org.onap.vid.model.PombaInstance.ServiceInstance;
+import org.onap.vid.roles.RoleProvider;
+import org.onap.vid.services.AaiService;
+import org.onap.vid.services.PombaService;
+import org.onap.vid.services.VidService;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+
+import javax.ws.rs.core.MediaType;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.stream.IntStream;
+
 import static java.util.stream.Collectors.toMap;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.CoreMatchers.is;
@@ -34,43 +65,6 @@
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.stream.IntStream;
-import javax.ws.rs.core.MediaType;
-import org.apache.log4j.BasicConfigurator;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-import org.onap.vid.asdc.AsdcCatalogException;
-import org.onap.vid.asdc.beans.SecureServices;
-import org.onap.vid.asdc.beans.Service;
-import org.onap.vid.asdc.beans.ServiceBuilder;
-import org.onap.vid.model.CR;
-import org.onap.vid.model.Network;
-import org.onap.vid.model.Node;
-import org.onap.vid.model.PombaInstance.PombaRequest;
-import org.onap.vid.model.PombaInstance.ServiceInstance;
-import org.onap.vid.model.ServiceModel;
-import org.onap.vid.model.ServiceProxy;
-import org.onap.vid.model.VNF;
-import org.onap.vid.model.VfModule;
-import org.onap.vid.model.VolumeGroup;
-import org.onap.vid.roles.RoleProvider;
-import org.onap.vid.services.AaiService;
-import org.onap.vid.services.PombaService;
-import org.onap.vid.services.VidService;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
 @RunWith(MockitoJUnitRunner.class)
 public class VidControllerTest {
 
diff --git a/vid-app-common/src/test/java/org/onap/vid/dao/FnAppDoaImplTest.java b/vid-app-common/src/test/java/org/onap/vid/dao/FnAppDoaImplTest.java
index 2c2aa89..6d60aa1 100644
--- a/vid-app-common/src/test/java/org/onap/vid/dao/FnAppDoaImplTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/dao/FnAppDoaImplTest.java
@@ -1,20 +1,20 @@
 package org.onap.vid.dao;
 
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-
 import static org.assertj.core.api.Java6Assertions.assertThat;
 import static org.assertj.core.api.Java6Assertions.assertThatThrownBy;
+import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.BDDMockito.given;
-import static org.mockito.Matchers.anyString;
 
 @RunWith(MockitoJUnitRunner.class)
 public class FnAppDoaImplTest {
diff --git a/vid-app-common/src/test/java/org/onap/vid/job/impl/JobWorkerTest.java b/vid-app-common/src/test/java/org/onap/vid/job/impl/JobWorkerTest.java
index b7e8e35..e58b6ba 100644
--- a/vid-app-common/src/test/java/org/onap/vid/job/impl/JobWorkerTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/job/impl/JobWorkerTest.java
@@ -19,7 +19,7 @@
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.*;
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
diff --git a/vid-app-common/src/test/java/org/onap/vid/mso/MsoBusinessLogicImplTest.java b/vid-app-common/src/test/java/org/onap/vid/mso/MsoBusinessLogicImplTest.java
index 4616732..718e22f 100644
--- a/vid-app-common/src/test/java/org/onap/vid/mso/MsoBusinessLogicImplTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/mso/MsoBusinessLogicImplTest.java
@@ -20,25 +20,8 @@
  */
 package org.onap.vid.mso;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.BDDMockito.given;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.onap.vid.mso.MsoBusinessLogicImpl.validateEndpointPath;
-
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.IOException;
-import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.List;
-import java.util.stream.Collectors;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -56,6 +39,22 @@
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import org.togglz.core.manager.FeatureManager;
 
+import java.io.IOException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.mock;
+import static org.onap.vid.mso.MsoBusinessLogicImpl.validateEndpointPath;
+
 @ContextConfiguration(classes = {SystemProperties.class})
 @RunWith(SpringJUnit4ClassRunner.class)
 public class MsoBusinessLogicImplTest {
@@ -287,7 +286,7 @@
         return new String(Files.readAllBytes(path));
     }
 
-    private static class MsoRequestWrapperMatcher extends
+    private static class MsoRequestWrapperMatcher implements
         ArgumentMatcher<org.onap.vid.changeManagement.RequestDetailsWrapper> {
 
         private final org.onap.vid.changeManagement.RequestDetailsWrapper expectedRequest;
@@ -297,9 +296,8 @@
         }
 
         @Override
-        public boolean matches(Object argument) {
-            org.onap.vid.changeManagement.RequestDetailsWrapper requestDetailsWrapper = (org.onap.vid.changeManagement.RequestDetailsWrapper) argument;
-            return expectedRequest.requestDetails.equals(requestDetailsWrapper.requestDetails);
+        public boolean matches(org.onap.vid.changeManagement.RequestDetailsWrapper argument) {
+            return expectedRequest.requestDetails.equals(argument.requestDetails);
         }
     }
 }
diff --git a/vid-app-common/src/test/java/org/onap/vid/mso/rest/OutgoingRequestIdTest.java b/vid-app-common/src/test/java/org/onap/vid/mso/rest/OutgoingRequestIdTest.java
index 909975f..197bfe7 100644
--- a/vid-app-common/src/test/java/org/onap/vid/mso/rest/OutgoingRequestIdTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/mso/rest/OutgoingRequestIdTest.java
@@ -2,12 +2,7 @@
 
 import com.google.common.collect.ImmutableList;
 import org.apache.commons.lang3.reflect.FieldUtils;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Matchers;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
+import org.mockito.*;
 import org.onap.vid.aai.util.AAIRestInterface;
 import org.onap.vid.changeManagement.RequestDetailsWrapper;
 import org.onap.vid.controller.filter.PromiseEcompRequestIdFilter;
@@ -31,13 +26,9 @@
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import static org.apache.commons.lang3.StringUtils.equalsIgnoreCase;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.allOf;
-import static org.hamcrest.Matchers.equalToIgnoringCase;
-import static org.hamcrest.Matchers.hasItem;
-import static org.hamcrest.Matchers.hasToString;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.Matchers.matchesPattern;
+import static org.hamcrest.Matchers.*;
 
 
 public class OutgoingRequestIdTest {
@@ -130,7 +121,7 @@
             ArgumentCaptor<Object> argumentCaptor = ArgumentCaptor.forClass(Object.class);
             Mockito.verify(fakeBuilder)
                     .header(
-                            Matchers.argThat(equalToIgnoringCase(requestIdHeader)),
+                            Matchers.argThat(s -> equalsIgnoreCase(s, requestIdHeader)),
                             argumentCaptor.capture()
                     );
             requestId = argumentCaptor.getValue();
diff --git a/vid-app-common/src/test/java/org/onap/vid/scheduler/SchedulerRestInterfaceTest.java b/vid-app-common/src/test/java/org/onap/vid/scheduler/SchedulerRestInterfaceTest.java
index 6390f58..0655aca 100644
--- a/vid-app-common/src/test/java/org/onap/vid/scheduler/SchedulerRestInterfaceTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/scheduler/SchedulerRestInterfaceTest.java
@@ -30,7 +30,7 @@
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.runners.MockitoJUnitRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.onap.vid.exceptions.GenericUncheckedException;
 import org.onap.vid.testUtils.StubServerUtil;
 import org.testng.annotations.AfterMethod;
diff --git a/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceImplTest.java b/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceImplTest.java
index ae6c2cc..efa12f2 100644
--- a/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceImplTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceImplTest.java
@@ -1,8 +1,28 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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.vid.services;
 
-import java.util.Collection;
-import java.util.List;
-
+import com.google.common.collect.ImmutableList;
+import io.joshworks.restclient.http.HttpResponse;
 import org.junit.Assert;
 import org.junit.Test;
 import org.onap.vid.aai.AaiResponse;
@@ -13,6 +33,8 @@
 import org.onap.vid.model.SubscriberList;
 import org.onap.vid.roles.RoleValidator;
 
+import java.util.List;
+
 public class AaiServiceImplTest {
 
     private AaiServiceImpl createTestSubject() {
@@ -55,7 +77,7 @@
     @Test
     public void testGetFullSubscriberList_1() throws Exception {
         AaiServiceImpl testSubject;
-        AaiResponse<SubscriberList> result;
+        HttpResponse<SubscriberList> result;
 
         // default test
         try {
@@ -144,7 +166,7 @@
     @Test
     public void testGetVersionByInvariantId() throws Exception {
         AaiServiceImpl testSubject;
-        List<String> modelInvariantId = null;
+        List<String> modelInvariantId = ImmutableList.of("some invariant id");
 
         // default test
         try {
diff --git a/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBaseTest.java b/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBaseTest.java
index c3d0128..5ead3fc 100644
--- a/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBaseTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBaseTest.java
@@ -1,8 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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.vid.services;
 
 import com.google.common.collect.ImmutableMap;
+import io.joshworks.restclient.http.HttpResponse;
 import jersey.repackaged.com.google.common.collect.ImmutableList;
-import org.onap.vid.aai.AaiClientInterface;
+import org.apache.http.HttpStatus;
+import org.apache.http.HttpVersion;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.DefaultHttpResponseFactory;
+import org.apache.http.message.BasicStatusLine;
+import org.onap.vid.aai.AaiOverTLSClientInterface;
 import org.onap.vid.aai.AaiResponse;
 import org.onap.vid.aai.model.AaiNodeQueryResponse;
 import org.onap.vid.aai.model.ResourceType;
@@ -13,15 +40,14 @@
 import org.onap.vid.model.serviceInstantiation.Vnf;
 import org.onap.vid.mso.RestObject;
 import org.onap.vid.mso.rest.AsyncRequestStatus;
-import org.onap.vid.services.AsyncInstantiationBusinessLogic;
-import org.onap.vid.services.AsyncInstantiationBusinessLogicTest;
 import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
 import org.togglz.core.manager.FeatureManager;
 
 import javax.inject.Inject;
+import java.io.UnsupportedEncodingException;
 import java.util.*;
 
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.when;
 
 public class AsyncInstantiationBaseTest extends AbstractTestNGSpringContextTests {
@@ -48,7 +74,7 @@
     protected FeatureManager featureManager;
 
     @Inject
-    protected AaiClientInterface aaiClient;
+    protected AaiOverTLSClientInterface aaiClient;
 
     public ServiceInstantiation generateMockServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure) {
         ModelInfo modelInfo = createModelInfo();
@@ -174,12 +200,15 @@
         return restObject;
     }
 
-    protected void mockAaiClientAnyNameFree() {
+    protected void mockAaiClientAnyNameFree() throws UnsupportedEncodingException {
         when(aaiClient.searchNodeTypeByName(any(), any())).thenReturn(aaiNodeQueryResponseNameFree());
     }
 
-    protected AaiResponse<AaiNodeQueryResponse> aaiNodeQueryResponseNameFree() {
-        return new AaiResponse<>(new AaiNodeQueryResponse(null),"", 200);
+    protected HttpResponse<AaiNodeQueryResponse> aaiNodeQueryResponseNameFree() throws UnsupportedEncodingException {
+        org.apache.http.HttpResponse response = new DefaultHttpResponseFactory().newHttpResponse(new BasicStatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, null), null);
+        response.setEntity(new StringEntity(""));
+
+        return HttpResponse.fallback(new AaiNodeQueryResponse(null));
     }
 
     protected AaiResponse<AaiNodeQueryResponse> aaiNodeQueryBadResponse() {
diff --git a/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBusinessLogicTest.java b/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBusinessLogicTest.java
index 3f13c9d..9711fa8 100644
--- a/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBusinessLogicTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBusinessLogicTest.java
@@ -1,72 +1,9 @@
 package org.onap.vid.services;
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import jersey.repackaged.com.google.common.collect.ImmutableList;
-import net.javacrumbs.jsonunit.JsonAssert;
-import org.apache.commons.io.IOUtils;
-import org.hibernate.SessionFactory;
-import org.json.JSONException;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
-import org.onap.vid.aai.exceptions.InvalidAAIResponseException;
-import org.onap.vid.aai.model.ResourceType;
-import org.onap.vid.changeManagement.RequestDetailsWrapper;
-import org.onap.vid.exceptions.GenericUncheckedException;
-import org.onap.vid.exceptions.MaxRetriesException;
-import org.onap.vid.exceptions.OperationNotAllowedException;
-import org.onap.vid.job.Job;
-import org.onap.vid.job.Job.JobStatus;
-import org.onap.vid.job.JobAdapter;
-import org.onap.vid.job.JobsBrokerService;
-import org.onap.vid.job.impl.JobDaoImpl;
-import org.onap.vid.model.JobAuditStatus;
-import org.onap.vid.model.JobAuditStatus.SourceStatus;
-import org.onap.vid.model.NameCounter;
-import org.onap.vid.model.ServiceInfo;
-import org.onap.vid.model.serviceInstantiation.ServiceInstantiation;
-import org.onap.vid.model.serviceInstantiation.Vnf;
-import org.onap.vid.mso.model.ServiceInstantiationRequestDetails;
-import org.onap.vid.mso.rest.AsyncRequestStatus;
-import org.onap.vid.utils.DaoUtils;
+import org.onap.portalsdk.core.util.SystemProperties;
 import org.onap.vid.config.DataSourceConfig;
 import org.onap.vid.config.MockedAaiClientAndFeatureManagerConfig;
-import org.onap.vid.mso.MsoOperationalEnvironmentTest;
-import org.onap.vid.services.AsyncInstantiationBaseTest;
-import org.onap.portalsdk.core.domain.FusionObject;
-import org.onap.portalsdk.core.service.DataAccessService;
-import org.onap.portalsdk.core.util.SystemProperties;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ContextConfiguration;
-import org.testng.Assert;
-import org.testng.annotations.*;
-
-import javax.inject.Inject;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.util.*;
-import java.util.Optional;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.contains;
-import static org.hamcrest.Matchers.*;
-import static org.hamcrest.core.Every.everyItem;
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.*;
-import static org.onap.vid.job.Job.JobStatus.*;
-import static org.testng.Assert.*;
 
 @ContextConfiguration(classes = {DataSourceConfig.class, SystemProperties.class, MockedAaiClientAndFeatureManagerConfig.class})
 public class AsyncInstantiationBusinessLogicTest extends AsyncInstantiationBaseTest {
diff --git a/vid-app-common/src/test/java/org/onap/vid/services/CategoryParameterServiceImplTest.java b/vid-app-common/src/test/java/org/onap/vid/services/CategoryParameterServiceImplTest.java
index 7992cbb..3492a75 100644
--- a/vid-app-common/src/test/java/org/onap/vid/services/CategoryParameterServiceImplTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/services/CategoryParameterServiceImplTest.java
@@ -20,18 +20,6 @@
  */
 package org.onap.vid.services;
 
-import static org.mockito.Matchers.anyObject;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.MockitoAnnotations.initMocks;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import javax.ws.rs.ForbiddenException;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.onap.portalsdk.core.service.DataAccessService;
@@ -50,6 +38,16 @@
 import org.testng.annotations.BeforeSuite;
 import org.testng.annotations.Test;
 
+import javax.ws.rs.ForbiddenException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.*;
+import static org.mockito.MockitoAnnotations.initMocks;
+
 public class CategoryParameterServiceImplTest {
 
     private static final String CATEGORY_NAME = "SAMPLE_CATEGORY_NAME";
@@ -89,7 +87,7 @@
 
         Assert.assertTrue(result.getErrors().isEmpty());;
         verify(dataAccessService, times(1))
-            .saveDomainObject(anyObject(), anyObject());
+            .saveDomainObject(any(), any());
     }
 
     @Test
@@ -164,12 +162,12 @@
         categoryParameter.addOption(categoryParameterOption);
         List<CategoryParameter> aList = createCategoryParametersList(categoryParameter);
 
-        doReturn(aList).when(dataAccessService).getList(anyObject(), anyString(), anyString(), anyObject());
+        doReturn(aList).when(dataAccessService).getList(any(), anyString(), any(), any());
 
         testSubject.deleteCategoryOption(CATEGORY_NAME, categoryParameterOption);
 
         verify(dataAccessService, times(1))
-            .deleteDomainObject(anyObject(), anyObject());
+            .deleteDomainObject(any(), any());
     }
 
     @Test
@@ -181,7 +179,7 @@
         categoryParameter.addOption(categoryParameterOption);
         List<CategoryParameter> aList = createCategoryParametersList(categoryParameter);
 
-        doReturn(aList).when(dataAccessService).getList(anyObject(), anyString(), anyString(), anyObject());
+        doReturn(aList).when(dataAccessService).getList(any(), anyString(), any(), any());
 
         CategoryParametersResponse response = testSubject.getCategoryParameters(Family.PARAMETER_STANDARDIZATION);
 
@@ -189,7 +187,7 @@
         Assert.assertTrue(response.getCategoryParameters().containsKey(CATEGORY_NAME));
 
         verify(dataAccessService, times(1))
-            .getList(anyObject(), anyString(), anyString(), anyObject());
+            .getList(any(), anyString(), any(), any());
     }
 
     @Test
@@ -206,7 +204,7 @@
         AddCategoryOptionResponse result = testSubject.updateCategoryParameterOption(CATEGORY_NAME, optionRepExisting);
 
         verify(dataAccessService, times(1))
-            .saveDomainObject(anyObject(), anyObject());
+            .saveDomainObject(any(), any());
     }
 
     @Test(expectedExceptions = { ForbiddenException.class })
diff --git a/vid-app-common/src/test/java/org/onap/vid/services/ChangeManagementServiceImplTest.java b/vid-app-common/src/test/java/org/onap/vid/services/ChangeManagementServiceImplTest.java
index 157f59c..00d9e17 100644
--- a/vid-app-common/src/test/java/org/onap/vid/services/ChangeManagementServiceImplTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/services/ChangeManagementServiceImplTest.java
@@ -1,12 +1,12 @@
 package org.onap.vid.services;
 
 import org.mockito.*;
+import org.onap.portalsdk.core.service.DataAccessService;
 import org.onap.vid.changeManagement.ChangeManagementRequest;
 import org.onap.vid.changeManagement.RequestDetails;
 import org.onap.vid.mso.MsoBusinessLogic;
 import org.onap.vid.mso.MsoResponseWrapperInterface;
 import org.onap.vid.scheduler.SchedulerRestInterfaceIfc;
-import org.onap.portalsdk.core.service.DataAccessService;
 import org.springframework.http.ResponseEntity;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -54,47 +54,47 @@
 
     @Test
     public void  doChangeManagement_requestTypeIsUpdate_MsoUpdateVnfIsCalled() throws Exception {
-        Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).updateVnf(Mockito.any(),Mockito.anyString(),Mockito.anyString());
+        Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).updateVnf(Mockito.any(),Mockito.any(),Mockito.any());
         RequestDetails requestDetails = callChangeManagement(ChangeManagementRequest.UPDATE);
 
         ArgumentCaptor<RequestDetails> argumentCaptor = ArgumentCaptor.forClass(RequestDetails.class);
-        verify(msoBusinessLogicMock).updateVnf(argumentCaptor.capture(),Mockito.anyString(),Mockito.anyString());
+        verify(msoBusinessLogicMock).updateVnf(argumentCaptor.capture(),Mockito.any(),Mockito.any());
         assertEquals(argumentCaptor.getValue().getVnfInstanceId(),requestDetails.getVnfInstanceId());
     }
 
     @Test
     public void  doChangeManagement_requestTypeIsReplace_MsoUpdateVnfIsCalled() throws Exception {
-        Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).replaceVnf(Mockito.any(),Mockito.anyString(),Mockito.anyString());
+        Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).replaceVnf(Mockito.any(),Mockito.any(),Mockito.any());
         RequestDetails requestDetails = callChangeManagement(ChangeManagementRequest.REPLACE);
 
 
         ArgumentCaptor<RequestDetails> argumentCaptor = ArgumentCaptor.forClass(RequestDetails.class);
 
-        verify(msoBusinessLogicMock).replaceVnf(argumentCaptor.capture(),Mockito.anyString(),Mockito.anyString());
+        verify(msoBusinessLogicMock).replaceVnf(argumentCaptor.capture(),Mockito.any(),Mockito.any());
         assertEquals(argumentCaptor.getValue().getVnfInstanceId(),requestDetails.getVnfInstanceId());
     }
 
     @Test
     public void  doChangeManagement_requestTypeIsInPlaceSoftwareUpdate_MsoUpdateVnfIsCalled() throws Exception {
-        Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).updateVnfSoftware(Mockito.any(),Mockito.anyString(),Mockito.anyString());
+        Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).updateVnfSoftware(Mockito.any(),Mockito.any(),Mockito.any());
         RequestDetails requestDetails = callChangeManagement(ChangeManagementRequest.VNF_IN_PLACE_SOFTWARE_UPDATE);
 
 
         ArgumentCaptor<RequestDetails> argumentCaptor = ArgumentCaptor.forClass(RequestDetails.class);
 
-        verify(msoBusinessLogicMock).updateVnfSoftware(argumentCaptor.capture(),Mockito.anyString(),Mockito.anyString());
+        verify(msoBusinessLogicMock).updateVnfSoftware(argumentCaptor.capture(),Mockito.any(),Mockito.any());
         assertEquals(argumentCaptor.getValue().getVnfInstanceId(),requestDetails.getVnfInstanceId());
     }
 
     @Test
     public void  doChangeManagement_requestTypeIsConfigUpdate_MsoUpdateVnfIsCalled() throws Exception {
-        Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).updateVnfConfig(Mockito.any(),Mockito.anyString(),Mockito.anyString());
+        Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).updateVnfConfig(Mockito.any(),Mockito.any(),Mockito.any());
         RequestDetails requestDetails = callChangeManagement(ChangeManagementRequest.CONFIG_UPDATE);
 
 
         ArgumentCaptor<RequestDetails> argumentCaptor = ArgumentCaptor.forClass(RequestDetails.class);
 
-        verify(msoBusinessLogicMock).updateVnfConfig(argumentCaptor.capture(),Mockito.anyString(),Mockito.anyString());
+        verify(msoBusinessLogicMock).updateVnfConfig(argumentCaptor.capture(),Mockito.any(),Mockito.any());
         assertEquals(argumentCaptor.getValue().getVnfInstanceId(),requestDetails.getVnfInstanceId());
     }
 
@@ -106,8 +106,8 @@
         updateRequest.setRequestType(requestType);
         RequestDetails requestDetails = new RequestDetails();
         requestDetails.setVnfInstanceId("vnfFakeId");
-        Mockito.doReturn("fakeId").when(changeManagementServiceSpied).extractServiceInstanceId(Mockito.anyObject(),Mockito.anyString());
-        Mockito.doReturn(requestDetails).when(changeManagementServiceSpied).findRequestByVnfName(Matchers.anyList(),Mockito.anyString());
+        Mockito.doReturn("fakeId").when(changeManagementServiceSpied).extractServiceInstanceId(Mockito.any(),Mockito.any());
+        Mockito.doReturn(requestDetails).when(changeManagementServiceSpied).findRequestByVnfName(Matchers.any(),Mockito.any());
 
         changeManagementServiceSpied.doChangeManagement(updateRequest,"anyVnfName");
 
diff --git a/vid-app-common/src/test/java/org/onap/vid/services/ChangeManagementServiceUnitTest.java b/vid-app-common/src/test/java/org/onap/vid/services/ChangeManagementServiceUnitTest.java
index 8aafda3..d849869 100644
--- a/vid-app-common/src/test/java/org/onap/vid/services/ChangeManagementServiceUnitTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/services/ChangeManagementServiceUnitTest.java
@@ -24,6 +24,8 @@
 import io.joshworks.restclient.http.HttpResponse;
 import org.apache.commons.io.IOUtils;
 import org.mockito.ArgumentCaptor;
+import org.onap.portalsdk.core.service.DataAccessService;
+import org.onap.portalsdk.core.util.SystemProperties;
 import org.onap.vid.changeManagement.ChangeManagementRequest;
 import org.onap.vid.changeManagement.RequestDetailsWrapper;
 import org.onap.vid.client.SyncRestClient;
@@ -37,8 +39,6 @@
 import org.onap.vid.properties.AsdcClientConfiguration;
 import org.onap.vid.scheduler.SchedulerRestInterfaceIfc;
 import org.onap.vid.testUtils.RegExMatcher;
-import org.onap.portalsdk.core.service.DataAccessService;
-import org.onap.portalsdk.core.util.SystemProperties;
 import org.skyscreamer.jsonassert.JSONAssert;
 import org.skyscreamer.jsonassert.JSONCompareMode;
 import org.springframework.context.annotation.Bean;
@@ -54,8 +54,8 @@
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.hamcrest.core.IsInstanceOf.instanceOf;
-import static org.mockito.Matchers.anyObject;
-import static org.mockito.Matchers.anyString;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.*;
 
 
@@ -74,7 +74,7 @@
     void testInPlaceSoftwareUpdateRequest() throws Exception {
 
 
-        doReturn(new HttpResponse<>(anyObject(), RequestReferencesContainer.class, anyObject())).when(restClientUnderTest).post(anyString(), anyObject(), anyObject());
+        doReturn(new HttpResponse<>(any(), RequestReferencesContainer.class, any())).when(restClientUnderTest).post(anyString(), any(), any());
 
         URL requestJsonUrl = this.getClass().getResource("/services/change_management_software_update_request.json");
         ChangeManagementRequest changeManagementRequest = objectMapper.readValue(requestJsonUrl, ChangeManagementRequest.class);
diff --git a/vid-app-common/src/test/java/org/onap/vid/testUtils/IntersectionTest.java b/vid-app-common/src/test/java/org/onap/vid/testUtils/IntersectionTest.java
index c766d26..dcccab0 100644
--- a/vid-app-common/src/test/java/org/onap/vid/testUtils/IntersectionTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/testUtils/IntersectionTest.java
@@ -1,101 +1,108 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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.vid.testUtils;
 
-import org.junit.Assert;
 import org.junit.Test;
 import org.onap.vid.utils.Intersection;
 
-import java.util.ArrayList;
 import java.util.List;
 
-/**
- * Created by moriya1 on 10/10/2017.
- */
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.util.Lists.emptyList;
+import static org.assertj.core.util.Lists.list;
+
 public class IntersectionTest {
 
     @Test
-    public void testFourArrays(){
-        List<String> l1 = new ArrayList<String>();
-        l1.add("1");
-        l1.add("2");
-
-        List<String> l2 = new ArrayList<String>();
-        l2.add("2");
-        l2.add("3");
-
-        List<String> l3 = new ArrayList<String>();
-        l3.add("2");
-        l3.add("4");
-
-        List<String> l4 = new ArrayList<String>();
-        l4.add("2");
-        l4.add("5");
-
-        List<List<String>> all = new ArrayList<>();
-        all.add(l1);
-        all.add(l2);
-        all.add(l3);
-        all.add(l4);
-        Intersection<String> m = new Intersection<>();
-        List<String> ans = m.intersectMultipileArray(all);
-        Assert.assertEquals(1,ans.size());
-        Assert.assertEquals(ans.get(0),"2");
+    public void testFourArrays() {
+        // given
+        List<List<String>> input = list(
+                list("1", "2"),
+                list("2", "3"),
+                list("2", "4"),
+                list("2", "5")
+        );
+        // when
+        List<String> output = Intersection.of(input);
+        // then
+        assertThat(output).containsExactlyInAnyOrder("2");
 
     }
 
-
-
     @Test
-    public void testTwoArrays(){
-        List<String> l1 = new ArrayList<String>();
-        l1.add("1");
-        l1.add("2");
-
-        List<String> l2 = new ArrayList<String>();
-        l2.add("2");
-        l2.add("3");
-
-        List<List<String>> all = new ArrayList<>();
-        all.add(l1);
-        all.add(l2);
-        Intersection<String> m = new Intersection<>();
-        List<String> l3 = m.intersectMultipileArray(all);
-        Assert.assertEquals(l3.size(),1);
-        Assert.assertEquals(l3.get(0),"2");
+    public void testTwoArrays() {
+        // given
+        List<List<String>> input = list(
+                list("1", "2"),
+                list("2", "3")
+        );
+        // when
+        List<String> output = Intersection.of(input);
+        // then
+        assertThat(output).containsExactlyInAnyOrder("2");
 
     }
 
 
     @Test
-    public void testNoIntersection(){
-        List<String> l1 = new ArrayList<String>();
-        l1.add("1");
-        l1.add("2");
-
-        List<String> l2 = new ArrayList<String>();
-        l2.add("3");
-        l2.add("4");
-
-        List<List<String>> all = new ArrayList<>();
-        all.add(l1);
-        all.add(l2);
-        Intersection<String> m = new Intersection<>();
-        List<String> l3 = m.intersectMultipileArray(all);
-        Assert.assertEquals(l3.size(),0);
+    public void testNoIntersection() {
+        // given
+        List<List<String>> input = list(
+                list("1", "2"),
+                list("3", "4")
+        );
+        // when
+        List<String> output = Intersection.of(input);
+        // then
+        assertThat(output).isEmpty();
 
     }
 
     @Test
-    public void testOneArrays(){
-        List<String> l1 = new ArrayList<String>();
-        l1.add("1");
-        l1.add("2");
-        List<List<String>> all = new ArrayList<>();
-        all.add(l1);
-        Intersection<String> m = new Intersection<>();
-        List<String> l3 = m.intersectMultipileArray(all);
-        Assert.assertEquals(l3.size(),2);
-        Assert.assertEquals(l3.get(0),"1");
-        Assert.assertEquals(l3.get(1),"2");
+    public void testOneArray() {
+        // given
+        List<List<String>> input = list(list("1", "2"));
+        // when
+        List<String> output = Intersection.of(input);
+        // then
+        assertThat(output).containsExactlyInAnyOrder("1", "2");
+    }
 
+    @Test
+    public void testEmptyInput() {
+        // when
+        List<String> output = Intersection.of(emptyList());
+        // then
+        assertThat(output).isEmpty();
+    }
+
+    @Test
+    public void shouldIgnoreRepetitions() {
+        // when
+        List<String> output = Intersection.of(list(
+                list("1", "1"),
+                list("1", "1")
+        ));
+        // then
+        assertThat(output).containsExactly("1");
     }
 }
diff --git a/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java b/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java
index 0460f53..b4c7828 100644
--- a/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java
+++ b/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java
@@ -22,8 +22,8 @@
 import java.util.List;
 
 import static fj.parser.Parser.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.*;
 
 /**
diff --git a/vid-app-common/src/test/resources/empty.json b/vid-app-common/src/test/resources/empty.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/vid-app-common/src/test/resources/empty.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/vid-automation/src/main/java/vid/automation/test/test/NewServiceInstanceTest.java b/vid-automation/src/main/java/vid/automation/test/test/NewServiceInstanceTest.java
index f4d3796..1738970 100644
--- a/vid-automation/src/main/java/vid/automation/test/test/NewServiceInstanceTest.java
+++ b/vid-automation/src/main/java/vid/automation/test/test/NewServiceInstanceTest.java
@@ -115,7 +115,7 @@
                 new ArrayList<>(),
                 false, true, true, true,
                 "2017-488_ADIOD-vPE 0",
-                "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1", 0, 1,  new ArrayList<>());
+                "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1", 0, 1,  ImmutableList.of("Bandwidth", "Bandwidth units"));
 
         String serviceInstanceName = deployServiceInstance(serviceData, false);
         vidBasePage.screenshotDeployDialog(serviceInstanceName);
diff --git a/vid-ext-services-simulator/Dockerfile b/vid-ext-services-simulator/Dockerfile
new file mode 100644
index 0000000..6cf2d9d
--- /dev/null
+++ b/vid-ext-services-simulator/Dockerfile
@@ -0,0 +1,5 @@
+FROM tomcat:jre8-alpine
+
+RUN apk add --no-cache vim net-tools bash
+
+ADD target/vidSimulator.war ./webapps
\ No newline at end of file
diff --git a/vid-ext-services-simulator/pom.xml b/vid-ext-services-simulator/pom.xml
index e8e827b..ed6a13c 100644
--- a/vid-ext-services-simulator/pom.xml
+++ b/vid-ext-services-simulator/pom.xml
@@ -103,6 +103,20 @@
                 <coberturaBuildPhase>package</coberturaBuildPhase>
             </properties>
         </profile>
+
+        <profile>
+            <id>docker-proxy</id>
+            <!-- activate profile if environment variable `http_proxy` is set -->
+            <activation>
+                <property>
+                    <name>env.http_proxy</name>
+                </property>
+            </activation>
+            <properties>
+                <docker.buildArg.http_proxy>${env.http_proxy}</docker.buildArg.http_proxy>
+            </properties>
+        </profile>
+
     </profiles>
 
     <dependencies>
@@ -146,6 +160,49 @@
                     <target>1.8</target>
                 </configuration>
             </plugin>
+
+            <plugin>
+                <groupId>io.fabric8</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+                <version>0.27.2</version>
+
+                <configuration>
+                    <images>
+                        <image>
+                            <name>onap/vid-simulator</name>
+                            <build>
+                                <cleanup>remove</cleanup>
+                                <dockerFileDir>${project.basedir}</dockerFileDir>
+                                <tags>
+                                    <tag>${project.version}</tag>
+                                    <tag>latest</tag>
+                                </tags>
+                            </build>
+                        </image>
+                    </images>
+                </configuration>
+
+                <executions>
+                    <execution>
+                        <id>generate-image</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+
+                    <execution>
+                        <id>push-image</id>
+                        <phase>deploy</phase>
+                        <goals>
+                            <goal>build</goal>
+                            <goal>push</goal>
+                        </goals>
+                    </execution>
+                </executions>
+
+            </plugin>
+
         </plugins>
     </build>
 
diff --git a/vid-webpack-master/src/app/components/vnf-popup/vnf-popup.service.spec.ts b/vid-webpack-master/src/app/components/vnf-popup/vnf-popup.service.spec.ts
deleted file mode 100644
index 02296f7..0000000
--- a/vid-webpack-master/src/app/components/vnf-popup/vnf-popup.service.spec.ts
+++ /dev/null
@@ -1,827 +0,0 @@
-import {VnfPopupService} from './vnf-popup-service';
-import {ServicePlanningService} from '../../services/service-planning.service';
-import {ServiceNodeTypes} from '../../shared/models/ServiceNodeTypes';
-import {NgRedux} from '@angular-redux/store';
-import {VNFModel} from '../../shared/models/vnfModel';
-import {VfModule} from '../../shared/models/vfModule';
-import {FormControl, FormGroup, Validators} from '@angular/forms';
-import {NumbersLettersUnderscoreValidator} from '../../shared/components/validators/numbersLettersUnderscore/numbersLettersUnderscore.validator';
-import {VnfInstanceDetailsService} from './vnf-instance-details/vnf-instance-details.service';
-import {ReflectiveInjector} from '@angular/core';
-
-export class MockAppStore<T> {
-}
-
-describe('Vnf popup service', () => {
-  let injector;
-  let service: VnfPopupService;
-  let fg: FormGroup;
-  let data = generateModelData();
-  let servicePopupDataModel = generateServicePopupDataModel();
-  let form: FormGroup = generateFormGroup();
-  beforeEach(() => {
-
-    let injector = ReflectiveInjector.resolveAndCreate([
-      VnfPopupService,
-      ServicePlanningService,
-      VnfInstanceDetailsService,
-      {provide: FormGroup, useClass: MockAppStore},
-      {provide: NgRedux, useClass: MockAppStore}
-    ]);
-
-    service = injector.get(VnfPopupService);
-    fg = injector.get(FormGroup);
-  });
-
-  describe('#updateVnfDataFromModel', () => {
-    it('update vnf data from model should return new vnf', (done: DoneFn) => {
-      let vnf: VNFModel = service.getModelFromResponse(data, ServiceNodeTypes.VF, '2017-388_ADIOD-vPE 1');
-
-      expect(vnf).toEqual(jasmine.any(VNFModel));
-      done();
-    });
-
-    it('update wrong vnf data from model should be undefined', (done: DoneFn) => {
-      let vnf: VNFModel = service.getModelFromResponse(data, ServiceNodeTypes.VF, '2017-388_ADIOD-vPE 3');
-
-      expect(vnf).toBeUndefined();
-      done();
-    });
-
-    it('update vfModule data from model should return new vfModule', (done: DoneFn) => {
-      let vfModule: VfModule = service.getModelFromResponse(data, ServiceNodeTypes.VFmodule, '2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1');
-
-      expect(vfModule).toEqual(jasmine.any(VfModule));
-      done();
-    });
-
-  });
-
-
-  describe('#onControlError', () => {
-    it('onControlError should return true if instanceName is not legal', (done: DoneFn) => {
-      form.controls['instanceName'].setValue('aaaa - aaa');
-
-      let result: boolean = service.onControlError(<any>servicePopupDataModel, form, false, false);
-      expect(result).toBeTruthy();
-      done();
-    });
-
-    it('onControlError should return false if instanceName is legal', (done: DoneFn) => {
-
-      form.controls['instanceName'].setValue('aaaa');
-      let result = service.onControlError(<any>servicePopupDataModel, form, false, false);
-      expect(result).toBeFalsy();
-      done();
-    });
-
-    it('onControlError should return true if instanceName is not unique', (done: DoneFn) => {
-
-      form.controls['instanceName'].setValue('aaaa');
-      let result = service.onControlError(<any>servicePopupDataModel, form, true, false);
-      expect(result).toBeTruthy();
-      done();
-    });
-
-    it('onControlError should return true if lcpRegions is empty', (done: DoneFn) => {
-      servicePopupDataModel.vnfPopupDataModel['lcpRegions'] = [];
-      let result = service.onControlError(<any>servicePopupDataModel, form, true, false);
-      expect(result).toBeTruthy();
-      done();
-    });
-
-    it('onControlError should return true if isNotUniqueVolumeGroupName is true', (done: DoneFn) => {
-      let result = service.onControlError(<any>servicePopupDataModel, form, true, true);
-      expect(result).toBeTruthy();
-      done();
-    })
-  });
-
-
-  function generateServicePopupDataModel() {
-    return {
-      'vnfPopupDataModel': JSON.parse('{"tenants" : [1,2,3],"lcpRegions":[1,2,3],"lcpRegionsTenantsMap":{},"productFamilies":[1,2,3],"lineOfBusinesses":[{"id":"ECOMP","name":"ECOMP"},{"id":"zzz1","name":"zzz1"}],"platforms":[{"id":"platform","name":"platform"},{"id":"xxx1","name":"xxx1"}],"rollbackOnFailure":[{"id":"true","name":"Rollback"}]}')
-    }
-  }
-
-  function generateFormGroup() {
-    return new FormGroup({
-      productFamilyId: new FormControl(),
-      lcpCloudRegionId: new FormControl(Validators.required),
-      tenantId: new FormControl({value: null, disabled: false}, Validators.required),
-      legacyRegion: new FormControl(),
-      lineOfBusiness: new FormControl(),
-      platformName: new FormControl(Validators.required),
-      instanceName: new FormControl({value: null}, Validators.compose([Validators.required, NumbersLettersUnderscoreValidator.valid]))
-    });
-  }
-
-  function generateModelData() {
-    return JSON.parse(JSON.stringify(
-      {
-      'service': {
-        'uuid': '2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd',
-        'invariantUuid': 'e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0',
-        'name': 'action-data',
-        'version': '1.0',
-        'toscaModelURL': null,
-        'category': '',
-        'serviceType': '',
-        'serviceRole': '',
-        'description': '',
-        'serviceEcompNaming': 'true',
-        'instantiationType': 'ClientConfig',
-        'inputs': {
-          '2017488_adiodvpe0_ASN': {
-            'type': 'string',
-            'description': 'AV/PE',
-            'entry_schema': null,
-            'constraints': [],
-            'required': true,
-            'default': 'AV_vPE'
-          },
-          'adiodvpe0_bandwidth': {
-            'type': 'string',
-            'description': 'Requested VPE bandwidth',
-            'entry_schema': null,
-            'constraints': [],
-            'required': true,
-            'default': '10'
-          },
-          '2017488_adiodvpe0_vnf_instance_name': {
-            'type': 'string',
-            'description': 'The hostname assigned to the vpe.',
-            'entry_schema': null,
-            'constraints': [],
-            'required': true,
-            'default': 'mtnj309me6'
-          },
-          '2017488_adiodvpe0_vnf_config_template_version': {
-            'type': 'string',
-            'description': 'VPE Software Version',
-            'entry_schema': null,
-            'constraints': [],
-            'required': true,
-            'default': '17.2'
-          },
-          '2017488_adiodvpe0_AIC_CLLI': {
-            'type': 'string',
-            'description': 'AIC Site CLLI',
-            'entry_schema': null,
-            'constraints': [],
-            'required': true,
-            'default': 'ATLMY8GA'
-          },
-          'adiodvpe0_bandwidth_units': {
-            'type': 'string',
-            'description': 'Units of bandwidth',
-            'entry_schema': null,
-            'constraints': [],
-            'required': true,
-            'default': 'Gbps'
-          }
-        }
-      },
-      'vnfs': {
-        '2017-388_ADIOD-vPE 1': {
-          'uuid': '0903e1c0-8e03-4936-b5c2-260653b96413',
-          'invariantUuid': '00beb8f9-6d39-452f-816d-c709b9cbb87d',
-          'description': 'Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM',
-          'name': '2017-388_ADIOD-vPE',
-          'version': '1.0',
-          'customizationUuid': '280dec31-f16d-488b-9668-4aae55d6648a',
-          'inputs': {
-            'vnf_config_template_version': {
-              'type': 'string',
-              'description': 'VPE Software Version',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': '17.2'
-            },
-            'bandwidth_units': {
-              'type': 'string',
-              'description': 'Units of bandwidth',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': 'Gbps'
-            },
-            'bandwidth': {
-              'type': 'string',
-              'description': 'Requested VPE bandwidth',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': '10'
-            },
-            'AIC_CLLI': {
-              'type': 'string',
-              'description': 'AIC Site CLLI',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': 'ATLMY8GA'
-            },
-            'ASN': {
-              'type': 'string',
-              'description': 'AV/PE',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': 'AV_vPE'
-            },
-            'vnf_instance_name': {
-              'type': 'string',
-              'description': 'The hostname assigned to the vpe.',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': 'mtnj309me6'
-            }
-          },
-          'commands': {
-            'vnf_config_template_version': {
-              'displayName': 'vnf_config_template_version',
-              'command': 'get_input',
-              'inputName': '2017488_adiodvpe0_vnf_config_template_version'
-            },
-            'bandwidth_units': {
-              'displayName': 'bandwidth_units',
-              'command': 'get_input',
-              'inputName': 'adiodvpe0_bandwidth_units'
-            },
-            'bandwidth': {'displayName': 'bandwidth', 'command': 'get_input', 'inputName': 'adiodvpe0_bandwidth'},
-            'AIC_CLLI': {'displayName': 'AIC_CLLI', 'command': 'get_input', 'inputName': '2017488_adiodvpe0_AIC_CLLI'},
-            'ASN': {'displayName': 'ASN', 'command': 'get_input', 'inputName': '2017488_adiodvpe0_ASN'},
-            'vnf_instance_name': {
-              'displayName': 'vnf_instance_name',
-              'command': 'get_input',
-              'inputName': '2017488_adiodvpe0_vnf_instance_name'
-            }
-          },
-          'properties': {
-            'vmxvre_retype': 'RE-VMX',
-            'vnf_config_template_version': 'get_input:2017488_adiodvpe0_vnf_config_template_version',
-            'sriov44_net_id': '48d399b3-11ee-48a8-94d2-f0ea94d6be8d',
-            'int_ctl_net_id': '2f323477-6936-4d01-ac53-d849430281d9',
-            'vmxvpfe_sriov41_0_port_mac': '00:11:22:EF:AC:DF',
-            'int_ctl_net_name': 'VMX-INTXI',
-            'vmx_int_ctl_prefix': '128.0.0.0',
-            'sriov43_net_id': 'da349ca1-6de9-4548-be88-2d88e99bfef5',
-            'sriov42_net_id': '760669ba-013d-4d9b-b0e7-4151fe2e6279',
-            'sriov41_net_id': '25ad52d5-c165-40f8-b3b0-ddfc2373280a',
-            'nf_type': 'vPE',
-            'vmxvpfe_int_ctl_ip_1': '128.0.0.16',
-            'is_AVPN_service': 'false',
-            'vmx_RSG_name': 'vREXI-affinity',
-            'vmx_int_ctl_forwarding': 'l2',
-            'vmxvre_oam_ip_0': '10.40.123.5',
-            'vmxvpfe_sriov44_0_port_mac': '00:11:22:EF:AC:DF',
-            'vmxvpfe_sriov41_0_port_vlanstrip': 'false',
-            'vmxvpfe_sriov42_0_port_vlanfilter': '4001',
-            'vmxvpfe_sriov44_0_port_unknownunicastallow': 'true',
-            'vmxvre_image_name_0': 'VRE-ENGINE_17.2-S2.1.qcow2',
-            'vmxvre_instance': '0',
-            'vmxvpfe_sriov43_0_port_mac': '00:11:22:EF:AC:DF',
-            'vmxvre_flavor_name': 'ns.c1r16d32.v5',
-            'vmxvpfe_volume_size_0': '40.0',
-            'vmxvpfe_sriov43_0_port_vlanfilter': '4001',
-            'nf_naming': '{ecomp_generated_naming=true}',
-            'nf_naming_code': 'Navneet',
-            'vmxvre_name_0': 'vREXI',
-            'vmxvpfe_sriov42_0_port_vlanstrip': 'false',
-            'vmxvpfe_volume_name_0': 'vPFEXI_FBVolume',
-            'vmx_RSG_id': 'bd89a33c-13c3-4a04-8fde-1a57eb123141',
-            'vmxvpfe_image_name_0': 'VPE_ROUTING-ENGINE_17.2R1-S2.1.qcow2',
-            'vmxvpfe_sriov43_0_port_unknownunicastallow': 'true',
-            'vmxvpfe_sriov44_0_port_unknownmulticastallow': 'true',
-            'vmxvre_console': 'vidconsole',
-            'vmxvpfe_sriov44_0_port_vlanfilter': '4001',
-            'vmxvpfe_sriov42_0_port_mac': '00:11:22:EF:AC:DF',
-            'vmxvpfe_volume_id_0': '47cede15-da2f-4397-a101-aa683220aff3',
-            'vmxvpfe_sriov42_0_port_unknownmulticastallow': 'true',
-            'vmxvpfe_sriov44_0_port_vlanstrip': 'false',
-            'vf_module_id': '123',
-            'nf_function': 'JAI',
-            'vmxvpfe_sriov43_0_port_unknownmulticastallow': 'true',
-            'vmxvre_int_ctl_ip_0': '128.0.0.1',
-            'AIC_CLLI': 'get_input:2017488_adiodvpe0_AIC_CLLI',
-            'vnf_name': 'mtnj309me6vre',
-            'vmxvpfe_sriov41_0_port_unknownunicastallow': 'true',
-            'vmxvre_volume_type_1': 'HITACHI',
-            'vmxvpfe_sriov44_0_port_broadcastallow': 'true',
-            'vmxvre_volume_type_0': 'HITACHI',
-            'vmxvpfe_volume_type_0': 'HITACHI',
-            'vmxvpfe_sriov43_0_port_broadcastallow': 'true',
-            'bandwidth_units': 'get_input:adiodvpe0_bandwidth_units',
-            'vnf_id': '123',
-            'vmxvre_oam_prefix': '24',
-            'availability_zone_0': 'mtpocfo-kvm-az01',
-            'ASN': 'get_input:2017488_adiodvpe0_ASN',
-            'vmxvre_chassis_i2cid': '161',
-            'vmxvpfe_name_0': 'vPFEXI',
-            'bandwidth': 'get_input:adiodvpe0_bandwidth',
-            'availability_zone_max_count': '1',
-            'vmxvre_volume_size_0': '45.0',
-            'vmxvre_volume_size_1': '50.0',
-            'vmxvpfe_sriov42_0_port_broadcastallow': 'true',
-            'vmxvre_oam_gateway': '10.40.123.1',
-            'vmxvre_volume_name_1': 'vREXI_FAVolume',
-            'vmxvre_ore_present': '0',
-            'vmxvre_volume_name_0': 'vREXI_FBVolume',
-            'vmxvre_type': '0',
-            'vnf_instance_name': 'get_input:2017488_adiodvpe0_vnf_instance_name',
-            'vmxvpfe_sriov41_0_port_unknownmulticastallow': 'true',
-            'oam_net_id': 'b95eeb1d-d55d-4827-abb4-8ebb94941429',
-            'vmx_int_ctl_len': '24',
-            'vmxvpfe_sriov43_0_port_vlanstrip': 'false',
-            'vmxvpfe_sriov41_0_port_broadcastallow': 'true',
-            'vmxvre_volume_id_1': '6e86797e-03cd-4fdc-ba72-2957119c746d',
-            'vmxvpfe_sriov41_0_port_vlanfilter': '4001',
-            'nf_role': 'Testing',
-            'vmxvre_volume_id_0': 'f4eacb79-f687-4e9d-b760-21847c8bb15a',
-            'vmxvpfe_sriov42_0_port_unknownunicastallow': 'true',
-            'vmxvpfe_flavor_name': 'ns.c20r16d25.v5'
-          },
-          'type': 'VF',
-          'modelCustomizationName': '2017-388_ADIOD-vPE 1',
-          'vfModules': {},
-          'volumeGroups': {}
-        },
-        '2017-388_ADIOD-vPE 0': {
-          'uuid': 'afacccf6-397d-45d6-b5ae-94c39734b168',
-          'invariantUuid': '72e465fe-71b1-4e7b-b5ed-9496118ff7a8',
-          'description': 'Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM',
-          'name': '2017-388_ADIOD-vPE',
-          'version': '4.0',
-          'customizationUuid': 'b3c76f73-eeb5-4fb6-9d31-72a889f1811c',
-          'inputs': {
-            'vnf_config_template_version': {
-              'type': 'string',
-              'description': 'VPE Software Version',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': '17.2'
-            },
-            'bandwidth_units': {
-              'type': 'string',
-              'description': 'Units of bandwidth',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': 'Gbps'
-            },
-            'bandwidth': {
-              'type': 'string',
-              'description': 'Requested VPE bandwidth',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': '10'
-            },
-            'AIC_CLLI': {
-              'type': 'string',
-              'description': 'AIC Site CLLI',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': 'ATLMY8GA'
-            },
-            'ASN': {
-              'type': 'string',
-              'description': 'AV/PE',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': 'AV_vPE'
-            },
-            'vnf_instance_name': {
-              'type': 'string',
-              'description': 'The hostname assigned to the vpe.',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': 'mtnj309me6'
-            }
-          },
-          'commands': {
-            'vnf_config_template_version': {
-              'displayName': 'vnf_config_template_version',
-              'command': 'get_input',
-              'inputName': '2017488_adiodvpe0_vnf_config_template_version'
-            },
-            'bandwidth_units': {
-              'displayName': 'bandwidth_units',
-              'command': 'get_input',
-              'inputName': 'adiodvpe0_bandwidth_units'
-            },
-            'bandwidth': {'displayName': 'bandwidth', 'command': 'get_input', 'inputName': 'adiodvpe0_bandwidth'},
-            'AIC_CLLI': {'displayName': 'AIC_CLLI', 'command': 'get_input', 'inputName': '2017488_adiodvpe0_AIC_CLLI'},
-            'ASN': {'displayName': 'ASN', 'command': 'get_input', 'inputName': '2017488_adiodvpe0_ASN'},
-            'vnf_instance_name': {
-              'displayName': 'vnf_instance_name',
-              'command': 'get_input',
-              'inputName': '2017488_adiodvpe0_vnf_instance_name'
-            }
-          },
-          'properties': {
-            'vmxvre_retype': 'RE-VMX',
-            'vnf_config_template_version': 'get_input:2017488_adiodvpe0_vnf_config_template_version',
-            'sriov44_net_id': '48d399b3-11ee-48a8-94d2-f0ea94d6be8d',
-            'int_ctl_net_id': '2f323477-6936-4d01-ac53-d849430281d9',
-            'vmxvpfe_sriov41_0_port_mac': '00:11:22:EF:AC:DF',
-            'int_ctl_net_name': 'VMX-INTXI',
-            'vmx_int_ctl_prefix': '128.0.0.0',
-            'sriov43_net_id': 'da349ca1-6de9-4548-be88-2d88e99bfef5',
-            'sriov42_net_id': '760669ba-013d-4d9b-b0e7-4151fe2e6279',
-            'sriov41_net_id': '25ad52d5-c165-40f8-b3b0-ddfc2373280a',
-            'nf_type': 'vPE',
-            'vmxvpfe_int_ctl_ip_1': '128.0.0.16',
-            'is_AVPN_service': 'false',
-            'vmx_RSG_name': 'vREXI-affinity',
-            'vmx_int_ctl_forwarding': 'l2',
-            'vmxvre_oam_ip_0': '10.40.123.5',
-            'vmxvpfe_sriov44_0_port_mac': '00:11:22:EF:AC:DF',
-            'vmxvpfe_sriov41_0_port_vlanstrip': 'false',
-            'vmxvpfe_sriov42_0_port_vlanfilter': '4001',
-            'vmxvpfe_sriov44_0_port_unknownunicastallow': 'true',
-            'vmxvre_image_name_0': 'VRE-ENGINE_17.2-S2.1.qcow2',
-            'vmxvre_instance': '0',
-            'vmxvpfe_sriov43_0_port_mac': '00:11:22:EF:AC:DF',
-            'vmxvre_flavor_name': 'ns.c1r16d32.v5',
-            'vmxvpfe_volume_size_0': '40.0',
-            'vmxvpfe_sriov43_0_port_vlanfilter': '4001',
-            'nf_naming': '{ecomp_generated_naming=true}',
-            'nf_naming_code': 'Navneet',
-            'vmxvre_name_0': 'vREXI',
-            'vmxvpfe_sriov42_0_port_vlanstrip': 'false',
-            'vmxvpfe_volume_name_0': 'vPFEXI_FBVolume',
-            'vmx_RSG_id': 'bd89a33c-13c3-4a04-8fde-1a57eb123141',
-            'vmxvpfe_image_name_0': 'VPE_ROUTING-ENGINE_17.2R1-S2.1.qcow2',
-            'vmxvpfe_sriov43_0_port_unknownunicastallow': 'true',
-            'vmxvpfe_sriov44_0_port_unknownmulticastallow': 'true',
-            'vmxvre_console': 'vidconsole',
-            'vmxvpfe_sriov44_0_port_vlanfilter': '4001',
-            'vmxvpfe_sriov42_0_port_mac': '00:11:22:EF:AC:DF',
-            'vmxvpfe_volume_id_0': '47cede15-da2f-4397-a101-aa683220aff3',
-            'vmxvpfe_sriov42_0_port_unknownmulticastallow': 'true',
-            'vmxvpfe_sriov44_0_port_vlanstrip': 'false',
-            'vf_module_id': '123',
-            'nf_function': 'JAI',
-            'vmxvpfe_sriov43_0_port_unknownmulticastallow': 'true',
-            'vmxvre_int_ctl_ip_0': '128.0.0.1',
-            'AIC_CLLI': 'get_input:2017488_adiodvpe0_AIC_CLLI',
-            'vnf_name': 'mtnj309me6vre',
-            'vmxvpfe_sriov41_0_port_unknownunicastallow': 'true',
-            'vmxvre_volume_type_1': 'HITACHI',
-            'vmxvpfe_sriov44_0_port_broadcastallow': 'true',
-            'vmxvre_volume_type_0': 'HITACHI',
-            'vmxvpfe_volume_type_0': 'HITACHI',
-            'vmxvpfe_sriov43_0_port_broadcastallow': 'true',
-            'bandwidth_units': 'get_input:adiodvpe0_bandwidth_units',
-            'vnf_id': '123',
-            'vmxvre_oam_prefix': '24',
-            'availability_zone_0': 'mtpocfo-kvm-az01',
-            'ASN': 'get_input:2017488_adiodvpe0_ASN',
-            'vmxvre_chassis_i2cid': '161',
-            'vmxvpfe_name_0': 'vPFEXI',
-            'bandwidth': 'get_input:adiodvpe0_bandwidth',
-            'availability_zone_max_count': '1',
-            'vmxvre_volume_size_0': '45.0',
-            'vmxvre_volume_size_1': '50.0',
-            'vmxvpfe_sriov42_0_port_broadcastallow': 'true',
-            'vmxvre_oam_gateway': '10.40.123.1',
-            'vmxvre_volume_name_1': 'vREXI_FAVolume',
-            'vmxvre_ore_present': '0',
-            'vmxvre_volume_name_0': 'vREXI_FBVolume',
-            'vmxvre_type': '0',
-            'vnf_instance_name': 'get_input:2017488_adiodvpe0_vnf_instance_name',
-            'vmxvpfe_sriov41_0_port_unknownmulticastallow': 'true',
-            'oam_net_id': 'b95eeb1d-d55d-4827-abb4-8ebb94941429',
-            'vmx_int_ctl_len': '24',
-            'vmxvpfe_sriov43_0_port_vlanstrip': 'false',
-            'vmxvpfe_sriov41_0_port_broadcastallow': 'true',
-            'vmxvre_volume_id_1': '6e86797e-03cd-4fdc-ba72-2957119c746d',
-            'vmxvpfe_sriov41_0_port_vlanfilter': '4001',
-            'nf_role': 'Testing',
-            'vmxvre_volume_id_0': 'f4eacb79-f687-4e9d-b760-21847c8bb15a',
-            'vmxvpfe_sriov42_0_port_unknownunicastallow': 'true',
-            'vmxvpfe_flavor_name': 'ns.c20r16d25.v5'
-          },
-          'type': 'VF',
-          'modelCustomizationName': '2017-388_ADIOD-vPE 0',
-          'vfModules': {},
-          'volumeGroups': {}
-        },
-        '2017488_ADIODvPE 0': {
-          'uuid': '69e09f68-8b63-4cc9-b9ff-860960b5db09',
-          'invariantUuid': '72e465fe-71b1-4e7b-b5ed-9496118ff7a8',
-          'description': 'Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM',
-          'name': '2017488_ADIODvPE',
-          'version': '5.0',
-          'customizationUuid': '1da7b585-5e61-4993-b95e-8e6606c81e45',
-          'inputs': {
-            'vnf_config_template_version': {
-              'type': 'string',
-              'description': 'VPE Software Version',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': '17.2'
-            },
-            'bandwidth_units': {
-              'type': 'string',
-              'description': 'Units of bandwidth',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': 'Gbps'
-            },
-            'bandwidth': {
-              'type': 'string',
-              'description': 'Requested VPE bandwidth',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': '10'
-            },
-            'AIC_CLLI': {
-              'type': 'string',
-              'description': 'AIC Site CLLI',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': 'ATLMY8GA'
-            },
-            'ASN': {
-              'type': 'string',
-              'description': 'AV/PE',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': 'AV_vPE'
-            },
-            'vnf_instance_name': {
-              'type': 'string',
-              'description': 'The hostname assigned to the vpe.',
-              'entry_schema': null,
-              'constraints': [],
-              'required': true,
-              'default': 'mtnj309me6'
-            }
-          },
-          'commands': {
-            'vnf_config_template_version': {
-              'displayName': 'vnf_config_template_version',
-              'command': 'get_input',
-              'inputName': '2017488_adiodvpe0_vnf_config_template_version'
-            },
-            'bandwidth_units': {
-              'displayName': 'bandwidth_units',
-              'command': 'get_input',
-              'inputName': 'adiodvpe0_bandwidth_units'
-            },
-            'bandwidth': {'displayName': 'bandwidth', 'command': 'get_input', 'inputName': 'adiodvpe0_bandwidth'},
-            'AIC_CLLI': {'displayName': 'AIC_CLLI', 'command': 'get_input', 'inputName': '2017488_adiodvpe0_AIC_CLLI'},
-            'ASN': {'displayName': 'ASN', 'command': 'get_input', 'inputName': '2017488_adiodvpe0_ASN'},
-            'vnf_instance_name': {
-              'displayName': 'vnf_instance_name',
-              'command': 'get_input',
-              'inputName': '2017488_adiodvpe0_vnf_instance_name'
-            }
-          },
-          'properties': {
-            'vmxvre_retype': 'RE-VMX',
-            'vnf_config_template_version': 'get_input:2017488_adiodvpe0_vnf_config_template_version',
-            'sriov44_net_id': '48d399b3-11ee-48a8-94d2-f0ea94d6be8d',
-            'int_ctl_net_id': '2f323477-6936-4d01-ac53-d849430281d9',
-            'vmxvpfe_sriov41_0_port_mac': '00:11:22:EF:AC:DF',
-            'int_ctl_net_name': 'VMX-INTXI',
-            'vmx_int_ctl_prefix': '128.0.0.0',
-            'sriov43_net_id': 'da349ca1-6de9-4548-be88-2d88e99bfef5',
-            'sriov42_net_id': '760669ba-013d-4d9b-b0e7-4151fe2e6279',
-            'sriov41_net_id': '25ad52d5-c165-40f8-b3b0-ddfc2373280a',
-            'nf_type': 'vPE',
-            'vmxvpfe_int_ctl_ip_1': '128.0.0.16',
-            'is_AVPN_service': 'false',
-            'vmx_RSG_name': 'vREXI-affinity',
-            'vmx_int_ctl_forwarding': 'l2',
-            'vmxvre_oam_ip_0': '10.40.123.5',
-            'vmxvpfe_sriov44_0_port_mac': '00:11:22:EF:AC:DF',
-            'vmxvpfe_sriov41_0_port_vlanstrip': 'false',
-            'vmxvpfe_sriov42_0_port_vlanfilter': '4001',
-            'vmxvpfe_sriov44_0_port_unknownunicastallow': 'true',
-            'vmxvre_image_name_0': 'VRE-ENGINE_17.2-S2.1.qcow2',
-            'vmxvre_instance': '0',
-            'vmxvpfe_sriov43_0_port_mac': '00:11:22:EF:AC:DF',
-            'vmxvre_flavor_name': 'ns.c1r16d32.v5',
-            'vmxvpfe_volume_size_0': '40.0',
-            'vmxvpfe_sriov43_0_port_vlanfilter': '4001',
-            'nf_naming': '{ecomp_generated_naming=true}',
-            'nf_naming_code': 'Navneet',
-            'vmxvre_name_0': 'vREXI',
-            'vmxvpfe_sriov42_0_port_vlanstrip': 'false',
-            'vmxvpfe_volume_name_0': 'vPFEXI_FBVolume',
-            'vmx_RSG_id': 'bd89a33c-13c3-4a04-8fde-1a57eb123141',
-            'vmxvpfe_image_name_0': 'VPE_ROUTING-ENGINE_17.2R1-S2.1.qcow2',
-            'vmxvpfe_sriov43_0_port_unknownunicastallow': 'true',
-            'vmxvpfe_sriov44_0_port_unknownmulticastallow': 'true',
-            'vmxvre_console': 'vidconsole',
-            'vmxvpfe_sriov44_0_port_vlanfilter': '4001',
-            'vmxvpfe_sriov42_0_port_mac': '00:11:22:EF:AC:DF',
-            'vmxvpfe_volume_id_0': '47cede15-da2f-4397-a101-aa683220aff3',
-            'vmxvpfe_sriov42_0_port_unknownmulticastallow': 'true',
-            'vmxvpfe_sriov44_0_port_vlanstrip': 'false',
-            'vf_module_id': '123',
-            'nf_function': 'JAI',
-            'vmxvpfe_sriov43_0_port_unknownmulticastallow': 'true',
-            'vmxvre_int_ctl_ip_0': '128.0.0.1',
-            'AIC_CLLI': 'get_input:2017488_adiodvpe0_AIC_CLLI',
-            'vnf_name': 'mtnj309me6vre',
-            'vmxvpfe_sriov41_0_port_unknownunicastallow': 'true',
-            'vmxvre_volume_type_1': 'HITACHI',
-            'vmxvpfe_sriov44_0_port_broadcastallow': 'true',
-            'vmxvre_volume_type_0': 'HITACHI',
-            'vmxvpfe_volume_type_0': 'HITACHI',
-            'vmxvpfe_sriov43_0_port_broadcastallow': 'true',
-            'bandwidth_units': 'get_input:adiodvpe0_bandwidth_units',
-            'vnf_id': '123',
-            'vmxvre_oam_prefix': '24',
-            'availability_zone_0': 'mtpocfo-kvm-az01',
-            'ASN': 'get_input:2017488_adiodvpe0_ASN',
-            'vmxvre_chassis_i2cid': '161',
-            'vmxvpfe_name_0': 'vPFEXI',
-            'bandwidth': 'get_input:adiodvpe0_bandwidth',
-            'availability_zone_max_count': '1',
-            'vmxvre_volume_size_0': '45.0',
-            'vmxvre_volume_size_1': '50.0',
-            'vmxvpfe_sriov42_0_port_broadcastallow': 'true',
-            'vmxvre_oam_gateway': '10.40.123.1',
-            'vmxvre_volume_name_1': 'vREXI_FAVolume',
-            'vmxvre_ore_present': '0',
-            'vmxvre_volume_name_0': 'vREXI_FBVolume',
-            'vmxvre_type': '0',
-            'vnf_instance_name': 'get_input:2017488_adiodvpe0_vnf_instance_name',
-            'vmxvpfe_sriov41_0_port_unknownmulticastallow': 'true',
-            'oam_net_id': 'b95eeb1d-d55d-4827-abb4-8ebb94941429',
-            'vmx_int_ctl_len': '24',
-            'vmxvpfe_sriov43_0_port_vlanstrip': 'false',
-            'vmxvpfe_sriov41_0_port_broadcastallow': 'true',
-            'vmxvre_volume_id_1': '6e86797e-03cd-4fdc-ba72-2957119c746d',
-            'vmxvpfe_sriov41_0_port_vlanfilter': '4001',
-            'nf_role': 'Testing',
-            'vmxvre_volume_id_0': 'f4eacb79-f687-4e9d-b760-21847c8bb15a',
-            'vmxvpfe_sriov42_0_port_unknownunicastallow': 'true',
-            'vmxvpfe_flavor_name': 'ns.c20r16d25.v5'
-          },
-          'type': 'VF',
-          'modelCustomizationName': '2017488_ADIODvPE 0',
-          'vfModules': {
-            '2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1': {
-              'uuid': '25284168-24bb-4698-8cb4-3f509146eca5',
-              'invariantUuid': '7253ff5c-97f0-4b8b-937c-77aeb4d79aa1',
-              'customizationUuid': 'f7e7c365-60cf-49a9-9ebf-a1aa11b9d401',
-              'description': null,
-              'name': '2017488AdiodVpe..ADIOD_vRE_BV..module-1',
-              'version': '6',
-              'modelCustomizationName': '2017488AdiodVpe..ADIOD_vRE_BV..module-1',
-              'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0},
-              'commands': {},
-              'volumeGroupAllowed': true,
-              'inputs': {
-                '2017488_adiodvpe0_vnf_config_template_version': {
-                  'type': 'string',
-                  'description': 'VPE Software Version',
-                  'entry_schema': null,
-                  'constraints': [],
-                  'required': true,
-                  'default': '17.2'
-                },
-                '2017488_adiodvpe0_AIC_CLLI': {
-                  'type': 'string',
-                  'description': 'AIC Site CLLI',
-                  'entry_schema': null,
-                  'constraints': [],
-                  'required': true,
-                  'default': 'ATLMY8GA'
-                }
-              }
-            },
-            '2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0': {
-              'uuid': 'f8360508-3f17-4414-a2ed-6bc71161e8db',
-              'invariantUuid': 'b34833bb-6aa9-4ad6-a831-70b06367a091',
-              'customizationUuid': 'a55961b2-2065-4ab0-a5b7-2fcee1c227e3',
-              'description': null,
-              'name': '2017488AdiodVpe..ADIOD_base_vPE_BV..module-0',
-              'version': '5',
-              'modelCustomizationName': '2017488AdiodVpe..ADIOD_base_vPE_BV..module-0',
-              'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1},
-              'commands': {},
-              'volumeGroupAllowed': false,
-              'inputs': {
-                '2017488_adiodvpe0_ASN': {
-                  'type': 'string',
-                  'description': 'AV/PE',
-                  'entry_schema': null,
-                  'constraints': [],
-                  'required': true,
-                  'default': 'AV_vPE'
-                },
-                'adiodvpe0_bandwidth': {
-                  'type': 'string',
-                  'description': 'Requested VPE bandwidth',
-                  'entry_schema': null,
-                  'constraints': [],
-                  'required': true,
-                  'default': '10'
-                }
-              }
-            },
-            '2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2': {
-              'uuid': '0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a',
-              'invariantUuid': 'eff8cc59-53a1-4101-aed7-8cf24ecf8339',
-              'customizationUuid': '3cd946bb-50e0-40d8-96d3-c9023520b557',
-              'description': null,
-              'name': '2017488AdiodVpe..ADIOD_vPFE_BV..module-2',
-              'version': '6',
-              'modelCustomizationName': '2017488AdiodVpe..ADIOD_vPFE_BV..module-2',
-              'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0},
-              'commands': {},
-              'volumeGroupAllowed': true,
-              'inputs': {}
-            }
-          },
-          'volumeGroups': {
-            '2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1': {
-              'uuid': '25284168-24bb-4698-8cb4-3f509146eca5',
-              'invariantUuid': '7253ff5c-97f0-4b8b-937c-77aeb4d79aa1',
-              'customizationUuid': 'f7e7c365-60cf-49a9-9ebf-a1aa11b9d401',
-              'description': null,
-              'name': '2017488AdiodVpe..ADIOD_vRE_BV..module-1',
-              'version': '6',
-              'modelCustomizationName': '2017488AdiodVpe..ADIOD_vRE_BV..module-1',
-              'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0}
-            },
-            '2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2': {
-              'uuid': '0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a',
-              'invariantUuid': 'eff8cc59-53a1-4101-aed7-8cf24ecf8339',
-              'customizationUuid': '3cd946bb-50e0-40d8-96d3-c9023520b557',
-              'description': null,
-              'name': '2017488AdiodVpe..ADIOD_vPFE_BV..module-2',
-              'version': '6',
-              'modelCustomizationName': '2017488AdiodVpe..ADIOD_vPFE_BV..module-2',
-              'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0}
-            }
-          }
-        }
-      },
-      'vfModules': {
-        '2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1': {
-          'uuid': '25284168-24bb-4698-8cb4-3f509146eca5',
-          'invariantUuid': '7253ff5c-97f0-4b8b-937c-77aeb4d79aa1',
-          'customizationUuid': 'f7e7c365-60cf-49a9-9ebf-a1aa11b9d401',
-          'description': null,
-          'name': '2017488AdiodVpe..ADIOD_vRE_BV..module-1',
-          'version': '6',
-          'modelCustomizationName': '2017488AdiodVpe..ADIOD_vRE_BV..module-1',
-          'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0},
-          'commands': {},
-          'volumeGroupAllowed': true
-        },
-        '2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0': {
-          'uuid': 'f8360508-3f17-4414-a2ed-6bc71161e8db',
-          'invariantUuid': 'b34833bb-6aa9-4ad6-a831-70b06367a091',
-          'customizationUuid': 'a55961b2-2065-4ab0-a5b7-2fcee1c227e3',
-          'description': null,
-          'name': '2017488AdiodVpe..ADIOD_base_vPE_BV..module-0',
-          'version': '5',
-          'modelCustomizationName': '2017488AdiodVpe..ADIOD_base_vPE_BV..module-0',
-          'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1},
-          'commands': {},
-          'volumeGroupAllowed': false
-        },
-        '2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2': {
-          'uuid': '0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a',
-          'invariantUuid': 'eff8cc59-53a1-4101-aed7-8cf24ecf8339',
-          'customizationUuid': '3cd946bb-50e0-40d8-96d3-c9023520b557',
-          'description': null,
-          'name': '2017488AdiodVpe..ADIOD_vPFE_BV..module-2',
-          'version': '6',
-          'modelCustomizationName': '2017488AdiodVpe..ADIOD_vPFE_BV..module-2',
-          'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0},
-          'commands': {},
-          'volumeGroupAllowed': true
-        }
-      },
-      'networks': {},
-      'collectionResource': {},
-      'configurations': {},
-      'serviceProxies': {},
-      'pnfs': {}
-    }
-    ))
-  }
-
-});