diff --git a/lib/state_map.py b/lib/state_map.py
index 7e7b504..908b159 100644
--- a/lib/state_map.py
+++ b/lib/state_map.py
@@ -97,6 +97,58 @@
         ),
     },
 }
+REDFISH_VALID_BOOT_STATES = {
+    'Off':  # Valid states when Host is Off.
+    {
+        # (BMC , Chassis , Host , BootProgress)
+        (
+            "Enabled",
+            "Off",
+            "Disabled",
+            "None",
+        ),
+    },
+    'Reboot':  # Valid states when BMC reset to standby.
+    {
+        # (BMC , Chassis , Host , BootProgress)
+        (
+            "Enabled",
+            "Off",
+            "Disabled",
+            "None",
+        ),
+    },
+    'Running':  # Valid states when Host is powering on.
+    {
+        # (BMC , Chassis , Host , BootProgress)
+        (
+            "Enabled",
+            "On",
+            "Enabled",
+            "OSRunning",
+        ),
+    },
+    'Booted':  # Valid state when Host is booted.
+    {
+        # (BMC , Chassis , Host , BootProgress)
+        (
+            "Enabled",
+            "On",
+            "Enabled",
+            "OSRunning",
+        ),
+    },
+    'ResetReload':  # Valid state BMC reset reload when host is booted.
+    {
+        # (BMC , Chassis , Host , BootProgress)
+        (
+            "Enabled",
+            "On",
+            "Enabled",
+            "OSRunning",
+        ),
+    },
+}
 
 if platform_arch_type == "x86":
     VALID_BOOT_STATES_X86 = {}
@@ -159,3 +211,18 @@
             return True
         else:
             return False
+
+    def redfish_valid_boot_state(self, boot_type, state_dict):
+        r"""
+        Validate a given set of states is valid.
+
+        Description of argument(s):
+        boot_type                   Boot type (e.g. off/running/host booted
+                                    etc.)
+        state_dict                  State dictionary.
+        """
+
+        if set(state_dict.values()) in set(REDFISH_VALID_BOOT_STATES[boot_type]):
+            return True
+        else:
+            return False
diff --git a/lib/utils.robot b/lib/utils.robot
index 5a6efde..a73a56c 100755
--- a/lib/utils.robot
+++ b/lib/utils.robot
@@ -58,6 +58,21 @@
     Should Be Empty     ${stderr}
 
 
+Verify Ping SSH And Redfish Authentication
+    [Documentation]  Verify ping, SSH and redfish authentication.
+
+    ${l_ping}=   Run Keyword And Return Status  Ping Host  ${OPENBMC_HOST}
+    Run Keyword If  '${l_ping}' == '${False}'  Fail   msg=Ping Failed
+
+    ${l_rest}=   Run Keyword And Return Status   Redfish.Login
+    Run Keyword If  '${l_rest}' == '${False}'  Fail   msg=REST Authentication Failed
+
+    # Just to make sure the SSH is working.
+    Open Connection And Log In
+    ${system}   ${stderr}=    Execute Command   hostname   return_stderr=True
+    Should Be Empty     ${stderr}
+
+
 Check If BMC is Up
     [Documentation]  Wait for Host to be online. Checks every X seconds
     ...              interval for Y minutes and fails if timed out.
diff --git a/redfish/extended/test_power_restore.robot b/redfish/extended/test_power_restore.robot
index 981c859..4639400 100644
--- a/redfish/extended/test_power_restore.robot
+++ b/redfish/extended/test_power_restore.robot
@@ -36,7 +36,7 @@
     [Template]  Verify Restore Policy
 
     # Policy                Initial Host State     Expected Host State
-    ${ALWAYS_POWER_OFF}     Off                    Off
+    AlwaysOff               Off                    Off
 
 
 
@@ -46,7 +46,7 @@
     [Template]  Verify Restore Policy
 
     # Policy                Initial Host State     Expected Host State
-    ${ALWAYS_POWER_OFF}     Running                Running
+    AlwaysOff               Running                Running
 
 
 Test Restore Policy ALWAYS_POWER_ON With Host Off
@@ -63,7 +63,7 @@
     [Template]  Verify Restore Policy
 
     # Policy                Initial Host State     Expected Host State
-    ${ALWAYS_POWER_ON}      Off                    Running
+    AlwaysOn                Off                    Running
 
 
 
@@ -73,7 +73,7 @@
     [Template]  Verify Restore Policy
 
     # Policy                Initial Host State     Expected Host State
-    ${ALWAYS_POWER_ON}      Running                Running
+    AlwaysOn                Running                Running
 
 
 
@@ -91,7 +91,7 @@
     [Template]  Verify Restore Policy
 
     # Policy                Initial Host State     Expected Host State
-    ${RESTORE_LAST_STATE}   Running                Running
+    LastState               Running                Running
 
 
 
@@ -101,7 +101,7 @@
     [Template]  Verify Restore Policy
 
     # Policy                Initial Host State     Expected Host State
-    ${RESTORE_LAST_STATE}   Off                    Off
+    LastState               Off                    Off
 
 
 *** Keywords ***
@@ -118,10 +118,11 @@
 
     Set Initial Test State  ${expectedState}
 
-    Set BMC Power Policy  ${policy}
+    Redfish Set Power Restore Policy  ${policy}
 
     Redfish BMC Reset Operation
-    Check If BMC is Up
+    Sleep  20s
+    Wait For BMC Online
 
     Wait Until Keyword Succeeds
     ...  10 min  20 sec  Valid Boot States  ${nextState}
@@ -135,8 +136,8 @@
     # sys_state    system state list
     #              (e.g. "Off", "On", "Reboot", etc.).
 
-    ${current_state}=  Get Boot State
-    Valid Boot State  ${sys_state}  ${current_state}
+    ${current_state}=  Redfish Get States
+    Redfish Valid Boot State  ${sys_state}  ${current_state}
 
 
 Set Initial Test State
@@ -170,6 +171,24 @@
     [Documentation]  Do the post suite teardown.
     # 1. Set policy to default.
 
-    Run Keyword And Ignore Error  Set BMC Power Policy  ${ALWAYS_POWER_OFF}
+    Run Keyword And Ignore Error  Redfish Set Power Restore Policy  AlwaysOff
     Redfish.Logout
 
+
+Wait For BMC Online
+    [Documentation]  Wait for Host to be online. Checks every X seconds
+    ...              interval for Y minutes and fails if timed out.
+    ...              Default MAX timedout is 10 min, interval 10 seconds.
+    [Arguments]      ${max_timeout}=${OPENBMC_REBOOT_TIMEOUT} min
+    ...              ${interval}=10 sec
+
+    # Description of argument(s):
+    # max_timeout   Maximum time to wait.
+    #               This should be expressed in Robot Framework's time format
+    #               (e.g. "10 minutes").
+    # interval      Interval to wait between status checks.
+    #               This should be expressed in Robot Framework's time format
+    #               (e.g. "5 seconds").
+
+    Wait Until Keyword Succeeds
+    ...   ${max_timeout}  ${interval}  Verify Ping SSH And Redfish Authentication
