diff --git a/openpower/ext_interfaces/test_lock_management.robot b/openpower/ext_interfaces/test_lock_management.robot
new file mode 100644
index 0000000..7313403
--- /dev/null
+++ b/openpower/ext_interfaces/test_lock_management.robot
@@ -0,0 +1,439 @@
+*** Settings ***
+
+Documentation    Test Lock Management feature of Management Console on BMC.
+
+Resource         ../../lib/resource.robot
+Resource         ../../lib/bmc_redfish_resource.robot
+Resource         ../../lib/openbmc_ffdc.robot
+
+Test Setup       Create New Session
+Test Teardown    Test Teardown Execution
+
+*** Variables ***
+
+# Data-sets for testing different test cases.
+&{LOCKALL_LEN1}                   LockFlag=LockAll                SegmentLength=${1}
+&{LOCKALL_LEN2}                   LockFlag=LockAll                SegmentLength=${2}
+&{LOCKALL_LEN3}                   LockFlag=LockAll                SegmentLength=${3}
+&{LOCKALL_LEN4}                   LockFlag=LockAll                SegmentLength=${4}
+&{LOCKALL_LEN5}                   LockFlag=LockAll                SegmentLength=${5}
+
+&{LOCKALL_INVALID_LOCKFLAG1}      LockFlag=LocAll                 SegmentLength=${2}
+&{LOCKALL_INVALID_LOCKFLAG2}      LockFlag=LOCKALL                SegmentLength=${3}
+&{LOCKALL_INVALID_LOCKFLAG3}      LOCKFLAG=LockAll                SegmentLength=${4}
+&{LOCKSAME_INVALID_LOCKFLAG3}     Lock=LockSame                   SegmentLength=${1}
+&{LOCKSAME_INVALID_LOCKFLAG4}     Lock=LockSame                   SegmentLength=${True}
+
+&{LOCKSAME_LEN1}                  LockFlag=LockSame               SegmentLength=${1}
+&{LOCKSAME_LEN2}                  LockFlag=LockSame               SegmentLength=${2}
+&{LOCKSAME_LEN3}                  LockFlag=LockSame               SegmentLength=${3}
+&{LOCKSAME_LEN4}                  LockFlag=LockSame               SegmentLength=${4}
+&{LOCKSAME_INVALID_LEN1}          LockFlag=LockSame               SegmentLength=${0}
+&{LOCKSAME_INVALID_LEN2}          LockFlag=LockSame               SegmentLength=${5}
+&{LOCKSAME_INVALID_LEN_STR}       LockFlag=LockSame               SegmentLength=2
+&{LOCKSAME_INVALID_LEN_NEG}       LockFlag=LockSame               SegmentLength=${-3}
+&{LOCKSAME_INVALID_LEN_BOOL}      Lock=LockSame                   SegmentLength=${True}
+
+&{DONTLOCK_LEN1}                  LockFlag=DontLock               SegmentLength=${1}
+&{DONTLOCK_LEN2}                  LockFlag=DontLock               SegmentLength=${2}
+&{DONTLOCK_LEN3}                  LockFlag=DontLock               SegmentLength=${3}
+&{DONTLOCK_LEN4}                  LockFlag=DontLock               SegmentLength=${4}
+&{DONTLOCK_INVALID_LEN}           LockFlag=DontLock               SegmentLength=${5}
+&{DONTLOCK_INVALID_LEN_BOOL}      LockFlag=DONTLOCK               SegmentLength=${False}
+&{DONTLOCK_INVALID_LOCKFLAG}      LOCKFLAG=LockAll                SegmentLength=${4}
+
+@{ONE_SEG_FLAG_ALL}               ${LOCKALL_LEN1}
+@{ONE_SEG_FLAG_SAME}              ${LOCKSAME_LEN3}
+@{ONE_SEG_FLAG_DONT}              ${DONTLOCK_LEN4}
+
+@{TWO_SEG_FLAG_1}                 ${LOCKALL_LEN1}                 ${LOCKSAME_LEN2}
+@{TWO_SEG_FLAG_2}                 ${DONTLOCK_LEN3}                ${LOCKALL_LEN1}
+@{TWO_SEG_FLAG_3}                 ${DONTLOCK_LEN4}                ${LOCKSAME_LEN3}
+@{TWO_SEG_FLAG_4}                 ${DONTLOCK_INVALID_LEN}         ${LOCKSAME_LEN3}
+@{TWO_SEG_FLAG_5}                 ${DONTLOCK_LEN2}                ${LOCKSAME_INVALID_LEN1}
+
+@{TWO_SEG_FLAG_INVALID1}          ${DONTLOCK_LEN4}                ${LOCKSAME_INVALID_LEN1}
+@{TWO_SEG_FLAG_INVALID2}          ${LOCKALL_LEN5}                 ${DONTLOCK_LEN1}
+@{TWO_SEG_FLAG_INVALID3}          ${DONTLOCK_LEN1}                ${LOCKALL_INVALID_LOCKFLAG1}
+@{TWO_SEG_FLAG_INVALID4}          ${DONTLOCK_LEN2}                ${LOCKALL_INVALID_LOCKFLAG2}
+@{TWO_SEG_FLAG_INVALID5}          ${DONTLOCK_LEN2}                ${LOCKALL_INVALID_LOCKFLAG3}
+@{TWO_SEG_FLAG_INVALID6}          ${LOCKALL_LEN3}                 ${LOCKSAME_INVALID_LOCKFLAG3}
+@{TWO_SEG_FLAG_INVALID7}          ${DONTLOCK_LEN2}                ${LOCKSAME_INVALID_LOCKFLAG4}
+@{TWO_SEG_FLAG_INVALID8}          ${DONTLOCK_INVALID_LOCKFLAG}    ${LOCKSAME_INVALID_LEN_BOOL}
+@{TWO_SEG_FLAG_INVALID9}          ${DONTLOCK_LEN2}                ${LOCKSAME_INVALID_LOCKFLAG4}
+
+@{THREE_SEG_FLAG_1}               ${LOCKALL_LEN1}                 @{TWO_SEG_FLAG_3}
+@{THREE_SEG_FLAG_2}               ${LOCKSAME_LEN4}                @{TWO_SEG_FLAG_2}
+@{THREE_SEG_FLAG_3}               ${DONTLOCK_LEN3}                @{TWO_SEG_FLAG_1}
+
+@{FOUR_SEG_FLAG_1}                ${LOCKALL_LEN1}                 @{THREE_SEG_FLAG_2}
+@{FOUR_SEG_FLAG_2}                ${LOCKSAME_LEN4}                @{THREE_SEG_FLAG_3}
+@{FOUR_SEG_FLAG_3}                ${DONTLOCK_LEN3}                @{THREE_SEG_FLAG_1}
+
+@{FIVE_SEG_FLAG_1}                ${LOCKALL_LEN1}                 @{FOUR_SEG_FLAG_2}
+@{FIVE_SEG_FLAG_2}                ${LOCKSAME_LEN4}                @{FOUR_SEG_FLAG_3}
+@{FIVE_SEG_FLAG_3}                ${DONTLOCK_LEN3}                @{FOUR_SEG_FLAG_1}
+
+@{SIX_SEG_FLAG_1}                 ${LOCKALL_LEN1}                 @{FIVE_SEG_FLAG_2}
+@{SIX_SEG_FLAG_2}                 ${LOCKSAME_LEN4}                @{FIVE_SEG_FLAG_3}
+@{SIX_SEG_FLAG_3}                 ${DONTLOCK_LEN3}                @{FIVE_SEG_FLAG_1}
+
+@{SEVEN_SEG_FLAG_1}               ${LOCKALL_LEN1}                 @{SIX_SEG_FLAG_2}
+@{SEVEN_SEG_FLAG_2}               ${LOCKSAME_LEN4}                @{SIX_SEG_FLAG_3}
+@{SEVEN_SEG_FLAG_3}               ${DONTLOCK_LEN3}                @{SIX_SEG_FLAG_1}
+
+# Different messages to be verified.
+${PROP_REQ_ERR}         is a required property and must be included in the request.
+${PROP_ERR}             is not in the list of valid properties for the resource.
+${PROP_TYPE_ERR}        is of a different type than the property can accept.
+
+# Build error patterns list.
+@{EMPTY LIST}
+@{ERR_PATTERN1}                   ${PROP_REQ_ERR}                ${PROP_ERR}
+@{ERR_PATTERN2}                   ${PROP_TYPE_ERR}
+@{ERR_PATTERN3}                   ${PROP_REQ_ERR}                ${PROP_ERR}                 ${PROP_TYPE_ERR}
+
+# Dictionary of Locks with Transaction ID as key and Session ID as a value.
+&{LOCKS}
+
+
+*** Test Cases ***
+
+Acquire And Release Different Read Locks
+    [Documentation]  Acquire and release different read locks.
+    [Tags]  Acquire_And_Release_Different_Read_Locks
+    [Template]  Acquire And Release Lock
+
+    # lock  seg_flags                     resource_id  hmc_id  exp_status_code      err_msgs         new_sess
+    # type                                                                                            req
+    Read    ${ONE_SEG_FLAG_ALL}           ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY LIST}    ${True}
+    Read    ${ONE_SEG_FLAG_SAME}          ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY LIST}    ${True}
+    Read    ${ONE_SEG_FLAG_DONT}          ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY LIST}    ${True}
+    Read    ${TWO_SEG_FLAG_1}             ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${TWO_SEG_FLAG_2}             ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${TWO_SEG_FLAG_3}             ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${TWO_SEG_FLAG_4}             ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY LIST}    ${True}
+    Read    ${TWO_SEG_FLAG_5}             ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY LIST}    ${True}
+    Read    ${THREE_SEG_FLAG_1}           ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${THREE_SEG_FLAG_2}           ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${THREE_SEG_FLAG_3}           ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${FOUR_SEG_FLAG_1}            ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${FOUR_SEG_FLAG_2}            ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${FOUR_SEG_FLAG_3}            ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${FIVE_SEG_FLAG_1}            ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${FIVE_SEG_FLAG_2}            ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${FIVE_SEG_FLAG_3}            ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${SIX_SEG_FLAG_1}             ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${SIX_SEG_FLAG_2}             ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${SIX_SEG_FLAG_3}             ${234}       hmc-id  ${HTTP_OK}           ${EMPTY LIST}    ${True}
+    Read    ${SEVEN_SEG_FLAG_1}           ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY LIST}    ${True}
+    Read    ${SEVEN_SEG_FLAG_2}           ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY LIST}    ${True}
+    Read    ${SEVEN_SEG_FLAG_3}           ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY LIST}    ${True}
+    Read    ${LOCKSAME_INVALID_LEN1}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY LIST}    ${True}
+    Read    ${LOCKSAME_INVALID_LEN_STR}   ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${ERR_PATTERN2}  ${True}
+    Read    ${LOCKSAME_INVALID_LEN_NEG}   ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${ERR_PATTERN2}  ${True}
+    Read    ${LOCKSAME_INVALID_LEN_BOOL}  ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${ERR_PATTERN2}  ${True}
+    Read    ${DONTLOCK_INVALID_LEN_BOOL}  ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${ERR_PATTERN2}  ${True}
+    Read    ${TWO_SEG_FLAG_INVALID1}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY LIST}    ${True}
+    Read    ${TWO_SEG_FLAG_INVALID2}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY LIST}    ${True}
+    Read    ${TWO_SEG_FLAG_INVALID3}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY LIST}    ${True}
+    Read    ${TWO_SEG_FLAG_INVALID4}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY LIST}    ${True}
+    Read    ${TWO_SEG_FLAG_INVALID5}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${ERR_PATTERN1}  ${True}
+    Read    ${TWO_SEG_FLAG_INVALID6}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${ERR_PATTERN1}  ${True}
+    Read    ${TWO_SEG_FLAG_INVALID7}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${ERR_PATTERN3}  ${True}
+    Read    ${TWO_SEG_FLAG_INVALID8}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${ERR_PATTERN1}  ${True}
+    Read    ${TWO_SEG_FLAG_INVALID9}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${ERR_PATTERN2}  ${True}
+    Read    ${TWO_SEG_FLAG_3}             234          hmc-id  ${HTTP_BAD_REQUEST}  ${ERR_PATTERN2}  ${True}
+
+
+Acquire And Release Different Write Locks
+    [Documentation]  Acquire and release different write locks.
+    [Tags]  Acquire_And_Release_Different_Write_Locks
+    [Template]  Acquire And Release Lock
+
+    # lock  seg_flags                    resource_id  hmc_id  exp_status_code       err_msgs         new_sess
+    # type                                                                                            req
+    Write  ${ONE_SEG_FLAG_ALL}           ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${ONE_SEG_FLAG_SAME}          ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${ONE_SEG_FLAG_DONT}          ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${TWO_SEG_FLAG_1}             ${234}       hmc-id  ${HTTP_CONFLICT}      ${EMPTY LIST}    ${True}
+    Write  ${TWO_SEG_FLAG_2}             ${234}       hmc-id  ${HTTP_OK}            ${EMPTY LIST}    ${True}
+    Write  ${TWO_SEG_FLAG_3}             ${234}       hmc-id  ${HTTP_OK}            ${EMPTY LIST}    ${True}
+    Write  ${TWO_SEG_FLAG_INVALID4}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${THREE_SEG_FLAG_1}           ${234}       hmc-id  ${HTTP_CONFLICT}      ${EMPTY LIST}    ${True}
+    Write  ${THREE_SEG_FLAG_2}           ${234}       hmc-id  ${HTTP_CONFLICT}      ${EMPTY LIST}    ${True}
+    Write  ${THREE_SEG_FLAG_3}           ${234}       hmc-id  ${HTTP_CONFLICT}      ${EMPTY LIST}    ${True}
+    Write  ${FOUR_SEG_FLAG_1}            ${234}       hmc-id  ${HTTP_CONFLICT}      ${EMPTY LIST}    ${True}
+    Write  ${FOUR_SEG_FLAG_2}            ${234}       hmc-id  ${HTTP_CONFLICT}      ${EMPTY LIST}    ${True}
+    Write  ${FOUR_SEG_FLAG_3}            ${234}       hmc-id  ${HTTP_CONFLICT}      ${EMPTY LIST}    ${True}
+    Write  ${FIVE_SEG_FLAG_1}            ${234}       hmc-id  ${HTTP_CONFLICT}      ${EMPTY LIST}    ${True}
+    Write  ${FIVE_SEG_FLAG_2}            ${234}       hmc-id  ${HTTP_CONFLICT}      ${EMPTY LIST}    ${True}
+    Write  ${FIVE_SEG_FLAG_3}            ${234}       hmc-id  ${HTTP_CONFLICT}      ${EMPTY LIST}    ${True}
+    Write  ${SIX_SEG_FLAG_1}             ${234}       hmc-id  ${HTTP_CONFLICT}      ${EMPTY LIST}    ${True}
+    Write  ${SIX_SEG_FLAG_2}             ${234}       hmc-id  ${HTTP_CONFLICT}      ${EMPTY LIST}    ${True}
+    Write  ${SIX_SEG_FLAG_3}             ${234}       hmc-id  ${HTTP_CONFLICT}      ${EMPTY LIST}    ${True}
+    Write  ${SEVEN_SEG_FLAG_1}           ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${SEVEN_SEG_FLAG_2}           ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${SEVEN_SEG_FLAG_3}           ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${LOCKSAME_INVALID_LEN1}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${LOCKSAME_INVALID_LEN_STR}   ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${LOCKSAME_INVALID_LEN_NEG}   ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${LOCKSAME_INVALID_LEN_BOOL}  ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${DONTLOCK_INVALID_LEN_BOOL}  ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${TWO_SEG_FLAG_INVALID1}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${TWO_SEG_FLAG_INVALID2}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY LIST}    ${True}
+    Write  ${TWO_SEG_FLAG_INVALID8}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${ERR_PATTERN1}  ${True}
+    Write  ${TWO_SEG_FLAG_INVALID5}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${ERR_PATTERN1}  ${True}
+    Write  ${TWO_SEG_FLAG_INVALID9}      ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${ERR_PATTERN2}  ${True}
+    Write  ${TWO_SEG_FLAG_3}             234          hmc-id  ${HTTP_BAD_REQUEST}   ${ERR_PATTERN2}  ${True}
+
+
+Verify GetLockList Returns An Empty Record For An Invalid Session Id
+    [Documentation]  Verify GetLockList returns an empty record for an invalid session id.
+    [Tags]  Verify_GetLockList_Returns_An_Empty_Record_For_An_Invalid_Session_Id
+
+    ${session_location}=  Redfish.Get Session Location
+    ${session_id}=  Evaluate  os.path.basename($session_location)  modules=os
+
+    ${records}=  Run Keyword  Get Locks List  ${session_id}
+    ${records}=  Run Keyword  Get Locks List  ZZzZZz9zzZ
+    ${length}=  Get Length  ${records}
+    Should Be Equal  ${length}  ${0}
+
+
+*** Keywords ***
+
+Return Data Dictionary For Single Request
+    [Documentation]  Return data dictionary for single request.
+    [Arguments]  ${lock_type}  ${seg_flags}  ${resource_id}
+
+    # Description of argument(s):
+    # lock_type    Type of lock (Read/Write).
+    # seg_flags    Segmentation Flags to identify lock elements under system level in the hierarchy.
+    # resource_id  Decimal +ve integer value of maximum 8 hex bytes.  Ex: 134, 2048 etc.
+
+    ${SEG_FLAGS_LOCK}=  Create Dictionary  LockType=${lock_type}  SegmentFlags=@{seg_flags}
+    ...  ResourceID=${resource_id}
+    ${SEG_FLAGS_ENTRIES}=  Create List  ${SEG_FLAGS_LOCK}
+    ${LOCK_REQUEST}=  Create Dictionary  Request=${SEG_FLAGS_ENTRIES}
+    Log To Console  ${LOCK_REQUEST}
+
+    [Return]  ${LOCK_REQUEST}
+
+
+Acquire Lock On A Given Resource
+    [Documentation]  Acquire lock on a given resource.
+    [Arguments]  ${lock_type}  ${seg_flags}  ${resource_id}  ${exp_status_code}=${HTTP_OK}
+    ...  ${err_msgs}=${EMPTY LIST}
+
+    # Description of argument(s):
+    # lock_type        Type of lock (Read/Write).
+    # seg_flags        Segmentation Flags to identify lock elements under system level in the hierarchy.
+    #                  Ex:  [{'LockFlag': 'LockAll', 'SegmentLength': 1},
+    #                   {'LockFlag': 'LockSame', 'SegmentLength': 2}]
+    # resource_id      Decimal +ve integer value of maximum 8 hex bytes.  Ex: 134, 2048 etc.
+    # exp_status_code  expected status code from the AcquireLock request for given inputs.
+
+    ${data}=  Return Data Dictionary For Single Request  ${lock_type}  ${seg_flags}  ${resource_id}
+    ${resp}=  Redfish.Post  /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock
+    ...  body=${data}  valid_status_codes=[${exp_status_code}]
+
+    Log To Console  ${resp.text}
+    ${transaction_id}=  Run Keyword If  ${exp_status_code} != ${HTTP_OK}
+    ...  Set Variable  ${0}
+    ...  ELSE  Load Lock Record And Build Transaction To Session Map  ${resp.text}
+
+    Run Keyword If  ${exp_status_code} != ${HTTP_OK} and ${err_msgs} != ${EMPTY LIST}
+    ...  Load Response And Verify Error  ${resp.text}  err_msgs=${err_msgs}
+    Append Transaction Id And Session Id To Locks Dictionary  ${transaction_id}
+
+    [Return]  ${transaction_id}
+
+
+Load Lock Record And Build Transaction To Session Map
+    [Documentation]  Load lock record and build transaction to session map.
+    [Arguments]  ${resp_text}
+
+    # Description of argument(s):
+    # resp_text  Response test from a REST request.
+
+    ${acquire_lock}=  Evaluate  json.loads('''${resp_text}''')  json
+    Append Transaction Id And Session Id To Locks Dictionary  ${acquire_lock["TransactionID"]}
+
+    [Return]  ${acquire_lock["TransactionID"]}
+
+
+Load Response And Verify Error
+    [Documentation]  Load response and verify error.
+    [Arguments]  ${error_resp}  ${err_msgs}=${EMPTY LIST}
+
+    # Description of argument(s):
+    # error_resp  Error response from a REST request.
+    # err_msgs    List of error msg patterns.
+
+    ${error_resp}=  Replace String  ${error_resp}  \"  \\"
+    ${error_response}=  Evaluate  json.loads('''${error_resp}''')  json
+
+    ${errors}=  Get Dictionary Values  ${error_response}
+    ${extended_errors}=  Create List
+
+    FOR  ${error}  IN  @{errors}
+      Append To List  ${extended_errors}  ${error[0]["Message"]}
+    END
+
+    Log To Console  EXTENDED = ${extended_errors}
+
+    FOR  ${exp_error}  IN  @{err_msgs}
+        Run Keyword  Expect List Of Errors In An Extended Errors  ${exp_error}  ${extended_errors}
+    END
+
+
+Expect List Of Errors In An Extended Errors
+    [Documentation]  Expect list of errors in an extended errors.
+    [Arguments]  ${exp_error}  ${extended_errors}=${EMPTY LIST}
+
+    ${found}=  Set Variable  ${False}
+
+    FOR  ${error_record}  IN  @{extended_errors}
+      ${found}=  Evaluate  '${exp_error}' in '${error_record}'
+      Exit For Loop If  ${found} == ${True}
+    END
+
+    Should Be True  ${found}
+
+
+Append Transaction Id And Session Id To Locks Dictionary
+    [Documentation]  Append transaction id and session id to locks dictionary.
+    [Arguments]  ${transaction_id}
+
+    # Description of argument(s):
+    # transaction_id  Transaction ID created from acquire lock request. Ex: 8, 9 etc.
+
+    ${session_location}=  Redfish.Get Session Location
+    ${session_key}=  Redfish.Get Session Key
+    ${session_id}=  Evaluate  os.path.basename($session_location)  modules=os
+    Set To Dictionary  ${LOCKS}  ${${transaction_id}}  ${session_id}
+    Log To Console  session=${session_id}
+    Log To Console  X-AUTH-Token=${session_key}
+    Log To Console  LOCKS=${LOCKS}
+
+
+Get Locks List
+    [Documentation]  Get locks list.
+    [Arguments]  @{sessions}  ${exp_status_code}=${HTTP_OK}
+
+    # Description of argument(s):
+    # sessions         List of comma separated strings. Ex: ["euHoAQpvNe", "ecTjANqwFr"]
+    # exp_status_code  expected status code from the GetLockList request for given inputs.
+
+    ${sessions}=  Evaluate  json.dumps(${sessions})  json
+    ${data}=  Set Variable  {"SessionIDs": ${sessions}}
+    ${resp}=  Redfish.Post  /ibm/v1/HMC/LockService/Actions/LockService.GetLockList
+    ...  body=${data}  valid_status_codes=[${exp_status_code}]
+
+    ${locks}=  Evaluate  json.loads('''${resp.text}''')  json
+
+    [Return]  ${locks["Records"]}
+
+
+Release Lock
+    [Documentation]  Release lock.
+    [Arguments]  @{transaction_ids}  ${release_type}=Transaction  ${exp_status_code}=${HTTP_OK}
+
+    # Description of argument(s):
+    # transaction_ids  List of transaction ids. Ex: [15, 18]
+    # release_type     Release all locks acquired using current session or only given transaction numbers.
+    #                  Ex:  Session,  Transaction.  Default will be Transaction.
+    # exp_status_code  expected status code from the ReleaseLock request for given inputs.
+
+    ${data}=  Set Variable  {"Type": "${release_type}", "TransactionIDs": ${transaction_ids}}
+    ${data}=  Evaluate  json.dumps(${data})  json
+    Redfish.Post  /ibm/v1/HMC/LockService/Actions/LockService.ReleaseLock
+    ...  body=${data}  valid_status_codes=[${exp_status_code}]
+
+
+Verify Lock Record
+    [Documentation]  Verify lock record.
+    [Arguments]  ${lock_found}  &{lock_records}
+
+    # Description of argument(s):
+    # lock_found    True if lock record is expected to be present, else False.
+    # lock_records  A dictionary containing key value pairs of a lock record.
+
+    ${session}=  Get From Dictionary  ${LOCKS}  ${lock_records["TransactionID"]}
+    ${locks}=  Run Keyword  Get Locks List  ${session}
+
+    ${lock_record_found}=  Set Variable  ${False}
+
+    FOR  ${record}  IN  @{locks}
+      ${record}=  Evaluate  json.dumps(${record})  json
+      ${record}=  Evaluate  json.loads('''${record}''')  json
+      ${lock_record_found}=  Set Variable If  ${record["TransactionID"]} == ${lock_records["TransactionID"]}
+      ...  ${True}  ${False}
+
+      Continue For Loop If  ${lock_record_found} == ${False}
+      Dictionaries Should Be Equal  ${record}  ${lock_records}
+      Exit For Loop
+    END
+
+    Should Be Equal  ${lock_record_found}  ${lock_found}
+
+
+Acquire And Release Lock
+    [Documentation]  Acquire and release lock.
+    [Arguments]  ${lock_type}  ${seg_flags}  ${resource_id}  ${hmc_id}  ${exp_status_code}=${HTTP_OK}
+    ...  ${err_msgs}=${EMPTY LIST}  ${new_sess_req}=${True}
+
+    # Description of argument(s):
+    # lock_type        Type of lock (Read/Write).
+    # seg_flags        Segmentation Flags to identify lock elements under system level in the hierarchy.
+    #                  Ex:  [{'LockFlag': 'LockAll', 'SegmentLength': 1},
+    #                        {'LockFlag': 'LockSame', 'SegmentLength': 2}]
+    # resource_id      Decimal +ve integer value of maximum 8 hex bytes.  Ex: 134, 2048 etc.
+    # hmc_id           Hardware management console id.
+    # exp_status_code  Expected status code from the AcquireLock request for given inputs.
+
+    # Get REST session to BMC.
+    Run Keyword If  ${new_sess_req} == ${True}  Create New Session
+
+    ${inputs}=  Create Dictionary  LockType=${lock_type}  ResourceID=${resource_id}
+    ...  SegmentFlags=${seg_flags}  HMCID=${hmc_id}
+
+    ${transaction_id}=  Run Keyword  Acquire Lock On A Given Resource  ${inputs["LockType"]}
+    ...  ${inputs["SegmentFlags"]}  ${inputs["ResourceID"]}  ${exp_status_code}  err_msgs=${err_msgs}
+
+    ${session}=  Get From Dictionary  ${LOCKS}  ${transaction_id}
+    ${locks}=  Run Keyword  Get Locks List  ${session}
+
+    Set To Dictionary  ${inputs}  TransactionID=${${transaction_id}}  SessionID=${session}
+    ${lock_found}=  Set Variable If  ${exp_status_code} == ${HTTP_OK}  ${True}  ${False}
+    Verify Lock Record  ${lock_found}  &{inputs}
+
+    Return From Keyword If  ${exp_status_code} != ${HTTP_OK}
+
+    Release Lock  ${transaction_id}
+    ${locks}=  Run Keyword  Get Locks List  ${session}
+    Verify Lock Record  ${False}  &{inputs}
+
+    # Delete the session.
+    Redfish.Logout
+
+
+Create New Session
+    [Documentation]  Create new session.
+
+    # Delete current session if any.
+    Redfish.Logout
+
+    # Get a redfish session to BMC.
+    Redfish.Login
+    ${session_location}=  Redfish.Get Session Location
+    ${session_key}=  Redfish.Get Session Key
+
+
+Test Teardown Execution
+    [Documentation]  Test teardown execution.
+
+    FFDC On Test Case Fail
+    Redfish.Logout
+
