diff --git a/test/csit/plans/aaf/aafapi/setup.sh b/test/csit/plans/aaf/aafapi/setup.sh
new file mode 100644
index 0000000..bfaff92
--- /dev/null
+++ b/test/csit/plans/aaf/aafapi/setup.sh
@@ -0,0 +1,72 @@
+#!/bin/bash
+#
+# ============LICENSE_START=======================================================
+# ONAP AAF
+# ================================================================================
+# 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 AAF Authz repo
+mkdir -p $WORKSPACE/archives/aafcsit
+cd $WORKSPACE/archives/aafcsit
+#unset http_proxy https_proxy
+git clone --depth 1 http://gerrit.onap.org/r/aaf/authz -b master
+git pull
+cd $WORKSPACE/archives/aafcsit/authz/authz-service/src/main/resources/docker-compose
+pwd
+chmod -R 777 $WORKSPACE/archives/aafcsit/authz/authz-service/src/main/resources/docker-compose
+
+
+# start aaf containers with docker compose and configuration from docker-compose.yml
+docker-compose up -d
+
+# Wait for initialization of Docker contaienr for AAF & Cassandra
+for i in {1..50}; do
+	if [ $(docker inspect --format '{{ .State.Running }}' dockercompose_aaf_container_1) ] && \
+		[ $(docker inspect --format '{{ .State.Running }}' dockercompose_cassandra_container_1) ] && \
+		[ $(docker inspect --format '{{ .State.Running }}' dockercompose_aaf_container_1) ] 
+	then
+		echo "AAF Service Running"	
+		break    		
+	else 
+		echo sleep $i		
+		sleep $i
+	fi
+done
+
+
+AAF_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_aaf_container_1)
+CASSANDRA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_cassandra_container_1)
+
+
+echo AAF_IP=${AAF_IP}
+echo CASSANDRA_IP=${CASSANDRA_IP}
+
+
+# Wait for initialization of docker services
+for i in {1..50}; do
+    curl -sS -m 1 ${AAF_IP}:8101 && break 
+    echo sleep $i
+    sleep $i
+done
+
+#Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v AAF_IP:${AAF_IP}" 
diff --git a/test/csit/plans/aaf/aafapi/teardown.sh b/test/csit/plans/aaf/aafapi/teardown.sh
new file mode 100644
index 0000000..1f7b285
--- /dev/null
+++ b/test/csit/plans/aaf/aafapi/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_aaf_container_1 
+kill-instance.sh dockercompose_cassandra_container_1 
+
diff --git a/test/csit/plans/aaf/aafapi/testplan.txt b/test/csit/plans/aaf/aafapi/testplan.txt
new file mode 100644
index 0000000..ea18ca6
--- /dev/null
+++ b/test/csit/plans/aaf/aafapi/testplan.txt
@@ -0,0 +1,2 @@
+# Place the suites in run order.
+aaf/aafapi
diff --git a/test/csit/tests/aaf/aafapi/aafapi.robot b/test/csit/tests/aaf/aafapi/aafapi.robot
new file mode 100644
index 0000000..b1f8e74
--- /dev/null
+++ b/test/csit/tests/aaf/aafapi/aafapi.robot
@@ -0,0 +1,63 @@
+*** Settings ***
+Library           OperatingSystem
+Library           RequestsLibrary
+Library           requests
+Library           Collections
+Library           String
+
+*** Variables ***
+${TARGETURL_NAMESPACE}     http://${AAF_IP}:8101/authz/nss/org.openecomp
+${TARGETURL_PERMS}         http://${AAF_IP}:8101/authz/perms/user/dgl@openecomp.org
+${TARGETURL_ROLES}         http://${AAF_IP}:8101/authz/roles/user/dgl@openecomp.org
+${username}               dgl@openecomp.org 
+${password}               ecomp_admin
+
+
+*** Test Cases ***
+View Namesapce
+    [Tags]    get
+    CreateSession    aaf    http://${AAF_IP}:8101
+    &{headers}=  Create Dictionary    Authorization=Basic ZGdsQG9wZW5lY29tcC5vcmc6ZWNvbXBfYWRtaW4=    Content-Type=application/json    Accept=application/json
+    ${resp}=    Get Request    aaf    /authz/nss/org.openecomp    headers=&{headers}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    log    		                  	'JSON Response Code :'${resp.text}	
+	
+View by User Permission 
+    [Tags]    get
+    CreateSession    aaf    http://${AAF_IP}:8101
+    &{headers}=  Create Dictionary    Authorization=Basic ZGdsQG9wZW5lY29tcC5vcmc6ZWNvbXBfYWRtaW4=    Content-Type=application/json    Accept=application/json
+    ${resp}=    Get Request    aaf    authz/perms/user/dgl@openecomp.org    headers=&{headers}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    log    		                  	'JSON Response Code :'${resp.text}	
+	
+View by User Role 
+    [Tags]    get
+    CreateSession    aaf    http://${AAF_IP}:8101
+    &{headers}=  Create Dictionary    Authorization=Basic ZGdsQG9wZW5lY29tcC5vcmc6ZWNvbXBfYWRtaW4=    Content-Type=application/json    Accept=application/json
+    ${resp}=    Get Request    aaf    authz/roles/user/dgl@openecomp.org    headers=&{headers}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    log    		                  	'JSON Response Code :'${resp.text}	
+
+Cleanup Namespace ( 424 Response - Delete dependencies and try again) 
+    [Tags]    delete
+    CreateSession    aaf    http://${AAF_IP}:8101
+    &{headers}=  Create Dictionary    Authorization=Basic ZGdsQG9wZW5lY29tcC5vcmc6ZWNvbXBfYWRtaW4=    Content-Type=application/json    Accept=application/json
+    ${resp}=    Delete Request    aaf    authz/ns/org.openecomp.dmaapBC   headers=&{headers}
+    Should Be Equal As Strings    ${resp.status_code}    424
+    log    		                  	'JSON Response Code :'${resp.text}	
+	
+Add Data ( Add Admin to Namespace Explicit ) 
+    [Tags]    post
+    CreateSession    aaf    http://${AAF_IP}:8101
+    &{headers}=  Create Dictionary    Authorization=Basic ZGdsQG9wZW5lY29tcC5vcmc6ZWNvbXBfYWRtaW4=    Content-Type=application/json    Accept=application/json
+    ${resp}=    Post Request    aaf    authz/ns/org.openecomp.dmaapBC/admin/alexD@openecomp.org   headers=&{headers}
+    Should Be Equal As Strings    ${resp.status_code}    403
+    log    		                  	'JSON Response Code :'${resp.text}	
+	
+View Explicit Permission 
+    [Tags]    post
+    CreateSession    aaf    http://${AAF_IP}:8101
+    &{headers}=  Create Dictionary    Authorization=Basic ZGdsQG9wZW5lY29tcC5vcmc6ZWNvbXBfYWRtaW4=    Content-Type=application/json    Accept=application/json
+    ${resp}=    Post Request    aaf    authz/perms/user/m99751@dmaapBC.openecomp.org   headers=&{headers}
+    Should Be Equal As Strings    ${resp.status_code}    406
+    log    		                  	'JSON Response Code :'${resp.text}	
\ No newline at end of file
