diff --git a/openpower/ext_interfaces/test_client_identifier.robot b/openpower/ext_interfaces/test_client_identifier.robot
index 1cbbcb1..0bfea48 100644
--- a/openpower/ext_interfaces/test_client_identifier.robot
+++ b/openpower/ext_interfaces/test_client_identifier.robot
@@ -10,7 +10,7 @@
 Library           ../../lib/gen_robot_valid.py
 
 Suite Setup       Redfish.Login
-Suite Teardown    Delete All Redfish Sessions
+Suite Teardown    Run Keyword And Ignore Error  Delete All Redfish Sessions
 Test Setup        Printn
 Test Teardown     FFDC On Test Case Fail
 
@@ -18,25 +18,46 @@
 *** Test Cases ***
 
 Create A Session With ClientID And Verify
-   [Documentation]  Create a session with client id and verify client id is same.
-   [Tags]  Create_A_Session_With_ClientID_And_Verify
-   [Template]  Create And Verify Session ClientID
+    [Documentation]  Create a session with client id and verify client id is same.
+    [Tags]  Create_A_Session_With_ClientID_And_Verify
+    [Template]  Create And Verify Session ClientID
 
-   # client_id           # reboot_flag
-   12345                 False
-   123456                False
-   EXTERNAL-CLIENT-01    False
-   EXTERNAL-CLIENT-02    False
+    # client_id           reboot_flag
+    12345                 False
+    123456                False
+    EXTERNAL-CLIENT-01    False
+    EXTERNAL-CLIENT-02    False
 
 
 Check ClientID Persistency On BMC Reboot
-   [Documentation]  Create a session with client id and verify client id is same after the reboot.
-   [Tags]  Check_ClientID_Persistency_On_BMC_Reboot
-   [Template]  Create And Verify Session ClientID
+    [Documentation]  Create a session with client id and verify client id is same after the reboot.
+    [Tags]  Check_ClientID_Persistency_On_BMC_Reboot
+    [Template]  Create And Verify Session ClientID
 
-   # client_id           # reboot_flag
-   12345                 True
-   EXTERNAL-CLIENT-01    True
+    # client_id           reboot_flag
+    12345                 True
+    EXTERNAL-CLIENT-01    True
+
+
+Create A Multiple Session With ClientID And Verify
+    [Documentation]  Create a multiple session with client id and verify client id is same.
+    [Tags]  Create_A_Multiple_Session_With_ClientID_And_Verify
+    [Template]  Create And Verify Session ClientID
+
+    # client_id                              reboot_flag
+    12345,123456                             False
+    EXTERNAL-CLIENT-01,EXTERNAL-CLIENT-02    False
+
+
+Check Multiple ClientID Persistency On BMC Reboot
+    [Documentation]  Create a multiple session with client id and verify client id is same after the reboot.
+    [Tags]  Check_Multiple_ClientID_Persistency_On_BMC_Reboot
+    [Template]  Create And Verify Session ClientID
+
+    # client_id                              reboot_flag
+    12345,123456                             True
+    EXTERNAL-CLIENT-01,EXTERNAL-CLIENT-02    True
+
 
 *** Keywords ***
 
@@ -48,20 +69,36 @@
     # client_id    This client id can contain string value
     #              (e.g. 12345, "EXTERNAL-CLIENT").
 
-    ${resp}=  Redfish Login  kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client_id}"}}
+    @{session_list}=  Create List
+    &{tmp_dict}=  Create Dictionary
 
-    [Return]  ${resp}
+    FOR  ${client}  IN  @{client_id}
+      ${resp}=  Redfish Login  kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client}"}}
+      Append To List  ${session_list}  ${resp}
+    END
+
+    [Return]  ${session_list}
+
+
+Get Session Information By ClientID
+    [Documentation]  Get session information by client id.
+    [Arguments]  ${client_id}  ${session_ids}
+
+    FOR  ${session}  IN  @{session_ids}
+       Return From Keyword If  '${client_id}' == '${session["Oem"]["OpenBMC"]["ClientID"]}'  ${session["Id"]}
+    END
+
+    [Return]  ${EMPTY}
+
 
 Verify A Session Created With ClientID
     [Documentation]  Verify session created with client id.
-    [Arguments]  ${client_id}  ${session_id}
+    [Arguments]  ${client_ids}  ${session_ids}
 
     # Description of argument(s):
     # client_id    External client name.
     # session_id   This value is a session id.
 
-    ${sessions}=  Redfish.Get Properties  /redfish/v1/SessionService/Sessions/${session_id}
-
     # {
     #   "@odata.id": "/redfish/v1/SessionService/Sessions/H8q2ZKucSJ",
     #   "@odata.type": "#Session.v1_0_2.Session",
@@ -78,13 +115,17 @@
     #   "UserName": "root"
     # }
 
-    Rprint Vars  sessions
-    @{words} =  Split String  ${sessions["Oem"]["OpenBMC"]["ClientOriginIP"]}  :
-    ${ipaddr}=  Get Running System IP
-    Set Test Variable  ${temp_ipaddr}  ${words}[-1]
-    Valid Value  client_id  ['${sessions["Oem"]["OpenBMC"]["ClientID"]}']
-    Valid Value  sessions["Id"]  ['${session_id}']
-    Valid Value  temp_ipaddr  ${ipaddr}
+    FOR  ${client}  IN  @{client_ids}
+      ${session_id}=  Get Session Information By ClientID  ${client}  ${session_ids}
+      ${sessions}=  Redfish.Get Properties  /redfish/v1/SessionService/Sessions/${session_id}
+      Rprint Vars  sessions
+      @{words} =  Split String  ${sessions["Oem"]["OpenBMC"]["ClientOriginIP"]}  :
+      ${ipaddr}=  Get Running System IP
+      Set Test Variable  ${temp_ipaddr}  ${words}[-1]
+      Valid Value  client  ['${sessions["Oem"]["OpenBMC"]["ClientID"]}']
+      Valid Value  sessions["Id"]  ['${session_id}']
+      Valid Value  temp_ipaddr  ${ipaddr}
+    END
 
 
 Create And Verify Session ClientID
@@ -97,8 +138,9 @@
     # reboot_flag  Flag is used to run reboot the BMC code.
     #               (e.g. True or False).
 
-    ${session_info}=  Create A Session With ClientID  ${client_id}
-    Verify A Session Created With ClientID  ${client_id}  ${session_info['Id']}
+    ${client_ids}=  Split String  ${client_id}  ,
+    ${session_info}=  Create A Session With ClientID  ${client_ids}
+    Verify A Session Created With ClientID  ${client_ids}  ${session_info}
     Run Keyword If  '${reboot_flag}' == 'True'
-    ...  Redfish OBMC Reboot (off)
-    Verify A Session Created With ClientID  ${client_id}  ${session_info['Id']}
+    ...  Run Keywords  Redfish OBMC Reboot (off)  AND
+    ...  Verify A Session Created With ClientID  ${client_ids}  ${session_info}
