Following up our posts in this series from last week, today we are going to quickly show how we can set a template ID in a Service Request template so that the template ID is always set on SR creation.



Error Installing the Service Manager 2012 R2 Authoring Tool on Windows 2012 R2

Quick post today. Some of you may have run into this issue previously and while I figured this out myself this morning there also appears to be a technet article here talking through it in more detail.

In summary, if you have an issues with the VS 2008 Redist now showing as an install pre-req when trying to install the Authoring Tool, it’s most likely because the Redist actually didn’t install, as it doesn’t always install just by running the package as you’d expect.

To resolve this, browse to the C:\VS 2008 Shell Redist\Isolated Mode folder that the AppEnvRedist.exe created and run the vs_shell_isolated.enu.exe directly.

After the installation completes attempt the Authoring Tool install again and you should be good to go.


Modify WorkItem Title When Creating Via Template / Projection

Quick one today. I ran into a bit of an issue when creating a new SR via an object projection and applying a template.

#projection setup
$TemplateObject = Get-SCSMObjectTemplate -Id $TemplateId
$TemplateMP = $TemplateObject.GetManagementPack()
$mpAlias = $TemplateMP.References.GetAlias((Get-SCSMManagementPack system.workitem.library))
foreach ($obj in $TemplateObject.ObjectCollection)
   fn_UpdatePropertyCollection -Object $obj -Alias $mpAlias

#get the new status for workflows
$statusNewEnum = Get-SCSMEnumeration ServiceRequestStatusEnum.New

$seedTypeSR = '^System.WorkItem.ServiceRequestProjection$'
$seedclassSR = Get-SCSMClass -Name System.WorkItem.ServiceRequest
$seedPropertyValuesSR = @{
CreatedDate = (Get-Date)
   Id = "SR{0}";
   Status = $statusNewEnum;
   Title = $afUser.DisplayName

$seedProjectionSR = @{
   __CLASS = "System.WorkItem.ServiceRequest"
   __OBJECT= $seedPropertyValuesSR
   CreatedBy = $AffectedUser
   AffectedUser = $AffectedUser
   AssignedTo = $AssignedUser

$newSrProjection = New-SCSMObjectProjection -Type $seedTypeSR -Projection $seedProjectionSR -Template $TemplateObject -PassThru -ErrorAction SilentlyContinue

When the template was applied it was overwriting my title. To remedy this, I had to dynamically modify the title within the template itself using this code:

#update the template title with the affected users displayname
foreach ($obj in $TemplateObject.PropertyCollection){
   if($obj.Path -like '*Title$'){
      $obj.MixedValue = $afUser.DisplayName + " - " + $obj.MixedValue

Hope this helps someone else!

Cireson Portal: Dynamic Forms by Template ID, Part 2

Continuing from our last article we are going to move forward with the process of automating the display of our designated custom tab, but first lets do a quick review.

The last entry is available here: Part 1

Last time we worked through the basics of why you would want to use a solution like this, as well as how we can customize a portal form to display our custom property extensions for the workitem classes, and now we are going to discuss how we can manipulate the form on load to display the custom tab automatically based on the template id of the form.

Continue reading “Cireson Portal: Dynamic Forms by Template ID, Part 2”

Cireson Portal: Dynamic Forms by Template ID, Part 1

We’ve had a large number of requests for this sort of functionality, but if you aren’t one of the customers making this request then you may not entirely understand what we are talking about here. What I mean by dynamic forms, is that the SR/IR/CR form changes the fields it shows and the ordering of the fields as you see fit based on the template id of the WorkItem. Let’t look at a few scenarios where this would be useful.

One common scenario is when you have a particular Request Offering in the Service Catalog that serves a very particular purpose, most commonly something like a project request or a new user access request. In either of these scenarios the general information you might be requesting from the user is not going to fit readily into the standard fields for the service request.

With this in mind you are left with a few options. You can extend the service request class to contain additional fields to hold this information and name each field according to the information it will contain, or you can extend the workitem with a generic set of fields to contain the information from both types of request (we consider this best practice), or you can try and fit the information into the default fields. For this article we are going to work with what we consider to be best practice.

Continue reading “Cireson Portal: Dynamic Forms by Template ID, Part 1”

Power BI Desktop + SCSM 2012

I enjoy visualizing data. I believe it gives a different layer of insight to the data that we already have and bubbles up information we may have either felt like we knew already, or demonstrate to us something new entirely. It’s really a matter of bringing broad understanding to something that is otherwise foreign and nearly unusable.

For these exact reasons I’m really excited about the potential of Power BI and Power BI Desktop, but even more so the combination between the two.

Continue reading “Power BI Desktop + SCSM 2012”

Automation Series 1, Part 4: Azure Automation


If you’ve been following along with our series you now have a beautiful Power BI dashboard for your incidents that is using real data injected directly into Power BI from SCSM using Powershell and the Power BI API.

All that to say, we are missing one very important capability, and that’s how we update the data regularly without the SCSM admin having to log into the system in the middle of the night to refresh the data for the CIO currently in the UK. This is where Azure Automation comes in.

Continue reading “Automation Series 1, Part 4: Azure Automation”

Automation Series 1, Part 3: Power BI Reporting


In the third post of our automation series we will focus on report and dashboard creation from within the Power BI web app. The intent of our dashboard today will be to show only a few key metrics:

  1. Incident creation by date
  2. Count of Incidents by classification
  3. Count of Incidents by Status

Continue reading “Automation Series 1, Part 3: Power BI Reporting”

Automation Series 1, Part 2: Powershell and Power BI


In the second part of our series we will be focusing on Power BI and how to access the API through Powershell, as well as the benefits of using the API. We will also discuss a few of the limitations that exist within the API currently that could limit what you want to do with the API.

This is part 2 in the series, if you are looking for the first post you can find it here:

Automation Series 1, Part 1: Service Manager Dashboards in Power BI through Azure Automation

Continue reading “Automation Series 1, Part 2: Powershell and Power BI”

Automation Series 1, Part 1: Service Manager Dashboards in Power BI through Azure Automation


This blog is the first in a series that I’ll be writing, starting today and continuing through the next few weeks, that will focus on how IT shops can easily automate the process of dashboard creation within Power BI and then present this information to their users in a very mobile friendly fashion through the Power BI app. Going a step further, we will use Microsoft’s Azure Automation in the cloud to run on-premise runbooks to collect the data from Service Manager and upload the data into Power BI using Powershell and the Power BI API.

Continue reading “Automation Series 1, Part 1: Service Manager Dashboards in Power BI through Azure Automation”