Session Timeouts in Dovetail Agent

One of the features of Dovetail Agent is auto-refresh. For example, we automatically refresh certain things on the page, such as the number of items in a queue, and user notifications. So if an item gets dispatched to a queue, the application would show this to the user without the user having to do a manual page refresh.

And similar to the Clarify Client, Dovetail Agent is typically licensed on a concurrent user basis.

Previously, the automatic refresh would keep the user’s session alive, preventing the session from ever timing out.

Which means that if a user left for the day without logging out, his session would stay alive (due to the auto-refresh feature), which means a concurrent user license would be consumed, which could prevent another user from logging in. Frustrating for those 2nd or 3rd shift agents.  An administrator could forcibly kill a user’s session, which was a workaround. But we knew we could do better.

Dovetail Agent version 5.11 makes this better.

Base the timeout on user activity, not auto-refreshes

The first thing we did was to timeout the user when there wasn’t any actual user activity, i.e. a keyboard press or mouse movement, as opposed to any activity (such as the auto-refreshes). So if the user walked away or went home, the app would timeout after a certain period of time (because there were no keyboard presses or mouse movements), even though the auto-refreshes would still be happening. Once the app times out, the user’s license is released, and the auto-refreshes are stopped.

What to do upon timeout

The first thought was to log the user out and redirect them back to the login page. This means the user would have to go through the motions of logging in again. Not a big deal. But, again, we knew we could do better.

What we came up with is pausing the user’s session.

So after a period of time (60 minutes, by default), the application would be paused, and we would show the user a message indicating this. The user’s session is actually logged out, and their license is released.  As part of timeout UI, we include a Continue button. So all the user has to do is to click the Continue button, and they’re back working again. Their session is automatically logged back in, and a license is checked out.


Here’s what the timeout UI looks like:



The default timeout value is 60 minutes, but can be configured with the LicensingSettings.TimeoutMinutes application setting. This is the number of minutes a user must be inactive before their license is released.  (Remove this value to never release a license.)


In summary:

  • Concurrent user licensing is still in place
  • Session timeouts still occur, but are now based on actual user interaction with the app
  • We’ve eliminated Out of License errors due to cases such as a user simply walking away
  • The end user experience is simple and painless

This is a much better experience that what we had in the past. Hope you like it.

Rock on.