Licenses and Windows 2003 SP2

Recently we upgraded our installation of Magic 7.51 to Service Desk Express 9.20. Our previous installation was on a single server, Windows 2000 and SQL Server 2000 SP4. Moving forward, we decided to split the application and database server, moving to Windows 2003 R2 SP2 and SQL Server 2005 SP2. The “upgrade” (if you can call it that given that it was a fresh installation of SDE 9.20 and migration of all data) went very well (all things considered) and on the Monday morning we had a very successful release – too successful!

Everyone knew we were doing the upgrade but everyone except us had forgotten – as such as people arrived for work people started talking about the new Magic and they started logging on to take a look. Before very long we breached our license count – the very same license count that had been working perfectly for the last three years! So what was the problem?

The answer was a surprise – there WAS a genuine increase in use as a result of a new and nicer looking Service Desk Express. However, the real problem was a technical issue – the Session_OnEnd() event of a classic ASP application (located in global.asa in C:Program FilesBMCService Desk ExpressApplication Server) running on Windows 2003 SP2 does NOT fire. Have a guess where the code that releases the license lives? (See below).

Sub Session_OnEnd()
...
'Aveneri - 42128 - Remove User for this session.
Application("UserTrack").UserEnd DbConn, cstr(Session.SessionID)
...
End Sub

This is a known issue with Microsoft and BMC and there is a workaround available from Microsoft for this (http://support.microsoft.com/kb/934903/en-us).

Anyway, thought I would pass on the information for anyone who this might affect – in the next post I will hopefully have some good news re a new project that, with a bit of luck might reduce some pressure on organisations license count. Thanks for reading – as always any comments are most welcome.

Navigator Bar – Minimised by Default

Awhile ago I posted something in MagicSolutions forum about minimising the navigator bar by default. As I use my blog here as a repository for tricks and tips etc. I thought it would be worth just documenting it here. So, if you would like the navigator bar minimised by default for ALL your users:

Open C:Program FilesBMCService Desk ExpressApplication Serveroptions_nailogo.asp in Notepad.

Find:

<body style="background-image:url(images/header_main_bkgd.gif); background-repeat:repeat-x;padding:0px; margin:0px;margin:0;border:0;height:100%;overflow:auto" onload="WindowLoad()" onunload="WinUnload()">

Replace With:

<body style="background-image:url(images/header_main_bkgd.gif); background-repeat:repeat-x;padding:0px; margin:0px;margin:0;border:0;height:100%;overflow:auto" onload="WindowLoad();hideNavigation()" onunload="WinUnload()">

Hope this helps.

In/Out Board

Thought this little “ditty” might be of use to someone…As Magic/SDE Administrators you are trying to persuade your users to enter their User Availability data and keep it up to date. Whilst this information is useful for the routing of calls etc. it is not displayed anywhere and consequently is only useful when actually assigning calls to users. It might be beneficial to be able to see, at a glance, all the users and whether (according to the user’s User Availability) they are in or out.

The key to doing this lies in joining the SMSYSUSERDATA and _PERSONNEL_ tables together. What I’ll demonstrate in this post is two ways in which this data can be used:

Report

So the easy solution is to build a report – an IN/OUT board if you will, that will show the status of all members of staff. The SQL for this is:

SELECT P.[CODE], P.[NAME] + ', ' + P.[FNAME] As 'Name', CASE WHEN GETDATE() BETWEEN A.[NOTAVAILABLESTART] AND A.[NOTAVAILABLEEND] THEN 'Out' ELSE 'In' END As 'In/Out'
FROM _SMDBA_._PERSONNEL_ P JOIN dbo.SMSYSUSERDATA A ON A.[SEQUENCE] = P.[SEQUENCE] WHERE P.[_INACTIVE_:] = 0 ORDER BY P.[NAME]

Quite obviously you can change the query to your hearts content to return further fields e.g. phone number etc. You could also add an optional parameter to be able to search for a specific user as well.

This solution is really easy to do but has the obvious limitation that the user’s need to run the report for it to be of any real use.

Calculated Field

So the alternative is to create a calculated field in the Support Staff module with the following SQL:

(SELECT CASE WHEN GETDATE() BETWEEN "NOTAVAILABLESTART" AND "NOTAVAILABLEEND" THEN 'Out' ELSE 'In' END FROM "SMSYSUSERDATA" WHERE "SEQUENCE" = "BASE"."SEQUENCE")

Now, if you then create a Quick View based on the Support Staff module you can add this field in it and even colour code based on whether the user is in or out.

In Out 01

In Out 01

 
In Out 02

In Out 02

As always, comments (positive and negative) are always welcome. Thanks for reading.

The Curse of the Severity Message Box

I guess one of the clever features of Service Desk Express is its ability to calculate the Due Date for a ticket based on its Urgency (or even Priority in version 9.6). If the Urgency of a ticket changes during its lifecycle Service Desk Express needs to know what rules to apply for the recalculation of the Due Date.

Enter “The Curse of the Severity Message Box.”

So, I am guessing everyone is familiar with this popup message that appears when the Urgency changes:

Standard Severity Message Box

So the problem is that this message box is not configurable and if your delightful colleagues don’t change the selector and just click OK then the due date is left as it was – which in the case of when there isn’t a due date populated then that means there is still no due date!

So I thought I would post a couple of hacks that might help if this issue is causing your organisation pain. The result of all the hacks (which don’t have to all be applied) looks like this:

Modified Severity Message Box

The results of this are:

  • The users can only choose Recalculate Due Date based on Open Date.
  • The Cancel button is disabled.

I believe this is what is called a “Belt and Braces” approach 🙂

You are about to hack an HTML page and as such I would stongly suggest you make a back up of it!

All the hacks are applied to one file so open C:Program FilesBMCService Desk ExpressApplication Serverhtmlseveritymsgbox.htm in Notepad.

Default to Something Other Than “Do Not Recalculate Due Date”

Find:

<input CLASS="InputLabel" checked type=radio ID="radio1" NAME="radio" STYLE="BORDER-BOTTOM: none; WIDTH: 20px;" >

Replace With:

<input CLASS="InputLabel" type=radio ID="radio1" NAME="radio" STYLE="BORDER-BOTTOM: none; WIDTH: 20px;" disabled>

This will remove the current default AND disable this radio button. I you don’t want to disable it, just remove the word “disabled” above.

Find:

<input CLASS="InputLabel" type=radio ID="radio2" NAME="radio" STYLE="BORDER-BOTTOM: none; WIDTH: 20px;" >

Replace With:

<input CLASS="InputLabel" checked type=radio ID="radio2" NAME="radio" STYLE="BORDER-BOTTOM: none; WIDTH: 20px;" >

The word “checked” will cause this radio button (“Recalculate Due Date based on Open Date”) to be selected by default.

Find:

<input CLASS="InputLabel" type=radio ID="radio3" NAME="radio" STYLE="BORDER-BOTTOM: none; WIDTH: 20px;" >

Replace With:

<input CLASS="InputLabel" type=radio ID="radio3" NAME="radio" STYLE="BORDER-BOTTOM: none; WIDTH: 20px;" disabled>

This will disable this radio button. I you don’t want to disable it, just remove the word “disabled” above.

Disabling the Cancel button

Find:

<button CLASS="InputButton" TITLE=MGC_PL_LABEL_10 id="CANCEL" name="CANCEL" ONCLICK="window.close()" oonMouseOut="style.color='black'" oONMOUSEOVER="style.color='white'" STYLE="width:100%;cursor:hand;" MGC_PL_LABEL=10></button>

Replace With:

<button CLASS="InputButton" TITLE=MGC_PL_LABEL_10 id="CANCEL" name="CANCEL" ONCLICK="window.close()" disabled oonMouseOut="style.color='black'" oONMOUSEOVER="style.color='white'" STYLE="width:100%;cursor:hand;" MGC_PL_LABEL=10></button>

When your done applying all your changes, save the file and you should be good to go.

Hope this helps. As always, comments (positive and negative) always appreciated.