If you are looking for an easy way to implement workflows on SharePoint 2007 (WSS or MOSS), take a look at Nintex Workflow 2007 (http://www.nintex.com). To show you how easy it is to build a workflow, let me guide you through an example with an expense note approval. To make it a bit more interesting, I will use an e-mail enabled document libary. The workflow goes like this:
- The user e-mails the expense note to expenses@domain.com.
- With the appropriate e-mail routing, the e-mail is delivered to SharePoint.
- SharePoint drops the attachment in the document libary.
- A workflow is kicked off that asks for approval by the user's manager.
- When the manager approves, the user is sent an e-mail and the expense note is mailed to finance.
- When the manager declines, the user is sent an e-mail with the reason and the expense note is deleted.
By the way, users do not have rights to the document library so they cannot look at other expense notes. That is one of the benefits of using an e-mail enabled document library.
Using an e-mail enabled document library makes things a bit more complicated though because Nintex Workflow 2007 will not be able to automatically determine the user and the user's manager. But because Nintex Workflow 2007 supports things like regular expressions and LDAP queries, we can still make it work.
To build the workflow, you need to install Nintex Workflow 2007 according to the instructions. Check the Nintex website for more information. Once the product is installed, you can create and attach a workflow all without leaving your browser. The settings menu of a document library or list is extended with new items:
I created a new workflow from the Create Workflow item. The first half of the workflow looks like this (click to enlarge):
The first action in the workflow is a regular expression. As discussed above, we need information about who submitted the document. Based on the sender's e-mail address, SharePoint sets the Created By field to the user's account in the form of domain\user. I need the username without the domain for an LDAP query based on the sAMAccountName in Active Directory. With a regular expression that replaces domain\ with an empty string, the username can be put into a Nintex workflow variable. The regular expression I used is: \w*\\. Of course, you can replace \w* with the actual domain name for your environment.
After the retrieval of the username, the action set Get user's manager from AD does the following:
- Use an LDAP action to retrieve the manager field of the user object that has a sAMAccountName equal to username.
- Use another LDAP action to retrieve the manager's e-mail address so we can ask for approval.
Action sets make it easy to group multiple workflow actions and you can copy and paste them in one step. You can also save them for re-use in other workflows.
An LDAP action looks like the screenshot below (click to enlarge):
After we have the user's manager, the workflow sends an e-mail to the submitter of the expense note with a Send Notification action. The second part of the workflow can now be started (click to enlarge):
This part of the workflow is pretty straightforward. When the manager declines the expense note, the user gets an e-mail with the reason and the expense note is deleted. When the manager approves the expense note, the user gets an e-mail and the expense note is mailed to finance. The expense note is then deleted from the document library. Of course, you could keep the expense note there.
For the end-user, everything is done by e-mail. Because the e-mail confirmations are completely editable, you can make them look how you want. In this case (click to enlarge):
Conclusion
Nintex Workflow 2007 is a good solution to extend SharePoint with workflow capabilities for advanced users. You do not need developer skills to build a workflow but there are some advanced actions such as calling a web service or using SQL queries. Great stuff so definitely check it out. You can easily get a trial version from their website.



