diff --git a/bootstrap/vagrant-onap/Vagrantfile b/bootstrap/vagrant-onap/Vagrantfile
index e39ccbd..5eb22d7 100644
--- a/bootstrap/vagrant-onap/Vagrantfile
+++ b/bootstrap/vagrant-onap/Vagrantfile
@@ -160,7 +160,7 @@
       end
       all_in_one.vm.provision 'shell' do |s|
         s.path = 'vagrant_utils/postinstall.sh'
-        s.args = ['mr', 'asdc', 'aai', 'mso', 'robot', 'vid', 'sdnc', 'portal', 'dcae', 'policy', 'appc', 'vfc']
+        s.args = ['mr', 'sdc', 'aai', 'mso', 'robot', 'vid', 'sdnc', 'portal', 'dcae', 'policy', 'appc', 'vfc']
         s.env = conf
       end
     end
@@ -217,7 +217,7 @@
       end
       sdc.vm.provision 'shell' do |s|
         s.path = 'vagrant_utils/postinstall.sh'
-        s.args = ['asdc']
+        s.args = ['sdc']
         s.env = conf
       end
     end
diff --git a/bootstrap/vagrant-onap/lib/mr b/bootstrap/vagrant-onap/lib/mr
index 5bd1d1a..a137f73 100755
--- a/bootstrap/vagrant-onap/lib/mr
+++ b/bootstrap/vagrant-onap/lib/mr
@@ -4,11 +4,11 @@
 
 source /var/onap/functions
 
-src_folder=$git_src_folder/dcae/message-router
+mr_src_folder=$git_src_folder/dcae/message-router
 
 # clone_mr_repos() - Function that clones the Message Router repositories
 function clone_mr_repos {
-    clone_repo dcae/demo/startup/message-router $src_folder
+    clone_repo dcae/demo/startup/message-router $mr_src_folder
 }
 
 # get_mr_images() - Function that retrieves the Message Router Docker images
@@ -21,7 +21,7 @@
 function install_message_router {
     install_docker_compose
 
-    pushd $src_folder
+    pushd $mr_src_folder
     bash deploy.sh
     popd
 }
diff --git a/bootstrap/vagrant-onap/lib/asdc b/bootstrap/vagrant-onap/lib/sdc
old mode 100755
new mode 100644
similarity index 60%
rename from bootstrap/vagrant-onap/lib/asdc
rename to bootstrap/vagrant-onap/lib/sdc
index fb7b40b..1c872fa
--- a/bootstrap/vagrant-onap/lib/asdc
+++ b/bootstrap/vagrant-onap/lib/sdc
@@ -3,13 +3,13 @@
 set -o xtrace
 
 source /var/onap/functions
-source /var/onap/asserts
 
-src_folder=$git_src_folder/sdc
+sdc_src_folder=$git_src_folder/sdc
+sdc_repos=("sdc-os-chef" "jtosca" "sdc-distribution-client" "sdc-titan-cassandra" "sdc-tosca" "sdc_common")
 
-# mount_external_partition() - Create partition and mount the external volume
-function mount_external_partition {
-    cat <<EOL > /tmp/asdc_ext_volume_partitions.txt
+# _mount_external_partition() - Create partition and mount the external volume
+function _mount_external_partition {
+    cat <<EOL > /tmp/sdc_ext_volume_partitions.txt
 # partition table of /dev/sdb
 unit: sectors
 
@@ -18,15 +18,15 @@
 /dev/sdb3 : start=        0, size=        0, Id= 0
 /dev/sdb4 : start=        0, size=        0, Id= 0
 EOL
-    sfdisk --force /dev/sdb < /tmp/asdc_ext_volume_partitions.txt
+    sfdisk --force /dev/sdb < /tmp/sdc_ext_volume_partitions.txt
     mkfs -t ext4 /dev/sdb1
     mkdir -p /data
     mount /dev/sdb1 /data
     echo "/dev/sdb1  /data           ext4    errors=remount-ro,noatime,barrier=0 0       1" >> /etc/fstab
 }
 
-# init_data_folders() - Function that initialize the data folders
-function init_data_folders {
+# _init_data_folders() - Function that initialize the data folders
+function _init_data_folders {
     mkdir -p /data/environments
     mkdir -p /data/scripts
     mkdir -p /data/logs/BE
@@ -35,8 +35,8 @@
     chmod 777 /data/logs
 }
 
-# setup_docker_aliases() - Function that setups the aliases required by sdc scripts
-function setup_docker_aliases {
+# _setup_docker_aliases() - Function that setups the aliases required by sdc scripts
+function _setup_docker_aliases {
     cat <<EOL > /root/.bash_aliases
 alias dcls='/data/scripts/docker_clean.sh \$1'
 alias dlog='/data/scripts/docker_login.sh \$1'
@@ -47,23 +47,36 @@
 
 # clone_all_sdc_repos() - Function that clones SDC source repo.
 function clone_all_sdc_repos {
-    clone_repo sdc $src_folder
+    clone_repo sdc $sdc_src_folder
 
-    for dirc in sdc-os-chef jtosca sdc-distribution-client sdc-titan-cassandra sdc-tosca sdc_common ; do
-        clone_repo sdc/$dirc $src_folder/$dirc
+    for dirc in ${sdc_repos[@]}; do
+        clone_repo sdc/$dirc $sdc_src_folder/$dirc
     done
 }
 
 # compile_all_sdc_repos() - Function that compiles SDC source repo.
 function compile_all_sdc_repos {
-    local src_folder=/opt/sdc
-    clone_repo sdc $src_folder
+    clone_repo sdc $sdc_src_folder
 
-    for dirc in jtosca sdc-distribution-client sdc-titan-cassandra sdc-tosca sdc_common ; do
-        compile_src $src_folder/$dirc
+    for dirc in ${sdc_repos[@]}; do
+        compile_src $sdc_src_folder/$dirc
     done
 }
 
+# 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-os-chef docker
+    else
+        for image in backend frontend elasticsearch kibana cassandra sanity; do
+            pull_openecomp_image  openecomp/sdc-$image
+        done
+    fi
+}
+
 # install_sdc() - Function that pull templates and executes
 function install_sdc {
     local ENV_NAME=$dmaap_topic
@@ -71,16 +84,10 @@
     local RELEASE=$docker_version
     NEXUS_DOCKER_PORT=$(echo $nexus_docker_repo | cut -d':' -f2)
 
-    if [[ "$build_image" == "True" ]]; then
-        compile_src $src_folder
-        build_docker_image $src_folder/sdc-os-chef docker
-        for image in backend frontend elasticsearch kibana cassandra sanity; do
-            asserts_image openecomp/sdc-$image
-        done
-    fi
-    cp $src_folder/sdc-os-chef/environments/Template.json /data/environments
-    cp $src_folder/sdc-os-chef/scripts/docker_run.sh /data/scripts
-    cp $src_folder/sdc-os-chef/scripts/docker_health.sh /data/scripts
+    _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
     chmod +x /data/scripts/docker_run.sh
     chmod +x /data/scripts/docker_health.sh
 
@@ -96,16 +103,16 @@
     fi
 }
 
-# init_asdc() - Function that initialize SDC services
-function init_asdc {
-    mount_external_partition
-    init_data_folders
-    setup_docker_aliases
+# init_sdc() - Function that initialize SDC services
+function init_sdc {
+    _mount_external_partition
     if [[ "$clone_repo" == "True" ]]; then
         clone_all_sdc_repos
         if [[ "$compile_repo" == "True" ]]; then
             compile_all_sdc_repos
         fi
     fi
+    get_sdc_images
     install_sdc
+    _setup_docker_aliases
 }
diff --git a/bootstrap/vagrant-onap/tests/_test_base b/bootstrap/vagrant-onap/tests/_test_base
index 19cc8ef..155de98 100644
--- a/bootstrap/vagrant-onap/tests/_test_base
+++ b/bootstrap/vagrant-onap/tests/_test_base
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-source /var/onap/asserts
+source /var/onap_tests/asserts
 
 # main() - Starting point for Unit Tests
 function main {
diff --git a/bootstrap/vagrant-onap/lib/asserts b/bootstrap/vagrant-onap/tests/asserts
similarity index 100%
rename from bootstrap/vagrant-onap/lib/asserts
rename to bootstrap/vagrant-onap/tests/asserts
diff --git a/bootstrap/vagrant-onap/tests/test_mr b/bootstrap/vagrant-onap/tests/test_mr
index d8db849..a863b99 100644
--- a/bootstrap/vagrant-onap/tests/test_mr
+++ b/bootstrap/vagrant-onap/tests/test_mr
@@ -11,7 +11,7 @@
 function test_clone_mr_repos {
     clone_mr_repos
 
-    asserts_file_exist $src_folder/deploy.sh
+    asserts_file_exist $mr_src_folder/deploy.sh
 }
 
 # test_get_mr_images() - Verify that Message Router Docker images are retrieved
diff --git a/bootstrap/vagrant-onap/tests/test_sdc b/bootstrap/vagrant-onap/tests/test_sdc
new file mode 100644
index 0000000..bb0cd70
--- /dev/null
+++ b/bootstrap/vagrant-onap/tests/test_sdc
@@ -0,0 +1,69 @@
+#!/bin/bash
+
+source /var/onap_tests/_test_base
+source /var/onap/asdc
+
+covered_functions=(
+"clone_all_sdc_repos" "compile_all_sdc_repos" "get_sdc_images" "install_sdc"
+)
+
+# test_clone_all_sdc_repos() - Verifies the retrieval of SDC source code repos
+function test_clone_all_sdc_repos {
+    clone_all_sdc_repos
+
+    asserts_file_exist $sdc_src_folder/pom.xml
+    asserts_file_exist $sdc_src_folder/sdc-os-chef/pom.xml
+    asserts_file_exist $sdc_src_folder/jtosca/pom.xml
+    asserts_file_exist $sdc_src_folder/sdc-distribution-client/pom.xml
+    asserts_file_exist $sdc_src_folder/sdc-titan-cassandra/pom.xml
+    asserts_file_exist $sdc_src_folder/sdc-tosca/pom.xml
+    asserts_file_exist $sdc_src_folder/sdc_common/pom.xml
+}
+
+# test_compile_all_sdc_repos() - Verifies the correct compilation of SDC repositories
+function test_compile_all_sdc_repos {
+    clone_all_sdc_repos
+    compile_all_sdc_repos
+
+    asserts_file_exist $sdc_src_folder/jtosca/target/jtosca-1.1.10-SNAPSHOT.jar
+    asserts_file_exist $sdc_src_folder/sdc-distribution-client/sdc-distribution-ci/target/sdc-distribution-ci-1.1.32-SNAPSHOT.jar
+    asserts_file_exist $sdc_src_folder/sdc-distribution-client/sdc-distribution-client/target/sdc-distribution-client-1.1.32-SNAPSHOT.jar
+    asserts_file_exist $sdc_src_folder/sdc-os-chef/target/sdc-os-chef-1.1.0-SNAPSHOT.jar
+    asserts_file_exist $sdc_src_folder/sdc-titan-cassandra/target/sdc-titan-cassandra-1.0.0.jar
+    asserts_file_exist $sdc_src_folder/sdc-tosca/target/sdc-tosca-1.1.50-SNAPSHOT.jar
+
+    for dirc in logging sdc-artifact-generator; do
+        name="openecomp-$dirc"
+        for module in api core; do
+            fullname="$name-$module"
+            asserts_file_exist $sdc_src_folder/sdc_common/$name-lib/$fullname/target/$fullname-1.1.0-SNAPSHOT.jar
+        done
+    done
+}
+
+# test_get_sdc_images() - Verifies the correct retrieval of SDC Docker images
+function test_get_sdc_images {
+    clone_all_sdc_repos
+    get_sdc_images
+
+    for image in backend frontend elasticsearch kibana cassandra sanity; do
+        asserts_image openecomp/sdc-$image
+    done
+}
+
+# test_install_sdc() - Verifies that SDC services are up and running
+function test_install_sdc {
+    clone_all_sdc_repos
+    get_sdc_images
+    install_sdc
+
+    for image in backend frontend elasticsearch kibana cassandra sanity; do
+        asserts_image_running openecomp/sdc-$image
+    done
+}
+
+if [ "$1" != '*' ]; then
+    unset covered_functions
+    covered_functions=$1
+fi
+main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tools/get_repos.sh b/bootstrap/vagrant-onap/tools/get_repos.sh
index 7e531bd..ae5d4e0 100755
--- a/bootstrap/vagrant-onap/tools/get_repos.sh
+++ b/bootstrap/vagrant-onap/tools/get_repos.sh
@@ -19,7 +19,7 @@
 
 function git_clone_or_pull {
     local repo=$1
-    local folder="../opt/$1"
+    local folder="./opt/$1"
     local mvn_build=$2
     if [ ! -d $folder ]; then
         git clone https://git.onap.org/$repo $folder
@@ -29,9 +29,6 @@
     if [ -f .gitreview ]; then
         git review -s
     fi
-    #if [ -f pom.xml ] && [ -n ${mvn_build+x} ]; then
-        #mvn clean -q install -U -DskipTests=true -Dmaven.test.skip=true -Dadditionalparam=-Xdoclint:none
-    #fi
     popd > /dev/null
 }
 
diff --git a/test/csit/plans/vnfsdk-refrepo/sanity-check/enterprise2DC.csar b/test/csit/plans/vnfsdk-refrepo/sanity-check/enterprise2DC.csar
new file mode 100644
index 0000000..29e08c1
--- /dev/null
+++ b/test/csit/plans/vnfsdk-refrepo/sanity-check/enterprise2DC.csar
Binary files differ
diff --git a/test/csit/plans/vnfsdk-refrepo/sanity-check/setup.sh b/test/csit/plans/vnfsdk-refrepo/sanity-check/setup.sh
new file mode 100644
index 0000000..85c6bc2
--- /dev/null
+++ b/test/csit/plans/vnfsdk-refrepo/sanity-check/setup.sh
@@ -0,0 +1,30 @@
+#!/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.
+#
+# These scripts are sourced by run-csit.sh.
+
+
+
+#Start market place
+docker run -d -i -t --name=vnfmarket   -p 8702:8702 onap/vnfmarket
+
+REPO_IP=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' vnfmarket`
+
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v REPO_IP:${REPO_IP}"
+
+
diff --git a/test/csit/plans/vnfsdk-refrepo/sanity-check/teardown.sh b/test/csit/plans/vnfsdk-refrepo/sanity-check/teardown.sh
new file mode 100644
index 0000000..42d7b7f
--- /dev/null
+++ b/test/csit/plans/vnfsdk-refrepo/sanity-check/teardown.sh
@@ -0,0 +1,21 @@
+#!/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.
+#
+# This script is sourced by run-csit.sh after Robot test completion.
+
+
+kill-instance.sh vnfmarket
+
diff --git a/test/csit/plans/vnfsdk-refrepo/sanity-check/testplan.txt b/test/csit/plans/vnfsdk-refrepo/sanity-check/testplan.txt
new file mode 100644
index 0000000..730df01
--- /dev/null
+++ b/test/csit/plans/vnfsdk-refrepo/sanity-check/testplan.txt
@@ -0,0 +1,3 @@
+## Test suites are relative paths under [integration.git]/test/csit/tests/.
+## Place the suites in run order.
+vnfsdk-marketplace/provision/sanity_test_vnfsdktestfunction.robot
diff --git a/test/csit/plans/vnfsdk-refrepo/sanity-check/uploadCSAR.sh b/test/csit/plans/vnfsdk-refrepo/sanity-check/uploadCSAR.sh
new file mode 100644
index 0000000..279912c
--- /dev/null
+++ b/test/csit/plans/vnfsdk-refrepo/sanity-check/uploadCSAR.sh
@@ -0,0 +1,138 @@
+#!/usr/bin/env 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.
+###############################################################################
+SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+echo $SCRIPT_DIR
+
+#CHECK IF MSB_ADDR IS GIVEN IN COMMAND
+if [ -z "$1" ]
+then
+   echo "There is no MSB_ADDR"
+   exit 1
+fi
+MSB_ADDR=$1
+CSAR_NAME=$2
+echo $MSB_ADDR
+echo $CSAR_NAME
+
+# Wait for MSB initialization
+echo Wait for MSB initialization
+for i in {1..20}; do
+    curl -sS -m 1 $MSB_ADDR > /dev/null && break
+    sleep $i
+done
+#MSB initialized 
+###########################################
+###########################################
+###########################################
+###########################################
+###########################################
+###########################################
+############UOLOAD PACKAGE to MARKET PLACE######################
+echo
+echo "############## UOLOAD PACKAGE to MARKET PLACE STARTED ##############";
+UploadPackageResponse=$(curl -sS -X POST -H "Content-Type: multipart/form-data;" -F "file=@$CSAR_NAME"  http://$MSB_ADDR/openoapi/vnfsdk-marketplace/v1/PackageResource/csars)
+if echo "$UploadPackageResponse" | grep -q "\"csarId\""; then
+	echo "UOLOAD PACKAGE TO MARKET PLACE SUCSSS !!!";
+else
+	echo "UploadPackageResponse :$UploadPackageResponse"
+	echo "UOLOAD PACKAGE TO MARKET PLACE FAILED !!!";
+	exit 1;
+fi
+UploadCsarId=$(echo ${UploadPackageResponse:11:36})
+echo "PACKAGE ID:$UploadCsarId"
+echo "############## UOLOAD PACKAGE to MARKET PLACE END ##################";
+#######UOLOAD PACKAGE to MARKET PLACE END#############
+###########################################
+###########################################
+###########################################
+###########################################
+###########################################
+###########################################
+###########################################
+################GET ON BOARD STATUS########
+echo
+echo "####################### GETTING ON-BOARDING STATUS ##################";
+#sleeping for 10 sec so thate ON Boarding operation should be happened at backend
+for pc in $(seq 1 10); do
+	status=$((${pc}*10));
+    echo -ne "ON_BOARDING Status (%): $status\033[0K\r"
+    sleep 1
+done
+echo
+
+#Three Retries for getting On Boarding Result
+#count=0
+#while [ $count -lt 3 ]
+#do
+#	OnBoardStatusResponse=$(curl -sS -X GET  "http://$MSB_ADDR/openoapi/vnfsdk-marketplace/v1/PackageResource/csars/$UploadCsarId/onboardstatus?operTypeId=functiontest&operId=functestexec" -H "Accept: application/json" -H "Content-Type: application/json")
+#	echo $OnBoardStatusResponse	
+#	if echo "$OnBoardStatusResponse" | grep -q "\"status\":0"; then
+#		break;
+#	else
+#		if [ $count -eq 3 ]
+#		then
+#			echo "ON-BOARDING OPERATION FAILED !!!";
+#		fi
+#		count=`expr $count + 1`;
+#		sleep 3;
+#	fi
+#done
+echo "GET ON-BOARDING RESULT OPERATION SUCESS ";
+echo "##################### GETTING ON-BOARDING STATUS END #################";
+####################GET ON BOARD STATUS END############
+##########################################
+##########################################
+##########################################
+##########################################
+##########################################
+#################DOWNLOAD PACKAGE#########
+echo
+echo "############## DOWNLOADED PACKAGE FROM MARKET STARTED #################";
+PACKAGE_NAME=market_temp.csar
+curl -sS -X GET  "http://$MSB_ADDR/openoapi/vnfsdk-marketplace/v1/PackageResource/csars/$UploadCsarId/files" > $PACKAGE_NAME
+fileSize=$(du  -b $PACKAGE_NAME | cut -f 1)
+if [ $fileSize -eq 0 ]
+then
+	echo "DOWNLOADED PACKAGE FROM MARKET NOT PROPER, ON-BOARDING OPERATION FAILED !!!";
+	exit 1;
+fi
+echo "DOWNLOADED PACKAGE FROM MARKET OPERATION SUCESS !!!";
+echo "MARKET PACKAGE NAME:$PACKAGE_NAME"
+echo "##################### DOWNLOADED PACKAGE FROM MARKET ##################";
+###################DOWNLOAD PACKAGE END#####################
+##########################################
+##########################################
+##########################################
+##########################################
+##########CATALOUGE START#################
+echo
+PACKAGE_NAME=$CSAR_NAME
+#Check if common-tosca-catalog  is registered with MSB or not
+#curl -sS -X GET http://$MSB_ADDR/api/microservices/v1/services/catalog/version/v1 -H "Accept: application/json" -H "Content-Type: application/json" 
+#check if common-tosca-aria is registered with MSB or not 
+#curl -sS -X GET http://$MSB_ADDR/api/microservices/v1/services/tosca/version/v1 -H "Accept: application/json" -H "Content-Type: application/json"
+#echo Sending POST request to Catalog
+CsarIdString=$(curl -sS -X POST -H "Content-Type: multipart/form-data; boundary=-WebKitFormBoundary7MA4YWxkTrZu0gW" -H "Cache-Control: no-cache" -H "Postman-Token: abcb6497-b225-c592-01be-e9ff460ca188" -F "file=@$PACKAGE_NAME" http://$MSB_ADDR/openoapi/catalog/v1/csars)
+#getting csarId from the output of curl request
+CsarId=$(echo ${CsarIdString:11:36})
+echo $CsarId
+echo $CsarIdString
+#csarid is sucessfully stored in CsarId variable
+echo "====finished======"
+##########CATALOUGE END############
+echo "DELETING PACAKE LOCAL COPY:$PACKAGE_NAME";
+#rm $PACKAGE_NAME;
diff --git a/test/csit/tests/vnfsdk-marketplace/provision/enterprise2DC.csar b/test/csit/tests/vnfsdk-marketplace/provision/enterprise2DC.csar
new file mode 100644
index 0000000..29e08c1
--- /dev/null
+++ b/test/csit/tests/vnfsdk-marketplace/provision/enterprise2DC.csar
Binary files differ
diff --git a/test/csit/tests/vnfsdk-marketplace/provision/sanity_test_vnfsdktestfunction.robot b/test/csit/tests/vnfsdk-marketplace/provision/sanity_test_vnfsdktestfunction.robot
index 5a314b5..cff6b58 100644
--- a/test/csit/tests/vnfsdk-marketplace/provision/sanity_test_vnfsdktestfunction.robot
+++ b/test/csit/tests/vnfsdk-marketplace/provision/sanity_test_vnfsdktestfunction.robot
@@ -4,16 +4,13 @@
 
 
 *** Variables ***
-${csarpath}    ${SCRIPTS}/../plans/vnfsdk-marketplace/sanity-check/enterprise2DC.csar
-${upload}    ${SCRIPTS}/../plans/vnfsdk-marketplace/sanity-check/uploadCSAR.sh
+${csarpath}    enterprise2DC.csar
+${upload}      uploadCSAR.sh
 
 
 *** Test Cases ***
-Upload CSAR to marketplace repository 
-    [Documentation]    Upload the VNF Package
-    ${status}=    Run    curl -i -X POST -H "Content-Type: multipart/form-data" -F "data=@RobotScript.zip" http://${MSB_IP}/openoapi/vnfsdk/v1/functest/  
     
 E2E Test case for VNF SDK
     [Documentation]    Upload the VNF Package
-    ${status}=    Run Process   bash ${upload} ${MSB_IP} ${csarpath} > log.txt    shell=yes
+    ${status}=    Run Process   bash ${upload} ${REPO_IP} ${csarpath} > log.txt    shell=yes
 
diff --git a/test/csit/tests/vnfsdk-marketplace/provision/uploadCSAR.sh b/test/csit/tests/vnfsdk-marketplace/provision/uploadCSAR.sh
new file mode 100644
index 0000000..800f833
--- /dev/null
+++ b/test/csit/tests/vnfsdk-marketplace/provision/uploadCSAR.sh
@@ -0,0 +1,132 @@
+#!/usr/bin/env 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.
+###############################################################################
+SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+echo $SCRIPT_DIR
+
+#CHECK IF MSB_ADDR IS GIVEN IN COMMAND
+if [ -z "$1" ]
+then
+   echo "There is no MSB_ADDR"
+   exit 1
+fi
+MSB_ADDR=$1
+CSAR_NAME=$2
+echo $MSB_ADDR
+echo $CSAR_NAME
+
+
+###########################################
+###########################################
+###########################################
+###########################################
+###########################################
+###########################################
+############UOLOAD PACKAGE to MARKET PLACE######################
+echo
+echo "############## UOLOAD PACKAGE to MARKET PLACE STARTED ##############";
+UploadPackageResponse=$(curl -sS -X POST -H "Content-Type: multipart/form-data;" -F "file=@$CSAR_NAME"  http://$MSB_ADDR/openoapi/vnfsdk-marketplace/v1/PackageResource/csars)
+if echo "$UploadPackageResponse" | grep -q "\"csarId\""; then
+	echo "UOLOAD PACKAGE TO MARKET PLACE SUCSSS !!!";
+else
+	echo "UploadPackageResponse :$UploadPackageResponse"
+	echo "UOLOAD PACKAGE TO MARKET PLACE FAILED !!!";
+	exit 1;
+fi
+UploadCsarId=$(echo ${UploadPackageResponse:11:36})
+echo "PACKAGE ID:$UploadCsarId"
+echo "############## UOLOAD PACKAGE to MARKET PLACE END ##################";
+#######UOLOAD PACKAGE to MARKET PLACE END#############
+###########################################
+###########################################
+###########################################
+###########################################
+###########################################
+###########################################
+###########################################
+################GET ON BOARD STATUS########
+echo
+echo "####################### GETTING ON-BOARDING STATUS ##################";
+#sleeping for 10 sec so thate ON Boarding operation should be happened at backend
+for pc in $(seq 1 10); do
+	status=$((${pc}*10));
+    echo -ne "ON_BOARDING Status (%): $status\033[0K\r"
+    sleep 1
+done
+echo
+
+#Three Retries for getting On Boarding Result
+#count=0
+#while [ $count -lt 3 ]
+#do
+#	OnBoardStatusResponse=$(curl -sS -X GET  "http://$MSB_ADDR/openoapi/vnfsdk-marketplace/v1/PackageResource/csars/$UploadCsarId/onboardstatus?operTypeId=functiontest&operId=functestexec" -H "Accept: application/json" -H "Content-Type: application/json")
+#	echo $OnBoardStatusResponse	
+#	if echo "$OnBoardStatusResponse" | grep -q "\"status\":0"; then
+#		break;
+#	else
+#		if [ $count -eq 3 ]
+#		then
+#			echo "ON-BOARDING OPERATION FAILED !!!";
+#		fi
+#		count=`expr $count + 1`;
+#		sleep 3;
+#	fi
+#done
+echo "GET ON-BOARDING RESULT OPERATION SUCESS ";
+echo "##################### GETTING ON-BOARDING STATUS END #################";
+####################GET ON BOARD STATUS END############
+##########################################
+##########################################
+##########################################
+##########################################
+##########################################
+#################DOWNLOAD PACKAGE#########
+echo
+echo "############## DOWNLOADED PACKAGE FROM MARKET STARTED #################";
+PACKAGE_NAME=market_temp.csar
+curl -sS -X GET  "http://$MSB_ADDR/openoapi/vnfsdk-marketplace/v1/PackageResource/csars/$UploadCsarId/files" > $PACKAGE_NAME
+fileSize=$(du  -b $PACKAGE_NAME | cut -f 1)
+if [ $fileSize -eq 0 ]
+then
+	echo "DOWNLOADED PACKAGE FROM MARKET NOT PROPER, ON-BOARDING OPERATION FAILED !!!";
+	exit 1;
+fi
+echo "DOWNLOADED PACKAGE FROM MARKET OPERATION SUCESS !!!";
+echo "MARKET PACKAGE NAME:$PACKAGE_NAME"
+echo "##################### DOWNLOADED PACKAGE FROM MARKET ##################";
+###################DOWNLOAD PACKAGE END#####################
+##########################################
+##########################################
+##########################################
+##########################################
+##########CATALOUGE START#################
+echo
+PACKAGE_NAME=$CSAR_NAME
+#Check if common-tosca-catalog  is registered with MSB or not
+#curl -sS -X GET http://$MSB_ADDR/api/microservices/v1/services/catalog/version/v1 -H "Accept: application/json" -H "Content-Type: application/json" 
+#check if common-tosca-aria is registered with MSB or not 
+#curl -sS -X GET http://$MSB_ADDR/api/microservices/v1/services/tosca/version/v1 -H "Accept: application/json" -H "Content-Type: application/json"
+#echo Sending POST request to Catalog
+CsarIdString=$(curl -sS -X POST -H "Content-Type: multipart/form-data; boundary=-WebKitFormBoundary7MA4YWxkTrZu0gW" -H "Cache-Control: no-cache" -H "Postman-Token: abcb6497-b225-c592-01be-e9ff460ca188" -F "file=@$PACKAGE_NAME" http://$MSB_ADDR/openoapi/catalog/v1/csars)
+#getting csarId from the output of curl request
+CsarId=$(echo ${CsarIdString:11:36})
+echo $CsarId
+echo $CsarIdString
+#csarid is sucessfully stored in CsarId variable
+echo "====finished======"
+##########CATALOUGE END############
+echo "DELETING PACAKE LOCAL COPY:$PACKAGE_NAME";
+#rm $PACKAGE_NAME;
