The Service Manager Console let’s you create different type of objects in different places. For instance you can create new folders under “Configuration Items” and then store your views in it. This is pretty cool, but unfortunately you cannot create new objects in all places because the Console restricts this. But with a little bit of hacking, you can place objects wherever you want – and you can also create your own wunderbars!
Objects are placed in Folders, in the XML code referenced as “ParentFolder”. So first we have to find out what folders we can use as parent folders and what their exact names are. One way to get this result is using SQL Management Studio. With some easy queries we will find out what we want.
First, let’s show all existing folders in all Management Packs.
In this example I want to create a new folder under “Work Items”. I have to find out what the parent folder name is to place my own folder there. We know that by default some folders exist under “Configuration Item”, one of them called “Incident Management”.
Now I will add some filtering to the query I used before to find out the parent folder id.
With the next query I try to find out what the name of the parent folder is and in what Management Pack the folder is stored.
The name of the parent folder is important (ServiceManager.Console.WorkItem.Root). The result of the query shows the Management Pack ID of the MP where it is stored. Let’s find out what MP this is.
Now we know the Management Pack where the folder is stored (ServiceManager.WorkItem.Library). As we have everything we need, let’s build our own Management Pack and place the folder under “Work Items”. I will do this the very easy way by using the console to create a new folder under “Configuration Items” and do some manual XML editing afterwards. Of course you could also do this by creating your MP directly in XML.
Now I export the MP and edit it using an XML editor. If it’s not already there we have to add a reference to the Work Item Library. The details to build this reference comes from one of the SQL queries we used earlier.
Now I search the entry for the folder I manually created before. In the Language Packs section the name is translated to the internal ID. After finding this out, I can find the appropriate entry in the Management Pack. The last step is simply changing the name/id of the parent folder that our own folder is stored in. Again, the needed information comes from the SQL queries.
Now save and re-import the Management Pack. After restarting the console, the new folder sits exactly where we want it to be!
One more cool thing: If you want to create your very own wunderbar just use the top folder. Use the first SQL query in this post to find out what parent folder you have to use!
Some of the steps shown here may look a little bit complicated, but I tried to make things very clear and therefore didn’t use the fastest way to achieve the goal.
What a great post. I think this solution will help many clients.
can you show a way to create folders under folders, because I can’t get this to work.
nice post though, really structured and clear
Not exactly sure what you mean as the procedure is the same. One difference could be that your own folders have a dynamically generated ID like “folder.yxzyxzyxzyxzyxzyxz” and that you therefore cannot find them easily with the SQL query. Or do you mean something completely different?
I can find it easily enough, but after editing, when I import the MP, it has no effect whatsoever.