Microsoft System Center 2012 Service Manager (SCSM) has been a very successful Information Technology (IT) management platform. It is an excellent tool for implementing the best practices and procedures found in the Information Technology Infrastructure Library (ITIL).

Beep! Beep! Back the truck up. I can’t do it, nope just can’t do it. There’s just too many acronyms in IT. So enough with that. If I wanted to write that way I would’ve been in business development not software engineering for the last 30 years.

In my world this is an elegant paragraph:

var keepingScore = 
              (from t in my.Stuff
              where t.MyStuff > t.YourStuff order by t.MyStuff.Cost)

So don’t expect a lot of discussions about paradigms and automation strategies and blah blah blah in this blog post. Just bring a sense of humor.

We’re going to talk about Recipes for Success in Service Manager. I mean exactly that! This is the first part of a four-part series on how to create a Recipe Management System (RMS) in Service Manager. Yes, you read that correctly a Recipe Management System (RMS) in Service Manager.

Why a RMS? Well, part of it is to demonstrate just how customizable Service Manager can be and the other part is I was bored one day. I was also looking for an entertaining way to explain various ways Service Manager can be customized. I will save the Fantasy Football System (FBS) for next year.

The posts will cover these areas of our RMS

When we are done you will be able to browse recipes and plan meals in between completing activities and reassigning incidents to that guy who stole your parking place this morning.

Let’s get to it.

The first thing we have to do is create the domain model. Yeah I know it’s one of those programming terms. All it really means is a design of how the data is to be structured and to make sure we have all the information necessary to create the best Crème Brûlée.

The domain model our RMS is below

The Domain model contains the two classes Recipe and Ingredient with their respective properties. We then translate that to the XML for the management pack. It can be seen here.

Both of our classes inherit from Entity found in System.Library mp. We get certain default properties called generic properties in every Service Manager class. Here’s a list of the generic properties

The Id property is a Guid and is referred to the BaseManagedEntityID  and as “$Id$” in XML criteria.

We also have to create a relationship between Recipe and Ingredient. The XML is linked below and should be very understandable. Notice that the value of the Base attribute is “System!System.Membership”. This means that Ingredient is dependent on Recipe and if you delete Recipe all of the related Ingredients will be deleted as well.

You can find the Relationship code here.

There is an excellent discussion of relationship types on the SCSM Blog.

Now that we have our data, let’s look at the recipe type. This is a perfect example of how to use a list in Service Manager. The recipe type is how we organize our views later in the console.
I think a good list of recipe types for our RMS would have the following types:

We can’t forget the Adult Beverages! I haven’t and I’m enjoying a very nice Gary Farell Reserve Pinot Noir right now.

We create the RecipeType list in xml as EnumerationTypes for the management pack here.

Finally, we have to create the TypeProjection. A TypeProjection is like a SQL view that we will use to retrieve Recipes with their respective Ingredients. We will use the TypeProjection in views and the forms. The XML representation looks like this.

Well that’s enough for this post. Stay tuned for part two where we create the workspace more commonly known as “wunderbar” and views.

You can download the current MP here.