diff --git a/redfish/extended/test_bmc_dump.robot b/redfish/extended/test_bmc_dump.robot
new file mode 100644
index 0000000..2dcb1b2
--- /dev/null
+++ b/redfish/extended/test_bmc_dump.robot
@@ -0,0 +1,230 @@
+*** Settings ***
+
+Documentation       Test dump functionality of OpenBMC.
+
+Resource            ../../lib/openbmc_ffdc.robot
+Resource            ../../lib/rest_client.robot
+Resource            ../../lib/dump_utils.robot
+Resource            ../../lib/boot_utils.robot
+Resource            ../../lib/utils.robot
+Library             ../../lib/bmc_ssh_utils.py
+
+Test Setup          Open Connection And Log In
+Test Teardown       Test Teardown Execution
+
+*** Test Cases ***
+
+Pre Dump BMC Performance Test
+    [Documentation]  Check performance of memory, CPU & file system of BMC.
+    [Tags]  Pre_Dump_BMC_Performance_Test
+
+    Open Connection And Log In
+    Check BMC Performance
+
+
+Verify User Initiated BMC Dump When Powered Off
+    [Documentation]  Create user initiated BMC dump at host off state and
+    ...  verify dump entry for it.
+    [Tags]  Verify_User_Initiated_BMC_Dump_When_Powered_Off
+
+    Redfish Power Off  stack_mode=skip
+    ${dump_id}=  Create User Initiated Dump
+    Check Existence of BMC Dump file  ${dump_id}
+
+
+Verify Dump Persistency On Service Restart
+    [Documentation]  Create user dump, restart BMC service and verify dump
+    ...  persistency.
+    [Tags]  Verify_Dump_Persistency_On_Service_Restart
+
+    Delete All BMC Dump
+    ${dump_id}=  Create User Initiated Dump
+    BMC Execute Command
+    ...  systemctl restart xyz.openbmc_project.Dump.Manager.service
+    Sleep  10s  reason=Wait for BMC dump service to restart properly.
+
+    ${resp}=  OpenBMC Get Request  ${DUMP_ENTRY_URI}list
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
+    Check Existence of BMC Dump file  ${dump_id}
+
+
+Verify Dump Persistency On Reset
+    [Documentation]  Create user dump, reset BMC and verify dump persistency.
+    [Tags]  Verify_Dump_Persistency_On_Reset
+
+    Delete All BMC Dump
+    ${dump_id}=  Create User Initiated Dump
+    OBMC Reboot (off)
+    ${resp}=  OpenBMC Get Request  ${DUMP_ENTRY_URI}list
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
+    Check Existence of BMC Dump file  ${dump_id}
+
+
+Delete User Initiated BMC Dump And Verify
+    [Documentation]  Delete user initiated dump and verify.
+    [Tags]  Delete_User_Initiated_Dump_And_Verify
+
+    ${dump_id}=  Create User Initiated Dump
+    Check Existence of BMC Dump file  ${dump_id}
+
+    Delete BMC Dump  ${dump_id}
+
+
+Verify User Initiated Dump Size
+    [Documentation]  Verify user Initiated BMC dump size is under 200k.
+    [Tags]  Verify_User_Initiated_Dump_Size
+
+    ${dump_id}=  Create User Initiated Dump
+
+    ${dump_size}=  Read Attribute  ${DUMP_ENTRY_URI}${dump_id}  Size
+    # Max size for dump is 200k = 200x1024
+    Should Be True  0 < ${dump_size} < 204800
+    Check Existence of BMC Dump file  ${dump_id}
+
+
+Create Two User Initiated Dump And Delete One
+    [Documentation]  Create two dumps and delete the first.
+    [Tags]  Create_Two_User_Initiated_Dump_And_Delete_One
+
+    ${dump_id_1}=  Create User Initiated Dump
+    ${dump_id_2}=  Create User Initiated Dump
+
+    Delete BMC Dump  ${dump_id_1}
+
+    ${resp}=  OpenBMC Get Request  ${DUMP_ENTRY_URI}${dump_id_1}
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_NOT_FOUND}
+
+    ${resp}=  OpenBMC Get Request  ${DUMP_ENTRY_URI}${dump_id_2}
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
+    Check Existence of BMC Dump file  ${dump_id_2}
+
+
+Create And Delete BMC Dump Multiple Times
+    [Documentation]  Create and delete BMC dump multiple times.
+    [Tags]  Create_And_Delete_BMC_Dump_Multiple_Times
+
+    :FOR  ${INDEX}  IN RANGE  1  5
+    \  ${dump_id}=  Create User Initiated Dump
+    \  Delete BMC Dump  ${dump_id}
+
+
+Delete All BMC Dumps And Verify
+    [Documentation]  Delete all BMC dumps and verify.
+    [Tags]  Delete_All_BMC_Dumps_And_Verify
+
+    # Create some dump.
+    Create User Initiated Dump
+    Create User Initiated Dump
+
+    Delete All BMC Dump
+    ${resp}=  OpenBMC Get Request  ${DUMP_ENTRY_URI}list
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_NOT_FOUND}
+
+
+Verify User Initiated BMC Dump When Host Booted
+    [Documentation]  Create user initiated BMC dump at host booted state and
+    ...  verify dump entry for it.
+    [Tags]  Verify_User_Initiated_BMC_Dump_When_Host_Booted
+
+    Redfish Power On  stack_mode=skip
+    Create User Initiated Dump
+
+
+Verify Core Dump Size
+    [Documentation]  Verify BMC core dump size is under 200k.
+    [Tags]  Verify_Core_Dump_Size
+
+    Delete All Dumps
+    Trigger Core Dump
+    Wait Until Keyword Succeeds  2 min  10 sec  Get Dump Entries
+
+    ${dump_entries}=  Get URL List  ${DUMP_ENTRY_URI}
+    ${dump_size}=  Read Attribute  ${dump_entries[0]}  Size
+
+    # Max size for dump is 200k = 200x1024
+    Should Be True  0 < ${dump_size} < 204800  msg=Size of dump is incorrect.
+
+
+Dump Out Of Space Test
+    [Documentation]  Verify out of dump space is reported when attempt
+    ...  to create too many dumps.
+    [Tags]  Dump_Out_Of_Space_Test
+
+    # Systems typically hold 8-14 dumps before running out of dump space.
+    # Attempt to create too_many_dumps.  Expect to run out of space
+    # before this.
+    ${too_many_dumps}  Set Variable  ${100}
+
+    # Should be able to create at least this many dumps.
+    ${minimum_number_of_dumps}   Set Variable  ${7}
+
+    # Loop, creating a dump each iteration.  Will either get dump_id or
+    # will get EMPTY when out of dump space.
+    :FOR  ${n}  IN RANGE  ${too_many_dumps}
+    \  ${dump_id}=  Create User Initiated Dump  check_out_of_space=${True}
+    \  Exit For Loop If  '${dump_id}' == '${EMPTY}'
+    \  Check Existence of BMC Dump file  ${dump_id}
+
+    Run Keyword If  '${dump_id}' != '${EMPTY}'  Fail
+    ...  msg=Did not run out of dump space as expected.
+
+    Run Keyword If  ${n} < ${minimum_number_of_dumps}  Fail
+    ...  msg=Insufficient space for at least ${minimum_number_of_dumps} dumps.
+
+
+Post Dump BMC Performance Test
+    [Documentation]  Check performance of memory, CPU & file system of BMC.
+    [Tags]  Post_Dump_BMC_Performance_Test
+
+    Open Connection And Log In
+    Check BMC Performance
+
+
+Post Dump Core Dump Check
+    [Documentation]  Check core dump existence on BMC after code update.
+    [Tags]  Post_Dump_Core_Dump_Check
+
+    Check For Core Dumps
+
+
+Verify Dump After Host Watchdog Error Injection
+    [Documentation]  Inject host watchdog error and verify whether dump is generated.
+    [Tags]  Verify_Dump_After_Host_Watchdog_Error_Injection
+
+    Redfish Power On
+
+    Run Keyword And Ignore Error  Delete All Dumps
+
+    # Enable auto reboot
+    Set Auto Reboot  ${1}
+
+    Trigger Host Watchdog Error  2000  30
+
+    Wait Until Keyword Succeeds  300 sec  20 sec  Is Host Rebooted
+
+    #Get dump details
+    @{dump_entry_list}=  Read Properties  ${DUMP_ENTRY_URI}
+
+    # Verifing that there is only one dump
+    ${length}=  Get length  ${dump_entry_list}
+    Should Be Equal As Integers  ${length}  ${1}
+
+    # Get dump id
+    ${value}=  Get From List  ${dump_entry_list}  0
+    @{split_value}=  Split String  ${value}  /
+    ${dump_id}=  Get From List  ${split_value}  -1
+
+    # Max size for dump is 200k = 200x1024
+    ${dump_size}=  Read Attribute  ${DUMP_ENTRY_URI}${dump_id}  Size
+    Should Be True  0 < ${dump_size} < 204800
+
+
+*** Keywords ***
+
+Test Teardown Execution
+    [Documentation]  Do the post test teardown.
+
+    Wait Until Keyword Succeeds  3 min  15 sec  Verify No Dump In Progress
+    FFDC On Test Case Fail
+    Delete All BMC Dump
+    Close All Connections
