Sunday, May 29, 2011

Applying a SharePoint Designer Workflow to multiple Lists in Sharepoint 2010

When using SharePoint Designer to create a workflow you are required to bind the workflow to a particular list:

The problem is that you cannot from this interface bind the workflow to other lists.

You might be tempted to use the “Save List as Template” option in the List’s settings, and then create a new list based on this template to create a list that uses the workflow. The problem is that the workflow is still bound to the list from which the new list is based, and an error will probably be generated whenever you try to start an instance of the workflow – the steps will try to reference items etc. in the original list.

In SharePoint Designer you can expand out the files associated with a workflow:

The “.xoml.wfconfig.xml” file contains information on the list the workflow is bound to using the List’s ID (a GUID):

The file “.xoml.rules” contains the ‘conditions’ you program for the workflow and the “.xoml” file contains the ‘actions’. The “.aspx” form is displayed when the workflow is started manually.

To re-use a workflow in another list:

Create a new workflow on the new list.
Create at least one step, one condition and one action in this workflow. This ensures that the files shown above are created and they will be replaced by the next operations.
From the original workflow open the .xoml file as XML and copy the entire contents to the clipboard.
Open the .xoml file for the new workflow and replace the entire contents with the copy from (3).
Repeat this operation for the xoml.rules file.
Double click the .xoml file for the new workflow to open the workflow in the Workflow Designer and click Check Workflow to verify no errors and then click Finish to ensure the workflow is saved.

I’ve tested this technique with simple workflows and the process works well.