diff --git a/openpower/vpd/test_vpd_tool.robot b/openpower/vpd/test_vpd_tool.robot
index 6cb0bd0..e8d8d44 100644
--- a/openpower/vpd/test_vpd_tool.robot
+++ b/openpower/vpd/test_vpd_tool.robot
@@ -14,6 +14,8 @@
 ${DR_WRITE_VALUE}              XYZ Component
 ${PN_WRITE_VALUE}              XYZ1234
 ${SN_WRITE_VALUE}              ABCD12345678
+@{fields}                      PN  SN  LocationCode
+@{vpd_fields}                  PN  SN
 
 *** Test Cases ***
 
@@ -29,10 +31,11 @@
 
 
 Verify VPD Component Read
-    [Documentation]  Verify details of VPD component via vpdtool.
+    [Documentation]  Verify details of all VPD component via vpdtool.
     [Tags]  Verify_VPD_Component_Read
 
-    ${components}=  Get Dictionary Keys  ${VPD_DETAILS}
+    ${vpd_records}=  Vpdtool  -i
+    ${components}=  Get Dictionary Keys  ${vpd_records}
     FOR  ${component}  IN  @{components}
         Verify VPD Component Read Operation  ${component}
     END
@@ -42,9 +45,15 @@
     [Documentation]  Verify reading VPD field value via vpdtool.
     [Tags]  Verify_VPD_Field_Read
 
-    ${components}=  Get Dictionary Keys  ${VPD_DETAILS}
+    ${vpd_records}=  Vpdtool  -i
+    ${components}=  Get Dictionary Keys  ${vpd_records}
     FOR  ${component}  IN  @{components}
-        Verify VPD Field Read Operation  ${component}
+       #  drive component field values response in ascii format due to that skipping here. 
+       IF  'drive' in '${component}'
+           Continue FOR Loop
+       ELSE
+           Verify VPD Field Read Operation  ${component}
+       END
     END
 
 
@@ -63,35 +72,6 @@
 
 *** Keywords ***
 
-Verify VPD Data
-    [Documentation]  Verify VPD data of given component.
-    [Arguments]  ${vpd_records}  ${component}
-    # Description of arguments:
-    # vpd_records     All VPD data Via vpdtool.
-    # component       VPD component (e.g. /system/chassis/motherboard/vdd_vrm1).
-
-    # Verification of "CC" and "FN" will be added later.
-    @{vpd_fields}=  Create List  DR  LocationCode  SN  PN
-    FOR  ${field}  IN  @{vpd_fields}
-      ${busctl_field}=  Set Variable If
-      ...  '${field}' == 'DR'  xyz.openbmc_project.Inventory.Item PrettyName
-      ...  '${field}' == 'LocationCode'  com.ibm.ipzvpd.Location LocationCode
-      ...  '${field}' == 'PN'  xyz.openbmc_project.Inventory.Decorator.Asset PartNumber
-      ...  '${field}' == 'SN'  xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber
-
-      ${cmd}=  Catenate  ${CMD_GET_PROPERTY_INVENTORY} /xyz/openbmc_project/inventory${component}
-      ...  ${busctl_field}
-      ${cmd_output}=  BMC Execute Command  ${cmd}
-      # Example of cmd_output:
-      #   [0]:                                            s "ABCD.XY1.1234567-P0"
-      #   [1]:
-      #   [2]:                                            0
-
-      Valid Value  vpd_records['${component}']['${field}']  ['${cmd_output[0].split('"')[1].strip('"')}']
-    END
-    Valid Value  vpd_records['${component}']['type']  ['${VPD_DETAILS['${component}']['type']}']
-
-
 Verify VPD Component Read Operation
     [Documentation]  Verify reading VPD details of given component via vpdtool.
     [Arguments]  ${component}
@@ -110,7 +90,34 @@
     #    [SN]:                                         YL2E32010000
     #    [PN]:                                         PN12345
 
-    Verify VPD Data  ${vpd_records}  ${component}
+    ${vpdtool_res}=  Set To Dictionary  ${vpd_records}[${component}]
+    FOR  ${vpd_field}  IN  @{fields}
+        ${match_key_exists}=  Run Keyword And Return Status 
+        ...  Dictionary Should Contain Key  ${vpdtool_res}  ${vpd_field}
+          IF  '${match_key_exists}' == 'True'
+              #  drive components busctl field response in ascii due to that checking only locationcode.
+              IF  'drive' in '${component}'
+                  ${vpd_field}=  Set Variable  LocationCode
+              END
+              # Skip check if VPD field is empty. 
+              Run Keyword If  '${vpd_records['${component}']['${vpd_field}']}' == ''
+              ...  Continue For Loop
+              
+              # Get VPD field values via busctl.
+              ${busctl_field}=  Set Variable If
+              ...  '${vpd_field}' == 'LocationCode'  com.ibm.ipzvpd.Location LocationCode
+              ...  '${vpd_field}' == 'PN'  xyz.openbmc_project.Inventory.Decorator.Asset PartNumber
+              ...  '${vpd_field}' == 'SN'  xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber
+              ${cmd}=  Catenate  ${CMD_GET_PROPERTY_INVENTORY}
+              ...  /xyz/openbmc_project/inventory${component} ${busctl_field}
+              ${cmd_output}=  BMC Execute Command  ${cmd}
+              # Check whether the vpdtool response and busctl response matching.
+              Valid Value  vpd_records['${component}']['${vpd_field}'] 
+              ...  ['${cmd_output[0].split('"')[1].strip('"')}']
+          ELSE
+             Continue For Loop
+          END
+    END
 
 
 Verify VPD Field Read Operation
@@ -119,11 +126,30 @@
     # Description of arguments:
     # component       VDP component (e.g. /system/chassis/motherboard/vdd_vrm1).
 
-    # Verification of "CC" and "FN" will be added later.
-    @{vpd_fields}=  Create List  DR  SN  PN
+    ${vpd_records}=  Vpdtool  -o -O ${component}
+    ${vpdtool_res}=  Set To Dictionary  ${vpd_records}[${component}]
+    FOR  ${field}  IN  @{vpd_fields}
+         ${match_key_exists}=  Run Keyword And Return Status
+         ...  Dictionary Should Contain Key  ${vpdtool_res}  ${field}
+         IF  '${match_key_exists}' == 'True'
+             ${vpd_records}=  Vpdtool  -r -O ${component} -R VINI -K ${field}
+             # Skip check if field value is empty.
+             Run Keyword If  '${vpd_records['${component}']['${field}']}' == ''
+             ...  Continue For Loop
 
-    FOR  ${fields}  IN   @{vpd_fields}
-        Verify VPD Field Value  ${component}  ${fields}
+             ${busctl_field}=  Set Variable If
+             ...  '${field}' == 'PN'  xyz.openbmc_project.Inventory.Decorator.Asset PartNumber
+             ...  '${field}' == 'SN'  xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber
+             ${cmd}=  Catenate  ${CMD_GET_PROPERTY_INVENTORY}
+             ...  /xyz/openbmc_project/inventory${component} ${busctl_field}
+             ${cmd_output}=  BMC Execute Command  ${cmd}
+
+             # Check vpdtool response and busctl response for the component field.
+             Valid Value  vpd_records['${component}']['${field}']
+             ...  ['${cmd_output[0].split('"')[1].strip('"')}']
+         ELSE
+            Continue For Loop
+         END
     END
 
 
