diff --git a/plans/vfc-nfvo-driver-ems/sanity-check/setup.sh b/plans/vfc-nfvo-driver-ems/sanity-check/setup.sh
deleted file mode 100755
index d381f8f..0000000
--- a/plans/vfc-nfvo-driver-ems/sanity-check/setup.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2017 ZTE Corporation.
-#
-# 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.
-#
-# Place the scripts in run order:
-# Start all process required for executing test case
-
-source ${SCRIPTS}/common_functions.sh
-
-#start msb
-docker run -d -p 8500:8500  --name msb_consul consul:0.9.3
-MSB_CONSUL_IP=`get-instance-ip.sh msb_consul`
-echo MSB_CONSUL_IP=${MSB_CONSUL_IP}
-
-docker run -d  -p 10081:10081  -e CONSUL_IP=$MSB_CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
-MSB_DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
-echo DISCOVERY_IP=${MSB_DISCOVERY_IP}
-
-docker run -d -p 80:80 -e CONSUL_IP=$MSB_CONSUL_IP -e SDCLIENT_IP=$MSB_DISCOVERY_IP -e "ROUTE_LABELS=visualRange:1" --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
-MSB_IAG_IP=`get-instance-ip.sh msb_internal_apigateway`
-echo MSB_IAG_IP=${MSB_IAG_IP}
-
-# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway)
-for i in {1..10}; do
-    curl -sS -m 1 ${MSB_CONSUL_IP}:8500 && curl -sS -m 1 ${MSB_DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IAG_IP}:80 && break
-    echo sleep $i
-    sleep $i
-done
-
-# Need some time so service info can be synced from discovery to api gateway
-echo sleep 60
-sleep 60
-
-# start vfc-emsdriver
-docker run -d --name vfc-emsdriver -e MSB_ADDR=${MSB_IAG_IP}:80 nexus3.onap.org:10001/onap/vfc/emsdriver
-EMS_DRV_IP=`get-instance-ip.sh vfc-emsdriver`
-docker logs -f vfc-emsdriver > emsdriver.log &
-
-# Wait for initialization
-for i in {1..10}; do
-    curl -sS -m 1 ${EMS_DRV_IP}:8206 && break
-    echo sleep $i
-    sleep $i
-done
-
-echo "==============="
-cat emsdriver.log
-
-# Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v MSB_IAG_IP:${MSB_IAG_IP} -v EMS_DRV_IP:${EMS_DRV_IP}"
diff --git a/plans/vfc-nfvo-driver-ems/sanity-check/teardown.sh b/plans/vfc-nfvo-driver-ems/sanity-check/teardown.sh
deleted file mode 100755
index aa676b2..0000000
--- a/plans/vfc-nfvo-driver-ems/sanity-check/teardown.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2017 ZTE Corporation.
-#
-# 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.
-#
-
-# This script is sourced by run-csit.sh after Robot test completion.
-kill-instance.sh msb_internal_apigateway
-kill-instance.sh msb_discovery
-kill-instance.sh msb_consul
-kill-instance.sh vfc-emsdriver
diff --git a/plans/vfc-nfvo-driver-ems/sanity-check/testplan.txt b/plans/vfc-nfvo-driver-ems/sanity-check/testplan.txt
deleted file mode 100644
index cb2a802..0000000
--- a/plans/vfc-nfvo-driver-ems/sanity-check/testplan.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Test suites are relative paths under [integration/csit.git]/tests/.
-# Place the suites in run order.
-vfc/nfvo-driver-ems/test.robot
diff --git a/plans/vfc-nfvo-driver-sfc/sanity-check/setup.sh b/plans/vfc-nfvo-driver-sfc/sanity-check/setup.sh
deleted file mode 100755
index 85a3e69..0000000
--- a/plans/vfc-nfvo-driver-sfc/sanity-check/setup.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2017 ZTE Corporation.
-#
-# 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.
-#
-# Place the scripts in run order:
-# Start all process required for executing test case
-
-source ${SCRIPTS}/common_functions.sh
-
-#start msb
-docker run -d -p 8500:8500  --name msb_consul consul:0.9.3
-MSB_CONSUL_IP=`get-instance-ip.sh msb_consul`
-echo MSB_CONSUL_IP=${MSB_CONSUL_IP}
-
-docker run -d  -p 10081:10081  -e CONSUL_IP=$MSB_CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
-MSB_DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
-echo DISCOVERY_IP=${MSB_DISCOVERY_IP}
-
-docker run -d -p 80:80 -e CONSUL_IP=$MSB_CONSUL_IP -e SDCLIENT_IP=$MSB_DISCOVERY_IP -e "ROUTE_LABELS=visualRange:1" --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
-MSB_IAG_IP=`get-instance-ip.sh msb_internal_apigateway`
-echo MSB_IAG_IP=${MSB_IAG_IP}
-
-# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway)
-for i in {1..10}; do
-    curl -sS -m 1 ${MSB_CONSUL_IP}:8500 && curl -sS -m 1 ${MSB_DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IAG_IP}:80 && break
-    echo sleep $i
-    sleep $i
-done
-
-# Need some time so service info can be synced from discovery to api gateway
-echo sleep 60
-sleep 60
-
-# start vfc-ztesdncdriver
-docker run -d --name vfc-ztesdncdriver -e MSB_ADDR=${MSB_IAG_IP}:80 nexus3.onap.org:10001/onap/vfc/ztesdncdriver
-SFC_DRV_IP=`get-instance-ip.sh vfc-ztesdncdriver`
-docker logs -f vfc-ztesdncdriver > ztesdncdriver.log &
-
-# Wait for initialization
-for i in {1..10}; do
-    curl -sS -m 1 ${SFC_DRV_IP}:8411 && break
-    echo sleep $i
-    sleep $i
-done
-
-echo "==============================="
-cat ztesdncdriver.log
-
-# Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v MSB_IAG_IP:${MSB_IAG_IP} -v SFC_DRV_IP:${SFC_DRV_IP}"
diff --git a/plans/vfc-nfvo-driver-sfc/sanity-check/teardown.sh b/plans/vfc-nfvo-driver-sfc/sanity-check/teardown.sh
deleted file mode 100755
index ce5402e..0000000
--- a/plans/vfc-nfvo-driver-sfc/sanity-check/teardown.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2017 ZTE Corporation.
-#
-# 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.
-#
-
-# This script is sourced by run-csit.sh after Robot test completion.
-kill-instance.sh msb_internal_apigateway
-kill-instance.sh msb_discovery
-kill-instance.sh msb_consul
-kill-instance.sh vfc-ztesdncdriver
diff --git a/plans/vfc-nfvo-driver-sfc/sanity-check/testplan.txt b/plans/vfc-nfvo-driver-sfc/sanity-check/testplan.txt
deleted file mode 100644
index 3fa996f..0000000
--- a/plans/vfc-nfvo-driver-sfc/sanity-check/testplan.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Test suites are relative paths under [integration/csit.git]/tests/.
-# Place the suites in run order.
-vfc/nfvo-driver-sfc/test.robot
diff --git a/plans/vfc-nfvo-multivimproxy/sanity-check/setup.sh b/plans/vfc-nfvo-multivimproxy/sanity-check/setup.sh
deleted file mode 100644
index 4d97f33..0000000
--- a/plans/vfc-nfvo-multivimproxy/sanity-check/setup.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2018 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.
-#
-# Place the scripts in run order:
-# Start all process required for executing test case
-
-#login to the onap nexus docker repo
-docker login -u docker -p docker nexus3.onap.org:10001
-
-# Start MSB
-docker run -d -p 8500:8500 --name msb_consul consul:0.9.3
-CONSUL_IP=`get-instance-ip.sh msb_consul`
-echo CONSUL_IP=${CONSUL_IP}
-docker run -d -p 10081:10081 -e CONSUL_IP=$CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
-DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
-echo DISCOVERY_IP=${DISCOVERY_IP}
-docker run -d -p 80:80 -e CONSUL_IP=$CONSUL_IP -e SDCLIENT_IP=$DISCOVERY_IP --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
-MSB_IP==`get-instance-ip.sh msb_internal_apigateway`
-echo MSB_IP=${MSB_IP}
-
-# Start resmgr
-docker run -d --name vfc-multivimproxy -e MSB_ADDR=${MSB_IP}:80 nexus3.onap.org:10001/onap/vfc/multivimproxy
-RESMGR_IP=`get-instance-ip.sh vfc-multivimproxy`
-for i in {1..20}; do
-    curl -sS ${RESMGR_IP}:8486 && break
-    echo sleep $i
-    sleep $i
-done
-
-# Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v MSB_IP:${MSB_IP} -v RESMGR_IP:${RESMGR_IP}"
diff --git a/plans/vfc-nfvo-multivimproxy/sanity-check/teardown.sh b/plans/vfc-nfvo-multivimproxy/sanity-check/teardown.sh
deleted file mode 100644
index c158d19..0000000
--- a/plans/vfc-nfvo-multivimproxy/sanity-check/teardown.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2018 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.
-#
-
-# This script is sourced by run-csit.sh after Robot test completion.
-kill-instance.sh msb_internal_apigateway
-kill-instance.sh msb_discovery
-kill-instance.sh msb_consul
-kill-instance.sh vfc-multivimproxy
diff --git a/plans/vfc-nfvo-multivimproxy/sanity-check/testplan.txt b/plans/vfc-nfvo-multivimproxy/sanity-check/testplan.txt
deleted file mode 100644
index 5d1c6e9..0000000
--- a/plans/vfc-nfvo-multivimproxy/sanity-check/testplan.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Test suites are relative paths under [integration/csit.git]/tests/.
-# Place the suites in run order.
-vfc/nfvo-multivimproxy/test.robot
\ No newline at end of file
diff --git a/plans/vfc-nfvo-resmanagement/sanity-check/setup.sh b/plans/vfc-nfvo-resmanagement/sanity-check/setup.sh
deleted file mode 100644
index 68b7843..0000000
--- a/plans/vfc-nfvo-resmanagement/sanity-check/setup.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-#
-# Copyright 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.
-#
-# Place the scripts in run order:
-# Start all process required for executing test case
-
-#login to the onap nexus docker repo
-docker login -u docker -p docker nexus3.onap.org:10001
-
-# Start MSB
-docker run -d -p 8500:8500 --name msb_consul consul:0.9.3
-CONSUL_IP=`get-instance-ip.sh msb_consul`
-echo CONSUL_IP=${CONSUL_IP}
-docker run -d -p 10081:10081 -e CONSUL_IP=$CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
-DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
-echo DISCOVERY_IP=${DISCOVERY_IP}
-docker run -d -p 80:80 -e CONSUL_IP=$CONSUL_IP -e SDCLIENT_IP=$DISCOVERY_IP --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
-MSB_IP==`get-instance-ip.sh msb_internal_apigateway`
-echo MSB_IP=${MSB_IP}
-
-# Start resmgr
-docker run -d --name vfc-resmanagement -e MSB_ADDR=${MSB_IP}:80 nexus3.onap.org:10001/onap/vfc/resmanagement
-RESMGR_IP=`get-instance-ip.sh vfc-resmanagement`
-for i in {1..20}; do
-    curl -sS ${RESMGR_IP}:8480 && break
-    echo sleep $i
-    sleep $i
-done
-
-# Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v MSB_IP:${MSB_IP} -v RESMGR_IP:${RESMGR_IP}"
diff --git a/plans/vfc-nfvo-resmanagement/sanity-check/teardown.sh b/plans/vfc-nfvo-resmanagement/sanity-check/teardown.sh
deleted file mode 100644
index 2ad95c6..0000000
--- a/plans/vfc-nfvo-resmanagement/sanity-check/teardown.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-#
-# Copyright 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.
-#
-
-# This script is sourced by run-csit.sh after Robot test completion.
-kill-instance.sh msb_internal_apigateway
-kill-instance.sh msb_discovery
-kill-instance.sh msb_consul
-kill-instance.sh vfc-resmanagement
diff --git a/plans/vfc-nfvo-resmanagement/sanity-check/testplan.txt b/plans/vfc-nfvo-resmanagement/sanity-check/testplan.txt
deleted file mode 100644
index ae6d3a5..0000000
--- a/plans/vfc-nfvo-resmanagement/sanity-check/testplan.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Test suites are relative paths under [integration/csit.git]/tests/.
-# Place the suites in run order.
-vfc/nfvo-resmanagement/test.robot
\ No newline at end of file
diff --git a/plans/vfc-nfvo-wfengine/sanity-check/setup.sh b/plans/vfc-nfvo-wfengine/sanity-check/setup.sh
deleted file mode 100644
index 387ccf8..0000000
--- a/plans/vfc-nfvo-wfengine/sanity-check/setup.sh
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2017 ZTE Corporation.
-#
-# 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.
-#
-# Place the scripts in run order:
-# Start all process required for executing test case
-
-source ${SCRIPTS}/common_functions.sh
-
-
-#start msb
-docker run -d -p 8500:8500  --name msb_consul consul:0.9.3
-MSB_CONSUL_IP=`get-instance-ip.sh msb_consul`
-echo MSB_CONSUL_IP=${MSB_CONSUL_IP}
-docker run -d  -p 10081:10081  -e CONSUL_IP=$MSB_CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery:1.1.0
-MSB_DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
-echo MSB_DISCOVERY_IP=${MSB_DISCOVERY_IP}
-docker run -d -p 80:80 -e CONSUL_IP=$MSB_CONSUL_IP -e SDCLIENT_IP=$MSB_DISCOVERY_IP --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway:1.1.0
-MSB_IAG_IP=`get-instance-ip.sh msb_internal_apigateway`
-echo MSB_IAG_IP=${MSB_IAG_IP}
-
-# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway)
-for i in {1..10}; do
-    curl -sS -m 1 ${MSB_CONSUL_IP}:8500 && curl -sS -m 1 ${MSB_DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IAG_IP}:80 && break
-    echo sleep $i
-    sleep $i
-done
-
-# wait for container initalization
-echo sleep 30
-sleep 30
-
-ORG="onap"
-PROJECT="vfc"
-DOCKER_REPOSITORY="nexus3.onap.org:10001"
-IMAGE="wfengine-activiti"
-IMAGE_ACTIVITI_NAME="${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/${IMAGE}"
-
-#get current host IP addres
-SERVICE_IP=$(ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $7}')
-
-# start wfengine-activiti
-# docker run -d --name vfc_wfengine_activiti -p 8804:8080 -e SERVICE_IP=$SERVICE_IP -e SERVICE_PORT=8804 -e OPENPALETTE_MSB_IP=${MSB_IAG_IP} -e OPENPALETTE_MSB_PORT=80 ${IMAGE_ACTIVITI_NAME}
-docker run -d --name vfc_wfengine_activiti -p 8804:8080 -e SERVICE_PORT=8080 -e OPENPALETTE_MSB_IP=${MSB_IAG_IP} -e OPENPALETTE_MSB_PORT=80 ${IMAGE_ACTIVITI_NAME}
-WFENGINE_ACTIVITI_IP=`get-instance-ip.sh vfc_wfengine_activiti`
-
-# Wait for initialization
-for i in {1..10}; do
-    curl -sS ${WFENGINE_ACTIVITI_IP}:8080 && break
-    echo sleep $i
-    sleep $i
-done
-for i in {1..10}; do
-    curl -sS ${SERVICE_IP}:8804 && break
-    echo sleep $i
-    sleep $i
-done
-docker logs vfc_wfengine_activiti
-
-IMAGE="wfengine-mgrservice"
-IMAGE_MGRSERVICE_NAME="${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/${IMAGE}"
-
-# Start wfengine-mgrservice
-#docker run -d --name vfc_wfengine_mgrservice -p 8805:10550 -e SERVICE_IP=$SERVICE_IP -e SERVICE_PORT=8805 -e OPENPALETTE_MSB_IP=${MSB_IAG_IP} -e OPENPALETTE_MSB_PORT=80 ${IMAGE_MGRSERVICE_NAME}
-#docker run -d --name vfc_wfengine_mgrservice -p 8805:10550 -e SERVICE_PORT=10550 -e OPENPALETTE_MSB_IP=${MSB_IAG_IP} -e OPENPALETTE_MSB_PORT=80 ${IMAGE_MGRSERVICE_NAME}
-docker run -d --name vfc_wfengine_mgrservice -p 8805:10550 -e SERVICE_PORT=10550 -e OPENPALETTE_MSB_IP=${WFENGINE_ACTIVITI_IP} -e OPENPALETTE_MSB_PORT=8080 ${IMAGE_MGRSERVICE_NAME}
-
-##docker run -d --name ${IMAGE} -e OPENPALETTE_MSB_IP=${WFENGINEACTIVITIR_IP} -e OPENPALETTE_MSB_PORT=8080 ${IMAGE_MGRSERVICE_NAME}
-WFENGINE_MGRSERVICE_IP=`get-instance-ip.sh vfc_wfengine_mgrservice`
-for i in {1..10}; do
-    curl -sS ${WFENGINE_MGRSERVICE_IP}:10550 && break
-    echo sleep $i
-    sleep $i
-done
-docker logs vfc_wfengine_mgrservice
-
-# Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v MSB_IAG_IP:${MSB_IAG_IP} -v MSB_IP:${MSB_IAG_IP} -v MSB_PORT:80 -v MSB_DISCOVERY_IP:${MSB_DISCOVERY_IP} -v ACTIVITI_IP:${WFENGINE_ACTIVITI_IP} -v ACTIVITI_PORT:8080 -v MGRSERVICE_IP:${WFENGINE_MGRSERVICE_IP} -v MGRSERVICE_PORT:10550 -v SCRIPTS:${SCRIPTS}" 
-##ROBOT_VARIABLES="-v MSB_IAG_IP:${WFENGINEACTIVITIR_IP} -v MSB_IP:${WFENGINEMGRSERVICE_IP} -v MSB_PORT:10550 -v MSB_DISCOVERY_IP:${WFENGINEACTIVITIR_IP} -v MSB_DISCOVERY_PORT:8080 -v WFENGINEACTIVITIR_IP:${WFENGINEACTIVITIR_IP} -v WFENGINEACTIVITIR_PORT:8080 -v WFENGINEMGRSERVICE_IP:${WFENGINEMGRSERVICE_IP} -v WFENGINEMGRSERVICE_PORT:10550 -v SCRIPTS:${SCRIPTS}" 
\ No newline at end of file
diff --git a/plans/vfc-nfvo-wfengine/sanity-check/teardown.sh b/plans/vfc-nfvo-wfengine/sanity-check/teardown.sh
deleted file mode 100644
index bca3356..0000000
--- a/plans/vfc-nfvo-wfengine/sanity-check/teardown.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-#
-# Copyright 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.
-#
-
-# This script is sourced by run-csit.sh after Robot test completion.
-echo === logs vfc_wfengine_activiti ===
-docker logs vfc_wfengine_activiti
-
-echo === logs vfc_wfengine_mgrservice ===
-docker logs vfc_wfengine_mgrservice
-
-kill-instance.sh msb_internal_apigateway
-kill-instance.sh msb_discovery
-kill-instance.sh msb_consul
-kill-instance.sh vfc_wfengine_mgrservice
-kill-instance.sh vfc_wfengine_activiti
diff --git a/plans/vfc-nfvo-wfengine/sanity-check/testplan.txt b/plans/vfc-nfvo-wfengine/sanity-check/testplan.txt
deleted file mode 100644
index 2d03683..0000000
--- a/plans/vfc-nfvo-wfengine/sanity-check/testplan.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-# Test suites are relative paths under [integration/csit.git]/tests/.
-# Place the suites in run order.
-
-vfc/nfvo-wfengine/workflow.robot
\ No newline at end of file
diff --git a/tests/vfc/nfvo-driver-ems/test.robot b/tests/vfc/nfvo-driver-ems/test.robot
deleted file mode 100755
index 29aa10a..0000000
--- a/tests/vfc/nfvo-driver-ems/test.robot
+++ /dev/null
@@ -1,21 +0,0 @@
-*** Settings ***
-Library     Collections
-Library     RequestsLibrary
-Library     OperatingSystem
-Library     json
-
-*** Variables ***
-@{return_ok_list}=   200  201  202
-${queryswagger_url}    /api/emsdriver/v1/swagger.json
-
-*** Test Cases ***
-EMSDriverSwaggerTest
-    [Documentation]    query swagger info of emsdriver
-    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json
-    Create Session    web_session    http://${EMS_DRV_IP}:8206    headers=${headers}
-    ${resp}=  Get Request    web_session    ${queryswagger_url}
-    ${responese_code}=     Convert To String      ${resp.status_code}
-    List Should Contain Value    ${return_ok_list}   ${responese_code}
-    ${response_json}    json.loads    ${resp.content}
-    ${swagger_version}=    Convert To String      ${response_json['swagger']}
-    Should Be Equal    ${swagger_version}    2.0
diff --git a/tests/vfc/nfvo-driver-sfc/test.robot b/tests/vfc/nfvo-driver-sfc/test.robot
deleted file mode 100644
index 1311594..0000000
--- a/tests/vfc/nfvo-driver-sfc/test.robot
+++ /dev/null
@@ -1,21 +0,0 @@
-*** settings ***
-Library     Collections
-Library     RequestsLibrary
-Library     OperatingSystem
-Library     json
-
-*** Variables ***
-@{return_ok_list}=   200  201  202
-${queryswagger_url}    /api/ztesdncdriver/v1/swagger
-
-*** Test Cases ***
-ZteSdncDriverSwaggerTest
-    [Documentation]    query swagger info of ztesdncdriver
-    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json
-    Create Session    web_session    http://${SFC_DRV_IP}:8411    headers=${headers}
-    ${resp}=  Get Request    web_session    ${queryswagger_url}
-    ${responese_code}=     Convert To String      ${resp.status_code}
-    List Should Contain Value    ${return_ok_list}   ${responese_code}
-    ${response_json}    json.loads    ${resp.content}
-    ${swagger_version}=    Convert To String      ${response_json['swagger']}
-    Should Be Equal    ${swagger_version}    2.0
diff --git a/tests/vfc/nfvo-multivimproxy/test.robot b/tests/vfc/nfvo-multivimproxy/test.robot
deleted file mode 100644
index fab3694..0000000
--- a/tests/vfc/nfvo-multivimproxy/test.robot
+++ /dev/null
@@ -1,24 +0,0 @@
-*** settings ***
-Resource    ../../common.robot
-Library     Collections
-Library     RequestsLibrary
-Library     simplejson
-Library     OperatingSystem
-Library     json
-Library     HttpLibrary.HTTP
-
-*** Variables ***
-@{return_ok_list}=   200  201  202
-${queryswagger_url}    /api/multivimproxy/v1/swagger.json
-
-*** Test Cases ***
-SwaggerFuncTest
-    [Documentation]    query swagger info rest test
-    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json
-    Create Session    web_session    http://${RESMGR_IP}:8481    headers=${headers}
-    ${resp}=  Get Request    web_session    ${queryswagger_url}
-    ${responese_code}=     Convert To String      ${resp.status_code}
-    List Should Contain Value    ${return_ok_list}   ${responese_code}
-    ${response_json}    json.loads    ${resp.content}
-    ${swagger_version}=    Convert To String      ${response_json['swagger']}
-    Should Be Equal    ${swagger_version}    2.0
\ No newline at end of file
diff --git a/tests/vfc/nfvo-resmanagement/test.robot b/tests/vfc/nfvo-resmanagement/test.robot
deleted file mode 100644
index 2f24755..0000000
--- a/tests/vfc/nfvo-resmanagement/test.robot
+++ /dev/null
@@ -1,24 +0,0 @@
-*** settings ***
-Resource    ../../common.robot
-Library     Collections
-Library     RequestsLibrary
-Library     simplejson
-Library     OperatingSystem
-Library     json
-Library     HttpLibrary.HTTP
-
-*** Variables ***
-@{return_ok_list}=   200  201  202
-${queryswagger_url}    /api/resmgr/v1/swagger.json
-
-*** Test Cases ***
-SwaggerFuncTest
-    [Documentation]    query swagger info rest test
-    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json
-    Create Session    web_session    http://${RESMGR_IP}:8480    headers=${headers}
-    ${resp}=  Get Request    web_session    ${queryswagger_url}
-    ${responese_code}=     Convert To String      ${resp.status_code}
-    List Should Contain Value    ${return_ok_list}   ${responese_code}
-    ${response_json}    json.loads    ${resp.content}
-    ${swagger_version}=    Convert To String      ${response_json['swagger']}
-    Should Be Equal    ${swagger_version}    2.0
\ No newline at end of file
diff --git a/tests/vfc/nfvo-wfengine/workflow.robot b/tests/vfc/nfvo-wfengine/workflow.robot
deleted file mode 100644
index 8039ae1..0000000
--- a/tests/vfc/nfvo-wfengine/workflow.robot
+++ /dev/null
@@ -1,113 +0,0 @@
-*** Settings ***
-Resource          ../../common.robot
-Library           Collections
-Library           json
-Library           OperatingSystem
-Library           RequestsLibrary
-Library           HttpLibrary.HTTP
-
-*** Variables ***
-${MSB_IP}         127.0.0.1
-${MSB_PORT}       10550
-${ACTIVITI_IP}    127.0.0.1
-${ACTIVITI_PORT}    8804
-${MGRSERVICE_IP}    127.0.0.1
-${MGRSERVICE_PORT}    8805
-${processId}      demo
-${deployid}       0
-${bmpfilepath}    ${SCRIPTS}/nfvo-wfengine/demo.bpmn20.xml
-
-*** Test Cases ***
-Deploy BPMN File Test On Activiti
-    [Documentation]    Check if the test bpmn file can be deployed in activiti engine
-    ${auth}=    Create List    kermit    kermit
-    ${headers}=    Create Dictionary    Accept=application/json
-    Create Session    web_session    http://${ACTIVITI_IP}:${ACTIVITI_PORT}    headers=${headers}    auth=${auth}
-    ${files}=    evaluate    {"file":open('${bmpfilepath}','rb')}
-    ${resp}=    Post Request    web_session    /activiti-rest/service/repository/deployments    files=${files}
-    Should Be Equal    ${resp.status_code}    ${201}
-    Log    ${resp.json()}
-    ${deployedId}=    Set Variable    ${resp.json()["id"]}
-    Set Global Variable    ${deployedId}
-
-Exectue BPMN File Testt On Activiti
-    [Documentation]    Check if the test bpmn file can be exectued in activiti engine
-    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json    Authorization=Basic a2VybWl0Omtlcm1pdA==
-    Create Session    web_session    http://${ACTIVITI_IP}:${ACTIVITI_PORT}    headers=${headers}
-    ${body}    Create Dictionary    processDefinitionKey=${processId}
-    ${body}    dumps    ${body}
-    ${resp}=    Post Request    web_session    /activiti-rest/service/runtime/process-instances    ${body}
-    Should Be Equal    ${resp.status_code}    ${201}
-
-UnDeploy BPMN File Testt On Activiti
-    [Documentation]    Check if the test bpmn file can be undeployed in activiti engine
-    log    ${deployedId}
-    ${auth}=    Create List    kermit    kermit
-    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json
-    Create Session    web_session    http://${ACTIVITI_IP}:${ACTIVITI_PORT}    headers=${headers}    auth=${auth}
-    ${resp}=    Delete Request    web_session    /activiti-rest/service/repository/deployments/${deployedId}?cascade=true
-    Should Be Equal    ${resp.status_code}    ${204}
-
-Deploy BPMN File Test On MgrService
-    [Documentation]    Check if the test bpmn file can be deployed in Management Service
-    ${auth}=    Create List    kermit    kermit
-    ${headers}=    Create Dictionary    Accept=application/json
-    Create Session    web_session    http://${MGRSERVICE_IP}:${MGRSERVICE_PORT}    headers=${headers}    auth=${auth}
-    ${files}=    evaluate    {"file":open('${bmpfilepath}','rb')}
-    ${resp}=    Post Request    web_session    api/workflow/v1/package    files=${files}
-    Should Be Equal    ${resp.status_code}    ${200}
-    Log    ${resp.json()}
-    ${deployedId}=    Set Variable    ${resp.json()["deployedId"]}
-    Set Global Variable    ${deployedId}
-
-Exectue BPMN File Testt On MgrService
-    [Documentation]    Check if the test bpmn file can be exectued in Management Service
-    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json    Authorization=Basic a2VybWl0Omtlcm1pdA==
-    Create Session    web_session    http://${MGRSERVICE_IP}:${MGRSERVICE_PORT}    headers=${headers}
-    ${body}    Create Dictionary    processDefinitionKey=${processId}
-    ${body}    dumps    ${body}
-    ${resp}=    Post Request    web_session    api/workflow/v1/process/instance    ${body}
-    Should Be Equal    ${resp.status_code}    ${200}
-    Log    ${resp.json()}
-    Should Be Equal    ${resp.json()["processDefinitionKey"]}    ${processId}
-
-UnDeploy BPMN File Testt On MgrService
-    [Documentation]    Check if the test bpmn file can be undeployed in Management Service
-    log    ${deployedId}
-    ${auth}=    Create List    kermit    kermit
-    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json
-    Create Session    web_session    http://${MGRSERVICE_IP}:${MGRSERVICE_PORT}    headers=${headers}    auth=${auth}
-    ${resp}=    Delete Request    web_session    /api/workflow/v1/package/${deployedId}
-    Should Be Equal    ${resp.status_code}    ${200}
-
-# Deploy BPMN File Test On MSB
-#     [Documentation]    Check if the test bpmn file can be deployed in activiti engine
-#     ${auth}=    Create List    kermit    kermit
-#     ${headers}=    Create Dictionary    Accept=application/json
-#     Create Session    web_session    http://${MSB_IP}:${MSB_PORT}    headers=${headers}    auth=${auth}
-#     ${files}=    evaluate    {"file":open('${bmpfilepath}','rb')}
-#     ${resp}=    Post Request    web_session    api/workflow/v1/package    files=${files}
-#     Should Be Equal    ${resp.status_code}    ${200}
-#     Log    ${resp.json()}
-#     ${deployedId}=    Set Variable    ${resp.json()["deployedId"]}
-#     Set Global Variable    ${deployedId}
-
-# Exectue BPMN File Testt On MSB
-#     [Documentation]    Check if the test bpmn file can be exectued in MSB
-#     ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json    Authorization=Basic a2VybWl0Omtlcm1pdA==
-#     Create Session    web_session    http://${MSB_IP}:${MSB_PORT}    headers=${headers}
-#     ${body}    Create Dictionary    processDefinitionKey=${processId}
-#     ${body}    dumps    ${body}
-#     ${resp}=    Post Request    web_session    api/workflow/v1/process/instance    ${body}
-#     Should Be Equal    ${resp.status_code}    ${200}
-#     Log    ${resp.json()}
-#     Should Be Equal    ${resp.json()["processDefinitionKey"]}    ${processId}
-
-# UnDeploy BPMN File Testt On MSB
-#     [Documentation]    Check if the test bpmn file can be undeployed in MSB
-#     log    ${deployedId}
-#     ${auth}=    Create List    kermit    kermit
-#     ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json
-#     Create Session    web_session    http://${MSB_IP}:${MSB_PORT}    headers=${headers}    auth=${auth}
-#     ${resp}=    Delete Request    web_session    /api/workflow/v1/package/${deployedId}
-#     Should Be Equal    ${resp.status_code}    ${200}
