diff --git a/openpower/ext_interfaces/test_lock_management.robot b/openpower/ext_interfaces/test_lock_management.robot
index 89eef3a..e2393ef 100644
--- a/openpower/ext_interfaces/test_lock_management.robot
+++ b/openpower/ext_interfaces/test_lock_management.robot
@@ -1,469 +1,307 @@
 *** Settings ***
 
-Documentation    Test Lock Management feature of Management Console on BMC.
+Documentation        Test lock management feature of management console on BMC.
 
-Resource         ../../lib/resource.robot
-Resource         ../../lib/openbmc_ffdc.robot
-Resource         ../../lib/bmc_redfish_utils.robot
+Resource             ../../lib/resource.robot
+Resource             ../../lib/openbmc_ffdc.robot
+Resource             ../../lib/bmc_redfish_utils.robot
+Resource             ../../lib/external_intf/management_console_utils.robot
 
-Suite Setup      Run Keyword And Ignore Error  Delete All Redfish Sessions
-Test Setup       Test Setup Execution
-Test Teardown    Test Teardown Execution
-Suite Teardown   Run Keyword And Ignore Error  Delete All Redfish Sessions
+Suite Setup          Run Keyword And Ignore Error  Delete All Redfish Sessions
+Suite Teardown       Redfish.Logout
+Test Setup           Printn
+Test Teardown        FFDC On Test Case Fail
 
 *** 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}
-
+${BAD_REQUEST}       Bad Request
 
 *** Test Cases ***
 
-Acquire And Release Different Read Locks
+Acquire Read Write Lock
     [Documentation]  Acquire and release different read locks.
-    [Tags]  Acquire_And_Release_Different_Read_Locks
-    [Template]  Acquire And Release Lock
+    [Tags]  Acquire_Read_Write_Lock
+    [Template]  Acquire Lock On Resource
 
-    # 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_BAD_REQUEST}  ${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_BAD_REQUEST}  ${EMPTY_LIST}    ${True}
-    Read    ${THREE_SEG_FLAG_2}           ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY_LIST}    ${True}
-    Read    ${THREE_SEG_FLAG_3}           ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY_LIST}    ${True}
-    Read    ${FOUR_SEG_FLAG_1}            ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY_LIST}    ${True}
-    Read    ${FOUR_SEG_FLAG_2}            ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY_LIST}    ${True}
-    Read    ${FOUR_SEG_FLAG_3}            ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY_LIST}    ${True}
-    Read    ${FIVE_SEG_FLAG_1}            ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY_LIST}    ${True}
-    Read    ${FIVE_SEG_FLAG_2}            ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY_LIST}    ${True}
-    Read    ${FIVE_SEG_FLAG_3}            ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY_LIST}    ${True}
-    Read    ${SIX_SEG_FLAG_1}             ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY_LIST}    ${True}
-    Read    ${SIX_SEG_FLAG_2}             ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${EMPTY_LIST}    ${True}
-    Read    ${SIX_SEG_FLAG_3}             ${234}       hmc-id  ${HTTP_BAD_REQUEST}  ${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}
+    # client_id    lock_type     reboot_flag
+    HMCID-01       ReadCase1     False
+    HMCID-01       ReadCase2     False
+    HMCID-01       ReadCase3     False
+    HMCID-01       WriteCase1    False
+    HMCID-01       WriteCase2    False
+    HMCID-01       WriteCase3    False
 
 
-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
+Check Lock Persistency On BMC Reboot
+    [Documentation]  Acquire lock and check after reboot it remain same.
+    [Tags]  Check_Lock_Persistency_On_BMC_Reboot
+    [Template]  Acquire Lock On Resource
 
-    # 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_BAD_REQUEST}   ${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_BAD_REQUEST}   ${EMPTY_LIST}    ${True}
-    Write  ${THREE_SEG_FLAG_2}           ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY_LIST}    ${True}
-    Write  ${THREE_SEG_FLAG_3}           ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY_LIST}    ${True}
-    Write  ${FOUR_SEG_FLAG_1}            ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY_LIST}    ${True}
-    Write  ${FOUR_SEG_FLAG_2}            ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY_LIST}    ${True}
-    Write  ${FOUR_SEG_FLAG_3}            ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY_LIST}    ${True}
-    Write  ${FIVE_SEG_FLAG_1}            ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY_LIST}    ${True}
-    Write  ${FIVE_SEG_FLAG_2}            ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY_LIST}    ${True}
-    Write  ${FIVE_SEG_FLAG_3}            ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY_LIST}    ${True}
-    Write  ${SIX_SEG_FLAG_1}             ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY_LIST}    ${True}
-    Write  ${SIX_SEG_FLAG_2}             ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${EMPTY_LIST}    ${True}
-    Write  ${SIX_SEG_FLAG_3}             ${234}       hmc-id  ${HTTP_BAD_REQUEST}   ${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}
+    # client_id    lock_type     reboot_flag
+    HMCID-01       ReadCase1     True
+    HMCID-01       ReadCase2     True
+    HMCID-01       ReadCase3     True
+    HMCID-01       WriteCase1    True
+    HMCID-01       WriteCase2    True
+    HMCID-01       WriteCase3    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
+Acquire Read Lock On Read Lock
+    [Documentation]  Acquire read lock on another read lock.
+    [Tags]  Acquire_Read_Lock_On_Read_Lock
+    [Template]  Acquire Lock On Another Lock
 
-    ${resp}=  Redfish Login  kwargs= "Oem":{"OpenBMC" : {"ClientID":"${hmc_id}"}}
-
-    ${records}=  Get Locks List  ${resp['Id']}
-    ${records}=  Get Locks List  ZZzZZz9zzZ
-    ${length}=  Get Length  ${records}
-    Should Be Equal  ${length}  ${0}
+    # client_id
+    HMCID-01
 
 
-Verify Lock Conflicts
-    [Documentation]  Verify lock conflicts.
-    [Tags]  Verify_Lock_Conflicts
-    [Template]  Acquire And Release Lock
+Get Lock Records Empty For Invalid Session
+    [Documentation]  Record of lock list is empty for invalid session.
+    [Tags]  Get_Lock_Records_Empty_For_Invalid_Session
+    [Template]  Verify Empty Lock Records For Invalid Session
 
-    Write  ${TWO_SEG_FLAG_2}  ${234}  hmc-id  ${HTTP_OK}        ['NA']  ${True}
-    Read   ${TWO_SEG_FLAG_2}  ${234}  hmc-id  ${HTTP_CONFLICT}  ['NA']  ${False}
-    Read   ${TWO_SEG_FLAG_2}  ${234}  hmc-id  ${HTTP_OK}        ['NA']  ${True}
-    Write  ${TWO_SEG_FLAG_2}  ${234}  hmc-id  ${HTTP_CONFLICT}  ['NA']  ${False}
-    Write  ${TWO_SEG_FLAG_2}  ${234}  hmc-id  ${HTTP_OK}        ['NA']  ${True}
-    Write  ${TWO_SEG_FLAG_2}  ${234}  hmc-id  ${HTTP_CONFLICT}  ['NA']  ${False}
+    # client_id
+    HMCID-01
 
 
-Verify Persistency Of Read Locks After BMC Reboot
-    [Documentation]  Verify persistency of locks after BMC reboot.
-    [Tags]  Verify_Persistency_Of_Read_Locks_After_BMC_Reboot
-    [Template]  Locks Persistency Check After BMC Reboot
+Fail To Acquire Lock On Another Lock
+    [Documentation]  Fail to acquire another lock.
+    [Tags]  Fail_To_Acquire_Lock_On_Another_Lock
+    [Template]  Verify Acquire Lock Fails On Another Lock
 
-    # lock_type  seg_flags          resource_id
-    Read         ${TWO_SEG_FLAG_2}  ${234}
+    # client_id    lock_type
+    HMCID-01       ReadCase2,WriteCase2
+    HMCID-01       WriteCase2,WriteCase2
+    HMCID-01       WriteCase2,ReadCase2
 
 
-Verify Persistency Of Write Locks After BMC Reboot
-    [Documentation]  Verify persistency of locks after BMC reboot.
-    [Tags]  Verify_Persistency_Of_Write_Locks_After_BMC_Reboot
-    [Template]  Locks Persistency Check After BMC Reboot
+Acquire And Release Lock In Loop
+    [Documentation]  Acquire and release read, write locks in loop.
+    [Tags]  Acquire_And_Release_Lock_In_Loop
+    [Template]  Verify Acquire And Release Lock In Loop
 
-    # lock_type  seg_flags          resource_id
-    Write        ${TWO_SEG_FLAG_2}  ${234}
+    # client_id    lock_type
+    HMCID-01       ReadCase1
+    HMCID-01       ReadCase2
+    HMCID-01       ReadCase3
+    HMCID-01       WriteCase1
+    HMCID-01       WriteCase2
+    HMCID-01       WriteCase3
 
 
-Verify Valid Lock Transactions Release
-    [Documentation]  Verify valid lock transactions release.
-    [Tags]  Verify_Valid_Lock_Transactions_Release
+Verify Release Of Valid Locks
+    [Documentation]  Release all valid locks.
+    [Tags]  Verify_Release_Of_Valid_Locks
+    [Template]  Acquire And Release Multiple Locks
 
-    ${transaction_id1}=  Acquire Lock On A Given Resource  Read  ${TWO_SEG_FLAG_2}  ${234}
-    ${locks_before}=  Get Locks List  ${SESSION_ID}
-
-    ${transaction_id2}=  Acquire Lock On A Given Resource  Read  ${TWO_SEG_FLAG_3}  ${234}
-    ${transaction_id3}=  Acquire Lock On A Given Resource  Read  ${TWO_SEG_FLAG_2}  ${234}
-    ${transaction_id4}=  Acquire Lock On A Given Resource  Read  ${TWO_SEG_FLAG_3}  ${234}
-
-    ${transaction_ids}=  Create List  ${transaction_id2}  ${transaction_id3}  ${transaction_id4}
-    Release Locks  ${transaction_ids}
-    ${locks_after}=  Get Locks List  ${SESSION_ID}
-    Should Be Equal  ${locks_before}  ${locks_after}
+    # client_id    lock_type                        release_lock_type
+    HMCID-01       ReadCase1,ReadCase1,ReadCase1    Transaction
+    HMCID-02       ReadCase1,ReadCase1,ReadCase1    Session
 
 
-Verify Invalid Lock Transactions Release
-    [Documentation]  Verify invalid lock transactions release.
-    [Tags]  Verify_Invalid_Lock_Transactions_Release
+Invalid Locks Fail To Release
+    [Documentation]  Release in-valid lock result in fail.
+    [Tags]  Invalid_Locks_Fail_To_Release
+    [Template]  Verify Invalid Locks Fail To Release
 
-    ${transaction_id1}=  Acquire Lock On A Given Resource  Read  ${TWO_SEG_FLAG_2}  ${234}
-    ${locks_before}=  Get Locks List  ${SESSION_ID}
-
-    ${transaction_id2}=  Evaluate  ${transaction_id1} + 1
-    ${transaction_id3}=  Evaluate  ${transaction_id1} - 1
-    ${transaction_ids}=  Create List  ${transaction_id2}  ${transaction_id1}  ${transaction_id3}
-
-    # If any transaction/s in the list does not belong to current session then it will be a bad request.
-    Release Locks  ${transaction_ids}  exp_status_code=${HTTP_BAD_REQUEST}
-    ${locks_after}=  Get Locks List  ${SESSION_ID}
-    Should Be Equal  ${locks_before}  ${locks_after}
+    # client_id    lock_type                        release_lock_type
+    HMCID-01       ReadCase1,ReadCase1,ReadCase1    Transaction
+    12345          ReadCase2,ReadCase2,ReadCase2    Transaction
+    HMCID          ReadCase3,ReadCase3,ReadCase3    Transaction
 
 
-Verify Locks Release By Session
-    [Documentation]  Verify locks release by session.
-    [Tags]  Verify_Locks_Release_By_Session
+Fail To Release Lock For Another Session
+    [Documentation]  Failed to release locks from another session.
+    [Tags]  Fail_To_Release_Lock_For_Another_Session
+    [Template]  Verify Fail To Release Lock For Another Session
 
-    ${locks_before}=  Get Locks List  ${SESSION_ID}
-    ${transaction_id1}=  Acquire Lock On A Given Resource  Write  ${TWO_SEG_FLAG_2}  ${234}
-
-    # Release Lock by Session without mentioning transaction_ids.
-    Release Locks  release_type=Session
-    ${locks_after}=  Get Locks List  ${SESSION_ID}
-    Should Be Equal  ${locks_before}  ${locks_after}
-
-    ${transaction_id1}=  Acquire Lock On A Given Resource  Read  ${TWO_SEG_FLAG_2}  ${234}
-    ${transaction_id2}=  Acquire Lock On A Given Resource  Read  ${TWO_SEG_FLAG_3}  ${234}
-    ${transaction_ids}=  Create List  ${transaction_id1}  ${transaction_id2}
-
-    # Release Lock by Session by mentioning transaction_ids also in the request.
-    Release Locks  ${transaction_ids}  release_type=Session
+    # client_id          lock_type
+    HMCID-01,HMCID-02    ReadCase1,ReadCase1
 
 
-Verify Locks Created By One Session Cannot Be Deleted By Another Session
-    [Documentation]  Verify locks created by one session cannot be deleted by another session.
-    [Tags]  Verify_Locks_Created_By_One_Session_Cannot_Be_Deleted_By_Another_Session
-    [Setup]  No Operation
+Fail To Acquire Lock For Invalid Lock Type
+    [Documentation]  Failed to acquire read, write lock for invalid lock data passed.
+    [Tags]  Fail_To_Acquire_Lock_For_Invalid_Lock_Type
+    [Template]  Verify Fail To Acquire Lock For Invalid Lock Data
 
-    ${resp}=  Redfish Login  kwargs= "Oem":{"OpenBMC" : {"ClientID":"hmc-id"}}
-    Set Test Variable  ${SESSION_ID}  ${resp['Id']}
-    ${transaction_id1}=  Acquire Lock On A Given Resource  Read  ${TWO_SEG_FLAG_2}  ${234}
-    ${locks_tran1}=  Get Locks List  ${resp['Id']}
+    # client_id    lock_type      message
+    HMCID-01       ReadCase1      ${BAD_REQUEST}
+    HMCID-01       ReadCase2      ${BAD_REQUEST}
+    HMCID-01       ReadCase3      ${BAD_REQUEST}
+    HMCID-01       ReadCase4      ${BAD_REQUEST}
+    HMCID-01       ReadCase5      ${BAD_REQUEST}
+    HMCID-01       WriteCase1     ${BAD_REQUEST}
+    HMCID-01       WriteCase2     ${BAD_REQUEST}
+    HMCID-01       WriteCase3     ${BAD_REQUEST}
+    HMCID-01       WriteCase4     ${BAD_REQUEST}
+    HMCID-01       WriteCase5     ${BAD_REQUEST}
 
-    ${resp}=  Redfish Login  kwargs= "Oem":{"OpenBMC" : {"ClientID":"hmc-id"}}
-    Set Test Variable  ${SESSION_ID}  ${resp['Id']}
 
-    ${transaction_id2}=  Acquire Lock On A Given Resource  Read  ${TWO_SEG_FLAG_3}  ${234}
-    ${locks_before}=  Get Locks List  ${resp['Id']}
+Fail To Acquire Lock For Invalid Lock Flag
+    [Documentation]  Failed to acquire read write lock for invalid lock flag passed.
+    [Tags]  Fail_To_Acquire_Lock_For_Invalid_Lock_Flag
+    [Template]  Verify Fail To Acquire Lock For Invalid Lock Data
 
-    ${transaction_ids}=  Create List  ${transaction_id1}  ${transaction_id2}
-    Release Locks  ${transaction_ids}  exp_status_code=${HTTP_UNAUTHORIZED}  conflict_record=${locks_tran1}
-    ${locks_after}=  Get Locks List  ${SESSION_ID}
-    Should Be Equal  ${locks_before}  ${locks_after}
+    # client_id    lock_type       message
+    HMCID-01       ReadCase6       ${BAD_REQUEST}
+    HMCID-01       ReadCase7       ${BAD_REQUEST}
+    HMCID-01       ReadCase8       ${BAD_REQUEST}
+    HMCID-01       ReadCase9       ${BAD_REQUEST}
+    HMCID-01       ReadCase10      ${BAD_REQUEST}
+    HMCID-01       ReadCase11      ${BAD_REQUEST}
+    HMCID-01       WriteCase6      ${BAD_REQUEST}
+    HMCID-01       WriteCase7      ${BAD_REQUEST}
+    HMCID-01       WriteCase8      ${BAD_REQUEST}
+    HMCID-01       WriteCase9      ${BAD_REQUEST}
+    HMCID-01       WriteCase10     ${BAD_REQUEST}
+    HMCID-01       WriteCase11     ${BAD_REQUEST}
 
-    # When release_type=Session, transaction_ids should be ignored.
-    Release Locks  ${transaction_ids}  release_type=Session
-    ${locks_after}=  Get Locks List  ${SESSION_ID}
-    Should Be Equal  ${EMPTY_LIST}  ${locks_after}
 
+Fail To Acquire Lock For Invalid Segment Flag
+    [Documentation]  Failed to acquire read write lock for invalid segment flag passed.
+    [Tags]  Fail_To_Acquire_Lock_For_Invalid_Segment_Flag
+    [Template]  Verify Fail To Acquire Lock For Invalid Lock Data
+
+    # client_id    lock_type       message
+    HMCID-01       ReadCase12      ${BAD_REQUEST}
+    HMCID-01       ReadCase13      ${BAD_REQUEST}
+    HMCID-01       ReadCase14      ${BAD_REQUEST}
+    HMCID-01       WriteCase12     ${BAD_REQUEST}
+    HMCID-01       WriteCase13     ${BAD_REQUEST}
+    HMCID-01       WriteCase14     ${BAD_REQUEST}
 
 *** Keywords ***
 
-Locks Persistency Check After BMC Reboot
-    [Documentation]  Locks persistency check after BMC reboot.
-    [Arguments]  ${lock_type}  ${seg_flags}  ${resource_id}
+Create Redfish Session With ClientID
+    [Documentation]  Create redifish session with client id.
+    [Arguments]  ${client_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.
+    # client_id    This client id can contain string value
+    #              (e.g. 12345, "HMCID").
 
-    ${transaction_id}=  Acquire Lock On A Given Resource  ${lock_type}  ${seg_flags}  ${resource_id}
+    ${session_info}=  Create Dictionary
+    ${session}=  Redfish Login  kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client_id}"}}
 
-    ${locks_prev}=  Get Locks List  ${SESSION_ID}
+    Set To Dictionary  ${session_info}  SessionIDs  ${session['Id']}
+    Set To Dictionary  ${session_info}  ClientID  ${session["Oem"]["OpenBMC"]["ClientID"]}
 
-    Redfish OBMC Reboot (off)
-    Redfish Login
-
-    ${locks_curr}=  Get Locks List  ${SESSION_ID}
-    Should Be Equal  ${locks_prev}  ${locks_curr}
-
-    ${transaction_ids}=  Create List  ${transaction_id}
-    Release Locks  ${transaction_ids}
+    [Return]  ${session_info}
 
 
-Return Data Dictionary For Single Request
-    [Documentation]  Return data dictionary for single request.
-    [Arguments]  ${lock_type}  ${seg_flags}  ${resource_id}
+RW General Dictionary
+    [Documentation]  Create dictionay of lock request.
+    [Arguments]  ${read_case}  ${res_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.
+    # read_case    Read or Write lock type.
+    # res_id       Resource id.
 
-    ${SEG_FLAGS_LOCK}=  Create Dictionary
-    ...  LockType=${lock_type}
-    ...  SegmentFlags=@{seg_flags}
-    ...  ResourceID=${resource_id}
+    ${request_dict}=  Create Dictionary
 
-    ${SEG_FLAGS_ENTRIES}=  Create List  ${SEG_FLAGS_LOCK}
-    ${LOCK_REQUEST}=  Create Dictionary  Request=${SEG_FLAGS_ENTRIES}
-    Log To Console  \n${SPACE}${LOCK_REQUEST}
+    FOR  ${key}  IN  @{read_case.keys()}
+      Set To Dictionary  ${request_dict}  LockType  ${key}
+      Set To Dictionary  ${request_dict}  SegmentFlags  ${read_case["${key}"]}
+    END
 
-    [Return]  ${LOCK_REQUEST}
+    Set To Dictionary  ${request_dict}  ResourceID  ${res_id}
+
+    [Return]  ${request_dict}
 
 
-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.
-    # err_msgs         List of expected error messages.
-
-    ${data}=  Return Data Dictionary For Single Request  ${lock_type}  ${seg_flags}  ${resource_id}
-    ${resp}=  Redfish Post Request  /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock  data=${data}
-
-    ${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_CONFLICT} and ${err_msgs} == ['NA']
-    ...      Load Response And Verify Conflict  ${resp.text}  ${SESSION_ID}
-    ...  ELSE  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.
+Return Description Of Response
+    [Documentation]  Return description of REST response.
     [Arguments]  ${resp_text}
 
     # Description of argument(s):
-    # resp_text  Response test from a REST request.
+    # resp_text    REST response body.
 
-    ${acquire_lock}=  Evaluate  json.loads('''${resp_text}''')  json
-    Append Transaction Id And Session Id To Locks Dictionary  ${acquire_lock["TransactionID"]}
+    # resp_text after successful partition file upload looks like:
+    # {
+    #    "Description": "File Created"
+    # }
 
-    [Return]  ${acquire_lock["TransactionID"]}
+    ${message}=  Evaluate  json.loads('''${resp_text}''')  json
+
+    [Return]  ${message}
 
 
-Load Response And Verify Error
-    [Documentation]  Load response and verify error.
-    [Arguments]  ${error_resp}  ${err_msgs}=${EMPTY_LIST}
+Redfish Post Acquire Lock
+    [Documentation]  Acquire and release lock.
+    [Arguments]  ${lock_type}  ${status_code}=${HTTP_OK}
 
     # Description of argument(s):
-    # error_resp  Error response from a REST request.
-    # err_msgs    List of error msg patterns.
+    # lock_type      Read lock or Write lock.
+    # status_code    HTTP status code.
 
-    ${error_resp}=  Replace String  ${error_resp}  \"  \\"
-    ${error_response}=  Evaluate  json.loads('''${error_resp}''')  json
+    ${resp}=  Form Data To Acquire Lock  ${lock_type}
+    ${resp}=  Redfish Post Request  /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock  data=${resp}
+    Should Be Equal As Strings  ${resp.status_code}  ${status_code}
+    ${resp}=  Return Description Of Response  ${resp.content}
 
-    ${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  \n ${extended_errors}
-
-    FOR  ${exp_error}  IN  @{err_msgs}
-        Run Keyword  Expect List Of Errors In An Extended Errors  ${exp_error}  ${extended_errors}
-    END
+    [Return]  ${resp}
 
 
-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}
+Redfish Post Acquire Invalid Lock
+    [Documentation]  Redfish to post request to acquire in-valid lock.
+    [Arguments]  ${lock_type}  ${message}  ${status_code}=${HTTP_OK}
 
     # Description of argument(s):
-    # transaction_id  Transaction ID created from acquire lock request. Ex: 8, 9 etc.
+    # lock_type      Read lock or Write lock.
+    # message        Return message from URI.
+    # status_code    HTTP status code.
 
-    Set To Dictionary  ${LOCKS}  ${${transaction_id}}  ${session_id}
+    ${resp}=  Form Data To Acquire Invalid Lock  ${lock_type}
+    ${resp}=  Redfish Post Request  /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock  data=${resp}
+    Should Be Equal As Strings  ${resp.status_code}  ${status_code}
+    Valid Value  message  ['${resp.content}']
+
+    [Return]  ${resp}
 
 
-Get Locks List
+Form Data To Acquire Lock
+    [Documentation]  Create a dictionay for lock request.
+    [Arguments]  ${lock_type}
+
+    # Description of argument(s):
+    # lock_type      Read lock or Write lock.
+
+    ${lock_res_info}=  Get Lock Resource Information
+    ${resp}=  RW General Dictionary
+    ...    ${lock_res_info["Valid Case"]["${lock_type}"]}
+    ...    ${lock_res_info["Valid Case"]["ResourceID"]}
+    ${temp_list}=  Create List  ${resp}
+    ${lock_request}=  Create Dictionary  Request=${temp_list}
+
+    [Return]  ${lock_request}
+
+
+Form Data To Acquire Invalid Lock
+    [Documentation]  Create a dictionay for in-valid lock request.
+    [Arguments]  ${lock_type}
+
+    # Description of argument(s):
+    # lock_type      Read lock or Write lock.
+
+    ${lock_res_info}=  Get Lock Resource Information
+    ${resp}=  RW General Dictionary
+    ...    ${lock_res_info["Invalid Case"]["${lock_type}"]}
+    ...    ${lock_res_info["Valid Case"]["ResourceID"]}
+    ${temp_list}=  Create List  ${resp}
+    ${lock_request}=  Create Dictionary  Request=${temp_list}
+
+    [Return]  ${lock_request}
+
+
+Get Locks List On Resource
     [Documentation]  Get locks list.
-    [Arguments]  @{sessions}  ${exp_status_code}=${HTTP_OK}
+    [Arguments]  ${session_info}  ${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.
+    # session_info       Session information in dict.
+    # exp_status_code    Expected HTTP status code.
 
-    ${sessions}=  Evaluate  json.dumps(${sessions})  json
-    ${data}=  Set Variable  {"SessionIDs": ${sessions}}
+    ${data}=  Set Variable  {"SessionIDs": ["${session_info['SessionIDs']}"]}
     ${resp}=  Redfish Post Request  /ibm/v1/HMC/LockService/Actions/LockService.GetLockList
     ...  data=${data}
     ${locks}=  Evaluate  json.loads('''${resp.text}''')  json
@@ -471,201 +309,321 @@
     [Return]  ${locks["Records"]}
 
 
-Release Locks
-    [Documentation]  Release locks.
-    [Arguments]  ${transaction_ids}=${EMPTY_LIST}  ${release_type}=Transaction  ${exp_status_code}=${HTTP_OK}
-    ...  ${conflict_record}=${EMPTY_LIST}
+Verify Lock On Resource
+    [Documentation]  Verify lock on resource.
+    [Arguments]  ${session_info}  ${transaction_id}
 
     # Description of argument(s):
-    # transaction_ids  List of transaction ids or session ids. Ex: [15, 18]  or ["euHoAQpvNe", "ecTjANqwFr"]
-    # 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.
-    # conflict_record  Expected conflict record.
+    # session_info      Session information in dict.
+    # transaction_id    Transaction id in list stored in dict.
 
-    # When release_type=Session then TransactionIDs list will be ignored.
-    ${data}=  Set Variable  {"Type": "${release_type}", "TransactionIDs": ${transaction_ids}}
-    ${data}=  Evaluate  json.dumps(${data})  json
-    ${resp}=  Redfish Post Request  /ibm/v1/HMC/LockService/Actions/LockService.ReleaseLock  data=${data}
-    Should Be True  ${resp.status_code}  ${exp_status_code}
-    Return From Keyword If  ${conflict_record} == ${EMPTY_LIST}
+    ${sessions}=  Redfish.Get Properties  /redfish/v1/SessionService/Sessions/${session_info['SessionIDs']}
+    Rprint Vars  sessions
+    ${lock_list}=  Get Locks List On Resource  ${session_info}
+    ${lock_length}=  Get Length  ${lock_list}
+    ${tran_id_length}=  Get Length  ${transaction_id}
+    Should Be Equal As Integers  ${tran_id_length}  ${lock_length}
 
-    ${conflict}=  Evaluate  json.loads('''${resp.text}''')  json
-
-    # Example of conflict
-    # {
-    #    "Record":{
-    #       "HMCID":"hmc-id",
-    #       "LockType":"Read",
-    #       "ResourceID":234,
-    #       "SegmentFlags":[
-    #          {
-    #             "LockFlag":"DontLock",
-    #             "SegmentLength":3
-    #          },
-    #          {
-    #             "LockFlag":"LockAll",
-    #             "SegmentLength":1
-    #          }
-    #       ],
-    #       "SessionID":"OorUVwrXuT",
-    #       "TransactionID":47
-    #    }
-    # }
-
-    Should Be Equal  ${conflict_record[0]}  ${conflict["Record"]}
-
-
-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}=  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
+    FOR  ${tran_id}  ${lock}  IN ZIP  ${transaction_id}  ${lock_list}
+      Valid Value  session_info['ClientID']  ['${lock['HMCID']}']
+      Valid Value  session_info['SessionIDs']  ['${lock['SessionID']}']
+      Should Be Equal As Integers  ${tran_id['TransactionID']}  ${lock['TransactionID']}
     END
 
-    Should Be Equal  ${lock_record_found}  ${lock_found}
 
-
-Load Response And Verify Conflict
-    [Documentation]  Load response and verify conflict.
-    [Arguments]  ${conflict_resp}  ${sessions}
+Redfish Delete Session
+    [Documentation]  Redfish delete session.
+    [Arguments]  ${session_info}
 
     # Description of argument(s):
-    # conflict_resp  Conflict response from a REST request.
-    #                Example : { "Record": { "HMCID": "hmc-id", "LockType": "Write", "ResourceID": 234,
-    #                            "SegmentFlags": [ { "LockFlag": "DontLock", "SegmentLength": 3},
-    #                                              { "LockFlag": "LockAll",  "SegmentLength": 1}],
-    #                            "SessionID": "B6geYEdo6T", "TransactionID": 104 } }
-    # sessions       Comma separated list of sessions
+    # session_info      Session information in dict.
 
-    ${curr_locks}=  Get Locks List  ${sessions}
-    ${conflict_resp}=  Replace String  ${conflict_resp}  \"  \\"
-    ${conflict_response}=  Evaluate  json.loads('''${conflict_resp}''')  json
-
-    ${conflicts}=  Get Dictionary Values  ${conflict_response}
-    List Should Contain Value  ${conflicts}  ${PREV_INPUTS}
+    Redfish.Delete  /redfish/v1/SessionService/Sessions/${session_info["SessionIDs"]}
 
 
-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}
+Acquire Lock On Resource
+    [Documentation]  Acquire lock on resource.
+    [Arguments]  ${client_id}  ${lock_type}  ${reboot_flag}=False
 
     # 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.
-    # err_msgs         List of expected error messages.
-    # new_sess_req     Create a new session before acquiring a lock if True.
+    # client_id    This client id can contain string value
+    #              (e.g. 12345, "HMCID").
+    # lock_type    Read lock or Write lock.
+    # reboot_flag  Flag is used to run reboot the BMC code.
+    #               (e.g. True or False).
 
-    # Delete the session.
-    Run Keyword If  ${new_sess_req} == ${True}  Run Keyword And Ignore Error  Delete All Redfish Sessions
+    ${trans_id_list}=  Create List
+    ${session_info}=  Create Redfish Session With ClientID  ${client_id}
+    ${trans_id}=  Redfish Post Acquire Lock  ${lock_type}
+    Append To List  ${trans_id_list}  ${trans_id}
+    Verify Lock On Resource  ${session_info}  ${trans_id_list}
 
-    # Get REST session to BMC.
-    Run Keyword If  ${new_sess_req} == ${True}  Create New Session
+    ${BEROFE_REBOOT_XAUTH_TOKEN}=  Set Variable  ${XAUTH_TOKEN}
 
-    ${inputs}=  Create Dictionary
-    ...  LockType=${lock_type}
-    ...  ResourceID=${resource_id}
-    ...  SegmentFlags=${seg_flags}
-    ...  HMCID=${hmc_id}
+    Run Keyword If  '${reboot_flag}' == 'True'
+    ...  Run Keywords  Redfish OBMC Reboot (off)  AND
+    ...  Redfish Login  AND
+    ...  Set Global Variable  ${XAUTH_TOKEN}  ${BEROFE_REBOOT_XAUTH_TOKEN}  AND
+    ...  Verify Lock On Resource  ${session_info}  ${trans_id_list}  AND
+    ...  Release Locks On Resource  ${session_info}  ${trans_id_list}  Transaction  ${HTTP_OK}
 
-    ${transaction_id}=  Acquire Lock On A Given Resource  ${inputs["LockType"]}
-    ...  ${inputs["SegmentFlags"]}  ${inputs["ResourceID"]}  ${exp_status_code}  err_msgs=${err_msgs}
+    Run Keyword If  '${reboot_flag}' == 'False'
+    ...  Release Locks On Resource  ${session_info}  ${trans_id_list}  Transaction  ${HTTP_OK}
 
-    # Each lock request from a new session is saved so that for next lock request using same session
-    # can refer to previous lock data to verify conflict records if any.
-    Run Keyword If  ${new_sess_req} == ${True}  Set Test Variable Dictionary Of Previous Lock Request
-    ...  ${lock_type}  ${seg_flags}  ${resource_id}  ${hmc_id}  ${SESSION_ID}  ${transaction_id}
-
-    ${session}=  Get From Dictionary  ${LOCKS}  ${transaction_id}
-    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}' or ${err_msgs} == ['NA']
-    ${transaction_ids}=  Create List  ${transaction_id}
-    Release Locks  ${transaction_ids}
-    Verify Lock Record  ${False}  &{inputs}
+    ${trans_id_emptylist}=  Create List
+    Verify Lock On Resource  ${session_info}  ${trans_id_emptylist}
+    Redfish Delete Session  ${session_info}
 
 
-Create New Session
-    [Documentation]  Create new session.
-
-    ${resp}=  Redfish Login  kwargs= "Oem":{"OpenBMC" : {"ClientID":"${hmc_id}"}}
-    Set Test Variable  ${SESSION_ID}  ${resp['Id']}
-
-
-Test Teardown Execution
-    [Documentation]  Test teardown execution.
-
-    FFDC On Test Case Fail
-    Run Keyword And Ignore Error  Delete All Redfish Sessions
-
-
-Return Session Id And Session Key
-    [Documentation]  Return session id and sesion key.
-
-    ${session_location}=  Redfish.Get Session Location
-    ${session_id}=  Evaluate  os.path.basename($session_location)  modules=os
-    ${session_key}=  Redfish.Get Session Key
-
-    [Return]  ${session_id}  ${session_key}
-
-
-Test Setup Execution
-    [Documentation]  Test setup execution.
-
-    # This is a test constant value.
-    Set Test Variable  ${hmc_id}  hmc-id
-    Create New Session
-
-    Set Test Variable Dictionary Of Previous Lock Request
-    ...  ${EMPTY}  ${EMPTY_LIST}  ${EMPTY}  ${EMPTY}  ${EMPTY}  ${EMPTY}
-
-
-Set Test Variable Dictionary Of Previous Lock Request
-    [Documentation]  Set test variable dictionary of previous lock request.
-    [Arguments]  ${lock_type}  ${seg_flags}  ${resource_id}  ${hmc_id}  ${session_id}  ${transaction_id}
+Form Data To Release Lock
+    [Documentation]  Create a dictonay to release lock.
+    [Arguments]  ${trans_id_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.
-    # hmc_id               Hardware management console id.
-    # session_id           Session id of the transaction.
-    # transaction_id       Transaction_id of the lock request.
+    # trans_id_list
 
-    ${prev_inputs}=  Create Dictionary
-    ...  LockType=${lock_type}
-    ...  ResourceID=${resource_id}
-    ...  SegmentFlags=${seg_flags}
-    ...  HMCID=${hmc_id}
-    ...  SessionID=${session_id}
-    ...  TransactionID=${transaction_id}
+    @{tran_ids}=  Create List
 
-    Set Test Variable  ${PREV_INPUTS}  ${prev_inputs}
+    FOR  ${item}  IN  @{trans_id_list}
+      Append To List  ${tran_ids}  ${item['TransactionID']}
+    END
+
+    [Return]  ${tran_ids}
+
+
+Release Locks On Resource
+    [Documentation]  Redfish request to release a lock.
+    [Arguments]  ${session_info}  ${trans_id_list}  ${release_lock_type}=Transaction  ${status_code}=${HTTP_OK}
+
+    # Description of argument(s):
+    # session_info        Session information in dict.
+    # trans_id_list       Transaction id list.
+    # release_lock_type   Release lock by Transaction, Session.
+    # status_code         HTTP status code.
+
+    ${tran_ids}=  Form Data To Release Lock  ${trans_id_list}
+    ${data}=  Set Variable  {"Type": "${release_lock_type}", "TransactionIDs":${tran_ids}}
+    ${data}=  Evaluate  json.dumps(${data})  json
+    ${resp}=  Redfish Post Request  /ibm/v1/HMC/LockService/Actions/LockService.ReleaseLock  data=${data}
+    Should Be Equal As Strings  ${resp.status_code}  ${status_code}
+
+
+Acquire Lock On Another Lock
+    [Documentation]  Acquire lock on another lock.
+    [Arguments]  ${client_id}
+
+    # Description of argument(s):
+    # client_id    This client id can contain string value
+    #              (e.g. 12345, "HMCID").
+
+    ${trans_id_list}=  Create List
+    ${session_info}=  Create Redfish Session With ClientID  ${client_id}
+
+    ${trans_id}=  Redfish Post Acquire Lock  ReadCase1
+    Append To List  ${trans_id_list}  ${trans_id}
+
+    ${trans_id}=  Redfish Post Acquire Lock  ReadCase1
+    Append To List  ${trans_id_list}  ${trans_id}
+
+    Verify Lock On Resource  ${session_info}  ${trans_id_list}
+    Release Locks On Resource  ${session_info}  ${trans_id_list}
+
+    ${trans_id_emptylist}=  Create List
+    Verify Lock On Resource  ${session_info}  ${trans_id_emptylist}
+    Redfish Delete Session  ${session_info}
+
+
+Verify Empty Lock Records For Invalid Session
+    [Documentation]  Verify no lock record found for invalid session.
+    [Arguments]  ${client_id}
+
+    # Description of argument(s):
+    # client_id    This client id can contain string value
+    #              (e.g. 12345, "HMCID").
+
+    ${session_info1}=  Create Redfish Session With ClientID  ${client_id}
+
+    ${lock_list1}=  Get Locks List On Resource  ${session_info1}
+    ${lock_length1}=  Get Length  ${lock_list1}
+
+    ${session_info2}=  Copy Dictionary  ${session_info1}  deepcopy=True
+    set to dictionary  ${session_info2}  SessionIDs  xxyXyyYZZz
+
+    ${lock_list2}=  Get Locks List On Resource  ${session_info2}
+    ${lock_length2}=  Get Length  ${lock_list1}
+
+    Valid Value  lock_length1  ${lock_list2}
+
+    Redfish Delete Session  ${session_info1}
+
+
+Verify Acquire Lock Fails On Another Lock
+    [Documentation]  Verify acquire lock on another lock fails.
+    [Arguments]  ${client_id}  ${lock_type}
+
+    # Description of argument(s):
+    # client_id    This client id can contain string value
+    #              (e.g. 12345, "HMCID").
+    # lock_type    Read lock or Write lock.
+
+    @{lock_type_list}=  Split String  ${lock_type}  ,
+    ${session_info}=  Create Redfish Session With ClientID  ${client_id}
+    ${trans_id}=  Redfish Post Acquire Lock  ${lock_type_list}[0]
+
+    ${trans_id_list}=  Create List
+    Append To List  ${trans_id_list}  ${trans_id}
+
+    Verify Lock On Resource  ${session_info}  ${trans_id_list}
+    ${trans_id}=  Redfish Post Acquire Lock  ${lock_type_list}[1]  status_code=${HTTP_CONFLICT}
+    Release Locks On Resource  ${session_info}  ${trans_id_list}
+
+    ${trans_id_emptylist}=  Create List
+    Verify Lock On Resource  ${session_info}  ${trans_id_emptylist}
+
+    Redfish Delete Session  ${session_info}
+
+
+Verify Acquire And Release Lock In Loop
+    [Documentation]  Acquire lock in loop.
+    [Arguments]  ${client_id}  ${lock_type}
+
+    # Description of argument(s):
+    # client_id    This client id can contain string value
+    #              (e.g. 12345, "HMCID").
+    # lock_type    Read lock or Write lock.
+
+    FOR  ${count}  IN RANGE  1  11
+      ${trans_id_list}=  Create List
+      ${session_info}=  Create Redfish Session With ClientID  ${client_id}
+      ${trans_id}=  Redfish Post Acquire Lock  ${lock_type}
+      Append To List  ${trans_id_list}  ${trans_id}
+      Verify Lock On Resource  ${session_info}  ${trans_id_list}
+      Release Locks On Resource  ${session_info}  ${trans_id_list}  Transaction  ${HTTP_OK}
+      ${trans_id_emptylist}=  Create List
+      Verify Lock On Resource  ${session_info}  ${trans_id_emptylist}
+    END
+
+    Redfish Delete Session  ${session_info}
+
+
+Acquire And Release Multiple Locks
+    [Documentation]  Acquire mutilple locks on resource.
+    [Arguments]  ${client_id}  ${lock_type}  ${release_lock_type}
+
+    # Description of argument(s):
+    # client_id          This client id can contain string value
+    #                    (e.g. 12345, "HMCID").
+    # lock_type          Read lock or Write lock.
+    # release_lock_type  The value can be Transaction or Session.
+
+    @{lock_type_list}=  Split String  ${lock_type}  ,
+    ${session_info}=  Create Redfish Session With ClientID  ${client_id}
+    ${trans_id}=  Redfish Post Acquire Lock  ${lock_type_list}[0]
+
+    ${trans_id_list}=  Create List
+
+    Append To List  ${trans_id_list}  ${trans_id}
+    ${trans_id}=  Redfish Post Acquire Lock  ${lock_type_list}[1]
+
+    Append To List  ${trans_id_list}  ${trans_id}
+    ${trans_id}=  Redfish Post Acquire Lock  ${lock_type_list}[2]
+
+    Append To List  ${trans_id_list}  ${trans_id}
+    Verify Lock On Resource  ${session_info}  ${trans_id_list}
+    Release Locks On Resource  ${session_info}  ${trans_id_list}  release_lock_type=${release_lock_type}
+
+    ${trans_id_emptylist}=  Create List
+    Verify Lock On Resource  ${session_info}  ${trans_id_emptylist}
+    Redfish Delete Session  ${session_info}
+
+
+Verify Invalid Locks Fail To Release
+    [Documentation]  Verify invalid locks fails to be released.
+    [Arguments]  ${client_id}  ${lock_type}  ${release_lock_type}
+
+    # Description of argument(s):
+    # client_id          This client id can contain string value
+    #                    (e.g. 12345, "HMCID").
+    # lock_type          Read lock or Write lock.
+    # release_lock_type  The value can be Transaction or Session.
+
+    ${trans_id_list}=  Create List
+    @{lock_type_list}=  Split String  ${lock_type}  ,
+
+    ${session_info}=  Create Redfish Session With ClientID  ${client_id}
+
+    ${trans_id}=  Redfish Post Acquire Lock  ${lock_type_list}[0]
+    ${value}=  Get From Dictionary  ${trans_id}  TransactionID
+    ${value}=  Evaluate  ${value} + 10
+    Set To Dictionary  ${trans_id}  TransactionID  ${value}
+    Append To List  ${trans_id_list}  ${trans_id}
+
+    ${trans_id}=  Redfish Post Acquire Lock  ${lock_type_list}[1]
+    ${value}=  Get From Dictionary  ${trans_id}  TransactionID
+    ${value}=  Evaluate  ${value} + 10
+    Set To Dictionary  ${trans_id}  TransactionID  ${value}
+    Append To List  ${trans_id_list}  ${trans_id}
+
+    ${trans_id}=  Redfish Post Acquire Lock  ${lock_type_list}[2]
+    ${value}=  Get From Dictionary  ${trans_id}  TransactionID
+    ${value}=  Evaluate  ${value} + 10
+    Set To Dictionary  ${trans_id}  TransactionID  ${value}
+    Append To List  ${trans_id_list}  ${trans_id}
+
+    Release Locks On Resource
+    ...  ${session_info}  ${trans_id_list}
+    ...  release_lock_type=${release_lock_type}  status_code=${HTTP_BAD_REQUEST}
+    Release Locks On Resource  ${session_info}  ${trans_id_list}  release_lock_type=Session
+
+    ${trans_id_emptylist}=  Create List
+    Verify Lock On Resource  ${session_info}  ${trans_id_emptylist}
+    Redfish Delete Session  ${session_info}
+
+
+Verify Fail To Release Lock For Another Session
+    [Documentation]  Verify failed to release the lock form another session.
+    [Arguments]  ${client_id}  ${lock_type}
+
+    # Description of argument(s):
+    # client_id    This client id can contain string value
+    #              (e.g. 12345, "HMCID").
+    # lock_type    Read lock or Write lock.
+
+    ${client_ids}=  Split String  ${client_id}  ,
+    ${lock_type_list}=  Split String  ${lock_type}  ,
+    ${trans_id_list1}=  Create List
+    ${trans_id_list2}=  Create List
+
+    ${session_info1}=  Create Redfish Session With ClientID  ${client_ids}[0]
+
+    ${trans_id}=  Redfish Post Acquire Lock  ${lock_type_list}[0]
+    Append To List  ${trans_id_list1}  ${trans_id}
+    Verify Lock On Resource  ${session_info1}  ${trans_id_list1}
+
+    ${session_info2}=  Create Redfish Session With ClientID  ${client_ids}[1]
+    ${trans_id}=  Redfish Post Acquire Lock  ${lock_type_list}[1]
+    Append To List  ${trans_id_list2}  ${trans_id}
+    Verify Lock On Resource  ${session_info2}  ${trans_id_list2}
+
+    Release Locks On Resource
+    ...  ${session_info1}  ${trans_id_list1}  Transaction  status_code=${HTTP_UNAUTHORIZED}
+    Verify Lock On Resource  ${session_info1}  ${trans_id_list1}
+    Release Locks On Resource  ${session_info1}  ${trans_id_list1}  release_lock_type=Session
+    Release Locks On Resource  ${session_info2}  ${trans_id_list2}  release_lock_type=Session
+    Redfish Delete Session  ${session_info1}
+    Redfish Delete Session  ${session_info2}
+
+
+Verify Fail To Acquire Lock For Invalid Lock Data
+    [Documentation]  Verify fail to quired lock with invalid lock types, lock flags, segement flags.
+    [Arguments]  ${client_id}  ${lock_type}  ${message}
+
+    # Description of argument(s):
+    # client_id    This client id can contain string value
+    #              (e.g. 12345, "HMCID").
+    # lock_type    Read lock or Write lock.
+    # message      Return message from URI.
+
+    ${session_info}=  Create Redfish Session With ClientID  ${client_id}
+    ${trans_id}=  Redfish Post Acquire Invalid Lock  ${lock_type}  message=${message}  status_code=${HTTP_BAD_REQUEST}
+    Redfish Delete Session  ${session_info}
