diff --git a/redfish/update_service/test_bmc_image_switch.robot b/redfish/update_service/test_bmc_image_switch.robot
new file mode 100644
index 0000000..0ad9cf3
--- /dev/null
+++ b/redfish/update_service/test_bmc_image_switch.robot
@@ -0,0 +1,142 @@
+*** Settings ***
+Documentation            Redfish test to switch image sides and boot.
+
+Resource                 ../../lib/resource.robot
+Resource                 ../../lib/bmc_redfish_resource.robot
+Resource                 ../../lib/openbmc_ffdc.robot
+Resource                 ../../lib/redfish_code_update_utils.robot
+Library                  ../../lib/tftp_update_utils.py
+
+Suite Setup              Suite Setup Execution
+Suite Teardown           Redfish.Logout
+Test Teardown            FFDC On Test Case Fail
+
+*** Variables ***
+
+# Switch iteration count. By default it does only 2 switch.
+# User can input -v LOOP_COUNT:n  to drive the switch back and forth for
+# nth iteration.
+${LOOP_COUNT}    ${2}
+
+*** Test Cases ***
+
+Test Firmware Image Switch Without Powering Host
+    [Documentation]  Switch image at host powered off.
+    [Tags]  Test_Firmware_Image_Switch_Without_Powering_Host
+    [Template]  Firmware Switch Loop
+
+    # iteration          power_on
+    ${LOOP_COUNT}        NO
+
+
+Test Firmware Image Switch And Power On Host
+    [Documentation]  Switch image and power on host and verify that it boots.
+    [Tags]  Test_Firmware_Image_Switch_And_Power_On_Host
+    [Template]  Firmware Switch Loop
+
+    # iteration          power_on
+    ${LOOP_COUNT}        YES
+
+
+*** Keywords ***
+
+Firmware Switch Loop
+    [Documentation]  Wrapper keyword for iteration for firmware side switch.
+    [Arguments]  ${iteration}  ${power_on}
+
+    # Description of argument(s):
+    # iteration      Number of switch it needs to perform.
+    # power_on       If YES, boot the system post firmware image switch,
+    #                if NO, do not perform any poweron operation.
+
+    FOR  ${count}  IN RANGE  0  ${iteration}
+        Log To Console   LOOP_COUNT:${count} execution.
+        Redfish BMC Switch Firmware Side
+
+        Continue For Loop If  '${power_on}' == 'NO'
+
+        Log To Console   Power on requested, issuing power on.
+        Redfish Power On
+
+        # Power Off for next iteration. Firmware image switch ideally needs to be
+        # to be executed when Host is powered off.
+        Log To Console   Power off requested, issuing power off.
+        Redfish Power Off
+    END
+
+
+Suite Setup Execution
+    [Documentation]  Do the suite setup.
+
+    Redfish.Login
+    Run Keyword And Ignore Error  Redfish Purge Event Log
+    Redfish Power Off  stack_mode=skip
+
+
+Redfish BMC Switch Firmware Side
+    [Documentation]  Switch back up image to running and verify.
+    [Tags]  Redfish_BMC_Switch_Firmware_Side
+
+    # fw_inv_dict:
+    #  [19a3ef3e]:
+    #    [image_type]:                                 BMC image
+    #    [image_id]:                                   19a3ef3e
+    #    [functional]:                                 True
+    #    [version]:                                    2.12.0-dev-1440-g8dada0a1a
+    #  [62d16947]:
+    #    [image_type]:                                 BMC image
+    #    [image_id]:                                   62d16947
+    #    [functional]:                                 False
+    #    [version]:                                    2.12.0-dev-1441-g8deadbeef
+    ${fw_inv_dict}=  Get Software Inventory State
+    Rprint Vars  fw_inv_dict
+
+    # Get the backup firmware version for reference.
+    FOR  ${id}  IN  @{fw_inv_dict.keys()}
+        Continue For Loop If  '${fw_inv_dict['${id}']['functional']}' == 'True'
+        # Find the non functional id and fetch the version.
+        ${image_version}=  Set Variable  ${fw_inv_dict['${id}']['version']}
+    END
+
+    Log To Console  Backup firmware version: ${image_version}
+
+    Switch Firmware Side  ${image_version}
+
+    Match BMC Release And Redifsh Firmware Version
+    Log To Console  The backup firmware image ${image_version} is now functional.
+
+
+Match BMC Release And Redifsh Firmware Version
+    [Documentation]  The /etc/os-release vs Redfish FirmwareVersion attribute value from
+    ...             /redfish/v1/Managers/bmc should match.
+
+    # Python module: get_bmc_release_info()
+    ${bmc_release_info}=  utils.Get BMC Release Info
+    ${bmc_release}=  Set Variable  ${bmc_release_info['version_id']}
+    Rprint Vars  bmc_release
+
+    ${firmware_version}=  Redfish.Get Attribute  /redfish/v1/Managers/bmc  FirmwareVersion
+    Rprint Vars  firmware_version
+
+    Should Be Equal As Strings   ${bmc_release}   ${firmware_version}
+    ...  msg=${bmc_release} does not match redfish version ${firmware_version}
+
+
+Switch Firmware Side
+    [Documentation]  Set the backup firmware to functional and verify after BMC rebooted.
+    [Arguments]  ${image_version}
+
+    # Description of argument(s):
+    # image_version     Version of image.
+
+    ${state}=  Get Pre Reboot State
+
+    Print Timen  Switch to back up and rebooting.
+    Switch Backup Firmware Image To Functional
+    Wait For Reboot  start_boot_seconds=${state['epoch_seconds']}
+    Print Timen  Switch to back up completed.
+
+    # Check if the BMC version after rebooted is the same version asked to switch.
+    ${firmware_version}=  Redfish.Get Attribute  /redfish/v1/Managers/bmc  FirmwareVersion
+    Should Be Equal As Strings   ${image_version}   ${firmware_version}
+    ...  msg=${image_version} does not match redfish version ${firmware_version}
