diff --git a/test/csit/plans/dmaap/mrpubsub/setup.sh b/test/csit/plans/dmaap/mrpubsub/setup.sh
new file mode 100755
index 0000000..3e8950f
--- /dev/null
+++ b/test/csit/plans/dmaap/mrpubsub/setup.sh
@@ -0,0 +1,95 @@
+#!/bin/bash
+#
+# ============LICENSE_START=======================================================
+# ONAP DMAAP MR 
+# ================================================================================
+# 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.
+#
+# Place the scripts in run order:
+source ${SCRIPTS}/common_functions.sh
+
+# Clone DMaaP Message Router repo
+mkdir -p $WORKSPACE/archives/dmaapmr
+cd $WORKSPACE/archives/dmaapmr
+#unset http_proxy https_proxy
+git clone --depth 1 http://gerrit.onap.org/r/dmaap/messagerouter/messageservice -b master
+git pull
+cd $WORKSPACE/archives/dmaapmr/messageservice/src/main/resources/docker-compose
+cp $WORKSPACE/archives/dmaapmr/messageservice/bundleconfig-local/etc/appprops/MsgRtrApi.properties /var/tmp/
+
+
+# start DMaaP MR containers with docker compose and configuration from docker-compose.yml
+docker-compose up -d
+
+# Wait for initialization of Docker contaienr for DMaaP MR, Kafka and Zookeeper
+for i in {1..50}; do
+	if [ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ] && \
+		[ $(docker inspect --format '{{ .State.Running }}' dockercompose_zookeeper_1) ] && \
+		[ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ] 
+	then
+		echo "DMaaP Service Running"	
+		break    		
+	else 
+		echo sleep $i		
+		sleep $i
+	fi
+done
+
+
+DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_dmaap_1)
+KAFKA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_kafka_1)
+ZOOKEEPER_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_zookeeper_1)
+
+echo DMAAP_MR_IP=${DMAAP_MR_IP}
+echo KAFKA_IP=${KAFKA_IP}
+echo ZOOKEEPER_IP=${ZOOKEEPER_IP}
+
+# Initial docker-compose up and down is for populating kafka and zookeeper IPs in /var/tmp/MsgRtrApi.properites
+docker-compose down 
+
+# Update kafkfa and zookeeper properties in MsgRtrApi.propeties which will be copied to DMaaP Container
+sed -i -e 's/<zookeeper_host>/'$ZOOKEEPER_IP'/' /var/tmp/MsgRtrApi.properties
+sed -i -e 's/<kafka_host>:<kafka_port>/'$KAFKA_IP':9092/' /var/tmp/MsgRtrApi.properties
+
+docker-compose build
+docker-compose up -d 
+
+# Wait for initialization of Docker containers
+for i in {1..50}; do
+        if [ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ] && \
+                [ $(docker inspect --format '{{ .State.Running }}' dockercompose_zookeeper_1) ] && \
+                [ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ]
+        then
+                echo "DMaaP Service Running"
+                break
+        else
+                echo sleep $i
+                sleep $i
+        fi
+done
+
+# Wait for initialization of docker services
+for i in {1..50}; do
+    curl -sS -m 1 ${DMAAP_MR_IP}:3904/events/TestTopic && break 
+    echo sleep $i
+    sleep $i
+done
+
+#Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v DMAAP_MR_IP:${DMAAP_MR_IP}" 
diff --git a/test/csit/plans/dmaap/mrpubsub/teardown.sh b/test/csit/plans/dmaap/mrpubsub/teardown.sh
new file mode 100755
index 0000000..1b43032
--- /dev/null
+++ b/test/csit/plans/dmaap/mrpubsub/teardown.sh
@@ -0,0 +1,22 @@
+#!/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
+#
+
+kill-instance.sh dockercompose_dmaap_1 
+kill-instance.sh dockercompose_kafka_1 
+kill-instance.sh dockercompose_zookeeper_1
diff --git a/test/csit/plans/dmaap/mrpubsub/testplan.txt b/test/csit/plans/dmaap/mrpubsub/testplan.txt
new file mode 100644
index 0000000..6a98eb7
--- /dev/null
+++ b/test/csit/plans/dmaap/mrpubsub/testplan.txt
@@ -0,0 +1,2 @@
+# Place the suites in run order.
+dmaap/mrpubsub
diff --git a/test/csit/tests/dmaap/mrpubsub/mrpubsub.robot b/test/csit/tests/dmaap/mrpubsub/mrpubsub.robot
new file mode 100755
index 0000000..c711bd7
--- /dev/null
+++ b/test/csit/tests/dmaap/mrpubsub/mrpubsub.robot
@@ -0,0 +1,73 @@
+*** Settings ***
+Library           OperatingSystem
+Library           RequestsLibrary
+Library           requests
+Library           Collections
+Library           String
+
+*** Variables ***
+${TARGETURL_PUBLISH}        http://${DMAAP_MR_IP}:3904/events/TestTopic1
+${TARGETURL_TOPICS}         http://${DMAAP_MR_IP}:3904/topics
+${TARGETURL_SUBSCR}         http://${DMAAP_MR_IP}:3904/events/TestTopic1/CG1/C1?timeout=1000
+${TEST_DATA}                {"topicName": "TestTopic1"}
+${TOPIC_DATA}               {"topicName":"FirstTopic","topicDescription":"This is a TestTopic","partitionCount":"1","replicationCount":"3","transactionEnabled":"true"}
+
+*** Test Cases ***
+Run Topic Creation and Publish
+    [Documentation]    			  	Topic Creation
+    [Timeout]    			  	  	1 minute
+    ${resp}=    			  	  	PostCall      					${TARGETURL_PUBLISH}    	${TEST_DATA}
+    log    				          	${TARGETURL_PUBLISH}
+    log    				          	${resp.text}
+    Should Be Equal As Strings    	${resp.status_code}           	200
+    ${count}=    	              	Evaluate     					$resp.json().get('count')
+    log    				  			'JSON Response Code:'${resp}
+
+Run Subscribing a message status
+    [Documentation]    		        Subscribide message status
+    [Timeout]    			  		1 minute
+	${resp}=    			  		GetCall    						${TARGETURL_SUBSCR}
+    log    				  			${TARGETURL_SUBSCR}
+    Should Be Equal As Strings      ${resp.status_code}           	200
+    log    		                  	'JSON Response Code :'${resp}
+    
+Run check topics are exisiting
+    [Documentation]    		  		Get the count of the Topics
+    [Timeout]    			  		1 minute
+    ${resp}=    			  		GetCall                       	${TARGETURL_TOPICS}
+    log              		  		${TARGETURL_TOPICS}
+    Should Be Equal As Strings      ${resp.status_code}           	200
+    log    				  			'JSON Response Code :'${resp}
+    ${topics}=       			  	Evaluate                 	  	$resp.json().get('topics')
+    log					  			${topics}
+    ${ListLength}=    			  	Get Length                    	${topics}
+    log    				  			${ListLength}
+    List Should Contain Value 		${topics}                       TestTopic1
+
+Run Publich and Subscribe a message
+    [Documentation]    		        Publish and Subscribe the message
+    [Timeout]    			  		1 minute
+	${resp}=    			  	  	PostCall      					${TARGETURL_PUBLISH}    	${TEST_DATA}
+    log    				          	${TARGETURL_PUBLISH}
+    log    				          	${resp.text}
+    Should Be Equal As Strings    	${resp.status_code}           	200
+    ${sub_resp}=    			  		GetCall    						${TARGETURL_SUBSCR}
+    log    				  			${TARGETURL_SUBSCR}
+    Should Be Equal As Strings      ${sub_resp.status_code}           	200
+    log    		                  	'JSON Response Code :'${sub_resp}
+    ${ListLength}=                  Get Length                    	${sub_resp.json()}
+    log    				  			${ListLength}
+    List Should Contain Value       ${sub_resp.json()}    				{"topicName":"TestTopic1"}    case_insensitive=yes
+
+*** Keywords ***
+PostCall
+    [Arguments]    ${url}    		${data}
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
+    ${resp}=       Evaluate    requests.post('${url}',data='${data}', headers=${headers},verify=False)    requests
+    [Return]       ${resp}
+
+GetCall
+    [Arguments]     ${url}
+    ${headers}=     Create Dictionary    Accept=application/json    Content-Type=application/json
+    ${resp}=    	Evaluate    requests.get('${url}', headers=${headers}, verify=False)    requests
+    [Return]    	${resp}
