Creating Custom Forms for Service Manager using Custom Controls: Service Request Example

A couple of really great things about the Service Manager platform:

1) There is a lot of flexibility in extending Service Manager because you can leverage the power of the .Net platform.  Developers can write custom forms, view types, and task handlers for the Service Manager console that can essentially do anything.  Thanks to Management Pack Bundles, all of the hassle of installing a custom solution on all the computers where the Service Manager console is installed are eliminated.  Management Pack bundles package up all the custom view type, task handler, and form assemblies into the management pack.  Once that management pack is imported the assemblies are downloaded automatically to the console computers as needed (even updated if there is a newer version!).

2) We try to make it easy for developers to quickly build solutions for the Service Manager platform by providing a super rich SDK and custom controls.  Further, we try to make it really easy to build consistent looking solutions that fit right in with the functionality provided out of the box with Service Manager.  All of the forms are hosted in a form host so that the behavior is always consistent.  In previous examples like the CSV Connector, I’ve shown how you can leverage the WPF wizard framework so that your wizards and property pages look like ours.

In this example, I wanted to show you how you can create custom forms using XAML and C# code behind and especially how you can leverage some of the custom controls we provide such as the ListPicker, UserPicker, InstancePicker, DatePicker, etc. to achieve a consistent look and minimize your coding efforts.  I’ll also show you how to hook some of the form host events so that you can add custom business logic to your forms and lastly, I want to show you a little more about how to create and use type projections.

At the same time, I wanted to create an example which is practical and useful. 

Service Manager doesn’t provide a Service Request work item class out of the box in Service Manager 2010. For now, we recommend using Change Requests for complex service requests involving approval steps, routing work to multiple people, or automated activities. You can use Incidents for more basic kinds of service requests. For this example, we’ll create a basic Service Request work item class which will give us an opportunity to learn about creating new forms, using the custom controls, and other aspects of building a new solution from the ground up.  This solution is not something that Microsoft supports officially, but you are welcome to use it and further extend or customize it.  We’ll add more to this solution over time as we explore other concepts of building management packs.

The end result of this example is that we’ll have a new Work Items folder, a view for Service Requests and a custom form for creating and editing those service requests.

image

image

Let’s get started!

Please download and take a look at the implementation guide and source materials for this example or feel free to simply import the .mpb file and start using it.  This is intended for someone with at least some developer skills.

[Update June 7 2010 – This has now been converted to a Code Plex project:

http://scsmservicerequest.codeplex.com

 

Enjoy!

Follow me on Twitter:  https://twitter.com/radtravis