diff --git a/data/variables.py b/data/variables.py
index 5361228..0658cb6 100755
--- a/data/variables.py
+++ b/data/variables.py
@@ -200,6 +200,9 @@
 EVENT_LOG_URI = SYSTEM_BASE_URI + 'LogServices/EventLog/'
 DUMP_URI = SYSTEM_BASE_URI + 'LogServices/Dump/'
 
+BIOS_ATTR_URI = SYSTEM_BASE_URI + 'Bios'
+BIOS_ATTR_SETTINGS_URI = BIOS_ATTR_URI + '/Settings'
+
 '''
   QEMU HTTPS variable:
 
diff --git a/lib/pldm_utils.py b/lib/pldm_utils.py
index 9008d57..e22af25 100644
--- a/lib/pldm_utils.py
+++ b/lib/pldm_utils.py
@@ -44,3 +44,63 @@
 
     stdout, stderr, rc = bsu.bmc_execute_command('pldmtool ' + option_string, **bsu_options)
     return json.loads(stdout)
+
+
+def GenerateBIOSAttrHandleValueDict(attr_val_table_data):
+    """
+    From pldmtool bios GetBIOSTable of AttributeValueTable generate dictionary of
+    for BIOS attribute and its value.
+
+    Description of argument(s):
+    attr_val_table_data     pldmtool output from GetBIOSTable table type AttributeValueTable
+                             e.g.
+                            [{
+                                  "AttributeHandle": 20,
+                                  "AttributeNameHandle": "23(pvm-pcie-error-inject)",
+                                  "AttributeType": "BIOSEnumeration",
+                                  "NumberOfPossibleValues": 2,
+                                  "PossibleValueStringHandle[0]": "3(Disabled)",
+                                  "PossibleValueStringHandle[1]": "4(Enabled)",
+                                  "NumberOfDefaultValues": 1,
+                                  "DefaultValueStringHandleIndex[0]": 1,
+                                  "StringHandle": "4(Enabled)"
+                             },
+                             {
+                                  "AttributeHandle": 26,
+                                  "AttributeNameHandle": "28(pvm_fw_boot_side)",
+                                  "AttributeType": "BIOSEnumeration",
+                                  "NumberOfPossibleValues": 2,
+                                  "PossibleValueStringHandle[0]": "11(Perm)",
+                                  "PossibleValueStringHandle[1]": "15(Temp)",
+                                  "NumberOfDefaultValues": 1,
+                                  "DefaultValueStringHandleIndex[0]": 1,
+                                  "StringHandle": "15(Temp)"
+                             }]
+
+    @return                  Dictionary of BIOS attribute and its value.
+                             e.g. {
+                                   'pvm_pcie_error_inject': ['Disabled', 'Enabled'],
+                                   'pvm-fw-boot-side': ['Perm', 'Temp']
+                                  }
+    """
+
+    attr_val_data_dict = {}
+    for item in attr_val_table_data:
+        for attr in item:
+            if (attr == "NumberOfPossibleValues"):
+                value_list = []
+                for i in range(0, int(item[attr])):
+                    attr_values = item["PossibleValueStringHandle[" + str(i) + "]"]
+                    value = re.search(r'\((.*?)\)', attr_values).group(1)
+                    if value:
+                        # Example:
+                        # value = '"Power Off"'
+                        if ' ' in value:
+                            value = '"' + value + '"'
+                        value_list.append(value)
+                    else:
+                        value_list.append('')
+
+                attr_handle = re.findall(r'\(.*?\)', item["AttributeNameHandle"])
+                attr_val_data_dict[attr_handle[0][1:-1]] = value_list
+    return attr_val_data_dict
diff --git a/pldm/test_pldm_bios.robot b/pldm/test_pldm_bios.robot
index a5ef65d..0fc9aca 100644
--- a/pldm/test_pldm_bios.robot
+++ b/pldm/test_pldm_bios.robot
@@ -91,8 +91,7 @@
     FOR  ${key}  IN  @{keys}
         Append To List  ${string_list}  ${pldm_output['${key}']}
     END
-    Log To Console  ${string_list}
-    Valid List  string_list  required_values=${RESPONSE_LIST_GETBIOSTABLE_STRTABLE}
+    Valid List  string_list  required_values=${RESPONSE_LIST_GETBIOSTABLE_ATTRTABLE}
 
 
 Verify GetBIOSTable For AttributeTable
@@ -139,9 +138,57 @@
     END
     Valid List  attr_val_list  required_values=${RESPONSE_LIST_GETBIOSTABLE_ATTRVALTABLE}
 
+
+Verify SetBIOSAttributeCurrentValue
+
+    [Documentation]  Verify SetBIOSAttributeCurrentValue with the
+    ...              various BIOS attribute handle and its values.
+    [Tags]  Verify_SetBIOSAttributeCurrentValue
+
+    # Example output:
+    #
+    # pldmtool bios SetBIOSAttributeCurrentValue -a vmi_hostname -d BMC
+    # {
+    #     "Response": "SUCCESS"
+    # }
+
+    ${pldm_output}=  Pldmtool  bios GetBIOSTable --type AttributeTable
+    Log  ${pldm_output}
+    ${attr_val_data}=  GenerateBIOSAttrHandleValueDict  ${pldm_output}
+    Log  ${attr_val_data}
+    @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
+    FOR  ${i}  IN  @{attr_handles}
+        @{attr_val_list}=  Set Variable  ${attr_val_data}[${i}]
+        Validate SetBIOSAttributeCurrentValue  ${i}  @{attr_val_list}
+    END
+
+Verify GetBIOSAttributeCurrentValueByHandle
+
+    [Documentation]  Verify GetBIOSAttributeCurrentValueByHandle with the
+    ...              various BIOS attribute handle and its values.
+    [Tags]  Verify_GetBIOSAttributeCurrentValueByHandle
+
+    # Example output:
+    #
+    # pldmtool bios GetBIOSAttributeCurrentValueByHandle -a pvm_fw_boot_side
+    # {
+    #     "CurrentValue": "Temp"
+    # }
+
+    ${pldm_output}=  Pldmtool  bios GetBIOSTable --type AttributeTable
+    ${attr_val_data}=  GenerateBIOSAttrHandleValueDict  ${pldm_output}
+    @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
+    FOR  ${i}  IN  @{attr_handles}
+        ${cur_attr}=  Pldmtool  bios GetBIOSAttributeCurrentValueByHandle -a ${i}
+        @{attr_val_list}=  Set Variable  ${attr_val_data}[${i}]
+        Run Keyword If  '${cur_attr['CurrentValue']}' not in @{attr_val_list}
+        ...  Fail  Invalid GetBIOSAttributeCurrentValueByHandle value found.
+    END
+
 *** Keywords ***
 
 PLDM BIOS Suite Cleanup
+
     [Documentation]  Perform pldm BIOS suite cleanup.
 
     ${result}=  Get Current Date  UTC  exclude_millis=True
@@ -149,3 +196,22 @@
     ${cmd_set_date_time}=  Evaluate  $CMD_SETDATETIME % '${current_date_time}'
     ${pldm_output}=  Pldmtool  ${cmd_set_date_time}
     Valid Value  pldm_output['Response']  ['SUCCESS']
+
+Validate SetBIOSAttributeCurrentValue
+
+    [Documentation]  Set BIOS attribute with the available attribute handle
+    ...              values and revert back to original attribute handle value.
+    [Arguments]  ${attr_handle}  @{attr_val_list}
+
+    # Description of argument(s):
+    # attr_handle    BIOS attribute handle (e.g. pvm_system_power_off_policy).
+    # attr_val_list  List of the attribute values for the given attribute handle
+    #                (e.g. ['"Power Off"', '"Stay On"', 'Automatic']).
+
+    ${cur_attr}=  Pldmtool  bios GetBIOSAttributeCurrentValueByHandle -a ${attr_handle}
+    FOR  ${j}  IN  @{attr_val_list}
+        ${pldm_resp}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${attr_handle} -d ${j}
+        Valid Value  pldm_resp['Response']  ['SUCCESS']
+    END
+    ${pldm_resp}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${attr_handle} -d ${cur_attr['CurrentValue']}
+    Valid Value  pldm_resp['Response']  ['SUCCESS']
