This is something I hear a lot: customers want their end users to be able to order new software for their computers using a self service portal. As soon as the request is approved (if an approval is needed may depend on the selected software), the software should be installed automatically. This procedure really helps unburden service desk people and supporters and of course also shortens the time to have a software ready on an end user device. In SCSM 2010 Microsoft shipped a solution to let consumers order software by using the end user portal, but – to be honest – this solution was not really enterprise ready and was removed for SCSM 2012. But if you are using the Microsoft System Center Suite, you have a set of great tools to build your own, cloud-ready solution. Read this post if you want to get an overview how this could be done.
Please accept that I will not go into every detail of the solution as this is a solution approach we implement for our customers. But I want to give you an idea how this can be done so that you can build your very own solution. Many configuration details can be found in other blog posts on http://blog.scsmfaq.ch and other great blogs out there. But of course I will give you some assistance when you reached a dead-end or when questions come up, so feel free to comment and ask.
The products that this solution was built on are the following:
- SCSM 2012
- SCCM 2007 R3 (will also work with SCCM 2012, but the approach is a little bit different, especially when using a user-centric approach)
- SCO 2012
High Level Overview
The solution uses SCSM, SCCM and SCO together. SCSM is used to publish the needed request offerings to the self-service portal where end users can access them and select software that should be installed. The selection is then used in a SCO runbook to modify the correct collections in SCCM by using some WMI magic. As soon as this is done, the software will be installed automatically after a while.
In SCCM 2007 R3 we have Packages with one or multiple programs and advertise those programs to collections (of computers). Members of the collection will then automatically get the corresponding software. Here’s a simplified example:
Now, to distribute software to a computer the only thing we have to do is to add this computer to the correct collections. That’s it, and this is exactly what this solution will do. Adding a computer to an existing SCCM collection.
To make the needed modifications in SCCM we use SCO. At the end this runbooks kicks off a PowerShell Script that uses some WMI magic on the SCCM servers. It takes two inputs:
- Program/Software to get installed (selected by user)
- Computer where the software should be installed (selected by user)
The script then uses the selected program to find the related advertisements and then the related collections that need to be modified. I then added some additional activities that are used to get the user input (programs and computers) from the Service Request in SCSM. When an end user will create a request from the portal, the selected programs and computers will be attached as related items to the runbook activity. This runbook connects back to SCSM and gets those related objects and will use them later in the Powershell Script.
As soon as SCSM is installed, create two connectors, one for SCCM to bring over the programs to the CMDB, and one for SCO to bring over the runbook. To add some more details to those program objects we need to extend this class with some additional attributes. This can be done by using the SCSM Authoring Tool. I added those attributes:
- Friendly Name (String –> will be used as Software Name on the portal)
- Classification (List –> Standard (no approval), Individual (with approval))
- Published to Portal (Bool –> Selection if published or not)
- Application Costs (Int –> Price for the application)
- Application Costs Period (List –> Yearly, Monthly, one-time etc.)
Now we are able to add more details to the programs that we want to publish. I created two views to have a good overview.
Now create the needed Service Request templates. Add a runbook automation activity that will trigger your runbook and add approval activities when needed. You could also use different approvers based on the selected software, but I will demonstrate this in another post. Using this new Service Request template create a new Request Offering that allows users to select the programs and the destination computers. Use criteria to display only those objects you want to appear on the portal. This could be something like this:
- Programs (only when “publish to portal” equals true)
- Windows Computers (where actual Portal User is the Primary user)
At the end, the offering looks something like this:
The user can select one or multiple programs from the list (CMDB query that shows published objects from the program class). Then, the user can select a destination computer. As soon as the user submits the request, the runbook is triggered and takes the related items to launch the script that will modify the correct collection in SCCM.
I think this is a great solution that integrates perfectly with other SCSM offerings. But keep in mind that Microsoft will soon bring a solution accelerator that will use another approach to order new software. This one will be based on the SCCM software portal and will integrate in SCSM to create the related Service Requests. Myself, I like having a single entry point and look and feel that is identical for all end user interaction and therefore like having everything in the SCSM portal. But I’m still excited to see the Microsoft solution!