diff --git a/data/ipmi_raw_cmd_table.py b/data/ipmi_raw_cmd_table.py
index 7e7f84a..4198cf4 100644
--- a/data/ipmi_raw_cmd_table.py
+++ b/data/ipmi_raw_cmd_table.py
@@ -407,6 +407,20 @@
             # raw command, expected output(s), comment
             'Invalid value',
             'Valid values are serial, 9.6 19.2, 38.4, 57.6 and 115.2',
+        ]
+    },
+    'Get SDR':
+    {
+        'Get':
+        [
+            # Get SDR raw command without Reservation ID.
+            "0x0a 0x23 0x00 0x00 0x00 0x00 0x00 0xff",
+            # Netfunction and cmd.
+            "0x0a 0x23",
+            # Record ID offset and bytes to read.
+            "0x00 0x00 0x01 0x0f",
+            #  Raw command To Get SDR Partial without Reservation ID.
+            "0x0a 0x23 0x00 0x00 0x00 0x00 0x01 0x0f"
         ],
     },
     'Get':
@@ -417,5 +431,36 @@
             '0x00 0x0f',
             'Error: Unable to establish IPMI v2 / RMCP+ session'
         ]
+    },
+    'Device_SDR':
+    {
+        'Get_Info':
+        [
+            # raw command, expected output(s), comment
+            "0x04 0x20 0x00",
+            "0x04 0x20 0x01",
+            "rsp=0xc7",
+            "Request data length invalid",
+            "rsp=0xd4",
+            "Insufficient privilege level",
+        ],
+        'Get':
+        [
+            # raw command, expected output(s), comment
+            "0x04 0x21",
+            "0x00 0x00 0x00 0xff",
+            "rsp=0xc7",
+            "Request data length invalid",
+        ],
+        'Reserve_Repository':
+        [
+            # raw command, expected output(s), comment
+            "0x04 0x22",
+            "rsp=0xc7",
+            "Request data length invalid",
+            "rsp=0xd4",
+            "Insufficient privilege level",
+            "Reservation cancelled or invalid",
+        ]
     }
 }
diff --git a/ipmi/test_ipmi_inband_sdr.robot b/ipmi/test_ipmi_inband_sdr.robot
new file mode 100644
index 0000000..21ad760
--- /dev/null
+++ b/ipmi/test_ipmi_inband_sdr.robot
@@ -0,0 +1,494 @@
+*** Settings ***
+Documentation          Test IPMI Inband SDR commands.
+...                    Following IPMI command are verified,
+...                    1. Get SDR,
+...                    2. Get Device SDR Info,
+...                    3. Reserve Device SDR Repository,
+...                    4. Get Device SDR.
+
+Resource               ../lib/ipmi_client.robot
+Resource               ../lib/openbmc_ffdc.robot
+Resource               ../lib/boot_utils.robot
+Library                ../lib/ipmi_utils.py
+Variables              ../data/ipmi_raw_cmd_table.py
+
+Suite setup            Redfish.Login
+Suite Teardown         Redfish.Logout
+Test Teardown          FFDC On Test Case Fail
+
+Force Tags             SDR_Test
+
+
+*** Test Cases ***
+
+Verify Get SDR For Maximum Record Via IPMI
+    [Documentation]  Verify Get SDR for each and every record one by one via IPMI lanplus.
+    [Tags]  Verify_Get_SDR_For_Maximum_Record_Via_IPMI
+
+    # Gets the Total Record Count from SDR Info and the last Record entry number.
+    ${record_count}  ${last_record}=  Get Record Count And Last Record From SDR
+
+    # Validate each and every record till the last record.
+    FOR  ${record}  IN RANGE  0  ${record_count}
+        # Convert number to hexadecimal record ID.
+        ${recordhex}=  Convert To Hex  ${record}  length=2  lowercase=yes
+
+        # Get SDR command.
+        ${resp}=  Run IPMI Standard Command
+        ...  raw ${IPMI_RAW_CMD['Get SDR']['Get'][1]} 0x00 0x00 0x${recordhex} 0x00 0x00 0xff
+        ${get_SDR}=  Split String  ${resp}
+
+        # If the record ID reaches the last data available, the next record ID will be ff ff.
+        # eg, If total record ID available is 115, record IDs : 0 - 114,
+        # Then when record ID reaches last record ID (i.e 114 (decimal) - 72h),
+        # Get SDR response bytes 0:2 will be - ff ff 72 00 ....
+        # If not then (say 25 - 19h ), 1a 00 19 00 ....
+
+        IF  '${record}' != '${last_record}'
+          # current record ID in response data.
+          Should Be Equal  ${get_SDR[2]}  ${recordhex}
+          Should Be Equal  ${get_SDR[3]}  00
+
+          # Next record ID in response data.
+          ${record_next}=  Evaluate  ${record} + 1
+          ${record_next}=  Convert To Hex  ${record_next}  length=2  lowercase=yes
+          Should Be Equal  ${get_SDR[0]}  ${record_next}
+          Should Be Equal  ${get_SDR[1]}  00
+        ELSE
+          # Next record ID in response data.
+          Should Be Equal  ${get_SDR[0]}  ff
+          Should Be Equal  ${get_SDR[1]}  ff
+
+          # current record ID in response data.
+          Should Be Equal  ${get_SDR[2]}  ${recordhex}
+          Should Be Equal  ${get_SDR[3]}  00
+        END
+
+        # Response Data Count - total records (max - FFh - 255 in decimal).
+        ${response_data}=  Set Variable  ${get_SDR[2:]}
+        ${length}=  Get Length  ${response_data}
+        Should Be True  0<${length}<=255
+    END
+
+
+Verify Sensor And SDR Count In Get Device SDR Info Via Inband IPMI
+    [Documentation]  Verify Sensor and SDR Count in Get Device SDR Info via inband IPMI.
+    [Tags]  Verify_Sensor_And_SDR_Count_In_Get_Device_SDR_Info_Via_Inband_IPMI
+
+    # Get Sensor count and SDR elist all count from IPMI LAN interface.
+    ${sensor_count_lan1}  ${SDR_count_lan1}=  Get Count for Sensor And SDR Elist All
+
+    # Get Sensor Count From Get Device SDR Info command.
+    ${sensor_count1}=  Get Sensor Count From SDR Info
+    # Compare Get Device SDR Sensor count with Sensor count from lanplus.
+    Should Be Equal As Integers   ${sensor_count1}  ${sensor_count_lan1}
+
+    # Get SDR Count From Get Device SDR Info command.
+    ${SDR_count1}=  Get SDR Count From SDR Info
+    # Compare Get Device SDR Sdr count with SDR Elist All count from lanplus.
+    Should Be Equal As Integers  ${SDR_count1}  ${SDR_count_lan1}
+
+    # Reboot Host using Chassis Power Cycle.
+    IPMI Power Cycle
+
+    # Get Sensor count and SDR elist all count from IPMI lanplus interface.
+    ${sensor_count_lan2}  ${SDR_count_lan2}=  Get Count for Sensor And SDR Elist All
+
+    # Get Sensor Count From Get Device SDR Info command.
+    ${sensor_count2}=  Get Sensor Count From SDR Info
+    # Compare Get Device SDR Sensor count with Sensor count from lanplus.
+    Should Be Equal As Integers   ${sensor_count2}  ${sensor_count_lan2}
+
+    # Get SDR Count From Get Device SDR Info command.
+    ${SDR_count2}=  Get SDR Count From SDR Info
+    # Compare Get Device SDR Sdr count with SDR Elist All count from lanplus.
+    Should Be Equal As Integers  ${SDR_count2}  ${SDR_count_lan2}
+
+
+Verify Timestamp In Get Device SDR Info Via Inband IPMI
+    [Documentation]  Verify timestamp In Get Device SDR Info via inband IPMI.
+    [Tags]  Verify_Timestamp_In_Get_Device_SDR_Info_Via_Inband_IPMI
+
+    # Reboot Host using Chassis Power Cycle.
+    IPMI Power Cycle
+
+    # Get epoch Timestamp obtained from Get Device SDR Info command.
+    ${SDR_timestamp}=  Get Device SDR Timestamp
+
+    # Get current date from BMC Native Date command and convert to epoch.
+    ${bmc_date}=  Get Current Date from BMC
+    ${epoch_bmc}=  Convert Date  ${bmc_date}  epoch  exclude_millis=yes  date_format=%m/%d/%Y %H:%M:%S
+
+    # Compare time difference between bmc time and Get Device SDR Info timestamp.
+    # The maximum time difference should be less then 6 minute - 360 seconds.
+    ${difference}=  Evaluate  int(${epoch_bmc}) - int(${SDR_timestamp})
+    Should Be True  ${difference}<=360
+
+
+Verify Get Device SDR Info For Invalid Data Request
+    [Documentation]  Verify Get Device SDR Info via inband IPMI with extra bytes.
+    [Tags]  Verify_Get_Device_SDR_Info_For_Invalid_Data_Request
+
+    # Sensor Count Via Device SDR Info with extra bytes.
+    ${resp}=  Run Keyword and Expect Error  *${IPMI_RAW_CMD['Device_SDR']['Get_Info'][3]}*
+    ...  Run Inband IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Get_Info'][0]} 0x00
+    # Proper error code should be returned.
+    Should Contain  ${resp}  ${IPMI_RAW_CMD['Device_SDR']['Get_Info'][2]}
+
+    # SDR Count Via Device SDR Info with extra bytes.
+    ${resp}=  Run Keyword and Expect Error  *${IPMI_RAW_CMD['Device_SDR']['Get_Info'][3]}*
+    ...  Run Inband IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Get_Info'][1]} 0x00
+    # Proper error code should be returned.
+    Should Contain  ${resp}  ${IPMI_RAW_CMD['Device_SDR']['Get_Info'][2]}
+
+
+Verify Device SDR Info Via IPMI Lanplus
+    [Documentation]  Verify whether Get Device SDR Info command is accessible via lanplus.
+    [Tags]  Verify_Device_SDR_Info_Via_IPMI_Lanplus
+
+    # Sensor Count Via Device SDR Info via lanplus.
+    ${resp}=  Run Keyword and Expect Error  *${IPMI_RAW_CMD['Device_SDR']['Get_Info'][5]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Get_Info'][0]}
+    # Proper error code should be returned.
+    Should Contain  ${resp}  ${IPMI_RAW_CMD['Device_SDR']['Get_Info'][4]}
+
+    # SDR Count Via Device SDR Info via lanplus.
+    ${resp}=  Run Keyword and Expect Error  *${IPMI_RAW_CMD['Device_SDR']['Get_Info'][5]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Get_Info'][1]}
+    # Proper error code should be returned.
+    Should Contain  ${resp}  ${IPMI_RAW_CMD['Device_SDR']['Get_Info'][4]}
+
+
+Verify Reserve Device SDR Repository Via Inband IPMI
+    [Documentation]  Verify Reserve Device SDR Repository via inband IPMI.
+    [Tags]  Verify_Reserve_Device_SDR_Repository_Via_Inband_IPMI
+
+    # Reserve Device SDR Repository via inband IPMI.
+    ${resp}=  Get Reserve Device SDR Repository
+    ${reserve_id}=  Split String  ${resp}
+
+    # Identify the byte count.
+    ${length}=  Get Length  ${reserve_id}
+    Should Be Equal As Integers  ${length}  2
+
+
+Verify Reserve Device SDR Repository For Invalid Data Request
+    [Documentation]  Verify Reserve Device SDR Repository via inband IPMI with extra request bytes.
+    [Tags]  Verify_Reserve_Device_SDR_Repository_For_Invalid_Data_Request
+
+    # Reserve Device SDR Repository with extra request bytes.
+    ${resp}=  Run Keyword and Expect Error  *${IPMI_RAW_CMD['Device_SDR']['Reserve_Repository'][2]}*
+    ...  Run Inband IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Reserve_Repository'][0]} 0x00
+    # Proper error code should be returned.
+    Should Contain  ${resp}  ${IPMI_RAW_CMD['Device_SDR']['Reserve_Repository'][1]}
+
+
+Verify Reserve Device SDR Repository Info Via IPMI Lanplus
+    [Documentation]  Verify whether Reserve Device SDR Repository command is accessible via lanplus.
+    [Tags]  Verify_Reserve_Device_SDR_Repository_Via_IPMI_Lanplus
+
+    # Reserve Device SDR Repository via lanplus.
+    ${resp}=  Run Keyword and Expect Error  *${IPMI_RAW_CMD['Device_SDR']['Reserve_Repository'][4]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Reserve_Repository'][0]}
+    # Proper error code should be returned.
+    Should Contain  ${resp}  ${IPMI_RAW_CMD['Device_SDR']['Reserve_Repository'][3]}
+
+
+Verify Reserve Device SDR Repository For Partial Record
+    [Documentation]  Verify whether reservation ID of Reserve Device SDR Repository is accessible to fetch partial record from Get Device SDR.
+    [Tags]  Verify_Reserve_Device_SDR_Repository_For_Partial_Record
+
+    # Get Reservation ID.
+    ${resp}=  Get Reserve Device SDR Repository
+    ${reserve_id}=  Split String  ${resp}
+
+    # Check whether the response for Get device SDR command is obtained with the given Reservation ID.
+    ${resp}=  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Get'][0]} 0x${reserve_id[0]} 0x${reserve_id[1]} 0x00 0x00 0x00 0x0f
+    ${resp}=  Split String  ${resp}
+    # Record data starts from ${resp[2]}.
+    ${resp}=  Set Variable  ${resp[2:]}
+    ${length}=  Get Length  ${resp}
+    Should Be Equal As Integers  ${length}  15
+
+
+Verify Reserve Device SDR Repository For Partial Record After BMC Reboot
+    [Documentation]  Verify whether Reservation ID of Reserve Device SDR Repository,
+    ...  is accessible after bmc reboot to fetch partial record from Get Device SDR.
+    [Tags]  Verify_Reserve_Device_SDR_Repository_For_Partial_Record_After_BMC_Reboot
+
+    # Generate Reservation ID.
+    ${resp}=  Get Reserve Device SDR Repository
+    ${reserve_id}=  Split String  ${resp}
+
+    # Check whether the response for Get device SDR command is obtained with the given Reservation ID.
+    ${resp1}=  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Get'][0]} 0x${reserve_id[0]} 0x${reserve_id[1]} 0x00 0x00 0x00 0x0f
+
+    # Reboot bmc.
+    Run IPMI Standard Command  raw ${IPMI_RAW_CMD['Resets']['cold'][0]}
+    Wait Until Keyword Succeeds  3 min  10 sec  Is BMC Unpingable
+    Wait Until Keyword Succeeds  3 min  10 sec  Is BMC Operational
+
+    # Check whether the response for Get device SDR command is obtained with the given Reservation ID.
+    # Reserve IDs are volatile so once bmc is rebooted, new Reserve ID should be generated.
+    ${resp2}=  Run Keyword and Expect Error  *${IPMI_RAW_CMD['Device_SDR']['Reserve_Repository'][5]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Get'][0]} ${reserve_id[0]} ${reserve_id[1]} 0x00 0x00 0x00 0x0f
+
+
+Verify Reserve Device SDR Repository Invalid Reservation ID For Partial Record
+    [Documentation]  Verify whether invalid reservation ID of Reserve Device SDR Repository,
+    ...  is accessible to fetch partial record from Get Device SDR.
+    [Tags]  Verify_Reserve_Device_SDR_Repository_Invalid_Reservation_ID_For_Partial_Record
+
+    # Generate Reservation ID 1.
+    ${resp}=  Get Reserve Device SDR Repository
+    ${reserve_id}=  Split String  ${resp}
+
+    # Generate Reservation ID 2.
+    ${resp2}=  Get Reserve Device SDR Repository
+
+    # Check whether response for Gner device SDR command is obtained with Reservation ID 1.
+    # Once Reservation ID is overwritten, old Reservation ID will be invalid.
+    ${resp1}=   Run Keyword and Expect Error  *${IPMI_RAW_CMD['Device_SDR']['Reserve_Repository'][5]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Get'][0]} 0x${reserve_id[0]} 0x${reserve_id[1]} 0x00 0x00 0x00 0x0f
+
+
+Verify Get Device SDR For Maximum Record Via IPMI
+    [Documentation]  Verify Get Device SDR for each and every Record Via IPMI lanplus.
+    [Tags]  Verify_Get_Device_SDR_For_Maximum_Record_Via_IPMI
+
+    # Gets the Total Record Count from SDR Info and the last Record entry number.
+    ${record_count}  ${last_record}=  Get Record Count And Last Record From SDR
+
+    # Validate each and every record till the last record.
+    FOR  ${record}  IN RANGE  0  ${record_count}
+        # Convert number to hexadecimal record ID.
+        ${recordhex}=  Convert To Hex  ${record}  length=2  lowercase=yes
+
+        # Get SDR command.
+        ${resp}=  Run IPMI Standard Command
+        ...  raw ${IPMI_RAW_CMD['Device_SDR']['Get'][0]} 0x00 0x00 0x${recordhex} 0x00 0x00 0xff
+        ${get_dev_SDR}=  Split String  ${resp}
+
+        # If the record ID reaches the last data available, the next record ID will be ff ff
+        # eg, If total record ID available is 115, record IDs : 0 - 114,
+        # Then when record ID reaches last record ID (i.e 114 (in decimal) - 72h),
+        # Get SDR response bytes 0:2 will be - ff ff 72 00 ....
+        # If not then (say 25 - 19h ), 1a 00 19 00 ....
+
+        IF  '${record}' != '${last_record}'
+          # current record ID in response data.
+          Should Be Equal  ${get_dev_SDR[2]}  ${recordhex}
+          Should Be Equal  ${get_dev_SDR[3]}  00
+
+          # Next record ID in response data.
+          ${record_next}=  Evaluate  ${record} + 1
+          ${record_next}=  Convert To Hex  ${record_next}  length=2  lowercase=yes
+          Should Be Equal  ${get_dev_SDR[0]}  ${record_next}
+          Should Be Equal  ${get_dev_SDR[1]}  00
+
+        ELSE
+          # Next record ID in response data.
+          Should Be Equal  ${get_dev_SDR[0]}  ff
+          Should Be Equal  ${get_dev_SDR[1]}  ff
+
+          # current record ID in response data.
+          Should Be Equal  ${get_dev_SDR[2]}  ${recordhex}
+          Should Be Equal  ${get_dev_SDR[3]}  00
+
+        END
+        # Response data count - total record ID (max - FFh - 255 in decimal).
+        ${response_data}=  Set Variable  ${get_dev_SDR[2:]}
+        ${length}=  Get Length  ${response_data}
+        Should Be True  0<${length}<=255
+    END
+
+
+Verify Get Device SDR For Invalid Data Request Via IPMI
+    [Documentation]  Verify Get Device SDR via IPMI lanplus with extra bytes.
+    [Tags]  Verify_Get_Device_SDR_For_Invalid_Data_Request_Via_IPMI
+
+    # Get SDR command with extra bytes.
+    ${resp}=  Run Keyword and Expect Error  *${IPMI_RAW_CMD['Device_SDR']['Get'][3]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Get'][0]} 0x00 0x00 ${IPMI_RAW_CMD['Device_SDR']['Get'][1]} 0x00
+    # Proper error code should be returned.
+    Should Contain  ${resp}  ${IPMI_RAW_CMD['Device_SDR']['Get'][2]}
+
+
+*** Keywords ***
+
+Get IPMI Sensor Count
+    [Documentation]  Get sensors count using "SDR elist all" command.
+    # Example of "SDR elist all" command output:
+    # BootProgress     | 03h | ok  | 34.2 |
+    # OperatingSystemS | 05h | ok  | 35.1 |
+    # AttemptsLeft     | 07h | ok  | 34.1 |
+    # occ0             | 08h | ok  | 210.1 | Device Disabled
+    # occ1             | 09h | ok  | 210.2 | Device Disabled
+    # p0_core0_temp    | 11h | ns  |  3.1 | Disabled
+    # cpu0_core0       | 12h | ok  | 208.1 | Presence detected
+    # p0_core1_temp    | 14h | ns  |  3.2 | Disabled
+    # cpu0_core1       | 15h | ok  | 208.2 | Presence detected
+    # p0_core2_temp    | 17h | ns  |  3.3 | Disabled
+    # ..
+    # ..
+    # ..
+    # ..
+    # ..
+    # ..
+    # fan3             | 00h | ns  | 29.4 | Logical FRU @35h
+    # bmc              | 00h | ns  |  6.1 | Logical FRU @3Ch
+    # ethernet         | 00h | ns  |  1.1 | Logical FRU @46h
+
+    ${output}=  Run IPMI Standard Command  SDR elist all
+    ${sensor_list}=  Split String  ${output}  \n
+    ${sensor_count}=  Get Length  ${sensor_list}
+    [Return]  ${sensor_count}
+
+
+Get Device SDR Info For Sensor Data
+    [Documentation]  Get Device SDR Info via inband IPMI and return response data with Sensor count.
+
+    # Get Device SDR Info for Sensor data.
+    ${sensor_data}=  Run Inband IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Get_Info'][0]}
+
+    [Return]  ${sensor_data}
+
+
+Get Device SDR Info For SDR Data
+    [Documentation]  Get Device SDR Info via inband IPMI and return response data with SDR count.
+
+    # Get Device SDR Info for SDR data.
+    ${SDR_data}=  Run Inband IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Get_Info'][1]}
+
+    [Return]  ${SDR_data}
+
+
+Get Sensor Count From SDR Info
+   [Documentation]  Get Sensor Count from Get Device SDR Info data.
+
+    # Get Device SDR Info Via inband IPMI for Sensor count.
+    ${sensor_data}=  Get Device SDR Info For Sensor Data
+
+    # Get Sensor count from Get Device SDR Info count - bytie 0.
+    ${sensor_data}=  Split String  ${sensor_data}
+    ${sensor_count}=  Set Variable  ${sensor_data[0]}
+    ${sensor_count}=  Convert To Integer  ${sensor_count}  16
+
+    [Return]  ${sensor_count}
+
+
+Get SDR Count From SDR Info
+   [Documentation]  Get SDR Count from Get Device SDR Info data.
+
+    # Get Device SDR Info Via inband IPMI for SDR count.
+    ${SDR_data}=  Get Device SDR Info For SDR Data
+
+    # Get SDR count from Get Device SDR Info count - byte 0.
+    ${SDR_data}=  Split String  ${SDR_data}
+    ${SDR_count}=  Set Variable  ${SDR_data[0]}
+    ${SDR_count}=  Convert To Integer  ${SDR_count}  16
+
+    [Return]  ${SDR_count}
+
+
+Get Device SDR Timestamp
+    [Documentation]  Get Timestamp from Get Device SDR Info.
+
+    # Get Device SDR Info Via inband IPMI for Sendor count.
+    ${sensor_data}=  Get Device SDR Info For Sensor Data
+    # Get Device SDR Info Via inband IPMI for SDR count.
+    ${SDR_data}=  Get Device SDR Info For SDR Data
+
+    # Split into list.
+    ${sensor_data}=  Split String  ${sensor_data}
+    ${SDR_data}=  Split String  ${SDR_data}
+
+    # Timestamp for the Get SDR count will be from Response byte 2 to N.
+    # Compare the timestamps for Sensor data and SDR data.
+    Should Be Equal  ${sensor_data[2:]}  ${SDR_data[2:]}
+
+    # Convert Bytestamp to Epoch timestamp.
+    ${timestamp}=  Set Variable  ${SDR_data[2:]}
+    Reverse List  ${timestamp}
+    ${timestamp}=  Evaluate  "".join(${timestamp})
+    # Prefixes 0s for expected bytes.
+    ${timestamp}=  Zfill Data  ${timestamp}  8
+    ${timestamp}=  Convert To Integer  ${timestamp}  16
+
+    [Return]  ${timestamp}
+
+
+Get Count for Sensor And SDR Elist All
+    [Documentation]  Get Sensor and SDR elist all count via IPMI lanplus.
+
+    # Get Sensor list via IPMI lanplus.
+    ${sensor_count}=  Run IPMI Standard Command  sensor | wc -l
+    # Get SDR elist all via IPMI lanplus.
+    ${SDR_count}=  Get IPMI Sensor Count
+
+    [Return]  ${sensor_count}  ${SDR_count}
+
+
+Get Reserve Device SDR Repository
+    [Documentation]  Get Reserve Device SDR Repository via Inband IPMI.
+
+    # Reserve Device SDR Repository command via inband.
+    ${resp}=  Run Inband IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['Device_SDR']['Reserve_Repository'][0]}
+
+    [Return]  ${resp}
+
+
+Get IPMI SDR Status Info
+    [Documentation]  Returns status for given IPMI SDR Info.
+    [Arguments]  ${setting}
+    # Description of argument(s):
+    # setting  SDR Info which needs to be read(e.g. "SDR Version").
+    # SDR Version                         : 0x51
+    # Record Count                        : 58
+    # Free Space                          : 9312 bytes
+    # Most recent Addition                : 03/10/2022 05:56:02
+    # Most recent Erase                   : 02/07/2106 06:28:15
+    # SDR overflow                        : yes
+    # SDR Repository Update Support       : unspecified
+    # Delete SDR supported                : no
+    # Partial Add SDR supported           : no
+    # Reserve SDR repository supported    : yes
+    # SDR Repository Alloc info supported : yes
+
+    # Get SDR Info IPMI command.
+    ${resp}=  Run IPMI Standard Command  SDR info
+
+    # Return lines for given IPMI SDR Info.
+    ${setting_line}=  Get Lines Containing String  ${resp}  ${setting}
+    ...  case-insensitive
+    ${setting_status}=  Fetch From Right  ${setting_line}  :${SPACE}
+
+    [Return]  ${setting_status}
+
+
+Get Record Count And Last Record From SDR
+    [Documentation]  Returns total record count from IPMI SDR Info and last SDR record.
+
+    # Returns Record count from IPMI SDR Info.
+    ${record_count}=  Get IPMI SDR Status Info  Record Count
+
+    # Identifies Last record ID.
+    # If Record Count = 58 (3Ah), record IDs range from 0 to 57.
+    # Then Last record ID will be 57 (in decimal) - 39h.
+    ${last_record}=  Evaluate  ${record_count} - 1
+
+    [Return]  ${record_count}  ${last_record}
