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

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

  • Comments 18
  • Likes

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:  http://twitter.com/radtravis

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • hi can i get the code of your solution so that i will enable to customize the incident process. I want to create custom forms and create new work flow. i dont know how to code behind the logic in service manager using authoring tool.

  • hi can i get the code of your solution so that i will enable to customize the incident process. I want to create custom forms and create new work flow. i dont know how to code behind the logic in service manager using authoring tool.

  • @Shaista - The source code for this particular solution is available as a CodePlex community development project at scsmservicerequest.codeplex.com

  • How can I make views with colored rows based on incident priority.

  • @"How can I make views with colored rows based on incident priority"

    Sorry - that's not possible in this release of Service Manager.

  • Travis,

    At this stage do you see Service Requests making it into Service Manager as an official work item class?

    i.e. Is it worth my while spending time on this if a supported MP is coming?

    Thanks,

    Aengus

    (I have added a comment to the Codeplex discussion as well)

  • @Aengus

    I think we'll have a more definite, publicly announced plan at TechEd Europe to share.  There is a good possibility that Service Request will be in R2 so I would invest accordingly in this CodePlex solution for now.

    If you have an NDA agreement with Microsoft via MVP, TAP, etc. and would like more information on where we are at you can contact me directly http://twitter.com/radtravis

  • Hi, How can I re-use existing(or create new) activitites,workitem grids present in tabs of change forms.

  • Hi, Travis.

    Thank you for your article, it helped me a lot!

    Can you also show how to work with an event PropertyChanged objects ListPicker?

    For example: I have two 'ListPicker' controls on my WPF-form. How could I make it so that after user changes 'SelectedValue' property of one of these controls a corresponding property of a second control would also change?

    Can you please provide us an example?

    Or, perhaps it's possible to use the 'ComboBox' instead of the 'ListPicker'?

    Thanks a lot

  • @A.Zaviruha

    Can you please tell me more about the scenario you are trying to achieve?

  • hi, thank you for this example, very usefull for learning especially that the source code is included..

    however i noticed that the remove button for the affected configuration items doesn't work, is there a bug in the code or is it just me??

  • Seems the Remove button is working now after replacing the following line in the C# code:

    ItemCollection items = listView.ItemsSource as ItemCollection;

    With this one:

    Collection<IDataItem> items = listView.ItemsSource as Collection<IDataItem>;

    Anyway i need to learn some other advanced stuff like adding the "View" and "Open" buttons also how to add the Attachments listview to the forms... where can i find information about those stuff? are there any examples available that would cover them?

  • @Jad

    I've recently updated the ServiceRequest CodePlex project to include some more advanced things.

    blogs.technet.com/.../tasks-part-2-custom-console-tasks-for-create-edit-delete.aspx

    You can see in there an example of how to do a form open using something like this:

    foreach (NavigationModelNodeBase node in nodes)

    {

       //*** IMPORTANT NOTE: The ConsoleContextHelper class is not a part of the publicly document/supported official SDK and is subject to change in a future release.

       ConsoleContextHelper.Instance.PopoutForm(node);

    }

  • how can i get the source code and look at the forms other than by importing the mpb?

  • @djtabor -

    This is now a CodePlex project.  scsmservicerequest.codeplex.com