How do I – Create a recursive escalation workflow in SharePoint using Visio 2010 Premium

Written by Cornelius J. van Dyk on . Posted in How Do I...

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:

  1. EscalationCount – This is a metadata field that we add to the form data which keeps track of how many times we’ve escalated.
  2. The workflow terminates after incrementing the EscalationCount value.
  3. 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:

  1. 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.
  2. An email is sent to the CSR
  3. The workflow dehydrates (goes to sleep) for 7 days. 
  4. 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.
  5. Check that EscalationCount is 1.
  6. Look up the CSR’s manager.
  7. Send an email to both parties.
  8. Dehydrate for 2 days.
  9. Check if task is completed.  If not completed, increment EscalationCount again.
  10. Check that EscalationCount is 2.
  11. Look up the manager’s manager.  In this case we called it the Department Manager.
  12. Send an email to all three.
  13. Dehydrate for 1 day.
  14. Check if task is completed.  If not completed, increment EscalationCount again.
  15. Check that EscalationCount is 3.
  16. Look up the Department Manager’s manager, in our case, the CIO.
  17. Send and email to all four.
  18. Dehydrate for 1 day.
  19. Check if task is completed.  If not completed, increment EscalationCount again.
  20. Check if EscalationCount is 4 or more.
  21. Look up the CIO’s manager, the CEO.
  22. Send and email to all 5.  (Honestly, if the workflow ever makes it to here, this company should NOT be in business!!!)
  23. Dehydrate for 1 day.
  24. 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.



Tags: , , , ,

Trackback from your site.

Cornelius J. van Dyk

Born and raised in South Africa during the 70's I got my start in computers when a game on my Sinclair ZX Spectrum crashed, revealing it's BASIC source code. The ZX had a whopping 48K of memory which was considered to be a lot in the Commodore Vic20 era, but more importantly, it had BASIC built into the soft touch keyboard. Teaching myself to program, I coded my first commercial program at age 15.

After graduating high school at 17, I joined the South African Air Force, graduating the Academy and becoming a Pilot with the rank of First Lieutenant by age 20. After serving my country for six years, I made my way back into computer software.

Continuing my education, I graduated Suma Cum Laude from the Computer Training Institute before joining First National Bank where my work won the Smithsonian Award for Technological Innovation in the field of Banking and Insurance. Soon I met Will Coleman from Amdahl SA, who introduced me to a little known programming language named Huron/ObjectStar. As fate would have it, this unknown language and Y2K brought me to the USA in 1998.

I got involved with SharePoint after playing around with the Beta for SharePoint Portal Server 2003. Leaving my career at Rexnord to become a consultant in 2004, I was first awarded the Microsoft Most Valuable Professional Award for SharePoint in 2005, becoming only the 9th MVP for WSS at the time. I fulfilled a life long dream by pledging allegiance to the Flag as a US citizen in 2006. I met the love of my life and became a private consultant in 2008. I was honored to receive my ninth MVP award for SharePoint Server in 2013.

Leave a comment

You must be logged in to post a comment.