Upgrading Nintex Workflows to World-Class

Blog Post created by sonisick on Jan 5, 2017

Nintex is by far the best workflow system in SharePoint 2013; but I’d like to suggest some things that would make it more world-class—best-in-breed for workflows. I have outlined the shortcomings of both SharePoint Designer and Visual Studio Workflows in an earlier article. My focus in this piece is how to improve on the good.


 Below are four areas that could make a difference in enterprise capability:

  1. A Better Functions Library
  2. More Robust and Intuitive String Tools
  3. A “For Loop” with A Counter to control loops
  4. An Action Control to Split Individual Persons from Group Fields


Better Functions Library


My programming career stretches back 40 years, starting in 1977. Some of my first job assignments were calculating date fields.  I can’t believe I’m still doing date functions. When I needed a Julian Date function in my Nintex Workflow, I had to “roll my own”: Anyone know an easy way to calculate Julian Days in a Workflow


The algorithm was not complex, but I had to spend productive time doing what should have been an easy function call. Also, I have seen posts on calculating weekdays, business days, the start of a quarter, and the number of days in a quarter. This functionality needs to be encapsulated in a core library. A better function library is not “Rocket Science.”

I know I work for NASA  for the International Space Station in Huntsville Alabama.


More Robust and Intuitive String Tools


A better widget is needed to build, evaluate and test function expressions. It took me almost two hours to figure the syntax for fn_FormatDate.  My task was just to replace the month and day of a variable with “01-01-“ to get the first day of the current year.


The expression builder was neither helpful nor intuitive. I kept losing parenthesis and commas in the small, un-sizeable editor window.
(I have certain size biases the older I get—Child of 70’s.)


The only way to evaluate my expression was by compiling and running the workflow from a list item; then, examining the debug output in the detail of Workflow History to find either the values or the nondescript error messages.

Totally NOT Cool! (Child of the 70’s)


A “For Loop” with A Counter to control loops


To loop or not to loop? Looping is not a real question. Of course, you’re going to loop; workflows are supposed to loop; but exactly how will this looping occur? In my article about Safe Looping, I explore the ramifications of looping and “safe looping.”


Every world-class software needs a “for loop” with a controlled counter for iterations.  Think of the JavaScript “for Loop” for example:

            for (i = 0; i < cars.length; i++){ more code } ;


The article referred to by my last link explains how to build a collection to trick the “for-each loop” into going a specific number of times. I sincerely believe the architects of this superb product can do this better than my trick and, can and add it as a language feature.


An Action Control to Split Individual Persons from Group Fields


First, let’s start with an example of functionality I’m outlining:


A SharePoint List in my project was using a Person Field. This field can contain multiple persons. My intent was to split this field into individuals. Then, build list items in an approval list and, subsequently email each the link to their list item.  Thus, I could store all my responses in a list with a view that grouped by a key field.


It took me several weeks, several support calls, and an escalation to finally resolve. The first support representative took my information and after researching the issues determined we needed to hire a third-party vendor to pay for a solution. The incident was then closed.


In the incident response survey, I noted that the issue had not been resolved and was a critical issue for our future Nintex Usability.  I must have hit a VP nerve.

Subsequently, the case was reopened, and another tech provided a workable solution. While this worked for me, the code was not simple due to the many Type-Conversions, Collections, and a “for each” loop that is needed to implement the functionality.


My final point is that this would make a versatile Action Control; possibly, a variant on the “for each” loop—one exclusively for Person Fields.


As good as Nintex Workflows are, they can be better with the specific items outlined in this article.  I’m excited about the future in Nintex Automation and hope my suggestions can help carve a direction.