This function can be used to limit the number of concurrent user sessions by the same user to a specified number of sessions.To implement follow the steps below (has only been tested on SQL Server with SQL Auth.

Step 1)  Paste this function in to the top of the Common Script workflow module (NOTE: You will need to change the string "SiteAdminDB" to the value of the site admin DB, by default this is "qcsiteadmin_db"


Function user_IsLoggedIn(theUser)
  On Error Resume Next

    Dim SiteAdminDB : SiteAdminDB = "qcsiteadmin_db_ALM_11_50"

    Dim TDC, COM, SQL, RecSet

    Set TDC = TDConnection
    Set COM = TDC.Command

    SQL = "SELECT COUNT(LS_ID) FROM " & SiteAdminDB & ".td.LOGIN_SESSIONS " &_
          "WHERE LS_USER_NAME = " & "'" & theUser & "'" & " AND LS_CLIENT_TYPE <> 'SiteAdmin'"
    COM.CommandText = SQL

    Set RecSet = COM.Execute
    RC = RecSet(0)

    'MsgBox "RC is: " & RC

    user_IsLoggedIn = RC

    'MsgBox "User has " & user_IsLoggedIn & " sessions logged."

  On Error GoTo 0
End Function


Step 2)  In the CanLogin function in the Common Script workflow module paste the following code (NOTE: You will need to commend out CanLogin = DefaultRes)


  Dim userSessions : userSessions = user_IsLoggedIn(UserName)

  'MsgBox "The number of active user sessions is: " & userSessions

  If userSessions >= 2 Then
      CanLogin = False
      MsgBox "You already have " & userSessions & " ALM session(s) established. No Concurrent Login Sessions allowed.", vbCritical, "NO MILTI SESSION LOGINS"
      CanLogin = True
  End If

  'CanLogin = DefaultRes


You have implemented the user sessions limiter workflow. If you wish to change the number of concurrent user sessions to more than 1 then change the comparison operator value integer in the if statement.

If you try and log-in and your profile has a current session you will receive the following error message. The text can be adjusted.