diff --git a/lib/bmc_redfish.py b/lib/bmc_redfish.py
index eeab824..fad445e 100644
--- a/lib/bmc_redfish.py
+++ b/lib/bmc_redfish.py
@@ -1,152 +1,40 @@
 #!/usr/bin/env python
 
 r"""
-Using python based redfish library.
-Refer: https://github.com/DMTF/python-redfish-library
+See class prolog below for details.
 """
 
-import redfish
+from redfish_plus import redfish_plus
 from robot.libraries.BuiltIn import BuiltIn
 
 
-class HTTPSBadRequestError(Exception):
+class bmc_redfish(redfish_plus):
     r"""
-    BMC redfish generic raised method for error(s).
+    bmc_redfish is a child class of  redfish_plus that is designed to provide
+    benefits specifically for using redfish to communicate with an OpenBMC.
+
+    See the prologs of the methods below for details.
     """
-    pass
-
-
-class bmc_redfish(object):
-
-    ROBOT_LIBRARY_SCOPE = "TEST SUITE"
-    ROBOT_EXIT_ON_FAILURE = True
-
-    def __init__(self, hostname, username, password, *args, **kwargs):
-        r"""
-        Establish session connection to host.
-
-        Description of argument(s):
-        hostname       The host name or IP address of the server.
-        username       The username to be used to connect to the server.
-        password       The password to be used to connect to the server.
-        args/kwargs    Additional parms which are passed directly
-                       to the redfish_client function.
-        """
-        self._base_url_ = "https://" + hostname
-        self._username_ = username
-        self._password_ = password
-        self._default_prefix_ = "/redfish/v1"
-
-    def __enter__(self):
-        return self
-
-    def __del__(self):
-        del self
 
     def login(self, *args, **kwargs):
         r"""
-        Call the corresponding RestClientBase method and return the result.
+        Assign BMC default values for username, password and auth arguments
+        and call parent class login method.
 
         Description of argument(s):
-        args/kwargs     These are passed directly to the corresponding
-                        RestClientBase method.
+        args                        See parent class prolog for details.
+        kwargs                      See parent class prolog for details.
         """
 
-        for arg in args:
-            hostname = self._base_url_.strip("https://")
-            # Class object constructor reinitialized.
-            self.__init__(hostname=hostname,
-                          username=arg['username'],
-                          password=arg['password'])
+        args = list(args)
+        # Assign default values for username, password, auth where necessary.
+        username = args.pop(0) if args else \
+            kwargs.pop('username',
+                       BuiltIn().get_variable_value("${OPENBMC_USERNAME}"))
+        password = args.pop(0) if args else \
+            kwargs.pop('password',
+                       BuiltIn().get_variable_value("${OPENBMC_PASSWORD}"))
+        auth = args.pop(0) if args else kwargs.pop('auth', 'session')
 
-        self._robj_ = redfish.redfish_client(base_url=self._base_url_,
-                                             username=self._username_,
-                                             password=self._password_,
-                                             default_prefix=self._default_prefix_)
-        self._robj_.login(auth=redfish.AuthMethod.SESSION)
-        self._session_key_ = self._robj_.get_session_key()
-        self._session_location_ = self._robj_.get_session_location()
-
-    def set_session_key(self, session_key):
-        r"""
-        Update the session key instance.
-
-        session_key      Redfish valid session key.
-        """
-        self._robj_.set_session_key(session_key)
-
-    def set_session_location(self, session_location):
-        r"""
-        Update the session location instance.
-
-        session_location   Redfish valid session location.
-                           Example:
-                           /redfish/v1/SessionService/Sessions/j04tD83QQn
-        """
-        self._robj_.set_session_location(session_location)
-
-    def get(self, resource_path, *args, **kwargs):
-        r"""
-        Perform a GET request and return response.
-
-        Description of argument(s):
-        resource_path    URI resource absolute path (e.g. "/redfish/v1/Systems/1").
-        args/kwargs      These are passed directly to the corresponding
-                         RestClientBase method.
-        """
-        self._rest_response_ = self._robj_.get(resource_path, *args, **kwargs)
-        return self._rest_response_
-
-    def post(self, resource_path, *args, **kwargs):
-        r"""
-        Perform a POST request.
-
-        Description of argument(s):
-        resource_path    URI resource relative path
-                         (e.g. "Systems/1/Actions/ComputerSystem.Reset").
-        args/kwargs      These are passed directly to the corresponding
-                         RestClientBase method.
-        """
-        self._rest_response_ = self._robj_.post(resource_path, *args, **kwargs)
-        return self._rest_response_
-
-    def patch(self, resource_path, *args, **kwargs):
-        r"""
-        Perform a POST request.
-
-        Description of argument(s):
-        resource_path    URI resource relative path
-        args/kwargs      These are passed directly to the corresponding
-                         RestClientBase method.
-        """
-        self._rest_response_ = self._robj_.patch(resource_path, *args, **kwargs)
-        return self._rest_response_
-
-    def put(self, resource_path, actions, attr_data):
-        r"""
-        Perform a PUT request.
-
-        Description of argument(s):
-        resource_path    URI resource relative path.
-        args/kwargs      These are passed directly to the corresponding
-                         RestClientBase method.
-        """
-        self._rest_response_ = self._robj_.put(resource_path, *args, **kwargs)
-        return self._rest_response_
-
-    def delete(self, resource_path):
-        r"""
-        Perform a DELETE request.
-
-        Description of argument(s):
-        resource_path  URI resource absolute path
-                       (e.g. "/redfish/v1/SessionService/Sessions/8d1a9wiiNL").
-        """
-        self._rest_response_ = self._robj_.delete(resource_path)
-        return self._rest_response_
-
-    def logout(self):
-        r"""
-        Logout redfish connection session.
-        """
-        self._robj_.logout()
+        super(redfish_plus, self).login(username, password, auth,
+                                        *args, **kwargs)
diff --git a/lib/bmc_redfish_resource.robot b/lib/bmc_redfish_resource.robot
index ab0db3d..ef38830 100644
--- a/lib/bmc_redfish_resource.robot
+++ b/lib/bmc_redfish_resource.robot
@@ -3,9 +3,8 @@
 
 Resource        resource.robot
 Resource        rest_response_code.robot
-Library         bmc_redfish.py
-...             ${OPENBMC_HOST}  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
-...             WITH NAME  redfish
+Library         bmc_redfish.py  https://${OPENBMC_HOST}  ${OPENBMC_USERNAME}
+...             ${OPENBMC_PASSWORD}  WITH NAME  Redfish
 Library         bmc_redfish_utils.py  WITH NAME  redfish_utils
 Library         disable_warning_urllib.py
 
diff --git a/lib/bmc_redfish_utils.py b/lib/bmc_redfish_utils.py
index 492a1a3..1bf53a7 100644
--- a/lib/bmc_redfish_utils.py
+++ b/lib/bmc_redfish_utils.py
@@ -27,8 +27,8 @@
         }
         """
         session_dict = {
-            "key": self._redfish_._session_key_,
-            "location": self._redfish_._session_location_
+            "key": self._redfish_.get_session_key(),
+            "location": self._redfish_.get_session_location()
         }
         return session_dict
 
@@ -111,8 +111,8 @@
 
         global resource_list
         resource_list = []
-
-        self._rest_response_ = self._redfish_.get(resource_path)
+        self._rest_response_ = \
+            self._redfish_.get(resource_path, valid_status_codes=[200, 404, 500])
 
         # Return empty list.
         if self._rest_response_.status != 200:
@@ -124,7 +124,8 @@
             return uri_path
 
         for resource in resource_list:
-            self._rest_response_ = self._redfish_.get(resource)
+            self._rest_response_ = \
+                self._redfish_.get(resource, valid_status_codes=[200, 404, 500])
             if self._rest_response_.status != 200:
                 continue
             self.walk_nested_dict(self._rest_response_.dict)
@@ -154,7 +155,8 @@
             # Example: '/redfish/v1/JsonSchemas/' and sub resources.
             if 'JsonSchemas' in resource:
                 continue
-            self._rest_response_ = self._redfish_.get(resource)
+            self._rest_response_ = \
+                self._redfish_.get(resource, valid_status_codes=[200, 404, 500])
             if self._rest_response_.status != 200:
                 continue
             resource_dict[resource] = self._rest_response_.dict
diff --git a/lib/openbmc_ffdc_methods.robot b/lib/openbmc_ffdc_methods.robot
index a436c63..cdd6778 100755
--- a/lib/openbmc_ffdc_methods.robot
+++ b/lib/openbmc_ffdc_methods.robot
@@ -478,7 +478,7 @@
 
     # Login is needed to fetch Redfish information.
     # If login fails, return from keyword.
-    ${status}=  Run Keyword And Return Status  redfish.Login
+    ${status}=  Run Keyword And Return Status  Redfish.Login
     Return From Keyword If   ${status} == ${False}
 
     # Get the Redfish resources and properties.
diff --git a/redfish/account_service/test_user_account.robot b/redfish/account_service/test_user_account.robot
index 13a1d1a..a81feb6 100644
--- a/redfish/account_service/test_user_account.robot
+++ b/redfish/account_service/test_user_account.robot
@@ -15,7 +15,7 @@
     [Documentation]  Verify Redfish account service is available.
     [Tags]  Verify_AccountService_Available
 
-    ${resp} =  redfish_utils.Get Attribute  /redfish/v1/AccountService  ServiceEnabled
+    ${resp} =  Redfish_utils.Get Attribute  /redfish/v1/AccountService  ServiceEnabled
     Should Be Equal As Strings  ${resp}  ${True}
 
 
@@ -24,11 +24,11 @@
 Test Setup Execution
     [Documentation]  Do test case setup tasks.
 
-    redfish.Login
+    Redfish.Login
 
 
 Test Teardown Execution
     [Documentation]  Do the post test teardown.
 
     FFDC On Test Case Fail
-    redfish.Logout
+    Redfish.Logout
diff --git a/redfish/dmtf_tools/Redfish-JsonSchema-ResponseValidator.robot b/redfish/dmtf_tools/Redfish-JsonSchema-ResponseValidator.robot
index d875c22..60c9e81 100644
--- a/redfish/dmtf_tools/Redfish-JsonSchema-ResponseValidator.robot
+++ b/redfish/dmtf_tools/Redfish-JsonSchema-ResponseValidator.robot
@@ -22,9 +22,9 @@
 
     Download DMTF Tool  ${rsv_dir_path}  ${rsv_github_url}
 
-    redfish.Login
+    Redfish.Login
     ${url_list}=  redfish_utils.List Request  /redfish/v1
-    redfish.Logout
+    Redfish.Logout
 
     Shell Cmd  mkdir -p logs/
 
diff --git a/redfish/managers/test_bmc_network_conf.robot b/redfish/managers/test_bmc_network_conf.robot
index 5e4b70c..6891e6e 100644
--- a/redfish/managers/test_bmc_network_conf.robot
+++ b/redfish/managers/test_bmc_network_conf.robot
@@ -37,7 +37,7 @@
     [Documentation]  Get MAC address and verify it's existence on the BMC.
     [Tags]  Get_MAC_Address_And_Verify
 
-    ${resp}=  redfish.Get  ${REDFISH_NW_ETH0_URI}
+    ${resp}=  Redfish.Get  ${REDFISH_NW_ETH0_URI}
     ${macaddr}=  Get From Dictionary  ${resp.dict}  MACAddress
     Validate MAC On BMC  ${macaddr}
 
@@ -54,7 +54,7 @@
 Test Setup Execution
     [Documentation]  Test setup execution.
 
-    redfish.Login
+    Redfish.Login
 
     @{network_configurations}=  Get Network Configuration
     Set Test Variable  @{network_configurations}
@@ -96,7 +96,7 @@
     #    "VLANId": 0
     #  }
 
-    ${resp}=  redfish.Get  ${REDFISH_NW_ETH0_URI}
+    ${resp}=  Redfish.Get  ${REDFISH_NW_ETH0_URI}
     @{network_configurations}=  Get From Dictionary  ${resp.dict}  IPv4Addresses
     [Return]  @{network_configurations}
 
@@ -162,4 +162,4 @@
     [Documentation]  Test teardown execution.
 
     FFDC On Test Case Fail
-    redfish.Logout
+    Redfish.Logout
diff --git a/redfish/managers/test_managers_bmc.robot b/redfish/managers/test_managers_bmc.robot
index 3c65884..9f2f29b 100644
--- a/redfish/managers/test_managers_bmc.robot
+++ b/redfish/managers/test_managers_bmc.robot
@@ -4,8 +4,8 @@
 Resource         ../../lib/common_utils.robot
 Resource         ../../lib/openbmc_ffdc.robot
 
-Test Teardown    FFDC On Test Case Fail
-Suite Teardown   redfish.Logout
+Test Setup       Test Setup Execution
+Test Teardown    Redfish.Logout
 
 *** Test Cases ***
 
@@ -13,21 +13,20 @@
     [Documentation]  Get firmware version from BMC manager.
     [Tags]  Verify_Redfish_BMC_Firmware_Version
 
-    redfish.Login
-    ${resp}=  redfish.Get  /redfish/v1/Managers/bmc
+    Redfish.Login
+    ${resp}=  Redfish.Get  /redfish/v1/Managers/bmc
     Should Be Equal As Strings  ${resp.status}  ${HTTP_OK}
     ${bmc_version}=  Get BMC Version
     Should Be Equal As Strings
     ...  ${resp.dict["FirmwareVersion"]}  ${bmc_version.strip('"')}
-    redfish.Logout
 
 
 Verify Redfish BMC Manager Properties
     [Documentation]  Verify BMC managers resource properties.
     [Tags]  Verify_Redfish_BMC_Manager_Properties
 
-    redfish.Login
-    ${resp}=  redfish.Get  /redfish/v1/Managers/bmc
+    Redfish.Login
+    ${resp}=  Redfish.Get  /redfish/v1/Managers/bmc
     Should Be Equal As Strings  ${resp.status}  ${HTTP_OK}
     # Example:
     #  "Description": "Baseboard Management Controller"
@@ -44,7 +43,6 @@
     Should Be Equal As Strings  ${resp.dict["Name"]}  OpenBmc Manager
     Should Not Be Empty  ${resp.dict["UUID"]}
     Should Be Equal As Strings  ${resp.dict["PowerState"]}  On
-    redfish.Logout
 
 
 Test Redfish BMC Manager GracefulRestart
@@ -60,12 +58,24 @@
     #  "target": "/redfish/v1/Managers/bmc/Actions/Manager.Reset"
     # }
 
-    redfish.Login
+    Redfish.Login
     ${payload}=  Create Dictionary  ResetType=GracefulRestart
-    ${resp}=  redfish.Post  Managers/bmc/Actions/Manager.Reset  body=&{payload}
+    ${resp}=  Redfish.Post  Managers/bmc/Actions/Manager.Reset  body=&{payload}
     Should Be Equal As Strings  ${resp.status}  ${HTTP_OK}
 
     # TODO: Add logic to ping and check BMC online state
 
+*** Keywords ***
 
+Test Setup Execution
+    [Documentation]  Do test case setup tasks.
+
+    redfish.Login
+
+
+Test Teardown Execution
+    [Documentation]  Do the post test teardown.
+
+    FFDC On Test Case Fail
+    redfish.Logout
 
diff --git a/redfish/service_root/test_service_root.robot b/redfish/service_root/test_service_root.robot
index 23a2ea6..8aef25e 100644
--- a/redfish/service_root/test_service_root.robot
+++ b/redfish/service_root/test_service_root.robot
@@ -1,9 +1,12 @@
 *** Settings ***
+
 Resource         ../../lib/resource.robot
 Resource         ../../lib/bmc_redfish_resource.robot
 Resource         ../../lib/openbmc_ffdc.robot
 
+
 Test Teardown    FFDC On Test Case Fail
+Test Setup       Rprintn
 
 *** Test Cases ***
 
@@ -11,8 +14,8 @@
     [Documentation]  Login to BMCweb and then logout.
     [Tags]  Redfish_Login_And_Logout
 
-    redfish.Login
-    redfish.Logout
+    Redfish.Login
+    Redfish.Logout
 
 
 GET Redfish Hypermedia Without Login
@@ -30,18 +33,17 @@
     [Documentation]  Login to BMCweb and get /redfish/v1/SessionService.
     [Tags]  GET_Redfish_SessionService_Resource_With_Login
 
-    redfish.Login
-    ${resp}=  redfish.Get  /redfish/v1/SessionService
-    Should Be Equal As Strings  ${resp.status}  ${HTTP_OK}
-    redfish.Logout
+    Redfish.Login
+    ${resp}=  Redfish.Get  /redfish/v1/SessionService
+    Redfish.Logout
 
 
 GET Redfish SessionService Without Login
     [Documentation]  Get /redfish/v1/SessionService without login
     [Tags]  GET_Redfish_SessionService_Without_Login
 
-    ${resp}=  redfish.Get  /redfish/v1/SessionService
-    Should Be Equal As Strings  ${resp.status}  ${HTTP_UNAUTHORIZED}
+    ${resp}=  Redfish.Get  /redfish/v1/SessionService
+    ...  valid_status_codes=[${HTTP_UNAUTHORIZED}]
 
 
 Redfish Login Using Invalid Token
@@ -64,15 +66,17 @@
     [Documentation]  Delete a session using valid login.
     [Tags]  Delete_Redfish_Session_Using_Valid_Login
 
-    redfish.Login
+    Redfish.Login
+    Redfish.Login
 
     # Example o/p:
     # [{'@odata.id': '/redfish/v1/SessionService/Sessions/bOol3WlCI8'},
     #  {'@odata.id': '/redfish/v1/SessionService/Sessions/Yu3xFqjZr1'}]
-    ${resp_list}=  redfish_utils.List Request  /redfish/v1/SessionService/Sessions
-    redfish.Delete  ${resp_list[1]}
+    ${resp_list}=  Redfish_Utils.List Request
+    ...  /redfish/v1/SessionService/Sessions
+    Redfish.Delete  ${resp_list[1]}
 
-    ${resp}=  redfish_utils.List Request  /redfish/v1/SessionService/Sessions
+    ${resp}=  Redfish_Utils.List Request  /redfish/v1/SessionService/Sessions
     List Should Not Contain Value  ${resp}  ${resp_list[1]}
 
 
@@ -80,11 +84,12 @@
 
 GET And Verify Redfish Response
     [Documentation]  GET given resource and verfiy response.
-    [Arguments]  ${expected_response_code}  ${resource_path}
+    [Arguments]  ${valid_status_codes}  ${resource_path}
 
-    # Description of arguments:
-    # expected_response_code   Expected REST status codes.
-    # resource_path            Redfish resource URL path.
+    # Description of argument(s):
+    # valid_status_codes            A comma-separated list of acceptable
+    #                               status codes (e.g. 200).
+    # resource_path                 Redfish resource URL path.
 
-    ${resp}=  redfish.Get  ${resource_path}
-    Should Be Equal As Strings  ${resp.status}  ${expected_response_code}
+    ${resp}=  Redfish.Get  ${resource_path}
+    ...  valid_status_codes=[${valid_status_codes}]
diff --git a/redfish/service_root/test_service_root_security.robot b/redfish/service_root/test_service_root_security.robot
index f8d0e4f..ac2f482 100644
--- a/redfish/service_root/test_service_root_security.robot
+++ b/redfish/service_root/test_service_root_security.robot
@@ -4,6 +4,7 @@
 Resource         ../../lib/openbmc_ffdc.robot
 
 Test Teardown    FFDC On Test Case Fail
+Test Setup       Rprintn
 
 *** Variables ***
 
@@ -59,7 +60,7 @@
     [Tags]  Create_Multiple_Login_Sessions_And_Verify
     [Teardown]  Multiple Session Cleanup
 
-    redfish.Login
+    Redfish.Login
     # Example:
     #    {
     #      'key': 'L0XEsZAXpNdF147jJaOD',
@@ -75,10 +76,9 @@
 
     # Update the redfish session object with the first login key and location
     # and verify if it is still working.
-    redfish.Set Session Key  ${saved_session_info["key"]}
-    redfish.Set Session Location  ${saved_session_info["location"]}
-    ${resp}=  redfish.Get  ${saved_session_info["location"]}
-    Should Be Equal As Strings  ${resp.status}  ${HTTP_OK}
+    Redfish.Set Session Key  ${saved_session_info["key"]}
+    Redfish.Set Session Location  ${saved_session_info["location"]}
+    Redfish.Get  ${saved_session_info["location"]}
 
 
 Attempt Login With Expired Session
@@ -86,17 +86,16 @@
     ...   use the session.
     [Tags]  Attempt_Login_With_Expired_Session
 
-    redfish.Login
+    Redfish.Login
     ${saved_session_info}=  Get Redfish Session Info
-    redfish.Logout
+    Redfish.Logout
 
     # Attempt login with expired session.
     # By default 60 minutes of inactivity closes the session.
-    redfish.Set Session Key  ${saved_session_info["key"]}
-    redfish.Set Session Location  ${saved_session_info["location"]}
+    Redfish.Set Session Key  ${saved_session_info["key"]}
+    Redfish.Set Session Location  ${saved_session_info["location"]}
 
-    ${resp}=  redfish.Get  ${saved_session_info["location"]}
-    Should Be Equal As Strings  ${resp.status}  ${HTTP_UNAUTHORIZED}
+    Redfish.Get  ${saved_session_info["location"]}  valid_status_codes=[${HTTP_UNAUTHORIZED}]
 
 
 *** Keywords ***
@@ -111,13 +110,13 @@
     # password            The password to be used to connect to the server.
 
     ${data}=  Create Dictionary  username=${username}  password=${password}
-    Run Keyword And Expect Error  ${expected_response}  redfish.Login  ${data}
+    Run Keyword And Expect Error  ${expected_response}  Redfish.Login  ${data}
 
 
 Create New Login Session
     [Documentation]  Multiple login session keys.
 
-    redfish.Login
+    Redfish.Login
     ${session_info}=  Get Redfish Session Info
 
     # Append the session location to the list.
@@ -132,5 +131,5 @@
     FFDC On Test Case Fail
 
     :FOR  ${item}  IN  @{session_list}
-    \  redfish.Delete  ${item}
+    \  Redfish.Delete  ${item}
 
diff --git a/redfish/update_service/test_firmware_inventory.robot b/redfish/update_service/test_firmware_inventory.robot
index 0b0848f..9e26b88 100644
--- a/redfish/update_service/test_firmware_inventory.robot
+++ b/redfish/update_service/test_firmware_inventory.robot
@@ -3,7 +3,8 @@
 Resource         ../../lib/bmc_redfish_resource.robot
 Resource         ../../lib/openbmc_ffdc.robot
 
-Test Teardown    FFDC On Test Case Fail
+Test Setup       Test Setup Execution
+Test Teardown    Test Teardown Execution
 
 *** Test Cases ***
 
@@ -17,11 +18,8 @@
     # "Name": "Update Service",
     # "ServiceEnabled": true
 
-    redfish.Login
-    ${resp}=  redfish.Get  /redfish/v1/UpdateService
-    Should Be Equal As Strings  ${resp.status}  ${HTTP_OK}
+    ${resp}=  Redfish.Get  /redfish/v1/UpdateService
     Should Be Equal As Strings  ${resp.dict["ServiceEnabled"]}  ${True}
-    redfish.Logout
 
 
 Verify Redfish Software Inventory Collection
@@ -46,22 +44,17 @@
     #   "Name": "Software Inventory Collection"
     # }
 
-    redfish.Login
-    ${resp}=  redfish.Get  /redfish/v1/UpdateService/FirmwareInventory
-    Should Be Equal As Strings  ${resp.status}  ${HTTP_OK}
+    ${resp}=  Redfish.Get  /redfish/v1/UpdateService/FirmwareInventory
 
     Should Be True  ${resp.dict["Members@odata.count"]} >= ${1}
     Length Should Be  ${resp.dict["Members"]}  ${resp.dict["Members@odata.count"]}
-    redfish.Logout
 
 
 Redfish Software Inventory Status Check
     [Documentation]  Get firmware inventory entries and do health check status.
     [Tags]  Redfish_Software_Inventory_Status_Check
 
-    redfish.Login
-    ${resp}=  redfish.Get  /redfish/v1/UpdateService/FirmwareInventory
-    Should Be Equal As Strings  ${resp.status}  ${HTTP_OK}
+    ${resp}=  Redfish.Get  /redfish/v1/UpdateService/FirmwareInventory
 
     # Entries "Members@odata.count": 3,
     # {'@odata.id': '/redfish/v1/UpdateService/FirmwareInventory/a3522998'}
@@ -69,8 +62,7 @@
     # {'@odata.id': '/redfish/v1/UpdateService/FirmwareInventory/ace821ef'}
 
     :FOR  ${entry}  IN RANGE  0  ${resp.dict["Members@odata.count"]}
-    \  ${resp_resource}=  redfish.Get  ${resp.dict["Members"][${entry}]["@odata.id"]}
-    \  Should Be Equal As Strings  ${resp_resource.status}  ${HTTP_OK}
+    \  ${resp_resource}=  Redfish.Get  ${resp.dict["Members"][${entry}]["@odata.id"]}
     # Example:
     # "Status": {
     #     "Health": "OK",
@@ -80,4 +72,18 @@
     \  Should Be Equal As Strings  ${resp_resource.dict["Status"]["Health"]}  OK
     \  Should Be Equal As Strings  ${resp_resource.dict["Status"]["HealthRollup"]}  OK
     \  Should Be Equal As Strings  ${resp_resource.dict["Status"]["State"]}  Enabled
-    redfish.Logout
+
+
+*** Keywords ***
+
+Test Setup Execution
+    [Documentation]  Do test case setup tasks.
+
+    Redfish.Login
+
+
+Test Teardown Execution
+    [Documentation]  Do the post test teardown.
+
+    FFDC On Test Case Fail
+    Redfish.Logout
