So, I came across this particular issue whilst implementing process automation with a particular customer. I was implementing Service Manager 2012, and migrating data from the incumbent BMC Remedy AR system to Service Manager. Rather than use the CSV Import route, I developed a series of Orchestrator Runbooks to ‘massage’ the data extracted from Remedy AR into the format required for Service Manager, including all the work log history etc.
The Runbooks created for importing the data into Service Manager performed the following actions:
- Detect whether a work item should be created or updated
- Transform data present in Remedy AR to the required format for Service Manager (Support Group, Classification/Area, Status etc.)
- Date/Time conversion to UTC
- Create or Update the work item (Inc. Support Group, Classification/Area, Status)
- Add work log history as Analyst/User comments
Whilst implementing and configuring Service Manager, due to the size, complexity and maturity of the service desk operation, enumeration values (lists essentially) were populated using the Travis Wright’s EnumCreator spread sheet – good work Travis! These included things like Incident Tier Queue, Service Request Support Group, Incident Classification etc.
Now, whilst testing the migration of the data, I came across a strange error from Orchestrator:
After a certain amount of trial and error, I narrowed this down to an issue with the Support Group property being updated. Now, as I mentioned, EnumCreator had been used for creating the Support Group enumeration items (Well, all enumeration items actually). If you are familiar with this spread sheet, you will know that the Enum ID (or EnumerationTypeName as it is know in the database) is dynamically built from the values you enter in the Level 1 to Level 7 columns. Now, in the case of my customer, the Support Groups for both Incident and Service Requests were structured in the same way, so I used the same values in the EnumCreator spread sheet, changing only the Root Level, Management Pack ID, Management Pack Version and Root Enum MP ID. So what I ended up with, for example was the ServiceDelivery.Helpdesk.Enum present in two separate enumeration item management packs – one for Incidents and one for Service Requests. Herein lay the problem……..
It appears the when the Orchestrator 2012 Update Object or Create Object activities are executed, enumeration items are set or updated based upon the Enumeration ID text string only. e.g. set the Service Request Support Group to the value associated with enumeration ID ServiceDelivery.Helpdesk.Enum. Since only this string is used, two values are found with a value of ServiceDelivery.Helpdesk.Enum, therefore the update fails. Once I figured this out, I edited the XML of my enumeration item management packs to include an ‘enumeration identifier’ – I essentially prefixed each of my enumeration IDs with the enumeration that I was extending, thus making these unique. One thing to note is that if I had configured these list items manually, this wouldn’t have occurred due to the fact that Service Manager automatically generates these unique enumeration ID in the format of Enum.<GUID>
As you can see, the circumstances that this problem may occur are very specific, but hopefully this may help someone else out in a similar situation.