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!
Pingback: Using Service Manager 2012, CM 2007, and Orchestrator 2012 to build self-service software ordering
Great! And I agree with you about sccm portal and single entry point.
I see that a Solution Accelerator will be published to do this type of scenario… I’m looking for more details, but so far all I see is what Steve Beaumont mentions about it… http://systemscentre.blogspot.com/2012/02/system-center-2012-software-self.html
You’re right, i mentioned that at the end of the post. I have not seen the solution yet, but Travis told me that they are using an approach where the user will access the SCCM Portal. After a Software is selected, it will create a SR in SCSM to follow the business process. I’m looking forward to test this solution!
True – true. I like your approach, it keeps it simple for the end users (always preferred) Great article, as always!
Pingback: Automating Software Deployment [Solution Accelerator] – SCSM.US
Have you thought about using a SCCM Integration pack instead of a script?
Thanks for the info, I did not check your IP. But: My scenario takes a program (not Package) and the script checks to what collection the program is advertised. Would this be possible with your IP? If yes, this would definitely be a better way 🙂
Yep, you can use the get sccm advertisement object and specify the package id (or name) + program to return what collections it is advertised to then use the Modify Collection Add Direct Member object to actually add the member.
I am interested in how to make the service request Template
Check this out –> http://technet.microsoft.com/en-us/library/hh495623.aspx
Thanx for the link.
I am searching howto add a list of selectable applications (I have a list of applications as CI’s) to a service request Template. So I can offer my request offering into the portal.
I am using autoring tool. I guess I have to expand the request class and form with a property to hold a list of Applications from CI . It needs to be multiselect. I am stuck at the authoring manager, I dont know what type or class to select so I can use it up with the request offering and correct mapping.
Great post !
You can download this Orchestrator Runbook anywhere for test the Self Service Software Ordering ?
No, it’s not available for download … sorry.
Marcel, great post! Have you run across a scenario where one user fills out a request in the SSP on behalf of another user? Any solution for that?
That would also work. Just add another field called “Reporting User” or something and relate the selected User CIs either as related or affected CIs. Then you can have your runbook use that information for assignment. If needed, you can also use other relationships with some XML magic. Check out Patriks blog for that –> http://blogs.litware.se/?p=1300
You mentioned the approach would be somewhat different for 2012 SCCM . Can you describe the process using CM 2012 ?
Actually it’s more or less the same. But SCCM 2012 uses a more User-centric approach. So maybe you want to add User Accounts to Collections instead of Computer Accounts …
I am trying to re-create this . I already created the add user to group runbook and integrated with sevice manager. It works well . I can create the relationships and drag the correct objects out of the integration packs but I dont know the parameters for each of the objects in the runbook . It looks like powershell is leveraged at the end . Would it be possible to get this info or be directed to some documention for this solution ?
You are right, the solution uses some PowerShell scripts to add the selected computers to the correct collections. To do this I used WMI as this is indeed the best (and sometimes only) interface to communicate with SCCM. So lookout for the correct WMI queries to modify your collection memberships. Something like this –> http://blogs.technet.com/b/mniehaus/archive/2009/04/10/adding-members-to-a-configmgr-collection-using-powershell-v2-ctp3.aspx.
Hope this helps …
Can you please call when you get a chance . I need a step by step for this . Will be more than willing to compensate you for your time . I dont think I can wait for the solution accelerator to appear from microsoft.
Can i configure Sequence Approvers for AAW?
This solution is built without the AAW. Are you using AAW?
Yes, I use AAW and want to make sequence for approvers to install application. is that applicable to done?
Where do You register the information about the “subscription”? Or is there a standard table or something where I can find information about the “subscription”.
You have extended the class with Application Costs and Application Costs Period. Therefore I suspect that you are invoicing the user based on the Aplication Cost and Period. Is this done from SCSM?
Not sure if I understand exactly what you mean. I extended the data model with those new properties to allow the user to see what costs will be generated and what would be billed to his/hers cost center. This is a regular class extension that can be done with the authoring tool oder Visual Studio.
Thank you for the answer. I’ll try to eplain myself a little better.
I thought, since you’ve extended the class with information about Application Cost and Period, you’re using SCSM to create a “billing record”. And once a month you’re running a workflow job or something to create the “billing record” based on the information in the extended classes. Therefore I wondered how you stored the “subscription” information.
What I’m also is wondering about if that the applications the users are able to order, also is defined as a Business Service.
Ah, understand. This extension only holds the price for an application, it’s a very simple example. What you are talking about needs another class, something like “ordered applications” where you store who ordered what applications for what price. This is also the object you “roll back” when an application is not used anymore so that the people don’t get billed anymore afterwards. If you want to do it your way (and this is we use for many customers as well), then you need kind of a more complex class approach (price sheets, ordered objects with a time dimension etc.).
I have the following need: I’m managing classrooms and from time to time teachers will ask for new application to be integrated in SCCM 2012 R2 then would need to deploy it on several computers.
Computers are rebuilt every summer and should receive back all applications/packages deployed previously.
1/do you advise using Applications or Packages ?
2/does your solution allow the teacher to deploy one or many application to one or many computers in one step rather than running several time ?
Thanks for help