I know how to create basic SharePoint lists to track information, but I would like to create a dynamic workflow application for submitting and tracking helpdesk requests.
The purpose of this article is to both give you a (MOSS 2007 or WSS3) solution that you can actually use for handling helpdesk requests and to act as a learning solution where you will learn skills to create your own SharePoint applications.
The application begins with a helpdesk request, made by any authenticated user. Using a SharePoint list form, the user completes a basic description of the problem, selects a problem category and priority. Once submitted, the Helpdesk Manager receives an email notification about the issue, with a link to the details about the request. The Helpdesk Manager assigns a technician, adding or editing fields as needed. When the manager makes the assignment, the technician receives an automated email with a link to the request item. To keep the original updated on issue progress, whenever the technician changes the list item, the user gets an automated email notification whenever the ticket item gets changed.
This solution contains 2 SharePoint lists, 1 site group, and 3 workflows. The material will be presented in 3 parts (one part per day). Each part will contain 1 of the needed workflows for the entire application.
To create this solution you should have a basic understanding about the following:
- Creating SharePoint lists, able to add and remove fields.
- You should have "full control" permissions in the target site for the application.
- That you have SharePoint Designer 2007 installed.
- You have a new blank site created for the application using unique permissions.
There are 3 basic roles in this application.
- The user making the request.
- The Helpdesk Manager, in charge of reviewing the request, reprioritizing and/or making changes if necessary, and assigning the request to a technician.
- The technician assigned to work on the issue.
We begin with creating the 2 lists...
Why 2 lists? The purpose is so we can limit the number of fields the user needs to initiate the request. For instance, we don't want the user to attempt to assign the request. For the purposes of this article, that's the job of the Helpdesk Manager. Also, the progress notes will only be available after the request is made.
In the SharePoint site, create a new list by clicking "Site Actions", then "Create".
Choose the Issue Tracking list.
Name the first list "Helpdesk Initiation". This is the list that is used by the user to make the initial request for help. Leave all the other default choices and click "Create".
Create another list. This must also be an Issue Tracking list. Name it "Helpdesk Progress". This time, change the "Send e-mail when ownership is assigned?" option to "Yes". Click "Create".
Modify the lists as follows:
Helpdesk Initiation list
Remove the following columns:
- Related Issues
- Due Date
- Issue Status
- Assigned To
Modify the "Category" column to include the following choices:
- File Server
- Remote Access
(Feel free to modify this list).
Helpdesk Progress list
Remove the following columns:
- Related Issues
Update the choices in the "Category" column to be the same as used on the Helpdesk Initiation list.
Update the choices in the "Issue Status" as follows:
- Not Started
- In Progress
Make "Not Started" the default choice.
Create the Helpdesk Technicians site group
Now we need to set up a new site group for Helpdesk Technicians. On your site home page, click "People and Groups".
Click the dropdown next to the "New" button, and select "New Group".
Name the group "Helpdesk Technicians".
Do not give any permission to the group. This will get assigned later as your create resources. Leave all the permissions blank.
Add Technicians as needed to the group remembering to uncheck the annoying "Send email" option. (I always prefer to send personal emails regarding SharePoint permission setups.)
The Helpdesk Manager should be one of the technicians (you never know!).
Now go the list settings of the Helpdesk Progress list (not the Helpdesk Initiation list).
Click the "Assigned To" column.
In the "Choose from" section, select the "Helpdesk Technicians" group you just created.
Helpdesk Progress List Permissions
Go the Helpdesk Progress list settings and click "Permissions for this list".
From the "Actions" dropdown, select "Edit Permissions".
Click "OK". (Yes, we're breaking inheritance here.)
Important: Make sure you are part of the "Helpdesk Owners" site group before proceeding or you could lose total control (unless you are also a site collection administrator).
Check all permissions except "Helpdesk Owners".
From the "Actions" dropdown, select "Remove User Permissions".
Back in the group, from the "New" dropdown, select "Add Users".
Click the "Address Book" icon (highlighted below).
Do a search for "helpdesk".
Your groups might differ from mine, but you will surely see "Helpdesk Technicians". Highlight it and click "Add", then "OK".
Assign "Contribute" permissions. Uncheck the "Send Welcome Email" checkbox, then click OK.
Back in the group add another new user from the "New" menu.
Click "Add all authenticated users". (This means anyone with SharePoint access in your organization.) Assign "Read Only" access (and uncheck the "Send welcome email" checkbox. Then click "OK".
When you are finished this is what the permissions for the Helpdesk Progress list should look like.
Helpdesk Initiation List Permissions
Enter the Helpdesk Initiation list settings.
Click "Permissions for this list".
Remove all but "Helpdesk Owners".
Add a new user from the "New" menu. Click "Add all authenticated users".
Give this "Contributor" permission and uncheck the "Send welcome email" checkbox. Then click "OK".
This is what the permission setup should look like for the Helpdesk Initiation list.
Getting started with the first workflow
Open SharePoint Designer 2007. From the "File" menu, select "Open Site".
Then enter the base URL of your helpdesk site. You can get this URL address from your web browser, but remove the reference to "/default.aspx".
In the "Folder List" of your site, expand the "Lists" object. You should see the new lists you created.
From the "File" menu, click "New", then "Workflow".
Enter the name "Move Helpdesk Tickets", select "Helpdesk Initiation" and check the "Allow this workflow to be manually started from an item". (Later on we will automate this...but for now, let's do this manually.)
Rather than just using the number from the ID column, we're going to create a variable and then build a dynamic string in order to capture a user friendly name for the helpdesk ticket.
Click the "Variables" button, then click "Add". Enter the name of "TicketName". The type should be "String". Then click OK twice.
Change name of Step 1 to "Build Dynamic String for Title" (Looks like I made a typo in mine...you only need one word for "Title".) From the "Actions" menu, select "Build Dynamic String". (If you don't see it in the list, click "More Actions" to find a complete list.)
Now we're going to build the dynamic string. Click the link "dynamic string". Type "Ticket #".
Then click the "Add Lookup" button at the bottom.
Keep the source as "Current item" and select "ID" from the field dropdown.
Then click "OK" twice.
Then type a space, and then a hyphen, then another space.
Then click "Add Lookup".
The source should still be "Current Item". In the field dropdown, select "Created By".
Then click "OK" twice.
The entire dynamic string should look like this.
Back in the Action, click "variable", then the "Variable" dropdown and select "TicketName".
Now we are going to create another workflow step. Click "Add workflow step".
Name the new step "Set Title Field to Dynamic String".
Then, under the Actions dropdown select "Set Field in Current Item". (You might have to look under "More Actions" to find it.)
Click "field" and select "Title" as the field.
Then click "fx"
Select "Workflow Data"
Choose "Variable: TicketName"
Here's what the action should look like.
Add a new workflow step. Click "Add workflow step".
Name this "Copy Ticket to Helpdesk Progress List.".
Under the "Actions" menu, select "Copy List Item". (Remember to check "More Actions" if you need to.)
Click the 1st "this list" and select "Current Item".
Click the 2nd "this list" and select the "Helpdesk Progress" list.
Now, from the main workflow screen, click the "Finish" button at the bottom. You will see your workflow being published to the site.
From the Folder List, you will now see new objects listed under "Workflows".
Let's test drive it!
Start up a "New Item" from the "Helpdesk Initiation" list
The Title column can contain anything...but right now it's a required field, so you have to enter something. Enter some text in the Description area and choose a Category. Then click "OK".
Now, from the list you will see your new entry. Hold your mouse over the title field until you see the dropdown. Select "Workflows".
Click the "Move Helpdesk Tickets" workflow.
Then click "Start".
In the list, you will now see that the dynamic string we created changes the Title of the list item. You will also now see a new field called "Move Helpdesk Tickets". This is a workflow field and was dynamically generated.
You should also check the Helpdesk Progress List to make sure the item was copied. While there, note the new fields that are now available to the application.
Note that with this application, the originating user that created the request does not have write access to the Helpdesk Progress list. Only the helpdesk manager and technicians can edit these entries.
In the next two articles we will put some refinements on the system. Once the item is copied to the Helpdesk Progress list, we'll delete it from the Helpdesk Initiation list as it is no longer needed. Then we'll notify the Helpdesk Manager, who will in turn, assign the request to a technician. The originating user will get automated progress updates on the helpdesk ticket.
- Check the next article in this series.
Last Update: 2010-03-09
About the author
View all my tips