The SharePoint Knowledge Collection of Cornelius J. van Dyk, an 9 x SharePoint MVP
29 November 2011
How do I – Create a recursive escalation workflow in SharePoint using Visio 2010 Premium
One of my attendees to my Human Workflow with Visio 2010 and SharePoint Designer 2010 session in Las Vegas recently, emailed me with an interesting question. Eric was looking to recursively check if a CSR ticket was resolved and then resend the email until it was completed. After responding to Eric with my recommendation on how to address his specific needs, I started thinking about escalation workflows in SharePoint. Escalation is always interesting and usually more complex to implement that most people expect when trying it for the first time. So I modified my model I generated for Eric and grew it into an escalation workflow for a fictitious company.
If you’ve ever tried doing something similar, you probably found out quickly that SharePoint won’t allow you to create a circular relationship in the workflow back to itself. This fact alone had drive many people to more advanced workflow tools like Sourcecode’s K2[blackpearl]. We do not however, have to establish a visible circular relationship in the workflow. Here is my design:
You will note the following:
EscalationCount – This is a metadata field that we add to the form data which keeps track of how many times we’ve escalated.
The workflow terminates after incrementing the EscalationCount value.
Our workflow is published with settings that restarts the workflow if any values in the active item changes. THIS IS THE IMPORTANT SETTING TO REMEMBER!!!
This is how this workflow would function:
When the workflow first starts, we will have an EscalationCount value of 0. Checking this value would force it down the first row of the workflow path.
An email is sent to the CSR
The workflow dehydrates (goes to sleep) for 7 days.
When it wakes up, it checks if the task is complete. It should be noted that this check can be anything you want it to be, as long as it signifies that the work has been completed. If after 7 days the work is found to have been completed, the workflow ends normally. If however the work isn’t complete, the EscalationCount is incremented at #25. Because the workflow is configured to restart itself upon change, incrementing the count will restart the workflow from the top thus creating the circular relationship we need.
Check that EscalationCount is 1.
Look up the CSR’s manager.
Send an email to both parties.
Dehydrate for 2 days.
Check if task is completed. If not completed, increment EscalationCount again.
Check that EscalationCount is 2.
Look up the manager’s manager. In this case we called it the Department Manager.
Send an email to all three.
Dehydrate for 1 day.
Check if task is completed. If not completed, increment EscalationCount again.
Check that EscalationCount is 3.
Look up the Department Manager’s manager, in our case, the CIO.
Send and email to all four.
Dehydrate for 1 day.
Check if task is completed. If not completed, increment EscalationCount again.
Check if EscalationCount is 4 or more.
Look up the CIO’s manager, the CEO.
Send and email to all 5. (Honestly, if the workflow ever makes it to here, this company should NOT be in business!!!)
Dehydrate for 1 day.
Check if task is completed. If not completed, increment EscalationCount again.
At this point, the workflow will continue to send email to all 5 people on a daily basis. That’ll continue until the task is completed, or (more likely) the workflow is removed from the list altogether.
So that’s how we do recursive escalation workflow using Visio 2010 Premium. From here you simply export the workflow to SharePoint Designer 2010 and implement it on your target list.
Cheers
C
Subscribe to:
Post Comments (Atom)
SharePoint Remote Event Receivers are DEAD!!!
Well, the time has finally come. It was evident when Microsoft started pushing everyone to WebHooks, but this FAQ and related announcement...
-
Ever wondered what the new SharePoint Online URLs are all about? Take for example https://cjvandyk.sharepoint.us/:x:/r/sites/Site1... What ...
-
Every so often, you run across the need to redirect a page somewhere else, like after a server migration when DNS isn’t used. By simply addi...
-
When using NuGet, we can easily run into assembly reference issues. A notorious error message is: CS0012: The type ‘System.Object’ is def...
No comments:
Post a Comment
Comments are moderated only for the purpose of keeping pesky spammers at bay.