diff --git a/openpower/vpd/test_vpd.robot b/openpower/vpd/test_vpd.robot
deleted file mode 100644
index d12c163..0000000
--- a/openpower/vpd/test_vpd.robot
+++ /dev/null
@@ -1,81 +0,0 @@
-*** Settings ***
-Documentation   This suite tests Vital Product Data (VPD) via busctl command.
-...             Before running this suite, create a data/vpd_data.py file with
-...             all VPD data to verify from system.
-...
-...             #!/usr/bin/env python3
-...             VPD_DETAILS = {
-...                 "/system/chassis/motherboard": {
-...                     "DR": "SYSTEM BACKPLANE",
-...                     "LocationCode": "ABCD.EF1.1234567-P0",
-...                     "PN": "PN12345",
-...                     "SN": "SN1234567890",
-...                 },
-...                 "/system/chassis/motherboard/base_op_panel_blyth": {
-...                     "DR": "CEC OP PANEL",
-...                     "LocationCode": "ABCD.EF1.1234567-D0",
-...                     "PN": "PN12345",
-...                     "SN": "SN1234567890",
-...                 }
-...             }
-
-Variables       ../../data/vpd_data.py
-Resource        ../../lib/openbmc_ffdc.robot
-
-Test Teardown   FFDC On Test Case Fail
-
-
-*** Variables ***
-
-${CMD_INVENTORY_PREFIX}  busctl get-property xyz.openbmc_project.Inventory.Manager
-...  /xyz/openbmc_project/inventory
-
-
-*** Test Cases ***
-
-Verify Vital Product Data
-    [Documentation]  Verify VPD via busctl command.
-    [Tags]  Verify_Vital_Product_Data
-
-    ${components}=  Get Dictionary Keys  ${VPD_DETAILS}
-    FOR  ${component}  IN  @{components}
-        Verify VPD Via Busctl  ${component}
-    END
-
-
-*** Keywords ***
-
-Verify VPD Via Busctl
-    [Documentation]  Verify VPD details via busctl.
-    [Arguments]  ${component}
-
-    # Description of argument(s):
-    # component       VPD component (e.g. /system/chassis/motherboard/vdd_vrm1).
-
-    # Verify Location code
-    ${busctl_output}=  BMC Execute Command
-    ...  ${CMD_INVENTORY_PREFIX}${component} com.ibm.ipzvpd.Location LocationCode
-    Should Be Equal  ${busctl_output[0].split('"')[1].strip('"')}
-    ...  ${VPD_DETAILS['${component}']['LocationCode']}
-
-    # Skip check for other VPD fields if its an ethernet component.
-    ${status}=  Run Keyword And Return Status  Should Contain  ${component}  ethernet
-    Return From Keyword If  '${status}' == 'True'
-
-    # Verify PrettyName
-    ${busctl_output}=  BMC Execute Command
-    ...  ${CMD_INVENTORY_PREFIX}${component} xyz.openbmc_project.Inventory.Item PrettyName
-    Should Contain  ${busctl_output[0].split('"')[1].strip('"')}
-    ...  ${VPD_DETAILS['${component}']['DR']}
-
-    # Verify Part Number
-    ${busctl_output}=  BMC Execute Command
-    ...  ${CMD_INVENTORY_PREFIX}${component} xyz.openbmc_project.Inventory.Decorator.Asset PartNumber
-    Should Be Equal  ${busctl_output[0].split('"')[1].strip('"')}
-    ...  ${VPD_DETAILS['${component}']['PN']}
-
-    # Verify Serial Number
-    ${busctl_output}=  BMC Execute Command
-    ...  ${CMD_INVENTORY_PREFIX}${component} xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber
-    Should Be Equal  ${busctl_output[0].split('"')[1].strip('"')}
-    ...  ${VPD_DETAILS['${component}']['SN']}
