diff --git a/src/test/cord-api/Framework/ATTWorkFlowDriver.robot b/src/test/cord-api/Framework/ATTWorkFlowDriver.robot
index d38c8c4..785e53b 100644
--- a/src/test/cord-api/Framework/ATTWorkFlowDriver.robot
+++ b/src/test/cord-api/Framework/ATTWorkFlowDriver.robot
@@ -1,5 +1,19 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
 *** Settings ***
-Documentation     Library to retrieve status fields from ATT WorkFlow Driver Service Instance List 
+Documentation     Library to retrieve status fields from ATT WorkFlow Driver Service Instance List
 Library           Collections
 Library           String
 Library           OperatingSystem
@@ -16,9 +30,9 @@
     Log    ${json_result}
     ${json_result_list}=    Get From dictionary    ${json_result}    items
     ${getJsonDict}=    utils.getDictFromListOfDict    ${json_result_list}    serial_number    ${onu_device}
-    ${status}=  Get From Dictionary    ${getJsonDict}   valid 
+    ${status}=  Get From Dictionary    ${getJsonDict}   status
     ${authentication_status}=  Get From Dictionary    ${getJsonDict}   authentication_state
-    [Return]    ${status}    ${authentication_status} 
+    [Return]    ${status}    ${authentication_status}
 
 Create Whitelist Entry
     [Arguments]    ${entry_list}    ${list_index}
diff --git a/src/test/cord-api/Framework/Subscriber.robot b/src/test/cord-api/Framework/Subscriber.robot
index 864bef2..e4791f0 100644
--- a/src/test/cord-api/Framework/Subscriber.robot
+++ b/src/test/cord-api/Framework/Subscriber.robot
@@ -27,11 +27,22 @@
     SSHLibrary.Write    sudo wpa_supplicant -B -i ${iface} -Dwired -c /etc/wpa_supplicant/${conf_file}
     Read Until    [sudo] password for ${user}:
     SSHLibrary.Write    ${pass}
-    ${result}=    Read Until    ${prompt}
+    ${result}=    Read Until    wpa_supplicant
+    Log To Console    \n\n ${result}\n
     SSHLibrary.Close Connection
     Should Contain    ${result}    Successfully initialized wpa_supplicant
     [Return]    ${result}
 
+Delete IP Addresses from Interface on Remote Host
+    [Arguments]    ${ip}    ${user}    ${pass}    ${interface}    ${prompt}=$    ${prompt_timeout}=60s
+    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
+    SSHLibrary.Login    ${user}    ${pass}
+    SSHLibrary.Write    sudo ip addr flush dev ${interface}; echo $?
+    Read Until    [sudo] password for ${user}:
+    SSHLibrary.Write    ${pass}
+    ${result}=    Read Until    ${prompt}
+    SSHLibrary.Close Connection
+
 Subscriber Status Check
     [Arguments]    ${onu_device}
     [Documentation]    Returns Status from Subscribers List for a particular ONU device
@@ -70,13 +81,60 @@
     ${api_result}=    restApi.ApiChameleonDelete    VOLT_SUBSCRIBER    ${id}
     Should Be True    ${api_result}
 
-Delete IP Addresses from Interface on Remote Host
-    [Arguments]    ${ip}    ${user}    ${pass}    ${interface}    ${prompt}=$    ${prompt_timeout}=60s
-    [Documentation]    Deletes all ip addresses assigned to a particular interface on a remote host
+Add Double Vlan Interface on Host
+    [Arguments]    ${ip}    ${user}    ${pass}    ${interface}    ${stag}    ${ctag}    ${prompt}=$    ${prompt_timeout}=60s
     ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
     SSHLibrary.Login    ${user}    ${pass}
-    SSHLibrary.Write    sudo ip addr flush dev ${interface}; echo $?
+    SSHLibrary.Write    sudo ip link add link ${interface} name ${interface}.${stag} type vlan id ${stag}
+    Read Until    [sudo] password for ${user}:
+    SSHLibrary.Write    ${pass}
+    SSHLibrary.Write    sudo ip link set ${interface}.${stag} up
+    ${result}=    Read Until    ${prompt}
+    SSHLibrary.Write    sudo ip link add link ${interface}.${stag} name ${interface}.${stag}.${ctag} type vlan id ${ctag}
+    ${result}=    Read Until    ${prompt}
+    SSHLibrary.Write    sudo ip link set ${interface}.${stag}.${ctag} up
+    ${result}=    Read Until    ${prompt}
+    SSHLibrary.Write    ifconfig ${interface}.${stag}.${ctag}
+    ${result}=    Read Until    ${prompt}
+    SSHLibrary.Close Connection
+
+Delete Interface on Remote Host
+    [Arguments]    ${ip}    ${user}    ${pass}    ${interface}    ${prompt}=$    ${prompt_timeout}=60s
+    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
+    SSHLibrary.Login    ${user}    ${pass}
+    SSHLibrary.Write    sudo ip link del ${interface}
+    Read Until    [sudo] password for ${user}:
+    SSHLibrary.Write    ${pass}
+    Read Until    ${prompt}
+    SSHLibrary.Close Connection
+
+Add Ip Address on Interface on Host
+    [Arguments]    ${ip}    ${user}    ${pass}    ${ip_address}    ${interface}    ${prompt}=$    ${prompt_timeout}=60s
+    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
+    SSHLibrary.Login    ${user}    ${pass}
+    SSHLibrary.Write    sudo ip addr add ${ip_address} dev ${interface}
+    Read Until    [sudo] password for ${user}:
+    SSHLibrary.Write    ${pass}
+    Read Until    ${prompt}
+    SSHLibrary.Close Connection
+
+Start DHCP Server on Remote Host
+    [Arguments]    ${ip}    ${user}    ${pass}    ${interface}    ${prompt}=$    ${prompt_timeout}=60s
+    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
+    SSHLibrary.Login    ${user}    ${pass}
+    SSHLibrary.Write    sudo dhcpd -cf /etc/dhcp/dhcpd.conf ${interface}
     Read Until    [sudo] password for ${user}:
     SSHLibrary.Write    ${pass}
     ${result}=    Read Until    ${prompt}
+    Should Contain    ${result}    Listening on LPF/${interface}
     SSHLibrary.Close Connection
+
+Add Route to Remote Host
+    [Arguments]    ${ip}    ${user}    ${pass}    ${subnet}    ${gateway}    ${interface}    ${prompt}=$    ${prompt_timeout}=60s
+    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
+    SSHLibrary.Login    ${user}    ${pass}
+    SSHLibrary.Write    sudo ip route add ${subnet} via ${gateway} dev ${interface}
+    Read Until    [sudo] password for ${user}:
+    SSHLibrary.Write    ${pass}
+    ${result}=    Read Until    ${prompt}
+    SSHLibrary.Close Connection
\ No newline at end of file
diff --git a/src/test/cord-api/Framework/utils/utils.robot b/src/test/cord-api/Framework/utils/utils.robot
index 251b472..76cca11 100644
--- a/src/test/cord-api/Framework/utils/utils.robot
+++ b/src/test/cord-api/Framework/utils/utils.robot
@@ -176,4 +176,4 @@
 Kill Linux Process
     [Arguments]    ${ip}    ${user}    ${pass}    ${process}
     ${rc}=    Run Sudo Command On Remote System    ${ip}    sudo kill $(ps aux | grep '${process}' | awk '{print $2}'); echo $?    ${user}    ${pass}
-    Should Contain    ${rc}    0
+    Should Contain    ${rc}    0
\ No newline at end of file
diff --git a/src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.txt b/src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.txt
index 27da4b6..34223c6 100644
--- a/src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.txt
+++ b/src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.txt
@@ -1,34 +1,49 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
 *** Settings ***
 Documentation     Test successful ping from end-end
 Suite Setup       Read InputFile
-#Suite Teardown    Teardown
+Suite Teardown    Teardown
 Library           Collections
 Library           String
 Library           OperatingSystem
 Library           XML
 Library           RequestsLibrary
 Library           ../../Framework/utils/utils.py
-Resource           ../../Framework/utils/utils.robot
+Resource          ../../Framework/utils/utils.robot
 Library           ../../Framework/restApi.py
-Resource           ../../Framework/Subscriber.robot
-Resource           ../../Framework/ATTWorkFlowDriver.robot
-Resource           ../../Framework/ONU.robot
-Resource           ../../Framework/DHCP.robot
-Variables           ../../Properties/RestApiProperties.py
+Resource          ../../Framework/Subscriber.robot
+Resource          ../../Framework/ATTWorkFlowDriver.robot
+Resource          ../../Framework/ONU.robot
+Resource          ../../Framework/DHCP.robot
+Variables         ../../Properties/RestApiProperties.py
 
 *** Variables ***
 ${WHITELIST_PATHFILE}     ${CURDIR}/data/ATTWhiteList.json
 ${SUBSCRIBER_PATHFILE}    ${CURDIR}/data/ATTSubscriber.json
-${src_ip}         X.X.X.X
-${src_gateway}    X.X.X.X
-${src_user}       user
-${src_pass}       pass
-${src_iface}      eth0
-${dst_ip}         X.X.X.X
-${dst_user}       user
-${dst_pass}       pass
-${dst_gateway}    X.X.X.X
-${dst_host_ip}    X.X.X.X
+${src_ip}          X.X.X.X
+${src_gateway}     X.X.X.X
+${src_user}        user
+${src_pass}        pass
+${src_iface}       eth0
+${dst_ip}          X.X.X.X
+${dst_dp_iface}    eth0
+${dst_dp_ip}       X.X.X.X
+${dst_user}        user
+${dst_pass}        pass
+${dst_gateway}     X.X.X.X
 
 *** Test Cases ***
 Validate ONU States
@@ -55,13 +70,23 @@
     [Documentation]    Validate subscriber status in the rcordsubscriber list
     Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    ENABLED
 
+Configure QinQ Interface on Dest Server
+    [Documentation]    Configure a QinQ (802.11q) interface to pass double tagged traffic from RG
+    Add Double Vlan Interface on Host    ${dst_ip}    ${dst_user}    ${dst_pass}    ${dst_dp_iface}    ${s_tag}    ${c_tag}
+    Add IP Address on Interface on Host    ${dst_ip}    ${dst_user}    ${dst_pass}    ${dst_dp_ip}/24    ${dst_dp_iface}.${stag}.${c_tag}
+    Add Route to Remote Host    ${dst_ip}    ${dst_user}    ${dst_pass}    ${dst_dp_ip}    ${src_gateway}    ${dst_dp_iface}.${stag}.${c_tag}
+
+Start DHCP Server on QinQ Interface
+    [Documentation]    Start dhcpd on the previously configured interface on the destination server
+    Start DHCP Server on Remote Host    ${dst_ip}    ${dst_user}    ${dst_pass}    ${dst_dp_iface}.${stag}.${ctag}
+
 Execute Dhclient on RG
     [Documentation]    Run dhclient on the dataplane interface on the RG
     Send Dhclient Request    ${src_ip}    ${src_user}    ${src_pass}    ${src_iface}
 
 Test E2E Connectivity
     [Documentation]    Test pings after subscriber has been authenticated + enabled
-    Wait Until Keyword Succeeds    60s    2s    Test Ping    PASS    ${src_ip}    ${src_user}    ${src_pass}    ${dst_host_ip}
+    Wait Until Keyword Succeeds    60s    5s    Test Ping    PASS    ${src_ip}    ${src_user}    ${src_pass}    ${dst_dp_ip}
 
 *** Keywords ***
 Read InputFile
@@ -74,17 +99,23 @@
     Set Global Variable    ${onu_device}
     ${SubscriberList}=    utils.jsonToList    ${SUBSCRIBER_PATHFILE}   SubscriberInfo
     Set Global Variable    ${slist}    ${SubscriberList}
+    ${SubscriberList} =    Get Variable Value    ${slist}
+    ${SubscriberDict}=    utils.listToDict    ${SubscriberList}    0
+    ${s_tag}=    utils.getFieldValueFromDict    ${SubscriberDict}   s_tag
+    ${c_tag}=    utils.getFieldValueFromDict    ${SubscriberDict}   c_tag
+    Set Suite Variable    ${s_tag}
+    Set Suite Variable    ${c_tag}
 
 Teardown
     [Documentation]    Delete xos objects and kill process on src host
-    ##in some tests, these processes will not get started
     Run Keyword And Ignore Error    Kill Linux Process    ${src_ip}    ${src_user}    ${src_pass}    [w]pa_supplicant
     Run Keyword And Ignore Error    Kill Linux Process    ${src_ip}    ${src_user}    ${src_pass}    [d]hclient
+    Run Keyword And Ignore Error    Kill Linux Process    ${dst_ip}    ${dst_user}    ${dst_pass}    [d]hcpd
     Delete IP Addresses from Interface on Remote Host    ${src_ip}    ${src_user}    ${src_pass}    ${src_iface}
-    Clean Up Objects   ${VOLT_SUBSCRIBER}
-    ##need to keep retrying to delete olt device until subscriber is completely removed from xos
-    Wait Until Keyword Succeeds    60s    2s    Clean Up Objects   ${VOLT_DEVICE}
-    Clean Up Objects   ${ATT_WHITELIST}
+    Delete Interface on Remote Host    ${dst_ip}    ${dst_user}    ${dst_pass}    ${dst_dp_iface}.${stag}
+    #Clean Up Objects   ${VOLT_SUBSCRIBER}
+    #Clean Up Objects   ${VOLT_DEVICE}
+    #Clean Up Objects   ${ATT_WHITELIST}
 
 Validate ONU States
     [Arguments]    ${expected_op_status}    ${expected_admin_status}
@@ -101,4 +132,4 @@
 Validate Subscriber Status
     [Arguments]    ${exepected_status}
     ${status}    Subscriber Status Check    ${onu_device}
-    Should Be Equal    ${status}    ${exepected_status}
+    Should Be Equal    ${status}    ${exepected_status}
\ No newline at end of file
