diff --git a/Jenkinsfile-rcord b/Jenkinsfile-rcord
index dce5948..31142f5 100644
--- a/Jenkinsfile-rcord
+++ b/Jenkinsfile-rcord
@@ -31,6 +31,12 @@
         sudo ./prerequisites.sh --cord
         """)
     }
+    stage('Bring up Cord-Test Container') {
+        runHeadNodeCmd("""
+        cd /opt/cord/test/cord-tester/src/test/setup
+        sudo ./cord-test.py setup -m manifest-onf-cord.json
+        """)
+    }
     stage('Configure Fabric for E2E testing') {
         //FIXME: this only works for PODs with 2 leaf switches
         fabricIpPrefix = pod_config.fabric_ip.split(/\.\d+\.\d+\/24/)[0]
@@ -130,6 +136,19 @@
             } catch(error) { currentBuild.result = 'FAILURE' }
         }
     }
+    stage('Dataplane Test') {
+        timeout(10) {
+            try {
+                runHeadNodeCmd("""
+                cd /opt/cord/test/cord-tester/src/test/vsg/
+                rm -r Log/ || true
+                ssh-agent bash
+                ssh-add
+                pybot -L TRACE -d Log -T vsg_dataplane_test.robot
+                """)
+            } catch(error) { currentBuild.result = 'FAILURE' }
+        }
+    }
     stage('Publish') {
         try {
             sh """
@@ -137,6 +156,7 @@
             scp -r ${deployment_config.head.user}@${deployment_config.head.ip}:/opt/cord/test/cord-tester/src/test/cord-api/Log/* ./RobotLogs || true
             scp -r ${deployment_config.head.user}@${deployment_config.head.ip}:/opt/cord/test/cord-tester/src/test/robot/Log/* ./RobotLogs || true
             scp -r ${deployment_config.head.user}@${deployment_config.head.ip}:/opt/cord/test/cord-tester/src/test/diag/Log/* ./RobotLogs || true
+            scp -r ${deployment_config.head.user}@${deployment_config.head.ip}:/opt/cord/test/cord-tester/src/test/vsg/Log/* ./RobotLogs || true
             """
             step([$class: 'RobotPublisher',
                 disableArchiveOutput: false,
diff --git a/src/test/setup/flex_fabric_test_netcfg.json b/src/test/setup/flex_fabric_test_netcfg.json
new file mode 100644
index 0000000..93b3db3
--- /dev/null
+++ b/src/test/setup/flex_fabric_test_netcfg.json
@@ -0,0 +1,100 @@
+{
+    "devices": {
+        "of:0000cc37ab5b6da8": {
+            "segmentrouting": {
+                "name": "device-cc37ab5b6da8",
+                "ipv4NodeSid": 100,
+                "ipv4Loopback": "10.6.0.104",
+                "routerMac": "cc:37:ab:5b:6d:a8",
+                "isEdgeRouter": false,
+                "adjacencySids": []
+            }
+        },
+        "of:0000cc37abd93769": {
+            "segmentrouting": {
+                "name": "device-cc37abd93769",
+                "ipv4NodeSid": 101,
+                "ipv4Loopback": "10.6.0.103",
+                "routerMac": "cc:37:ab:d9:37:69",
+                "isEdgeRouter": true,
+                "adjacencySids": []
+            }
+        },
+        "of:0000cc37abb6b564": {
+            "segmentrouting": {
+                "name": "device-cc37abb6b564",
+                "ipv4NodeSid": 102,
+                "ipv4Loopback": "10.6.0.102",
+                "routerMac": "cc:37:ab:b6:b5:64",
+                "isEdgeRouter": true,
+                "adjacencySids": []
+            }
+        },
+        "of:0000cc37abd9386d": {
+            "segmentrouting": {
+                "name": "device-cc37abd9386d",
+                "ipv4NodeSid": 103,
+                "ipv4Loopback": "10.6.0.101",
+                "routerMac": "cc:37:ab:d9:38:6d",
+                "isEdgeRouter": false,
+                "adjacencySids": []
+            }
+        }
+    },
+    "ports": {
+        "of:0000cc37abb6b564/2": {
+            "interfaces": [
+                {
+                    "ips": [ "10.6.2.254/24" ],
+                    "vlan-untagged" : 2
+                }
+            ]
+        },
+        "of:0000cc37abd93769/2": {
+            "interfaces": [
+                {
+                    "ips": [ "10.6.1.254/24" ],
+                    "vlan-untagged" : 1
+                }
+            ]
+        },
+        "of:0000cc37abb6b564/1": {
+            "interfaces": [
+                {
+                    "ips": [ "10.6.2.254/24" ],
+                    "vlan-untagged" : 2
+                }
+            ]
+        },
+        "of:0000cc37abd93769/1": {
+            "interfaces": [
+                {
+                    "ips": [ "10.6.1.254/24" ],
+                    "vlan-untagged" : 1
+                }
+            ]
+        }
+    },
+    "apps" : {
+        "org.onosproject.segmentrouting" : {
+            "segmentrouting" : {
+                "vRouterMacs" : [ "a4:23:05:06:01:01" ]
+            },
+            "xconnect": {
+              "of:0000cc37abd93769": [{
+                "vlan": 333,
+                "ports": [1, 2],
+                "name": "vsg-1"
+                },
+                {
+                "vlan": 555,
+                "ports": [1, 2],
+                "name": "vsg-2"},
+                {
+                "vlan": 666,
+                "ports": [1, 2],
+                "name": "vsg-3"}]
+           }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/test/setup/qct_fabric_test_netcfg.json b/src/test/setup/qct_fabric_test_netcfg.json
new file mode 100644
index 0000000..b839cc0
--- /dev/null
+++ b/src/test/setup/qct_fabric_test_netcfg.json
@@ -0,0 +1,92 @@
+{
+    "devices": {
+        "of:0000480fcfaeee2a": {
+            "segmentrouting": {
+                "name": "device-480fcfaeee2a",
+                "ipv4NodeSid": 100,
+                "ipv4Loopback": "10.6.0.103",
+                "routerMac": "48:0f:cf:ae:ee:2a",
+                "isEdgeRouter": true,
+                "adjacencySids": []
+            }
+        },
+        "of:0000480fcfaede26": {
+            "segmentrouting": {
+                "name": "device-480fcfaede26",
+                "ipv4NodeSid": 101,
+                "ipv4Loopback": "10.6.0.101",
+                "routerMac": "48:0f:cf:ae:de:26",
+                "isEdgeRouter": true,
+                "adjacencySids": []
+            }
+        },
+        "of:0000480fcfae9d58": {
+            "segmentrouting": {
+                "name": "device-480fcfae9d58",
+                "ipv4NodeSid": 102,
+                "ipv4Loopback": "10.6.0.104",
+                "routerMac": "48:0f:cf:ae:9d:58",
+                "isEdgeRouter": false,
+                "adjacencySids": []
+            }
+        },
+        "of:0000480fcfaecc24": {
+            "segmentrouting": {
+                "name": "device-480fcfaecc24",
+                "ipv4NodeSid": 103,
+                "ipv4Loopback": "10.6.0.102",
+                "routerMac": "48:0f:cf:ae:cc:24",
+                "isEdgeRouter": false,
+                "adjacencySids": []
+            }
+        }
+    },
+    "ports": {
+        "of:0000480fcfaeee2a/1": {
+            "interfaces": [
+                {
+                    "ips": [ "10.6.2.254/24" ],
+                    "vlan-untagged" : 2
+                }
+            ]
+        },
+        "of:0000480fcfaede26/1": {
+            "interfaces": [
+                {
+                    "ips": [ "10.6.1.254/24" ],
+                    "vlan-untagged" : 1
+                }
+            ]
+        },
+        "of:0000480fcfaede26/2": {
+            "interfaces": [
+                {
+                    "ips": [ "10.6.1.254/24" ],
+                    "vlan-untagged" : 1
+                }
+            ]
+        }
+    },
+    "apps" : {
+        "org.onosproject.segmentrouting" : {
+            "segmentrouting" : {
+                "vRouterMacs" : [ "a4:23:05:06:01:01" ]
+            },
+            "xconnect": {
+              "of:0000480fcfaede26": [{
+                "vlan": 333,
+                "ports": [1, 2],
+                "name": "vsg-1"
+                },
+                {
+                "vlan": 555,
+                "ports": [1, 2],
+                "name": "vsg-2"},
+                {
+                "vlan": 666,
+                "ports": [1, 2],
+                "name": "vsg-3"}]
+           }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/test/vsg/vsg_dataplane_test.robot b/src/test/vsg/vsg_dataplane_test.robot
new file mode 100644
index 0000000..c57e795
--- /dev/null
+++ b/src/test/vsg/vsg_dataplane_test.robot
@@ -0,0 +1,82 @@
+# Copyright 2018-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 ***
+Test Timeout      2 minutes
+Documentation     Validates external connectivity from Cord-Tester Container through VSG Subscriber
+Library           OperatingSystem
+Library           SSHLibrary
+Library           /opt/cord/test/cord-tester/src/test/cord-api/Framework/utils/utils.py
+Library           /opt/cord/test/cord-tester/src/test/cord-api/Framework/utils/onosUtils.py
+Library           /opt/cord/test/cord-tester/src/test/cord-api/Framework/utils/openstackUtils.py
+Resource          /opt/cord/test/cord-tester/src/test/cord-api/Framework/utils/utils.robot
+
+*** Variables ***
+${netcfg_file}    qct_fabric_test_netcfg.json
+
+*** Test Cases ***
+Configure X-Connects for 3 Subscribers
+    [Documentation]    Configures the cross connect on the fabric switch with s-tags for the subscribers created via control-plane tests  on the correct ports
+    ${netcfg_init}=    onosUtils.onos_command_execute    onos-fabric    8101    netcfg
+    Log    ${netcfg_init}
+    Run    http -a onos:rocks DELETE http://onos-fabric:8181/onos/v1/network/configuration/
+    Run    http -a onos:rocks POST http://onos-fabric:8181/onos/v1/network/configuration/ < /opt/cord/test/cord-tester/src/test/setup/${netcfg_file}
+    Run    http -a onos:rocks DELETE http://onos-fabric:8181/onos/v1/applications/org.onosproject.segmentrouting/active
+    Run    http -a onos:rocks POST http://onos-fabric:8181/onos/v1/applications/org.onosproject.segmentrouting/active
+    Sleep    5
+    ${netcfg}=    onosUtils.onos_command_execute    onos-fabric    8101    netcfg
+    Log    ${netcfg}
+    Should Contain    ${netcfg}    vsg-1
+    Should Contain    ${netcfg}    vsg-2
+    Should Contain    ${netcfg}    vsg-3
+    Should Contain    ${netcfg}    "vlan" : 333
+    Should Contain    ${netcfg}    "vlan" : 555
+    Should Contain    ${netcfg}    "vlan" : 666
+
+Get VSG Subscriber and Tags
+    [Documentation]    Retrieves compute node connected on leaf-1 and s/c tags for that particular subscriber
+    ${cmd}=    Set Variable    cordvtn-nodes | grep 10.6.1
+    ${cnode}=    onosUtils.onos_command_execute    onos-cord    8102    ${cmd}
+    @{cnode_on_leaf_1}=    Split String    ${cnode}
+    ${novalist}=    Run    . /opt/cord_profile/admin-openrc.sh; nova list --all-tenants | awk '{print $2}' | grep '[a-z]'
+    Log    ${novalist}
+    @{nova_ids}=    Split To Lines    ${novalist}
+    : FOR    ${nova_id}    IN    @{nova_ids}
+    \    ${node}=    Run    . /opt/cord_profile/admin-openrc.sh; nova show ${nova_id} | grep :host | awk '{print $4}'
+    \    Run Keyword If    '${node}' == '${cnode_on_leaf_1[0]}'    Exit For Loop
+    ${mgmt_ip}=    Run    . /opt/cord_profile/admin-openrc.sh; nova show ${nova_id} | grep management | awk '{print $5}'
+    ## Get s/c tags for vsg
+    Run    ssh-agent bash \r
+    Run    ssh-add
+    ${result}=    Run    ssh -A ubuntu@${cnode_on_leaf_1[0]} ssh ubuntu@${mgmt_ip} sudo docker ps | grep vsg- | awk '{print $10}'
+    @{tags}=    Split String    ${result}    -
+    ${s_tag}=    Set Variable    ${tags[1]}
+    ${c_tag}=    Set Variable    ${tags[2]}
+    Set Suite Variable    ${s_tag}
+    Set Suite Variable    ${c_tag}
+
+Execute Dataplane Test
+    [Documentation]    Configures interfaces on cord-tester container to connect to vsg instance and validates traffic
+    ${i_num}=    Set Variable If
+    ...    '${s_tag}' == '333'    1
+    ...    '${s_tag}' == '555'    2
+    ...    '${s_tag}' == '666'    3
+    ${output}=    Run    docker exec cord-tester1 bash -c "sudo echo 'nameserver 192.168.0.1' > /etc/resolv.conf"
+    ${output}=    Run    docker exec cord-tester1 bash -c "sudo dhclient vcpe${i_num}.${s_tag}.${c_tag}"
+    Sleep    5
+    ${output}=    Run    docker exec cord-tester1 bash -c "sudo route add default gw 192.168.0.1 vcpe${i_num}.${s_tag}.${c_tag}"
+    ${output}=    Run    docker exec cord-tester1 bash -c "ping -c 3 -I vcpe${i_num}.${s_tag}.${c_tag} 8.8.8.8"
+    Log To Console    \n ${output}
+    Should Contain   ${output}    64 bytes from 8.8.8.8
+    Should Not Contain    ${output}    100% packet loss
\ No newline at end of file
