Fab 40 Helpdesk Modification Summary

A recent project required setting up an issue/request tracking solution within a SharePoint portal. By no means do I consider myself a “developer.” I’d rather work smarter – not harder, so I installed Microsoft’s “Fabulous 40” custom application templates as a good starting point. I ran into several bumps and roadblocks along the way that required going to … countless websites to find the information I needed. I thought I’d summarize it all in one place.

The first hurdle can be installing the templates. Microsoft’s provided directions should be fine, but for some strange reason typing the commands individually didn’t work for me. I had to paste them all into a .bat file and run that for it to work. I’m still not sure why, but it worked. I suggest that if your PATH is correct and you’re receiving an error during the installation, give the batch file method a try.

Once the templates were installed, I created a site using the Helpdesk template. The Call Center template is pretty similar, but the Helpdesk template was a better fit. For the details of the template, Brian Caauwe has a really good writeup on his site here.

Let’s get started!
The terminology, page names, list views, etc., didn’t really fit with our processes so I had to go through and do a bit of cleanup. Some were simple and straightforward. Others weren’t quite so easy. I’ll skip the straightforward updates.

Customizing Choices
First, we don’t like the default “Status” options of the “Service Request” list. We prefer something similar to the “Service Request Tasks” list. So – let’s go ahead and update the “Status” column. Easy! Right? You just go to the List Settings, click on the “Status” column to edit it… and… Hey – wait a minute! Where are the choices listed?!? You know there are choices, but you can’t see them in the settings where you’d normally define or update them. You can’t edit or even delete this column. The “delete” button isn’t even there! But you can change the column name and see that it’s of the type “choice.” So what’s going on?

The column has been Sealed.

If you edit the schema.xml or use PowerShell you can change this flag to Sealed = $false and then it will be open for editing as needed. Don’t forget that there’s a workflow associated with the “Closed” status! I just used some PowerShell. I’m still learning, so it’s probably better that I not give best practice advice on that. You can find some information about using PowerShell here and here.

So now that that’s done, let’s move on to the next task. Let’s start with the easier one first.

Removing Items from the New Form
You’ve probably noticed that there’s a number of columns in the list, but only a small few are actually displayed in the “New” form. How’d they do that? And how can you update that?

We wanted to remove one of the fields from the “New” form so that portal members couldn’t go ahead and assign the tasks when they open their requests. How can you do this? More PowerShell! You can also use the SharePoint Tips Utility Pack (Or, you can manually create new form pages, but we’ll get more into that later.)

As hinted at in the last task, these columns have fields with flags on them that determine the type of column, if they’re Sealed, and also which of the forms and views they’ll be displayed on (New, Edit, List Settings, View, etc.). Sealing the columns help make sure that no one edits an option in a column which may break a workflow. Setting flags on which columns display in each of the forms is a great way to use the default forms rather than having to create your own custom forms. This template has customized the values on these fields for a handful of the columns. You can get the full details here on setting those flags. I set the flag on the “Assigned To” column to ShowInNewForm = $false. Done!

Ok, now for the slightly more complicated part. This is where it starts becoming more of a “choose your own adventure.”

Adding Items to the New Form
Ok, so now that we’ve used PowerShell to set the flags on the fields that you don’t want displayed on the form, why isn’t it working in the reverse? You create a new column, and the ShowInNewForm = $true or $null, but it’s not on the form when you try to create a new form!?! What a headache! Perhaps you should just create a custom new form. Or should you?

Personally, I’d rather not at this point. If I create new columns later on, then I’d have to add those to the custom form. But if the flags are set properly, and I don’t want to create a new form, then how do I fix the problem of adding them to the forms? Two words:

Content Types.

The Service Request items are a custom content type. The relatively simple fix:

  1. Remove those new columns from the Service Request list.
  2. Go to Settings > List Settings > Advanced Settings
  3. Turn on “Allow Management of Content Types.”
    Now you can see the Service Request content type.
  4. In the List Settings, browse to the Content Types section.
  5. Either “Create Column” or “Add from existing site columns” as appropriate.
    I needed to add some of our own custom site columns along with a “Due Date” column – so they were all site columns in my case.
  6. Check your “new item” form.
    If you don’t see the “New” menu item anymore, go back and turn off “Allow Management of Content Types.”

Form Field Order
That should take care of adding your new columns to the “new” form. But now the fields aren’t in the order that you’d like when creating a new service request. Do I need to create a custom new form now? Nope.

  1. Go to Settings > List Settings
  2. In the “Columns” section, click “Column Ordering”

I don’t believe it’ll effect your custom views too much, but will reorder the columns in the New/Edit/View forms.

Just about done! One last thing to accomplish.

Adding the Current User to a People Picker Field
This is a great one that the portal users will love, since they won’t have to keep typing their own names in the “Requester” field on the new request form.

Ok, so with this one I finally broke down and created my own custom version of the NewForm.aspx page because this required adding code which I didn’t want to change for ALL new items across the portal. But, I was careful in how I did it to prevent future maintenance tasks to a minimum.

First, you need to create a new form. Detailed instructions can be found here. I followed the majority of those instructions with a few modifications.

Cliff’s Notes summary: Open your site in SharePoint Designer, browse to the List, expand the List, find the NewForm.aspx page, right-click, select “New from Existing Page.”

You’ll need to remove the form web part that’s there and replace with a new one. The instructions from above walk you through adding a “Custom List Form” which adds a “Data Form Web Part”. This is not what I want. This will pull in a static list of all of the fields that have the flag set to ShowInNewForm (which you could manually add others if you wished). I want to keep it dynamic so that my options are open in the future. Therefore, I added the List Form web part instead.

The main difference is that this one will show you a generic looking form in SharePoint Designer because the columns that it displays will be pulled dynamically depending on what’s available. This is fine. Now that I have a new page (don’t forget to associate it with the List’s “New” action), I can add the code to pre-populate one of the People Picker form fields.

The code and details can be found in this thread. Someone took the time to write the javascript to handle this. I haven’t been able to get his original code working that he posted on his blog. The code he posted in the forum thread did work – though it’s more of a work-around than a solution. Keep in mind that this code just populates the first People Picker form found on the page.

In Summary
Now you have a request tracking SharePoint portal site with custom statuses, additional columns as required by the business, and a dynamic custom new request form that pre-populates the “Requester” with the current user!

I hope this helped someone out there. Enjoy!

No Responses

There are no comments.

Comments are closed.

For questions and feedback on this entry, send me an email.