Monthly Archives : November, 2005

Scripting Exchange Server

For ‘ad hoc’ scripting of Exchange Server, you just cannot beat Dmitry Streblechenko’s Outlook Redemption.

It is basically a set of COM objects (in a DLL) which wrap many of the Outlook / Exchange objects, saving you from having to put some C++ code together to get around the horrible ‘Another application is trying to access Outlook’ security messages (and requiring user interaction).

I had a quick ‘squiz’ at Dimitry’s site and saw the ‘SafXXXXItem’ objects. I didn’t think these would meet my needs so almost wrote my own wrapper for the 2 or 3 particular objects / calls I needed, when I spotted his Redemption Data Objects (RDO), giving full access to the GAL, Public Folders, Mailboxes etc. In the end it did everything I needed and I got my script running in no time (see functions below).

Function AddUserToFolder(byref oFolder, byval oUserID, byval oUserName, byref objSession)

        '*********************************************
        ' oFolder                    Public Folder object
        ' oUserID                    EntryID of the user (from the GAL)
        ' oUserName                Name of the user (from the GAL)
        ' objSession                Session object
        '*********************************************
	Dim sTempUsername
	sTempUsername = ""
	Set objACL = CreateObject("MSExchange.aclobject")
	objACL.CDOItem = oFolder
	Set objFolderACEs = objACL.ACEs

	' delete the user if they exist already
	For each objFolderACE in objFolderACes
		sTempUsername = GetACLEntryName(objSession, objFolderACE.ID)
		if sTempUsername = oUserName then
			Log "Deleting User : " & sTempUsername
			objFolderACEs.Delete objFolderACE.ID
		end if
	next

	' add user if they did not exist
	Log "Adding user : " & oUserName
	Set objNewACE = CreateObject("MSExchange.ACE")
	objNewACE.ID = oUserID
	objNewACE.Rights = "&H7FB"
	objFolderACEs.Add objNewACE
	objACL.Update

	if err then
		AddUserToFolder = false
	else
		AddUserToFolder = true
	end if

	Set objACL = nothing
	Set objNewACE = nothing
	Set objFolderACEs = nothing

End Function


Function GetACLEntryName(byref objSession, byval oACLEntryID)

        '*********************************************
        ' objSession                Session object
        ' oACLEntryID              EntryID from the folders' ACL
        '*********************************************
	Dim sResult
	sResult = ""
	Select Case oACLEntryId
		Case UDefault
			sResult = "Default" & vbTAB & "Default"
		Case UAnonymous
			sResult = "Anonymous" & vbTAB & "Anonymous"
		Case Else
			sResult = objSession.GetAddressEntryFromID(oACLEntryID).Name

	End Select
	GetACLEntryName = sResult

End Function

 

Tools for every machine.

There are some tools I find myself adding to every machine I work on. Some of these come from Scott Hanselmans’ Ultimate Tools List. Currently I install the following on every machine :-

I also use a bunch of others (Cropper, Magnifixer, Snippet Compiler etc), but the first list is my ‘MUST HAVES’ on every machine. To make it all a bit easier I put together a short script to copy the apps over to the new machine, install all the apps, do the necessary with reg entries etc. Code is as follows :-

Dim objFS, WshShell, link, bDebug, sDestinationFolder

bDebug = false
sDestinationFolder = "C:WindowsKensTools"


Set objFS = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")

' Create the new folders (dont care about errors)
On Error Resume Next
objFS.CreateFolder sDestinationFolder
Err.Clear

' Copy the files over
objFS.CopyFolder ".*.*", sDestinationFolder, true
If Err then
	Log ("Failed to copy folder over:" & vbcrlf & vbCrlF & err.description)
	Err.Clear
Else
	if bDebug then Log "Copied folder over"
End If

objFS.CopyFile ".*.*", sDestinationFolder, true
If Err then
	Log ("Failed to copy files over:" & vbcrlf & vbCrlF & err.description)
	Err.Clear
Else
	if bDebug then Log "Copied files over"
End If

' Do the apps
InstallApp "regedit.exe /s " & sDestinationFolder & "Notepad2n2_shell_integration.reg", "Notepad2"
InstallApp "msiexec /i """ & sDestinationFolder & "CmdHere Powertoy For Windows XP.msi""", "CmdHere Powertoy"
InstallApp sDestinationFolder & "VNC-4_1_1-x86_Win32.exe", "VNC"
InstallApp sDestinationFolder & "Winzip90.exe", "Winzip"
InstallApp "msiexec /i " & sDestinationFolder & "CommandBarSetup.msi", "CommandBar for Explorer"


' Create the BG Info shortcut
Set link = WshShell.CreateShortcut("C:Documents and SettingsAll UsersStart MenuProgramsStartupBGinfo.lnk")
link.Arguments = sDestinationFolder & "kens_default.bgi /TIMER:3"
link.Description = "BGinfo"
link.TargetPath = sDestinationFolder & "BGInfo.exe"
link.HotKey = "CTRL+ALT+SHIFT+B"
link.IconLocation = sDestinationFolder & "BGInfo.exe,1"
link.WindowStyle = 1
link.WorkingDirectory = sDestinationFolder
link.Save
If Err then
	Log ("Failed to install BGinfo shortcut:" & vbcrlf & vbCrlF & err.description)
	Err.Clear
Else
	if bDebug then Log "Installed BGinfo shortcut"
End If

Set link = nothing
Set WshShell = nothing
Set objFS = nothing




Sub InstallApp(byval cmdLine, byval appName)

	Set oShell = CreateObject("WScript.Shell")
	Set oExec = oShell.Exec(cmdLine)

	Do While oExec.Status = 0
		WScript.Sleep 100
	Loop
	If Err then
		Log ("Failed to install " & appName & " :" & vbcrlf & vbCrlF & err.description)
		Err.Clear
	Else
		if bDebug then Log ("Installed " & appName)
	End If

	Set oExec = nothing
	Set oShell = nothing

end Sub

Sub Log(byval Message)

	Wscript.echo Message

End Sub

 

Helpdesk Application

I have been working in Support / Technical Services for many years now and have seen my fair share of CRM / Helpdesk Applications. These vary from the big guys Seibel, Remedy, HEAT all the way to free PHP scripts with a messy web front end.

One I’ve seen recently is Kayako’s SupportSuite. This is a web (PHP) based front end with a mySQL back end. It is incredibly feature rich, covering just about ALL of the needs of a typical ISV type company. It is certainly not one of those boxy, bordered table basic HTML front ends either, it actually looks really cool.

Some of the features I’ve explored so far include :-

  • Multiple SLA’s depending on customer
  • Good choice of integrated login scenrios (LDAP, vBulletin and many others)
  • Intelligent email parser
  • Customizable workflow
  • Excellent customer facing front end so they can view / edit their cases
  • Good knowledgebase, with internal and external articles and an option to auto suggest relevant articles
  • Integrates with Outlook
  • RSS’able absolutely everywhere (tickets, knowledgebase, news etc) 
  • Add ons for instant desktop alerts and for live support (web IM)

The only things that I can see that lets this gem down are :-

  • A lack of decent support, so far I’ve had a couple of poor answers to one good one and the response times can be lengthy.
  • A lack of decent documentation, their docs are so far behind the code it’s untrue – that said it is very intuitive

These guys really could clean up with this, I can see how I could have easily used this (and improved productivity) at all the companies I’ve worked for. It’s a real shame about the support and docs, it just makes it that much harder to implement, extend and operate. Does a busy support department really have the luxury to wait a day or two for support on their issues.

Although you get 98% of the source code when you purchase (a snip at $500 USD) the ‘owned’ version (I guess the 2% is their licensing code), how cool would it be to take a ‘Integration / Customization guide’, work through it and end up with a neat product streamlined to your business processes and systems – not going to happen right now with no docs, instead you’d have to pick through the PHP code by hand

I love this application, come on guys, you’ve got most of the NEEDED features in there already, get the docs and support sorted out, you could clean up !!

 

Archive One – Policy 4.2 Released !!!

The much awaited version 4.2 of Archive One Policy (from C2C Systems, my employer) is now available. You can find details here.

The aspect I’m excited about is the Integration Framework (see here for the announcement). This opens up a whole new arena for us – we can be both subservient to other systems; and take control of other systems. We’re using open file formats and hooks for any of the common scripting languages.

I’m looking forward to developing a bunch of useful scriptlets to make (archiving) life easier.

 

Samsung D600 review

I have just changed my mobile phone to the new Samsung D600 (perviously I had always used Nokia models). The Samsung phone is pretty good, it provides me with a 2 mega pixel camera, micro SD slot (which I filled with a 512MB card, so now my phone are over 600MB of storage available), MPEG4 capability, 240 by 320 262K colour screen and Picsel Viewer software (read Word, Excel, PDF and html docs).

I like the phone, but the software is a bit clunky, sending an SMS to someone in the phonebook is a lot of steps – after composing the message I have to hit :-

  • Options
  • Send Only
  • Options
  • Phonebook
  • Then ‘browse’ to the contact
  • OK (to check the checkbox for the contact)
  • Select
  • Options
  • Send

This is just to long. I use txt message to send very short snippets when I don’t want to disturb the receipent, having to go through this rigmarole is going to stop me using txt messaging.

Another feature I like is being able to configure the USB connection as ‘Mass Storage’ making the phone look like a removeable drive to my PC. However there seems to be a issue with this option in that it always reverts back to ‘Modem’ when I switch the phone off.

Final dissapointment is the lack of open standards / information about the thing. On the display settings I can choose what theme to apply – there is a choice of 2, imaginatively named Pattern 1 and Pattern 2 and the other setting is where I want to display the operator logo (top, bottom or off). I have to ask, ‘Why is there no option to modify these or to add your own themes ?’ – a little bit of thought on this side would have bumped the phone up from ‘good’ to ‘killer’ – I already have a USB connection, just publish the format / schema or whatever and let me get creative…

 

Is it worth it ???

Well I beat my record.

This weekend I drove from Newbury, Berkshire to Argyll, Scotland to do some ‘munro baggging’ with my brother.
It’s a 400 mile journey that I expected to do in around 7 hours. I ended up driving for 10 hours each way.

The weather was pretty miserable so we didn’t get anything done on the Sunday (we like to try and fit in a short 4 to 6 hour walk on a Sunday morning before I head back). So for a total of 20 hours driving I enjoyed 5.5 hours walking (previous record was 18 hours driving for 6 hours walking).

Anyway, we stayed in Crianlarich Youth Hostel on the Friday night, walking a couple of the Bridge of Orchy munros on Saturday in rain mostly, with a cloud base of around 700m. We had planned to do all 4 of the easily linked munros here, but the weather was so bad we sacked it after 2.
This brings my ‘bagged’ total to 129 (only 155 to go).
Beinn Dorain
Beinn Dothaidh

It starts from the Bridge of Orchy railway station, following a well trodden path up the side of the Allt coire an Dothaidh. The path opens up to more marshy land at around 550m, then a steep pull up 100m or so brings you to the bealach at 744m (spot height)
Heading South on another well trodden path takes you over initial gentle terrain, giving way to more steep and finally to the summit with a large cairn.

Head back to the bealach and on towards Beinn Dothaidh. A well defined slanting path leads from the bealach across the hillside towards the summit, the path soon peters out and becomes a trudge over the wet hillside to the summit (ensure you visit the East top which is 1004m, 4m higher than the West top).

Head back to the bealach and back the way you came.

resume professional writers review