Merge "Add csit usecase for thirdparty sdnc."
diff --git a/bootstrap/vagrant-onap/.gitignore b/bootstrap/vagrant-onap/.gitignore
index 446d1fb..3c502a0 100644
--- a/bootstrap/vagrant-onap/.gitignore
+++ b/bootstrap/vagrant-onap/.gitignore
@@ -7,3 +7,4 @@
 lib/files/sources.list
 openrc
 doc/build/
+etc/settings.yaml
diff --git a/bootstrap/vagrant-onap/Vagrantfile b/bootstrap/vagrant-onap/Vagrantfile
index 014f2fd..c10cb0b 100644
--- a/bootstrap/vagrant-onap/Vagrantfile
+++ b/bootstrap/vagrant-onap/Vagrantfile
@@ -1,46 +1,42 @@
 # -*- mode: ruby -*-
 # vi: set ft=ruby :
 
-
 configuration = {
   # Generic parameters used across all ONAP components
-  'public_net_id'       => '00000000-0000-0000-0000-000000000000',
   'key_name'            => 'ecomp_key',
   'pub_key'             => '',
   'nexus_repo'          => 'https://nexus.onap.org/content/sites/raw',
+  'nexus_repo_root'     => 'https://nexus.onap.org',
+  'nexus_url_snapshot'  => 'https://nexus.onap.org/content/repositories/snapshots',
   'nexus_docker_repo'   => 'nexus3.onap.org:10001',
   'nexus_username'      => 'docker',
   'nexus_password'      => 'docker',
   'dmaap_topic'         => 'AUTO',
   'artifacts_version'   => '1.0.0',
   'docker_version'      => '1.0-STAGING-latest',
-  'gerrit_branch'       => 'master',
-# Parameters for DCAE instantiation
+  # Parameters for DCAE instantiation
   'dcae_zone'           => 'iad4',
   'dcae_state'          => 'vi',
   'openstack_tenant_id' => '',
   'openstack_username'  => '',
   'openstack_api_key'   => '',
   'openstack_password'  => '',
-  'nexus_repo_root'     => 'https://nexus.onap.org',
-  'nexus_url_snapshot'  => 'https://nexus.onap.org/content/repositories/snapshots',
-  'gitlab_branch'       => 'master',
-  'build_image'         => 'True',
-  'pull_docker_image'   => 'True',
   'odl_version'         => '0.5.3-Boron-SR3',
+  # Parameters for enabling features
+  'build_image'         => 'True',
   'clone_repo'          => 'True',
   'compile_repo'        => 'False',
-  'enable_oparent'      => 'True'
+  'enable_oparent'      => 'True',
+  'skip_get_images'     => 'False',
+  'skip_install'        => 'True'
 }
 
-
 box = {
   :virtualbox => 'ubuntu/trusty64',
   :libvirt => 'sputnik13/trusty64',
   :openstack => nil
 }
 
-
 nodes = [
     {
     :name   => "aai",
@@ -217,7 +213,6 @@
   },
 ]
 
-
 run_path   = 'vagrant_utils/postinstall.sh'
 sdc_volume = 'vol1-sdc-data.vdi'
 
@@ -234,7 +229,7 @@
   configuration.update(user_conf)
 end
 
-#Set network interface
+# Set network interface
 net_interface = 'vboxnet0'
 is_windows = Gem.win_platform?
 if is_windows
@@ -243,7 +238,7 @@
 puts "[INFO] Net interface: #{net_interface}"
 
 
-#If argument is given use it. Otherwise use Env: DEPLOY_MODE else use default
+# If argument is given use it. Otherwise use Env: DEPLOY_MODE else use default
 requested_machine = ARGV[1]
 
 deploy_mode = ENV.fetch('DEPLOY_MODE', 'individual')
@@ -253,14 +248,14 @@
     end
 end
 
-#Catch the status of all machines
+# Catch the status of all machines
 if ARGV[0] == 'status' || ARGV[0] == 'destroy'
     deploy_mode = 'NA'
 end
 
 puts "[INFO] Deploy Mode:  #{deploy_mode}"
 
-#In case of all-in-one or testing clean the nodes list
+# In case of all-in-one or testing clean the nodes list
 case deploy_mode
     when 'all-in-one'
         nodes.select! do |node|
@@ -368,6 +363,7 @@
         if !is_windows
           nodeconfig.vm.synced_folder '~/.m2', '/root/.m2/', create: true
         end
+
         # Set Network
         nodeconfig.vm.network :private_network,
             :adapter => 2,
@@ -381,7 +377,7 @@
 
         # Specific settings:
 
-        #Set Storage (For SDC or All-in-one)
+        # Set Storage (For SDC or All-in-one)
         if node[:name].include?("all-in-one") || node[:name].include?("sdc")
           nodeconfig.vm.provider "virtualbox" do |v|
               unless File.exist?(sdc_volume)
@@ -402,9 +398,11 @@
             # Override variables
             run_path = 'vagrant_utils/unit_testing.sh'
             node[:args] = [test_suite, test_case]
+        else
+            configuration['skip_get_images'] = ENV.fetch('SKIP_GET_IMAGES', configuration['skip_get_images'])
+            configuration['skip_install'] = ENV.fetch('SKIP_INSTALL', configuration['skip_install'])
         end
 
-
         if node[:name].include? "vfc"
           nodeconfig.vm.provision 'docker'
         end
diff --git a/bootstrap/vagrant-onap/doc/source/features/configure_execution.rst b/bootstrap/vagrant-onap/doc/source/features/configure_execution.rst
new file mode 100644
index 0000000..e2da336
--- /dev/null
+++ b/bootstrap/vagrant-onap/doc/source/features/configure_execution.rst
@@ -0,0 +1,74 @@
+=======================
+Modify execution values
+=======================
+
+In order to provide a flexible plataform that adjusts to different developer
+needs, it has been implemented two mechanism to configure the execution of this
+project.
+
+Settings configuration file
+---------------------------
+
+The first mechanism refers to the process to replace default configuration
+values through a settings configuration file. This file needs to be placed into
+the *./etc* folder and named *settings.yaml*. It must contain the key/pair
+configuration values that will be overriden.
+
+.. note::
+
+    There are sample files (e. g. settings.yaml.development and
+    settings.yaml.testing) placed into the *./etc* folder. Their purpose is to
+    provide a reference of different configurations.
+
+.. end
+
+Configuration values:
+
++------------------+-------------------+---------------------------------------+
+| Key              | Values            | Description                           |
++==================+===================+=======================================+
+| build_image      | "True" or "False" | Determines if the Docker image is     |
+|                  |                   | retrieved from public hub or built    |
+|                  |                   | from source code.                     |
++------------------+-------------------+---------------------------------------+
+| clone_repo       | "True" or "False" | Determines if all the source code     |
+|                  |                   | repositories of a given component are |
+|                  |                   | cloned locally.                       |
++------------------+-------------------+---------------------------------------+
+| compile_repo     | "True" or "False" | Determines if all the source code     |
+|                  |                   | repositories of a given component are |
+|                  |                   | going to be compiled.                 |
++------------------+-------------------+---------------------------------------+
+| enable_oparent   | "True" or "False" | Determines if the OParent project     |
+|                  |                   | will be used during the maven         |
+|                  |                   | compilation.                          |
++------------------+-------------------+---------------------------------------+
+| skip_get_images  | "True" or "False" | Determines if the process to build or |
+|                  |                   | retrieve docker images of a given     |
+|                  |                   | component are going to skipped.       |
++------------------+-------------------+---------------------------------------+
+| skip_install     | "True" or "False" | Determines if the process to start    |
+|                  |                   | the services of a given component     |
+|                  |                   | will be started.                      |
++------------------+-------------------+---------------------------------------+
+
+Parameters
+----------
+
+The **skip_get_images** and **skip_install** are the only two configuration
+values that can be overriden using *-g* and *-i* respectively by the run scripts
+(*./tools/run.sh* and *.\\tools\\Run.ps1*).
+
+.. note::
+
+    The script parameters take precendence of the configuration file.
+
+.. end
+
+.. code-block:: console
+
+   $ ./tools/run.sh sdc -g
+
+.. end
+
+
diff --git a/bootstrap/vagrant-onap/doc/source/features/features.rst b/bootstrap/vagrant-onap/doc/source/features/features.rst
index 9499698..d35c595 100644
--- a/bootstrap/vagrant-onap/doc/source/features/features.rst
+++ b/bootstrap/vagrant-onap/doc/source/features/features.rst
@@ -9,6 +9,7 @@
 
    openstack.rst
    consuming_scripts.rst
+   configure_execution.rst
 
 This chapter explains how to use ONAP on Vagrant Advanced features
 like different providers.
diff --git a/bootstrap/vagrant-onap/etc/settings.yaml.development b/bootstrap/vagrant-onap/etc/settings.yaml.development
new file mode 100644
index 0000000..594273b
--- /dev/null
+++ b/bootstrap/vagrant-onap/etc/settings.yaml.development
@@ -0,0 +1,6 @@
+build_images: "True"
+clone_repo: "True"
+compile_repo: "False"
+enable_oparent: "True"
+skip_get_images: "False"
+skip_install: "True"
diff --git a/bootstrap/vagrant-onap/etc/settings.yaml.testing b/bootstrap/vagrant-onap/etc/settings.yaml.testing
new file mode 100644
index 0000000..8beb476
--- /dev/null
+++ b/bootstrap/vagrant-onap/etc/settings.yaml.testing
@@ -0,0 +1,6 @@
+build_images: "False"
+clone_repo: "False"
+compile_repo: "False"
+enable_oparent: "False"
+skip_get_images: "False"
+skip_install: "False"
diff --git a/bootstrap/vagrant-onap/lib/aai b/bootstrap/vagrant-onap/lib/aai
index 7d87870..bd72ae0 100755
--- a/bootstrap/vagrant-onap/lib/aai
+++ b/bootstrap/vagrant-onap/lib/aai
@@ -199,5 +199,7 @@
 
     install_ajsc_aai
     _wait_for_sdc
-    install_model_loader
+    if [[ "$skip_install" == "False" ]]; then
+        install_model_loader
+    fi
 }
diff --git a/bootstrap/vagrant-onap/lib/appc b/bootstrap/vagrant-onap/lib/appc
index 33980ae..5e3858f 100755
--- a/bootstrap/vagrant-onap/lib/appc
+++ b/bootstrap/vagrant-onap/lib/appc
@@ -52,6 +52,10 @@
         fi
     fi
 
-    get_appc_images
-    install_appc
+    if [[ "$skip_get_images" == "False" ]]; then
+        get_appc_images
+        if [[ "$skip_install" == "False" ]]; then
+            install_appc
+        fi
+    fi
 }
diff --git a/bootstrap/vagrant-onap/lib/ccsdk b/bootstrap/vagrant-onap/lib/ccsdk
index 6ea829f..85cdf4d 100755
--- a/bootstrap/vagrant-onap/lib/ccsdk
+++ b/bootstrap/vagrant-onap/lib/ccsdk
@@ -44,12 +44,6 @@
             pull_onap_image ccsdk-$image-image
         done
     fi
-
-}
-
-# install_ccsdk() - 
-function install_ccsdk {
-    echo "pass"
 }
 
 # init_ccsdk() - Function that initialize Multi Cloud services
@@ -60,5 +54,4 @@
             compile_ccsdk_repos
         fi
     fi
-    install_ccsdk
 }
diff --git a/bootstrap/vagrant-onap/lib/dcae b/bootstrap/vagrant-onap/lib/dcae
index 43da9f5..3e702d9 100755
--- a/bootstrap/vagrant-onap/lib/dcae
+++ b/bootstrap/vagrant-onap/lib/dcae
@@ -128,6 +128,10 @@
     fi
 
     _create_config_file
-    get_dcae_images
-    install_dcae
+    if [[ "$skip_get_images" == "False" ]]; then
+        get_dcae_images
+        if [[ "$skip_install" == "False" ]]; then
+            install_dcae
+        fi
+    fi
 }
diff --git a/bootstrap/vagrant-onap/lib/mr b/bootstrap/vagrant-onap/lib/mr
index a137f73..f221817 100755
--- a/bootstrap/vagrant-onap/lib/mr
+++ b/bootstrap/vagrant-onap/lib/mr
@@ -31,6 +31,10 @@
     if [[ "$clone_repo" == "True" ]]; then
         clone_mr_repos
     fi
-    get_mr_images
-    install_message_router
+    if [[ "$skip_get_images" == "False" ]]; then
+        get_mr_images
+        if [[ "$skip_install" == "False" ]]; then
+            install_message_router
+        fi
+    fi
 }
diff --git a/bootstrap/vagrant-onap/lib/mso b/bootstrap/vagrant-onap/lib/mso
index 4b20906..6ff4bbe 100755
--- a/bootstrap/vagrant-onap/lib/mso
+++ b/bootstrap/vagrant-onap/lib/mso
@@ -25,8 +25,8 @@
     done
 }
 
-# install_mso() - Installation of mso images
-function install_mso {
+# get_mso_images() - Function that retrieves or create MSO Docker images
+function get_mso_images {
     if [[ "$build_image" == "True" ]]; then
         export GIT_NO_PROJECT=/opt/
         compile_src $src_folder
@@ -34,8 +34,8 @@
     fi
 }
 
-# install_mso_docker_config() - Download and install MSO Docker configuration project
-function install_mso_docker_config {
+# install_mso() - Install MSO Docker configuration project
+function install_mso {
     MSO_ENCRYPTION_KEY=$(cat /opt/mso/docker-config/encryption.key)
     echo -n "$openstack_api_key" | openssl aes-128-ecb -e -K $MSO_ENCRYPTION_KEY -nosalt | xxd -c 256 -p > /opt/config/api_key.txt
 
@@ -108,6 +108,10 @@
         fi
     fi
 
-    install_mso
-    install_mso_docker_config
+    if [[ "$skip_get_images" == "False" ]]; then
+        get_mso_images
+        if [[ "$skip_install" == "False" ]]; then
+            install_mso
+        fi
+    fi
 }
diff --git a/bootstrap/vagrant-onap/lib/multicloud b/bootstrap/vagrant-onap/lib/multicloud
index 1126d61..1c781fe 100755
--- a/bootstrap/vagrant-onap/lib/multicloud
+++ b/bootstrap/vagrant-onap/lib/multicloud
@@ -25,6 +25,11 @@
     done
 }
 
+# get_multicloud_images() -
+function get_multicloud_images {
+    echo "pass"
+}
+
 # install_multicloud() - 
 function install_multicloud {
     echo "pass"
@@ -38,5 +43,10 @@
             compile_multicloud_repos
         fi
     fi
-    install_multicloud
+    if [[ "$skip_get_images" == "False" ]]; then
+        get_multicloud_images
+        if [[ "$skip_install" == "False" ]]; then
+            install_multicloud
+        fi
+    fi
 }
diff --git a/bootstrap/vagrant-onap/lib/policy b/bootstrap/vagrant-onap/lib/policy
index ce34056..f43087b 100755
--- a/bootstrap/vagrant-onap/lib/policy
+++ b/bootstrap/vagrant-onap/lib/policy
@@ -65,6 +65,10 @@
         fi
     fi
 
-    get_policy_images
-    install_policy
+    if [[ "$skip_get_images" == "False" ]]; then
+        get_policy_images
+        if [[ "$skip_install" == "False" ]]; then
+            install_policy
+        fi
+    fi
 }
diff --git a/bootstrap/vagrant-onap/lib/portal b/bootstrap/vagrant-onap/lib/portal
index 998d6c0..4dc5ef9 100755
--- a/bootstrap/vagrant-onap/lib/portal
+++ b/bootstrap/vagrant-onap/lib/portal
@@ -67,6 +67,7 @@
     install_package unzip
     unzip -o etc.zip -d /PROJECT/OpenSource/UbuntuEP/
 
+    _install_mariadb
     install_docker_compose
     bash portal_vm_init.sh
 
@@ -88,7 +89,11 @@
             compile_all_portal_repos
         fi
     fi
-    get_portal_images
-    _install_mariadb
-    install_portal
+
+    if [[ "$skip_get_images" == "False" ]]; then
+        get_portal_images
+        if [[ "$skip_install" == "False" ]]; then
+            install_portal
+        fi
+    fi
 }
diff --git a/bootstrap/vagrant-onap/lib/robot b/bootstrap/vagrant-onap/lib/robot
index 34b431a..ebcca6e 100755
--- a/bootstrap/vagrant-onap/lib/robot
+++ b/bootstrap/vagrant-onap/lib/robot
@@ -59,6 +59,11 @@
             compile_robot_repos
         fi
     fi
-    get_robot_images
-    install_robot
+
+    if [[ "$skip_get_images" == "False" ]]; then
+        get_robot_images
+        if [[ "$skip_install" == "False" ]]; then
+            install_robot
+        fi
+    fi
 }
diff --git a/bootstrap/vagrant-onap/lib/sdc b/bootstrap/vagrant-onap/lib/sdc
old mode 100644
new mode 100755
index 0580489..c7f79d6
--- a/bootstrap/vagrant-onap/lib/sdc
+++ b/bootstrap/vagrant-onap/lib/sdc
@@ -66,16 +66,11 @@
 # get_sdc_images() - Function that retrieves the SDC docker images
 function get_sdc_images {
     if [[ "$build_image" == "True" ]]; then
-        if [[ "$compile_repo" == "True" ]]; then
-            compile_src $sdc_src_folder
-        fi
         build_docker_image $sdc_src_folder/sdc-docker-base
     else
-		if [["$pull_docker_image" == True]]; then
-			for image in backend frontend elasticsearch kibana cassandra sanity; do
-				pull_openecomp_image openecomp/sdc-$image
-			done
-		fi
+        for image in backend frontend elasticsearch kibana cassandra sanity; do
+            pull_openecomp_image openecomp/sdc-$image
+        done
     fi
 }
 
@@ -85,28 +80,23 @@
     local MR_IP_ADDR='10.0.11.1'
 
     _init_data_folders
-	cp $sdc_src_folder/sdc-os-chef/environments/Template.json /data/environments
-	cp $sdc_src_folder/sdc-os-chef/scripts/docker_run.sh /data/scripts
-	cp $sdc_src_folder/sdc-os-chef/scripts/docker_health.sh /data/scripts
-	cp $sdc_src_folder/sdc-os-chef/scripts/docker_login.sh /data/scripts
-	cp $sdc_src_folder/sdc-os-chef/scripts/docker_clean.sh /data/scripts
-	chmod +x /data/scripts/docker_run.sh
-	chmod +x /data/scripts/docker_health.sh
-	chmod +x /data/scripts/docker_login.sh
-	chmod +x /data/scripts/docker_clean.sh
-	
+    cp $sdc_src_folder/sdc-os-chef/environments/Template.json /data/environments
+    cp $sdc_src_folder/sdc-os-chef/scripts/docker_run.sh /data/scripts
+    cp $sdc_src_folder/sdc-os-chef/scripts/docker_health.sh /data/scripts
+    cp $sdc_src_folder/sdc-os-chef/scripts/docker_login.sh /data/scripts
+    cp $sdc_src_folder/sdc-os-chef/scripts/docker_clean.sh /data/scripts
+    chmod +x /data/scripts/docker_run.sh
+    chmod +x /data/scripts/docker_health.sh
+    chmod +x /data/scripts/docker_login.sh
+    chmod +x /data/scripts/docker_clean.sh
+
     cat /data/environments/Template.json | sed "s/yyy/"$IP_ADDRESS"/g" > /data/environments/$ENV_NAME.json
     sed -i "s/xxx/"$ENV_NAME"/g" /data/environments/$ENV_NAME.json
     sed -i "s/\"ueb_url_list\":.*/\"ueb_url_list\": \""$MR_IP_ADDR","$MR_IP_ADDR"\",/g" /data/environments/$ENV_NAME.json
     sed -i "s/\"fqdn\":.*/\"fqdn\": [\""$MR_IP_ADDR"\", \""$MR_IP_ADDR"\"]/g" /data/environments/$ENV_NAME.json
 
     install_docker
-    if [[ "$pull_docker_image" == "True" ]]; then
-        docker_openecomp_login
-        bash /data/scripts/docker_run.sh -e $ENV_NAME -r $docker_version -p $(echo $nexus_docker_repo | cut -d':' -f2)
-    else
-        bash /data/scripts/docker_run.sh -e $ENV_NAME  -l
-    fi
+    bash /data/scripts/docker_run.sh -e $ENV_NAME  -l
 }
 
 # init_sdc() - Function that initialize SDC services
@@ -118,7 +108,12 @@
             compile_all_sdc_repos
         fi
     fi
-    get_sdc_images
-    install_sdc
+
+    if [[ "$skip_get_images" == "False" ]]; then
+        get_sdc_images
+        if [[ "$skip_install" == "False" ]]; then
+            install_sdc
+        fi
+    fi
     _setup_docker_aliases
 }
diff --git a/bootstrap/vagrant-onap/lib/sdnc b/bootstrap/vagrant-onap/lib/sdnc
index c6d013b..22066fd 100755
--- a/bootstrap/vagrant-onap/lib/sdnc
+++ b/bootstrap/vagrant-onap/lib/sdnc
@@ -71,6 +71,11 @@
             compile_all_sdnc_repos
         fi
     fi
-    get_sdnc_images
-    install_sdnc
+
+    if [[ "$skip_get_images" == "False" ]]; then
+        get_sdnc_images
+        if [[ "$skip_install" == "False" ]]; then
+            install_sdnc
+        fi
+    fi
 }
diff --git a/bootstrap/vagrant-onap/lib/vfc b/bootstrap/vagrant-onap/lib/vfc
index a879448..5cf0ed1 100755
--- a/bootstrap/vagrant-onap/lib/vfc
+++ b/bootstrap/vagrant-onap/lib/vfc
@@ -106,6 +106,10 @@
         fi
     fi
 
-    get_vfc_images
-    install_vfc
+    if [[ "$skip_get_images" == "False" ]]; then
+        get_vfc_images
+        if [[ "$skip_install" == "False" ]]; then
+            install_vfc
+        fi
+    fi
 }
diff --git a/bootstrap/vagrant-onap/lib/vid b/bootstrap/vagrant-onap/lib/vid
index 55f399a..83b5309 100755
--- a/bootstrap/vagrant-onap/lib/vid
+++ b/bootstrap/vagrant-onap/lib/vid
@@ -56,6 +56,10 @@
         fi
     fi
 
-    get_vid_images
-    install_vid
+    if [[ "$skip_get_images" == "False" ]]; then
+        get_vid_images
+        if [[ "$skip_install" == "False" ]]; then
+            install_vid
+        fi
+    fi
 }
diff --git a/bootstrap/vagrant-onap/tests/test_mso b/bootstrap/vagrant-onap/tests/test_mso
index cb7b014..deea7bb 100644
--- a/bootstrap/vagrant-onap/tests/test_mso
+++ b/bootstrap/vagrant-onap/tests/test_mso
@@ -4,7 +4,7 @@
 source /var/onap/mso
 
 covered_functions=(
-"clone_all_mso_repos" "compile_all_mso_repos" "install_mso" "install_mso_docker_config"
+"clone_all_mso_repos" "compile_all_mso_repos" "get_mso_images" "install_mso"
 )
 
 # test_clone_all_mso_repos() - Verify the source code retrieve of MSO project
@@ -40,8 +40,8 @@
     asserts_file_exist $src_folder/libs/swift-model/target/swift-model-1.1.0-SNAPSHOT.jar
 }
 
-# test_install_mso() - Verify the creation of MSO Docker images
-function test_install_mso {
+# test_get_mso_images() - Verify the creation of MSO Docker images
+function test_get_mso_images {
     clone_all_mso_repos
     install_mso
 
@@ -50,8 +50,8 @@
     done
 }
 
-# test_install_mso_docker_config - Verify the execution of MSO Docker images
-function test_install_mso_docker_config {
+# test_install_mso - Verify the execution of MSO Docker images
+function test_install_mso {
     clone_all_mso_repos
     install_mso
     install_mso_docker_config
diff --git a/bootstrap/vagrant-onap/tests/test_multicloud b/bootstrap/vagrant-onap/tests/test_multicloud
index 3d60533..374272c 100644
--- a/bootstrap/vagrant-onap/tests/test_multicloud
+++ b/bootstrap/vagrant-onap/tests/test_multicloud
@@ -4,7 +4,7 @@
 source /var/onap/multicloud
 
 covered_functions=(
-"clone_multicloud_repos" "compile_multicloud_repos" "install_multicloud"
+"clone_multicloud_repos" "compile_multicloud_repos" "get_multicloud_images" "install_multicloud"
 )
 
 # test_clone_multicloud_repos() - Verify that Multi Cloud repositories are cloned properly
@@ -24,9 +24,16 @@
     asserts_file_exist $multicloud_src_folder/openstack/newton/target/multicloud-openstack-newton-1.0.0-SNAPSHOT.zip
 }
 
+# test_get_multicloud_images() -
+function test_get_multicloud_images {
+    clone_multicloud_repos
+    get_multicloud_images
+}
+
 # test_install_multicloud() - Verify the built and start of Multi Cloud services
 function test_install_multicloud {
     clone_multicloud_repos
+    get_multicloud_images
     install_multicloud
 }
 
diff --git a/bootstrap/vagrant-onap/tools/Run.ps1 b/bootstrap/vagrant-onap/tools/Run.ps1
index 8e6c94f..71e595b 100644
--- a/bootstrap/vagrant-onap/tools/Run.ps1
+++ b/bootstrap/vagrant-onap/tools/Run.ps1
@@ -20,6 +20,12 @@
 .PARAMETER y
 Skips warning prompt.
 
+.PARAMETER g
+Skips creation or retrieve image process.
+
+.PARAMETER i
+Skips installation service process.
+
 .LINK
 https://wiki.onap.org/display/DW/ONAP+on+Vagrant
 #>
@@ -44,7 +50,17 @@
     [Parameter(Mandatory=$False,HelpMessage="Skips warning prompt.")]
     [AllowNull()]
     [Switch]
-    $y = $false
+    $y = $True
+,
+    [Parameter(Mandatory=$False,HelpMessage="Skips creation or retrieve image process.")]
+    [AllowNull()]
+    [Switch]
+    $skip_get_images = $True
+,
+    [Parameter(Mandatory=$False,HelpMessage="Skips warning prompt.")]
+    [AllowNull()]
+    [Switch]
+    $skip_install = $True
 )
 
 if ( -Not "testing".Equals($Command) )
@@ -63,6 +79,9 @@
             }
     }
 
+$env:SKIP_GET_IMAGES=$skip_get_images
+$env:SKIP_INSTALL=$skip_install
+
 switch ($Command)
     {
         "all_in_one" { $env:DEPLOY_MODE="all-in-one" }
diff --git a/bootstrap/vagrant-onap/tools/run.sh b/bootstrap/vagrant-onap/tools/run.sh
index 08eae01..9e03384 100755
--- a/bootstrap/vagrant-onap/tools/run.sh
+++ b/bootstrap/vagrant-onap/tools/run.sh
@@ -6,6 +6,10 @@
 Optional arguments:
     -y
         Skips warning prompt.
+    -g
+        Skips creation or retrieve image process.
+    -i
+        Skips installation service process.
     -s <suite>
         Test suite to use in testing mode.
     -c <case>
@@ -23,11 +27,17 @@
 
 COMMAND=$1
 
-while getopts "ys:c:" OPTION "${@:2}"; do
+while getopts "ygis:c:" OPTION "${@:2}"; do
     case "$OPTION" in
     y)
         run=true
         ;;
+    g)
+        export SKIP_GET_IMAGES="True"
+        ;;
+    i)
+        export SKIP_INSTALL="True"
+        ;;
     s)
         if [ "$COMMAND" != "testing" ] ; then
             echo "Test suite should only be specified in testing mode."
diff --git a/test/csit/plans/aai/resources/docker-compose.yml b/test/csit/plans/aai/resources/docker-compose.yml
index 923f24d..09d2a81 100644
--- a/test/csit/plans/aai/resources/docker-compose.yml
+++ b/test/csit/plans/aai/resources/docker-compose.yml
@@ -9,6 +9,7 @@
       - CHEF_BRANCH=master
       - CHEF_GIT_URL=http://gerrit.onap.org/r/aai
       - AAI_CORE_VERSION=1.1.0-SNAPSHOT
+      - LOCAL_USER_ID=${USER_ID}
     ports:
       - 8447:8447
     logging:
@@ -25,6 +26,8 @@
       - CHEF_BRANCH=master
       - CHEF_GIT_URL=http://gerrit.onap.org/r/aai
       - AAI_CORE_VERSION=1.1.0-SNAPSHOT
+      - LOCAL_USER_ID=${USER_ID}
+      - DISABLE_UPDATE_QUERY=true
     ports:
       - 8446:8446
     logging:
diff --git a/test/csit/plans/aai/resources/setup.sh b/test/csit/plans/aai/resources/setup.sh
index 915536b..19beb63 100644
--- a/test/csit/plans/aai/resources/setup.sh
+++ b/test/csit/plans/aai/resources/setup.sh
@@ -31,7 +31,7 @@
     CONTAINER_NAME="$1";
     START_TEXT="$2";
 
-    TIMEOUT=240
+    TIMEOUT=360
 
     # wait for the real startup
     AMOUNT_STARTUP=$(docker logs ${CONTAINER_NAME} 2>&1 | grep "$START_TEXT" | wc -l)
@@ -59,6 +59,7 @@
 
 docker pull ${HBASE_IMAGE}:${HBASE_VERSION};
 
+docker pull ${HBASE_IMAGE}:${HBASE_VERSION};
 docker pull ${DOCKER_REGISTRY}/openecomp/aai-resources:${DOCKER_IMAGE_VERSION};
 docker tag ${DOCKER_REGISTRY}/openecomp/aai-resources:${DOCKER_IMAGE_VERSION} ${DOCKER_REGISTRY}/openecomp/aai-resources:latest;
 
@@ -74,25 +75,36 @@
 wait_for_container ${HBASE_CONTAINER_NAME} ' Started SelectChannelConnector@0.0.0.0:8080';
 wait_for_container ${HBASE_CONTAINER_NAME} ' Started SelectChannelConnector@0.0.0.0:9095';
 
-# Start the resources microservice
-RESOURCES_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai-resources.api.simpledemo.openecomp.org 2>&1 | grep 'Creating' | grep -v 'volume' | grep -v 'network' | awk '{ print $2; }' | head -1);
-wait_for_container ${RESOURCES_CONTAINER_NAME} '0.0.0.0:8447';
-docker logs ${CONTAINER_NAME};
+USER_EXISTS=$(check_if_user_exists aaiadmin);
 
-# Start the traversal microservice
-GRAPH_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai-traversal.api.simpledemo.openecomp.org 2>&1 | grep 'Creating' | awk '{ print $2; }' | head -1);
-wait_for_container ${GRAPH_CONTAINER_NAME} '0.0.0.0:8446';
+function check_if_user_exists(){
+    local user_id=$1;
 
-# Start the haproxy to route requests between resources and traversal
-HAPROXY_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai.api.simpledemo.openecomp.org 2>&1 |grep 'Creating' | grep -v 'volume' | grep -v 'network' | awk '{ print $2; }' | head -1);
+    if [ -z "$user_id" ]; then
+        echo "Needs to provide at least one argument for check_if_user_exists func";
+        exit 1;
+    fi;
 
-echo "A&AI Microservices, resources and traversal, are up and running along with HAProxy";
-
-docker exec $GRAPH_CONTAINER_NAME "/opt/app/aai-traversal/scripts/install/updateQueryData.sh" && {
-	echo "Successfully loaded the widget related data into db";
-} || {
-	echo "Unable to load widget related data into db";
+    id -u ${user_id} > /dev/null 2>&1 && {
+        echo "1";
+    } || {
+        echo "0";
+    }
 }
 
+
+if [ "${USER_EXISTS}" -eq 0 ]; then
+        export USER_ID=9000;
+else
+        export USER_ID=$(id -u aaiadmin);
+fi;
+
+RESOURCES_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai-resources.api.simpledemo.openecomp.org 2>&1 | grep 'Creating' | grep -v 'volume' | grep -v 'network' | awk '{ print $2; }' | head -1);
+wait_for_container ${RESOURCES_CONTAINER_NAME} '0.0.0.0:8447';
+
+docker logs ${RESOURCES_CONTAINER_NAME};
+
+${DOCKER_COMPOSE_CMD} up -d aai-traversal.api.simpledemo.openecomp.org aai.api.simpledemo.openecomp.org
+echo "A&AI Microservices, resources and traversal, are up and running along with HAProxy";
 # Set the host ip for robot from the haproxy
 ROBOT_VARIABLES="-v HOST_IP:`ip addr show docker0 | head -3 | tail -1 | cut -d' ' -f6 | cut -d'/' -f1`"
diff --git a/test/csit/plans/aai/traversal/setup.sh b/test/csit/plans/aai/traversal/setup.sh
index 80eace0..010b035 100644
--- a/test/csit/plans/aai/traversal/setup.sh
+++ b/test/csit/plans/aai/traversal/setup.sh
@@ -58,6 +58,7 @@
 export HBASE_VERSION="${HBASE_VERSION:-1.2.0}";
 
 docker pull ${HBASE_IMAGE}:${HBASE_VERSION};
+
 docker pull ${DOCKER_REGISTRY}/openecomp/aai-resources:${DOCKER_IMAGE_VERSION};
 docker tag ${DOCKER_REGISTRY}/openecomp/aai-resources:${DOCKER_IMAGE_VERSION} ${DOCKER_REGISTRY}/openecomp/aai-resources:latest;
 
diff --git a/test/csit/tests/aai/resources/db_edge_rule/prevent_delete.robot b/test/csit/tests/aai/resources/db_edge_rule/prevent_delete.robot
new file mode 100644
index 0000000..beae2da
--- /dev/null
+++ b/test/csit/tests/aai/resources/db_edge_rule/prevent_delete.robot
@@ -0,0 +1,131 @@
+*** Settings ***
+Library       OperatingSystem
+Library       RequestsLibrary
+Library       requests
+Library       Collections
+
+*** Variables ***
+${CRKEYVALUE7}       cr-integration-test7
+${CRKEYVALUE8}       cr-integration-test8
+${TENANTKEYVALUE}    tenant-integration-test7
+${VSERVERKEYVALUE}   vserver-integration-test7
+
+${CRURL}             https://${HOST_IP}:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/${CRKEYVALUE7}/${CRKEYVALUE8}
+${TENANTURL}         https://${HOST_IP}:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/${CRKEYVALUE7}/${CRKEYVALUE8}/tenants/tenant/${TENANTKEYVALUE}
+${VSERVERURL}        https://${HOST_IP}:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/${CRKEYVALUE7}/${CRKEYVALUE8}/tenants/tenant/${TENANTKEYVALUE}/vservers/vserver/${VSERVERKEYVALUE}
+${CRDATA}  {"cloud-owner":"${CRKEYVALUE7}","cloud-region-id":"${CRKEYVALUE8}","owner-defined-type":"example-owner-defined-type-98787654321-09","cloud-region-version":"example-cloud-region-version-98765784321-09","identity-url":"example-identity-url-98765437821-09","cloud-zone":"example-cloud-zone-98765784321-09","complex-name":"example-complex-name-98765874321-09"}
+${TENANTDATA}  {"tenant-id":"${TENANTKEYVALUE}","tenant-name":"example-tenant-name-val-143742","vservers":{"vserver":[{"vserver-id":"${VSERVERKEYVALUE}","vserver-name":"example-vserver-name-val-357201","vserver-name2":"example-vserver-name2-val-672821","prov-status":"example-prov-status-val-137711","vserver-selflink":"example-vserver-selflink-val-58731","in-maint":true,"is-closed-loop-disabled":true}]}}
+
+
+*** Test Cases ***
+Run AAI Put cloud-region
+    [Documentation]             Create an cloud-region object
+    ${resp}=                    PutWithCert              ${CRURL}              ${CRDATA}
+    log                         ${CRURL}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      201
+	
+Run AAI Put tenant
+    [Documentation]             Create an tenant object
+    ${resp}=                    PutWithCert              ${TENANTURL}              ${TENANTDATA}
+    log                         ${TENANTURL}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      201
+
+Run AAI Get tenant to delete
+    [Documentation]             Get tenant object to delete
+    ${resp}                     GetWithCert              ${TENANTURL}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+    ${resource_version}=        Evaluate                 $resp.json().get('resource-version')
+    Set Global Variable			${resource_version}
+
+Run AAI Delete tenant
+    [Documentation]             Delete the tenant
+    ${resp}=                    DeleteWithCert           ${TENANTURL}?resource-version=${resource_version}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      400
+	
+Run AAI Get vserver to delete
+    [Documentation]             Get vserver object to delete
+    ${resp}                     GetWithCert              ${VSERVERURL}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+    ${resource_version}=        Evaluate                 $resp.json().get('resource-version')
+    Set Global Variable			${resource_version}
+
+Run AAI Delete vserver
+    [Documentation]             Delete the vserver
+    ${resp}=                    DeleteWithCert           ${VSERVERURL}?resource-version=${resource_version}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      204
+		
+Run AAI Get tenant to delete
+    [Documentation]             Get tenant object to delete
+    ${resp}                     GetWithCert              ${TENANTURL}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+    ${resource_version}=        Evaluate                 $resp.json().get('resource-version')
+    Set Global Variable			${resource_version}
+
+Run AAI Delete tenant
+    [Documentation]             Delete the tenant
+    ${resp}=                    DeleteWithCert           ${TENANTURL}?resource-version=${resource_version}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      204	
+	
+Run AAI Get cr to delete
+    [Documentation]             Get cr object to delete
+    ${resp}                     GetWithCert              ${CRURL}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+    ${resource_version}=        Evaluate                 $resp.json().get('resource-version')
+    Set Global Variable			${resource_version}
+
+Run AAI Delete cr
+    [Documentation]             Delete the cr
+    ${resp}=                    DeleteWithCert           ${CRURL}?resource-version=${resource_version}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      204	
+	
+*** Keywords ***
+PutWithCert
+    [Arguments]      ${url}      ${data}
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.put('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
+	
+PatchWithCert
+    [Arguments]      ${url}      ${data}
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/merge-patch+json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.patch('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}	
+
+PostWithCert
+    [Arguments]      ${url}      ${data}
+    ${auth}=         Create List  AAI AAI
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.post('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
+
+GetWithCert
+    [Arguments]      ${url}
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.get('${url}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
+
+DeleteWithCert
+    [Arguments]      ${url}
+    ${auth}=         Create List  AAI AAI
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.delete('${url}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
\ No newline at end of file
diff --git a/test/csit/tests/aai/resources/relationship_suite/relationship_using_related_link.robot b/test/csit/tests/aai/resources/relationship_suite/relationship_using_related_link.robot
new file mode 100644
index 0000000..5820d4a
--- /dev/null
+++ b/test/csit/tests/aai/resources/relationship_suite/relationship_using_related_link.robot
@@ -0,0 +1,110 @@
+*** Settings ***
+Library       OperatingSystem
+Library       RequestsLibrary
+Library       requests
+Library       Collections
+
+*** Variables ***
+${COMPLEXKEYVALUE}     complex-integration-test8
+${L3NETWORKKEYVALUE}   l3-network-integration-test8
+${COMPLEXURL}    https://${HOST_IP}:8443/aai/v11/cloud-infrastructure/complexes/complex/${COMPLEXKEYVALUE}
+${L3NETWORKURL}  https://${HOST_IP}:8443/aai/v11/network/l3-networks/l3-network/${L3NETWORKKEYVALUE}
+${COMPLEXDATA}  {"physical-location-id":"${COMPLEXKEYVALUE}","data-center-code":"example-data-center-code-val-77883","complex-name":"example-complex-name-val-12992","identity-url":"example-identity-url-val-74366","physical-location-type":"example-physical-location-type-val-32854","street1":"example-street1-val-26496","street2":"example-street2-val-6629","city":"example-city-val-30262","state":"example-state-val-9058","postal-code":"example-postal-code-val-44893","country":"example-country-val-98673","region":"example-region-val-10014","latitude":"example-latitude-val-47555","longitude":"example-longitude-val-76903","elevation":"example-elevation-val-63385","lata":"example-lata-val-90935"}
+${L3NETWORKDATA}  {"network-id":"${L3NETWORKKEYVALUE}","network-name":"example-network-name-val-54688","network-type":"example-network-type-val-57468","network-role":"example-network-role-val-54868","network-technology":"example-network-technology-val-5468","neutron-network-id":"example-neutron-network-id-val-54678","is-bound-to-vpn":"true","service-id":"example-service-id-val-5468","orchestration-status":"example-orchestration-status-val-5468","heat-stack-id":"example-heat-stack-id-val-5468","mso-catalog-key":"example-mso-catalog-key-val-5468","relationship-list":{"relationship":[{"related-to":"complex","related-link":"/aai/v11/cloud-infrastructure/complexes/complex/${COMPLEXKEYVALUE}"}]}}
+
+*** Test Cases ***
+Run AAI Put complex
+    [Documentation]             Create an complex object
+    ${resp}=                    PutWithCert              ${COMPLEXURL}              ${COMPLEXDATA}
+    log                         ${COMPLEXURL}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      201
+
+Run AAI Get complex
+    [Documentation]             Get the complex object just created
+    ${resp}                     GetWithCert              ${COMPLEXURL}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+	
+Run AAI Put l3-network relationship with complex
+    [Documentation]             Create l3-network relationship with complex
+    ${resp}=                    PutWithCert              ${L3NETWORKURL}              ${L3NETWORKDATA}
+    log                         ${L3NETWORKURL}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      201
+
+Run AAI Get l3-network
+    [Documentation]             Get the l3-network object just created with relationship with complex
+    ${resp}                     GetWithCert              ${L3NETWORKURL}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200	
+	
+Run AAI Get l3-network to delete
+    [Documentation]             Get l3-network object to delete
+    ${resp}                     GetWithCert              ${L3NETWORKURL}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+    ${resource_version}=        Evaluate                 $resp.json().get('resource-version')
+    Set Global Variable			${resource_version}
+
+Run AAI Delete l3-network
+    [Documentation]             Delete the l3-network just created
+    ${resp}=                    DeleteWithCert           ${L3NETWORKURL}?resource-version=${resource_version}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      204
+	
+Run AAI Get complex to delete
+    [Documentation]             Get complex object to delete
+    ${resp}                     GetWithCert              ${COMPLEXURL}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+    ${resource_version}=        Evaluate                 $resp.json().get('resource-version')
+    Set Global Variable			${resource_version}
+
+Run AAI Delete complex
+    [Documentation]             Delete the complex just created
+    ${resp}=                    DeleteWithCert           ${COMPLEXURL}?resource-version=${resource_version}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      204	
+	
+*** Keywords ***
+PutWithCert
+    [Arguments]      ${url}      ${data}
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.put('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
+	
+PatchWithCert
+    [Arguments]      ${url}      ${data}
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/merge-patch+json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.patch('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}	
+
+PostWithCert
+    [Arguments]      ${url}      ${data}
+    ${auth}=         Create List  AAI AAI
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.post('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
+
+GetWithCert
+    [Arguments]      ${url}
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.get('${url}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
+
+DeleteWithCert
+    [Arguments]      ${url}
+    ${auth}=         Create List  AAI AAI
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.delete('${url}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
\ No newline at end of file