It’s here(!), now everyone can start providing their users with fully automated self-service based on pure System Center technology. Since yesterday you’re all able to download the beta version of System Center Service Manager 2012 and the RC version of System Center Orchestrator 2012. These two products are the core components in the new rich self-service portal experience provided by System Center 2012. Where Service Manager is the product that defines tracks and exposes your IT services, Orchestrator is in charge of the automated request fulfillment (delivering the service…). By having Orchestrator utilizing the other SC family members you can easily provide rich service to your users.

To start evaluating System Center 2012 products, download current versions from here:

Comments (0)

Big news! As some of you may know our company Gridpro announced the general availability of WebFront for Service Manager last week. WebFront for Service Manager is a Silverlight based web console that delivers functionallity very similar to what the standard console does for work items such as: incident-, problem-, activity- and change management. In the initial release the functionallity is focused around these work item types but the roadmap includes management of configuration items and other areas that’s included in the System Center Service Manager roadmap.

For more videos showing the product in action:

For information on how to evaluate and get a hold of the product:

Categories : Service Manager
Comments (2)

Competing workflows

By · Comments (0)

When using an AddRelationship or RemoveRelationship trigger to fire of workflows in Service Manager you might end up with an unwanted scenario of competing workflows.

Let’s say that you implement a rule that subscribes to relationships being added between a work item and configuration items (such as “configuration items to change” in a change request). The normal behavior after implementing this would be that multiple workflows where fired if multiple configuration items where related to the change request at the same time.

The behavior above is good if you want to do something specific with each configuration item being added to a change request. In certain scenarios though you might only be interested in firing of one workflow when relationships are added (or removed), no matter the amount of relationship changes being committed to the Service Manager database. If this is the case, you could end up with multiple workflows competing to finish of the same task.

Say you want to do something to a change request as soon as a (any) configuration item is added to the change request through the “configuration items to change” relationship. In this case, you only need one workflow to fire of, no matter how many configuration items were added in the transaction (commit). In scenarios like these the “top secret” BatchSize value of subscriptions comes into play. After some digging around I found that the value of BatchSize parameter actually limits the amount of write actions being executed based on a subscription (per poll). This effectively means that setting the BatchSize value to 1 will make sure that only one workflow (write action) is executed even though the condition of the subscription rule was fulfilled by multiple objects.

The MP xml below comes from a management pack where I’ve changed the BatchSize to 1 to fire of a single workflow when a configuration item(s) is added to a change request. The workflow in this specific case was used to add a special activity to all change requests which has one or more “configuration items to change”. The workflow would start with checking of the special activity had already been added, if not it would add the activity. This way, if a previous workflow has already added the activity, the following workflows (triggered by new configuration items being added) would abort at a very early stage, perfect! But if the BatchSize hadn’t been tuned to 1, adding multiple configuration items to the change (where no “configuration items to change” had previously been added) at the same time, would cause multiple workflows to fire of. All of them would think that they were first and they would end up competing for adding the special activity.

<DataSource ID="DS" TypeID="SystemCenter!Microsoft.SystemCenter.CmdbInstanceSubscription.DataSourceModule">
  <RelationshipSubscription RelType="$MPElement[Name='WorkItem!System.WorkItemAboutConfigItem']$" SourceType="$MPElement[Name='WorkItem!System.WorkItem']$" TargetType="$MPElement[Name='System!System.ConfigItem']$">
   <AddRelationship />

During the past two weeks I’ve been asked several times if it’s possible to copy templates in Service Manager. Since Service Manager currently doesn’t provide that specific functionality I had no choice but to write a tool for it. :)

The tool is currently a stand-alone application (but might be integrated as a console task further down the road). It lists all your object templates and enables you to create copies of a selected template. This will save you some time if you’re creating lots of templates with small differences.

Since this is a beta, please use the tool in a non-production environment when creating the copies and then transfer the management packs to the production environment afterwards.

Download “TemplateCopy for Service Manager – Beta 2″


Categories : Service Manager
Comments (5)

We’ve reached the final steps of writing the Service Manager Unleashed book! Not only is this a great feeling but it also means that I’ll have some more time for writing blog posts!

I would like to thank all my co-authors for their hard work. Well done!

I hope this will provide lots of peopled with some grateful guidance, go pre-order it today at:


Categories : Service Manager
Comments (2)

ConfigMgr 2007 R3 includes the functionality to prestage both the WinPE boot image and OS install image on hard disk. This enables you to instruct your computer hardware provider to prestage these files on the disk when it ships, making your OS installation process both much faster (because image is already on disk). And there is no need for PXE or CD/DVD boot, because the boot image is loaded from the disk. This is a greatly anticipated feature and the lack of this feature before created a lot of custom solutions to be made.

But in some circumstances it would be great to have the ability to use only the prestaged WinPE and not be forced to use the prestaged OS Install Image. By setting the much undocumented new OSD task sequence variable OSDUseAlreadyDeployedImage to False before the Apply Operating System action enables this behavior and forces the action to use the network stored OS Install Image or any other OS Install Image than the prestaged. See screenshot below.

This comes in handy if your image is changed and you don’t want to pay extra for the computer hardware provider to update computers already staged, or if your OS installation task sequence contains multiple images. In my case I wanted to create a custom OS refresh scenario by prestaging only WinPE Boot Image on disk, but that’s another story.

Comments (0)
24 launched

By · Comments (0)

Gridpro the company owned by me (Patrik Sundqvist) and my co-blogger Jonas Ullman just launched their web site. Our first announcement on the company web site is the development of a web console for Service Manager (Gridpro WebFront for Service Manager) and development of a Windows Phone 7 app (Gridpro MobileFront for Service Manager). Check it out at!!

Categories : Other
Comments (0)

In a perfect world this never happens. BUT as we pretty often experience packages doesn’t reach its destination distribution point and gets stuck on the Pending status, and triggering a refresh on the distribution point doesn’t help. Of course we could just update the Distribution Points for the package, but that would affect all distribution points and in large environments that isn’t good enough. Below is a T-Sql script that I’m using to resolve this scenario by resetting the package on the distribution point in SQL and then do a refresh of the DP.

DISCLAIMER: This solution is brought AS IS with no warranties, and remember editing the ConfigMgr database is NOT supported by Microsoft.

1. Paste the SQL query below into a SQL Management Studio query window

Update pkgstatus set [Status] = 2 where id = '%PACKAGEID%' and sitecode = '%TARGETSITECODE%' and type = 1
Update pkgstatus set SourceVersion = 0 where id = '%PACKAGEID%' and sitecode = '%TARGETSITECODE%' and type = 1

2. Replace the variables %SITECODE%, %PACKAGEID% and %TARGETSITECODE% with your primary sitecode, packageid for your pending package and finally the sitecode for you target distribution point

3. Execute query

4. Refresh the package on the target distribution

5. Finished

Comments (0)

Color Coded Views

By · Comments (24)

The question has been asked a number of times: “Can the views in Service Manager be color coded?". For a while now I’ve been telling people that they can be. In this blog post I’ll show one way of doing exactly that.

Before I go into the details of how to do this I would like to take the opportunity to introduce Gridpro AB. Gridpro is the name of a new System Center (SC) focused company founded by me and my friend and co-founder Jonas Ullman. We’ll be focusing on developing products and solutions around the SC family of products. The company web site ( should be up within a few weeks but this blog will live on as my, Jonas and Gridpro’s contribution to the SC community. Now to the solution!

First, let’s take a look at what we want to accomplish. Using the Incident settings in Service Manager it’s possible to configure a priority matrix which is used by built in workflows to calculate the priority of an incident given the values of impact and urgency. Based on the calculated priority value I want to color code the incident in incident views in the Service Manager console according to the following table:

Priority Color
1 Red
2 Red
3 Red
4 Yellow
5 Yellow
6 Yellow
7 Green
8 Green
9 Green

The first thing to understand, which is what makes this possible, is that the column configuration of a view is XAML based code that is stored in a management pack. If you create a incident view containing the Priority property you’ll find the following line of XAML in the <Presentation> tag of the view definition within the management pack where you stored the view:

<mux:column name="Priority" displaymemberbinding="{Binding Path=Priority}"
 width="100" displayname="Priority.6bd567905b574b128823749bc7dc6e74"
 property="Priority" datatype="s:Int32" />

The code above defines the column that displays the priority value of each incident listed in the view. Now, after reading some documentation around the Service Manager Grid Views found here: Grid View Configuration and what it means. I found that the schema for the grid view column supports templates. This means that we can define how each cell in the column should be presented using any WPF control like Borders, Grids, Textboxes etc.

In the example below I’ve created a new view for incidents containing, amongst other properties, the incident priority. I’ve exported the management pack where I stored the view and added a new column definition using the cell template part of the schema. After a few minutes of serious designing Smile I came up with the following definition.

<mux:column datatype="s:Int32" property="Priority" displayname="Priority.6bd567905b574b128823749bc7dc6e74" width="110" name="PriorityColor">  
			<border width="80" height="Auto" verticalalignment="Stretch" horizontalalignment="Stretch" background="{Binding Path=Priority, Converter={x:Static gridpro:PrioColorConverter.Default}}" cornerradius="5" borderbrush="Black" borderthickness="2"> 
				<dockpanel lastchildfill="True"> 
					<textblock verticalalignment="Center" horizontalalignment="Center" margin="0" text="{Binding Path=Priority}" /> 

I’ve basically copied the generated definition of the Priority column, given the column a new name, removed the DisplayMemberPath property and added the child elements that defines my new cell template. Also, notice that I’ve reused the generated DisplayName of the Priority column. Reusing the identifier of the Priority column DisplayName means that the column will get the header value “Priority”.

The most important part, which make the magic happen, is the binding defined of the Background property of the Border. Notice that I’m using a value converter. The value converter is a few lines of code that I’ve written in C# which takes a property value as input, applies my custom logics and returns a new value. Since the Background property expects a color I cannot simply bind the property to the incident priority, the border wouldn’t know which color to present for a value like “8”. Using the value converter which maps a priority value (1-9) and translates each of these values to value of either “green”, “yellow” or “red” the border can be displayed with the “correct” background color.

In the download, found in last in this post I’ve included an example management pack containing the view from the picture below, the assembly containing the value converter and the source code for the value converter. To try the example out:

  1. Copy the assembly “Gridpro.ChristmasGifts.Converters.dll” (containing the value converter) to the Service Manager installation path, usually “C:\Program Files\Microsoft System Center\Service Manager 2010”.
  2. Import the management pack “Gridpro.ChristmasGifts.ColorCodedView.xml”
  3. Make sure you’ve configured the Priority calculation within Incident Settings (Administration – Settings – Incident Settings).
  4. Make sure you have some incidents in your env. and go to Work Items – Incident – Merry Christmas

The result can be seen in the picture below, enjoy!


Download solution files: Color Coded Views – Gridpro Christmas Gift

Note: To learn how you can modify the cell template you should read up on basic Windows Presentation Foundation.

Be sure to read the comments made in the provided management pack.
Merry Christmas!

Comments (24)

When I got home from Berlin (TechEd Europe) last week and went through my email backlog. I was glad to find that I’ve been awarded with the MCC title.

Microsoft Community Contributor Award
Microsoft Community Award FAQ

It’s nice to be appreciated, time to start writing the next blog post!

Categories : Other
Comments (2)