diff --git a/ipmi/test_ipmi_sdr.robot b/ipmi/test_ipmi_sdr.robot
index 34f357e..6e6d776 100755
--- a/ipmi/test_ipmi_sdr.robot
+++ b/ipmi/test_ipmi_sdr.robot
@@ -7,6 +7,8 @@
 Resource               ../lib/boot_utils.robot
 Resource               ../lib/bmc_redfish_resource.robot
 Library                ../lib/ipmi_utils.py
+Library                ../lib/utilities.py
+Variables              ../data/ipmi_raw_cmd_table.py
 
 Suite setup             Suite Setup Execution
 Suite Teardown          Redfish.Logout
@@ -33,6 +35,16 @@
     # Reserve SDR repository supported    : no
     # SDR Repository Alloc info supported : no
 
+    # Check if delete, partially add, reserve SDR and get SDR alloc info command are supported or not.
+    ${support_delete_sdr}=  Fetch IPMI Command Support Status
+    ...  ${IPMI_RAW_CMD['SDR']['Delete SDR'][0]}
+    ${support_partial_add}=  Fetch IPMI Command Support Status
+    ...  ${IPMI_RAW_CMD['SDR']['Partially Add SDR'][0]}
+    ${support_reserve_sdr_repository}=  Fetch IPMI Command Support Status
+    ...  ${IPMI_RAW_CMD['SDR']['Reserve SDR Repository'][0]}
+    ${support_sdr_repository_alloc_info}=  Fetch IPMI Command Support Status
+    ...  ${IPMI_RAW_CMD['SDR']['Get SDR allocation Info'][0]}
+
     ${sdr_info}=  Get SDR Info
     Should Be Equal  ${sdr_info['sdr_version']}  0x51
 
@@ -42,14 +54,14 @@
     ...  ${sdr_info['record_count']}  ${sensor_count}
 
     Should Be Equal  ${sdr_info['free_space']}  unspecified
-    Should Be Equal  ${sdr_info['most_recent_addition']}  ${EMPTY}
-    Should Be Equal  ${sdr_info['most_recent_erase']}  ${EMPTY}
-    Should Be Equal  ${sdr_info['sdr_overflow']}  no
+    Should Not Be Equal  ${sdr_info['most_recent_addition']}  ${EMPTY}
+    Should Not Be Equal  ${sdr_info['most_recent_erase']}  ${EMPTY}
+    Should Be Equal  ${sdr_info['sdr_overflow']}  yes
     Should Be Equal  ${sdr_info['sdr_repository_update_support']}  unspecified
-    Should Be Equal  ${sdr_info['delete_sdr_supported']}  no
-    Should Be Equal  ${sdr_info['partial_add_sdr_supported']}  no
-    Should Be Equal  ${sdr_info['reserve_sdr_repository_supported']}  no
-    Should Be Equal  ${sdr_info['sdr_repository_alloc_info_supported']}  no
+    Should Be Equal  ${sdr_info['delete_sdr_supported']}  ${support_delete_sdr}
+    Should Be Equal  ${sdr_info['partial_add_sdr_supported']}  ${support_partial_add}
+    Should Be Equal  ${sdr_info['reserve_sdr_repository_supported']}  ${support_reserve_sdr_repository}
+    Should Be Equal  ${sdr_info['sdr_repository_alloc_info_supported']}  ${support_sdr_repository_alloc_info}
 
 
 Test CPU Core SDR Info At Power On
@@ -146,9 +158,101 @@
     ...  ELSE IF  '${state_ipmi}' == 'State Asserted'
     ...    Should Be True  ${state_rest} == ${1}
 
+Test Reserve SDR Repository
+    [Documentation]  Verify Reserve SDR Repository IPMI command.
+    [Tags]  Test_Reserve_SDR_Repository
+
+    ${reservation_id}=  Get Reservation ID  convert_lsb_to_msb=True
+
+    # Getting another Reservation ID and verify it is different from previous Reservation ID.
+    ${new_reservation_id}=  Get Reservation ID  convert_lsb_to_msb=True
+
+    Should Not Be Equal  ${reservation_id}  ${new_reservation_id}
+    ...  msg=Getting same reseravtion ID for second time, reservation ID must be different.
+
+Test Get SDR Using Reservation ID
+   [Documentation]  Verify get SDR command using reservation ID obtained from Reserve SDR repository.
+   [Tags]  Test_Get_SDR_Using_Reservation_ID
+
+   ${reservation_id}=  Get Reservation ID  add_prefix=True
+
+   # Get SDR full without using Reservation ID.
+   Run External IPMI Raw Command  ${IPMI_RAW_CMD['SDR']['Get'][0]}
+
+   # Get SDR Partially using Reservation ID.
+   ${get_sdr_raw_cmd}=  Catenate
+   ...  ${IPMI_RAW_CMD['SDR']['Get'][1]} ${reservation_id} ${IPMI_RAW_CMD['SDR']['Get'][2]}
+   Run External IPMI Raw Command  ${get_sdr_raw_cmd}
+
+   # Get SDR partially without using reservation ID and expect error.
+   Verify Invalid IPMI Command  ${IPMI_RAW_CMD['SDR']['Get'][3]}  0xc5
+
+
+Test Get SDR Using Invalid Reservation ID
+    [Documentation]  Verify get SDR command using invalid reservation ID.
+    [Tags]  Test_Get_SDR_Using_Invalid_Reservation_ID
+
+    # Generate two reservation ID and verify get SDR partial using old reservation ID.
+    ${first_reservation_id}=  Get Reservation ID  add_prefix=True
+    ${second_reservation_id}=  Get Reservation ID  add_prefix=True
+
+    # Creating raw command with First reservation ID.
+    ${get_sdr_raw_cmd}=  Catenate
+    ...  ${IPMI_RAW_CMD['SDR']['Get'][1]} ${first_reservation_id} ${IPMI_RAW_CMD['SDR']['Get'][2]}
+
+    Verify Invalid IPMI Command  ${get_sdr_raw_cmd}  0xc5
+
+Test Reserve SDR Repository After BMC Reboot
+    [Documentation]  Verify reserve SDR repository reservation ID after BMC Reboot.
+    [Tags]  Test_Reserve_SDR_Repository_After_BMC_Reboot
+
+    #  Get Reservation ID before reboot.
+    ${reservation_id_before_reboot}=  Get Reservation ID  add_prefix=True
+
+    # Cold reset BMC
+    IPMI MC Reset Cold (run)
+
+    # Create Get SDR Partially command using reservation ID which got before reboot.
+    ${get_sdr_raw_cmd}=  Catenate
+    ...  ${IPMI_RAW_CMD['SDR']['Get'][1]} ${reservation_id_before_reboot} ${IPMI_RAW_CMD['SDR']['Get'][2]}
+
+    Verify Invalid IPMI Command  ${get_sdr_raw_cmd}  0xc5
+
+    #  Verify get SDR partially with new reservation ID after reboot.
+    ${reservation_id_after_reboot}=  Get Reservation ID  add_prefix=True
+    ${get_sdr_raw_cmd}=  Catenate
+    ...  ${IPMI_RAW_CMD['SDR']['Get'][1]} ${reservation_id_after_reboot} ${IPMI_RAW_CMD['SDR']['Get'][2]}
+    Run External IPMI Raw Command  ${get_sdr_raw_cmd}
+
 
 *** Keywords ***
 
+Get Reservation ID
+    [Documentation]  Get reservation ID using reserve SDR repository.
+    [Arguments]  ${add_prefix}=False  ${convert_lsb_to_msb}=False
+
+    # Description of argument(s):
+    # add_prefix             If True will prefix "0x" to the reservation ID.
+    #                        e.g. IPMI response for Reservation ID command will be  like 01 00
+    #                        return reservation ID will be "0x01" for above response.
+
+    # convert_lsb_to_msb     If True will convert the reservation ID from LSB first to MSB first.
+    #                        e.g. IPMI response for reservation ID command will be like  01 0a
+    #                        return reservation ID will be "a1" for above response.
+
+    ${reservation_id}=  Run External IPMI Raw Command
+    ...  ${IPMI_RAW_CMD['SDR']['Reserve SDR Repository'][0]}
+
+    ${reservation_id}=  Run Keyword If  ${add_prefix}
+    ...  Add Prefix To String  ${reservation_id}  0x
+    ...  ELSE IF  ${convert_lsb_to_msb}
+    ...  Convert LSB To MSB  ${reservation_id}
+    ...  ELSE
+    ...  Return From Keyword  ${reservation_id}
+
+    [Return]  ${reservation_id}
+
+
 Get Sensor Count
     [Documentation]  Get sensors count using "sdr elist all" command.
     # Example of "sdr elist all" command output:
@@ -282,6 +386,20 @@
       Verify SDR  ${component_name}
     END
 
+Fetch IPMI Command Support Status
+    [Documentation]  Return yes if IPMI command is supported.
+    [Arguments]  ${ipmi_cmd}
+
+    # Description of argument(s):
+    # ipmi_cmd    IPMI command.
+
+    ${resp}=  Run External IPMI Raw Command  ${ipmi_cmd}  fail_on_err=0
+    ${resp_code_match}=  Get Regexp Matches  ${resp}  rsp=0xc1
+
+    ${cmd_support}=  Set Variable If  ${resp_code_match} != []  no  yes
+
+    [Return]  ${cmd_support}
+
 
 Suite Setup Execution
     [Documentation]  Do the initial suite setup.
