diff --git a/test/csit/plans/vvp/sanity/setup.sh b/test/csit/plans/vvp/sanity/setup.sh
new file mode 100644
index 0000000..e775846
--- /dev/null
+++ b/test/csit/plans/vvp/sanity/setup.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# 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.
+#
+# Modifications copyright (c) 2017 AT&T Intellectual Property
+#
+# Place the scripts in run order:
+
+
+source ${WORKSPACE}/test/csit/scripts/vvp/clone_and_setup_vvp_data.sh
+
+source ${WORKSPACE}/test/csit/scripts/vvp/start_vvp_containers.sh
+
+source ${WORKSPACE}/test/csit/scripts/vvp/docker_health.sh
+
+source ${WORKSPACE}/test/csit/scripts/vvp/start_vvp_sanity.sh
+
+
+VVP_IP=`get-instance-ip.sh vvp-engagementmgr`
+echo VVP_IP=${VVP_IP}
+
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v VVP_IP:${VVP_IP}"
diff --git a/test/csit/plans/vvp/sanity/teardown.sh b/test/csit/plans/vvp/sanity/teardown.sh
new file mode 100644
index 0000000..b0f33a6
--- /dev/null
+++ b/test/csit/plans/vvp/sanity/teardown.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# 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.
+#
+# Modifications copyright (c) 2017 AT&T Intellectual Property
+#
+
+source ${WORKSPACE}/test/csit/scripts/vvp/kill_containers_and_remove_dataFolders.sh
diff --git a/test/csit/plans/vvp/sanity/testplan.txt b/test/csit/plans/vvp/sanity/testplan.txt
new file mode 100644
index 0000000..0acb508
--- /dev/null
+++ b/test/csit/plans/vvp/sanity/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+vvp/sanity
diff --git a/test/csit/scripts/vvp/clone_and_setup_vvp_data.sh b/test/csit/scripts/vvp/clone_and_setup_vvp_data.sh
new file mode 100644
index 0000000..aae8d94
--- /dev/null
+++ b/test/csit/scripts/vvp/clone_and_setup_vvp_data.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+#
+# ============LICENSE_START=======================================================
+# ONAP CLAMP
+# ================================================================================
+# Copyright (C) 2017 AT&T 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============================================
+# ===================================================================
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+echo "This is ${WORKSPACE}/test/csit/scripts/vvp/clone_and_setup_vvp_data.sh"
+
+# Clone vvp enviroment template
+mkdir -p ${WORKSPACE}/data/environments/
+mkdir -p ${WORKSPACE}/data/clone/
+
+cd ${WORKSPACE}/data/clone
+git clone --depth 1 http://gerrit.onap.org/r/vvp/engagementmgr -b master
+
+chmod -R 775 ${WORKSPACE}/data/
+
+# copy settings file from tox environment infrastructure:
+cp -rf ${WORKSPACE}/data/clone/engagementmgr/django/vvp/settings/tox_settings.py ${WORKSPACE}/data/clone/engagementmgr/django/vvp/settings/__init__.py
+echo "# set enviroment variables
+DJANGO_SETTINGS_MODULE='vvp.settings.tox_settings'
+# export PYTHONPATH={pwd}
+SECRET_KEY='6mo22&_gtjf#wktqf1#ve^7=w6kx)uq0u*4ksk^aq8lte&)yul'
+ENVIRONMENT='development'
+PROGRAM_NAME_URL_PREFIX='vvp'
+EMAIL_HOST='localhost'
+EMAIL_HOST_PASSWORD=''
+EMAIL_HOST_USER=''
+EMAIL_PORT='25'
+PGDATABASE='icedb'
+PGUSER='iceuser'
+PGPASSWORD='Aa123456'
+PGHOST='localhost'
+PGPORT='5433'
+SECRET_WEBHOOK_TOKEN='Aiwi8se4ien0foW6eimahch2zahshaGi'
+SECRET_GITLAB_AUTH_TOKEN='ieNgathapoo4zohvee9a'
+SECRET_JENKINS_PASSWORD='xaiyie0wuoqueuBu'
+SECRET_CMS_APP_CLIENT_ID='MHmJo0ccDheVVsIiQHZnY6LXPAC6H6HAMzhCCM16'
+SECRET_CMS_APP_CLIENT_SECRET='nI8QCFrKMpnw5nTs'
+SLACK_API_TOKEN=''
+S3_HOST='dev-s3.d2ice.att.io'
+S3_PORT='443'
+AWS_ACCESS_KEY_ID='FD21HBU2KRN3UVD1MWRN'
+AWS_SECRET_ACCESS_KEY='TKoiwxziUWG9cTYUknUkFGmmyuQ27nP2lCiutEsD'
+STATIC_ROOT='/app/htdocs'" > ${WORKSPACE}/data/environments/vvp_env
+
+ifconfig
+
+IP_ADDRESS=`ip route get 8.8.8.8 | awk '/src/{ print $7 }'`
+export HOST_IP=$IP_ADDRESS
diff --git a/test/csit/scripts/vvp/docker_health.sh b/test/csit/scripts/vvp/docker_health.sh
new file mode 100644
index 0000000..d511a37
--- /dev/null
+++ b/test/csit/scripts/vvp/docker_health.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+#
+# ============LICENSE_START=======================================================
+# ONAP CLAMP
+# ================================================================================
+# Copyright (C) 2017 AT&T 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============================================
+# ===================================================================
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+echo "VVP-Engagement-Manager health-Check:"
+echo ""
+echo ""
+res=`curl -s -X GET -H "Accept: application/json" -H "Content-Type: application/json" -H "http://localhost:8000/vvp/v1/engmgr/vendors" | wc -l`
+if [[ ${res} == 0 ]]
+then
+    echo "Error [${res}] while performing vvp engagement manager vendor existance check"
+    exit 1
+fi
+echo "check vvp engagement manager vendor existance: OK [${res}]"
diff --git a/test/csit/scripts/vvp/kill_containers_and_remove_dataFolders.sh b/test/csit/scripts/vvp/kill_containers_and_remove_dataFolders.sh
new file mode 100644
index 0000000..5b91c67
--- /dev/null
+++ b/test/csit/scripts/vvp/kill_containers_and_remove_dataFolders.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# 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.
+#
+# Modifications copyright (c) 2017 AT&T Intellectual Property
+#
+
+echo "This is ${WORKSPACE}/test/csit/scripts/vvp/kill_and_remove_dataFolder.sh"
+
+#kill and remove all vvp dockers
+docker stop $(docker ps -a -q --filter="name=vvp")
+docker rm $(docker ps -a -q --filter="name=vvp")
+
+
+#delete data folder
+#TODO: Remove the comment:
+#rm -rf ${WORKSPACE}/data/*
diff --git a/test/csit/scripts/vvp/start_vvp_containers.sh b/test/csit/scripts/vvp/start_vvp_containers.sh
new file mode 100644
index 0000000..d6cb88e
--- /dev/null
+++ b/test/csit/scripts/vvp/start_vvp_containers.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+#
+# ============LICENSE_START=======================================================
+# ONAP CLAMP
+# ================================================================================
+# Copyright (C) 2017 AT&T 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============================================
+# ===================================================================
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+echo "This is ${WORKSPACE}/test/csit/scripts/vvp/start_vvp_containers.sh"
+
+export IP=$HOST_IP
+export PREFIX='nexus3.onap.org:10001/openecomp/vvp'
+export RELEASE='latest'
+
+#start Engagement Manager pod:
+docker run --detach --name vvp-engagementmgr --env HOST_IP=${IP} --env ENVNAME="${ENVIRONMENT}" --env http_proxy=${http_proxy} --env https_proxy=${https_proxy} --env no_proxy=${no_proxy} --env-file ${WORKSPACE}/data/environments/vvp_env --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1  --memory 4g --memory-swap=4g --ulimit nofile=4096:100000 --volume  /etc/localtime:/etc/localtime:ro --volume  ${WORKSPACE}/data/logs/engagementmgr/:/var/lib/jetty/logs  --volume  ${WORKSPACE}/data/environments:/root/chef-solo/environments --volume ${WORKSPACE}/data/clone/engagementmgr/django/vvp/settings:/opt/configmaps/settings/ --publish 8443:8443 --publish 8000:8000 ${PREFIX}/engagementmgr:${RELEASE}
+
+
+echo "please wait while Engagement Manager is starting..."
+echo ""
+c=60 # seconds to wait
+REWRITE="\e[25D\e[1A\e[K"
+while [ $c -gt 0 ]; do
+    c=$((c-1))
+    sleep 1
+    echo -e "${REWRITE}$c"
+done
+echo -e ""
+
+TIME_OUT=600
+INTERVAL=5
+TIME=0
+while [ "$TIME" -lt "$TIME_OUT" ]; do
+  response=$(curl --write-out '%{http_code}' --silent --output /dev/null http://localhost:8000/vvp/v1/engmgr/vendors); echo $response
+
+  if [ "$response" == "200" ]; then
+    echo VVP-Engagement-Manager well started in $TIME seconds
+    break;
+  fi
+
+  echo Sleep: $INTERVAL seconds before testing if VVP-Engagement-Manager is up. Total wait time up now is: $TIME seconds. Timeout is: $TIME_OUT seconds
+  sleep $INTERVAL
+  TIME=$(($TIME+$INTERVAL))
+done
+
+if [ "$TIME" -ge "$TIME_OUT" ]; then
+   echo TIME OUT: Docker containers not started in $TIME_OUT seconds... Could cause problems for tests...
+
+
diff --git a/test/csit/scripts/vvp/start_vvp_sanity.sh b/test/csit/scripts/vvp/start_vvp_sanity.sh
new file mode 100644
index 0000000..1de1aaa
--- /dev/null
+++ b/test/csit/scripts/vvp/start_vvp_sanity.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+#
+# ============LICENSE_START=======================================================
+# ONAP CLAMP
+# ================================================================================
+# Copyright (C) 2017 AT&T 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============================================
+# ===================================================================
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+
+# will run CI for sanity checks
diff --git a/test/csit/tests/vvp/sanity/__init__.robot b/test/csit/tests/vvp/sanity/__init__.robot
new file mode 100644
index 0000000..6bc0362
--- /dev/null
+++ b/test/csit/tests/vvp/sanity/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation    VVP - HealthCheck
diff --git a/test/csit/tests/vvp/sanity/test1.robot b/test/csit/tests/vvp/sanity/test1.robot
new file mode 100644
index 0000000..21e1b5e
--- /dev/null
+++ b/test/csit/tests/vvp/sanity/test1.robot
@@ -0,0 +1,19 @@
+*** Settings ***
+Library           Collections
+Library           OperatingSystem
+Library           RequestsLibrary
+Library           json
+
+# http://localhost:8000/vvp/v1/engmgr/vendors
+# vvp-engagementmgr
+
+*** Test Cases ***
+Get Requests health check ok
+    [Tags]    get
+    CreateSession    vvp-engagementmgr    http://localhost:8000
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
+    ${resp}=    Get Request    vvp-engagementmgr    /vvp/v1/engmgr/vendors    headers=&{headers}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    @{ITEMS}=    Copy List    ${resp.json()}
+    : FOR    ${ELEMENT}    IN    @{ITEMS}
+    \    Log    ${ELEMENT['uuid']} ${ELEMENT['name']}
