diff --git a/data/pldm_variables.py b/data/pldm_variables.py
index 1c030b3..d836b4d 100755
--- a/data/pldm_variables.py
+++ b/data/pldm_variables.py
@@ -120,3 +120,70 @@
 
 '''
 CMD_SETDATETIME = 'bios SetDateTime -d %s'
+
+
+CMD_GETPDR = 'platform GetPDR -d %s'
+
+'''
+e.g. : SetStateEffecterStates usage
+
+pldmtool platform GetPDR -d <effecterID, requestSet, effecterState>
+
+pldmtool platform SetStateEffecterStates -d 1 1 1
+
+'''
+
+CMD_SETSTATEEFFECTERSTATES = 'platform SetStateEffecterStates -d %s'
+
+# GetPDR parsed response message for record handle.
+# Dictionary value array holds the expected output for record handle 1, 2.
+# e.g. : 'nextrecordhandle': ['0', '2']
+#
+# Note :
+#      Record handle - 0 is default &  has same behaviour as record handle 1
+#      Only record handle 0, 1, 2 are supported as of now.
+
+RESPONSE_DICT_GETPDR = {
+    'nextrecordhandle': ['0', '2'],
+    'responsecount': ['29', '30'],
+    'recordhandle': ['1', '2'],
+    'pdrheaderversion': ['1'],
+    'pdrtype': ['11'],
+    'recordchangenumber': ['0'],
+    'datalength': ['19', '20'],
+    'pldmterminushandle': ['0'],
+    'effecterid': ['1', '2'],
+    'entitytype': ['33', '45'],
+    'entityinstancenumber': ['0'],
+    'containerid': ['0'],
+    'effectersemanticid': ['0'],
+    'effecterinit': ['0'],
+    'effecterdescriptionpdr': ['false'],
+    'compositeeffectercount': ['1'],
+    'statesetid': ['196', '260'],
+    'possiblestatessize': ['1', '2'],
+    'possiblestates': ['6', '0']}
+
+RESPONSE_DICT_GETFRURECORDTABLEMETADATA = {
+    'frudatamajorversion': ['1'],
+    'frudataminorversion': ['0'],
+    'frutablemaximumsize': ['4294967295'],
+    'frutablelength': ['60'],
+    'total_number_of_record_set_identifiers_in_table': ['1'],
+    'total_number_of_records_in_table': ['1']}
+
+RESPONSE_DICT_GETBIOSTABLE_STRTABLE = {
+    'biosstringhandle': ['BIOSString'],
+    '0': ['Allowed'],
+    '1': ['Disabled'],
+    '2': ['Enabled'],
+    '3': ['Not Allowed'],
+    '4': ['Perm'],
+    '5': ['Temp'],
+    '6': ['pvm-fw-boot-side'],
+    '7': ['pvm-inband-code-update'],
+    '8': ['pvm-os-boot-side'],
+    '9': ['pvm-pcie-error-inject'],
+    '10': ['pvm-surveillance'],
+    '11': ['pvm-system-name'],
+    '12': ['vmi-if-count']}
diff --git a/lib/pldm_utils.py b/lib/pldm_utils.py
index 513e3f3..7367932 100644
--- a/lib/pldm_utils.py
+++ b/lib/pldm_utils.py
@@ -57,6 +57,7 @@
         stdout = re.sub(":\n", ":", stdout)
         # Remove first line (e.g. "Encode request successfully").
         stdout = re.sub("^.*\\n", "", stdout)
+        stdout = re.sub('\x00', "", stdout)
         result = vf.key_value_outbuf_to_dict(stdout)
         if 'supported_types' in result:
             # 'supported types' begins like this:
@@ -68,9 +69,16 @@
                 supported_types['raw'].append(record[0])
                 supported_types['text'].append(record[1].rstrip(")"))
             result['supported_types'] = supported_types
-
-        if 'date_&_time' in result:
+        elif 'date_&_time' in result:
+            # Date & Time :
+            # YYYY-MM-DD HH:MM:SS - 2020-02-24 06:44:16
             return result['yyyy-mm-dd_hh'].split(' - ')[1]
+        elif 'parsed_response_msg' in result:
+            dict_data1, dict_data2 = vf.split_dict_on_key('parsed_response_msg', result)
+            dict_data2.pop('parsed_response_msg')
+            if 'fru_datastructuretableintegritychecksum' in dict_data2:
+                dict_data2.pop('fru_datastructuretableintegritychecksum')
+            return dict_data2
 
         return result
 
diff --git a/pldm/test_pldm_base.robot b/pldm/test_pldm_base.robot
index d7f8dac..0d05182 100644
--- a/pldm/test_pldm_base.robot
+++ b/pldm/test_pldm_base.robot
@@ -10,7 +10,6 @@
 
 
 *** Test Cases ***
-
 Verify Get PLDM Types
     [Documentation]  Verify supported PLDM types.
     [Tags]  Verify_Get_PLDM_Types
@@ -53,3 +52,15 @@
     ${pldm_cmd}=  Evaluate  $CMD_GETPLDMVERSION % 'fru'
     ${pldm_output}=  Pldmtool  ${pldm_cmd}
     Valid Value  pldm_output['type_4(fru)']  ['${VERSION_FRU['STRING']}']
+
+Verify GetTID
+    [Documentation]  Verify GetTID (Terminus ID) response message.
+    [Tags]  Verify_GetTID
+
+    # Example output:
+    # TID : 1
+
+    ${pldm_output}=  Pldmtool  base GetTID
+    Rprint Vars  pldm_output
+
+    Valid Dict  pldm_output  valid_values={'tid': ['1']}
diff --git a/pldm/test_pldm_bios.robot b/pldm/test_pldm_bios.robot
index 0413e16..ef02930 100644
--- a/pldm/test_pldm_bios.robot
+++ b/pldm/test_pldm_bios.robot
@@ -15,7 +15,6 @@
 *** Test Cases ***
 
 Verify GetDateTime
-
     [Documentation]  Verify host date & time.
     [Tags]  Verify_GetDateTime
 
@@ -33,7 +32,6 @@
 
 
 Verify SetDateTime
-
     [Documentation]  Verify set date & time for the host.
     [Tags]  Verify_SetDateTime
 
@@ -58,10 +56,35 @@
     ${pldm_output}=  Pldmtool  ${cmd_set_time}
     Valid Value  pldm_output['setdatetime']  ['SUCCESS']
 
+
+Verify GetBIOSTable For StringTable
+    [Documentation]  Verify GetBIOSTable for table type string table.
+    [Tags]  Verify_GetBIOSTable_For_StringTable
+
+    # pldm_output:
+    # [biosstringhandle]:                             BIOSString
+    # [0]:                                            Allowed
+    # [1]:                                            Disabled
+    # [2]:                                            Enabled
+    # [3]:                                            Not Allowed
+    # [4]:                                            Perm
+    # [5]:                                            Temp
+    # [6]:                                            pvm-fw-boot-side
+    # [7]:                                            pvm-inband-code-update
+    # [8]:                                            pvm-os-boot-side
+    # [9]:                                            pvm-pcie-error-inject
+    # [10]:                                           pvm-surveillance
+    # [11]:                                           pvm-system-name
+    # [12]:                                           vmi-if-count
+
+    ${pldm_output}=  Pldmtool  bios GetBIOSTable -t 0
+    Rprint Vars  pldm_output
+    # TODO: Implement verification for GetBIOSTable response message.
+    # Valid Dict  pldm_output  valid_values=${RESPONSE_DICT_GETBIOSTABLE_STRTABLE}
+
 *** Keywords ***
 
 PLDM BIOS Suite Cleanup
-
     [Documentation]  Perform pldm BIOS suite cleanup.
 
     ${result}=  Get Current Date  UTC  exclude_millis=True
diff --git a/pldm/test_pldm_fru.robot b/pldm/test_pldm_fru.robot
new file mode 100644
index 0000000..00a0fc3
--- /dev/null
+++ b/pldm/test_pldm_fru.robot
@@ -0,0 +1,28 @@
+*** Settings ***
+
+Documentation    Module to test PLDM FRU (Field Replaceable Unit) commands.
+
+Library          ../lib/pldm_utils.py
+Variables        ../data/pldm_variables.py
+Resource         ../lib/openbmc_ffdc.robot
+
+Test Setup       Printn
+Test Teardown    FFDC On Test Case Fail
+
+*** Test Cases ***
+
+Verify GetFruRecordTableMetadata
+    [Documentation]  Verify get fru record table meta data reponse message.
+    [Tags]  Verify_GetFruRecordTableMetadata
+
+    # pldm_output:
+    # [frutablelength]:                                   60
+    # [frudatamajorversion]:                              1
+    # [total_number_of_record_set_identifiers_in_table]:  1
+    # [frudataminorversion]:                              0
+    # [total_number_of_records_in_table]:                 1
+    # [frutablemaximumsize]:                              4294967295
+
+    ${pldm_output}=  Pldmtool  fru GetFruRecordTableMetadata
+    Rprint Vars  pldm_output
+    Valid Dict  pldm_output  valid_values=${RESPONSE_DICT_GETFRURECORDTABLEMETADATA}
diff --git a/pldm/test_pldm_platform.robot b/pldm/test_pldm_platform.robot
new file mode 100644
index 0000000..c85b847
--- /dev/null
+++ b/pldm/test_pldm_platform.robot
@@ -0,0 +1,83 @@
+*** Settings ***
+
+Documentation    Module to test PLDM platform commands.
+
+Library          ../lib/pldm_utils.py
+Variables        ../data/pldm_variables.py
+Resource         ../lib/openbmc_ffdc.robot
+
+Test Setup       Printn
+Test Teardown    FFDC On Test Case Fail
+
+*** Test Cases ***
+
+Verify GetPDR
+    [Documentation]  Verify GetPDR (Platform Descpritor Record) response message.
+    [Tags]  Verify_GetPDR
+    [Template]  Verify GetPDR For Record Handle
+
+    # RecordHandle
+    '0'
+    '1'
+    '2'
+
+
+Verify SetStateEffecterStates
+    [Documentation]  Verify set state effecter states response message.
+    [Tags]  Verify_SetStateEffecterStates
+    [Template]  Verify SetStateEffecterStates For Effecter States
+
+    # EffecterStates (effecterID requestSet effecterState)
+    '1 1 1'
+    '1 1 2'
+
+*** Keywords ***
+
+Verify GetPDR For Record Handle
+    [Documentation]  Verify GetPDR (Platform Descpritor Record) for given input record handle.
+    [Arguments]  ${record_handle}
+
+    # Description of argument(s):
+    # ${record_handle}  Record handle (e.g. '1').
+
+    # pldm_output:
+    # [responseCount]:                               29
+    # [recordHandle]:                                1
+    # [PDRHeaderVersion]:                            1
+    # [PDRType]:                                     11
+    # [recordChangeNumber]:                          0
+    # [dataLength]:                                  19
+    # [PLDMTerminusHandle]:                          0
+    # [effecterID]:                                  1
+    # [entityType]:                                  33
+    # [entityInstanceNumber]:                        0
+    # [containerID]:                                 0
+    # [effecterSemanticID]:                          0
+    # [effecterInit]:                                0
+    # [effecterDescriptionPDR]:                      false
+    # [compositeEffecterCount]:                      1
+    # [stateSetID]:                                  196
+    # [possibleStatesSize]:                          1
+    # [possibleStates]:                              6
+
+    ${pldm_cmd}=  Evaluate  $CMD_GETPDR % ${record_handle}
+    ${pldm_output}=  Pldmtool  ${pldm_cmd}
+    Rprint Vars  pldm_output
+    Valid Dict  pldm_output  valid_values=${RESPONSE_DICT_GETPDR}
+
+
+Verify SetStateEffecterStates For Effecter States
+    [Documentation]  Verify set state effecter states for given input effecter states.
+    [Arguments]  ${effecter_states}
+
+    # Description of argument(s):
+    # ${effecter_states}   (effecterID requestSet effecterState).
+    #                      e.g. '1 1 1'.
+
+    # Example output:
+    # SetStateEffecterStates ]: SUCCESS
+
+    ${pldm_cmd}=  Evaluate  $CMD_SETSTATEEFFECTERSTATES % ${effecter_states}
+    ${pldm_output}=  Pldmtool  ${pldm_cmd}
+    Rprint Vars  pldm_output
+    Valid Value  pldm_output['setstateeffecterstates']  ['SUCCESS']
