Skip navigation
All Places > Getting Started > Blog > 2017 > May

One Click Mobile Workflow

Posted by cgellis Employee May 29, 2017

In a bit of an "I have a pen, I have an apple... applepen" moment, I thought what if I combine two awesome blogs - 

Warwick Ward Mission Accomplished blog Mission Control - External Start with just jQuery, REST and HTML  and Daniel Stoll Nintex App Studio for the win  on Custom Content for Nintex App Studio apps.


I'm still thinking of applications for this but the buttons could correspond to various static assets or locations such as rooms or machinery that are subject to some sort of point in time vetting / issue raise. I just wanted to see if it would work tbh!


Warwick has explained the External Start concept in Nintex Workflow Cloud perfectly so I won't burn my tyres rehashing that here, but all I did was add a few more options with a send email just for testing. 

Each email is going to go to a different person in our AusNZ Sales team just so I could spam them during testing.


I then tweaked Warwicks HTML (attached) ever so slightly to include 2 new button click values in addition to his two and added some styles Dan had kindly put in his yoga example. Daniel Stoll and yoga. Now that I'd pay to see.


Added my buttons.html file into App Studio Content as the top level of the navigation like so - 



And once App Studio does the build and I've got my app on the device I've got One Click Workflow starts on the app

Clicking a name emails that person. Simples. Obviously your workflow branches would be different but as we discuss concepts of deep linking and QR codes with customers, it's nice to know there are other ways to save you filling in a repetitive form where it's not necessarily required.

The Mobile forms that Nintex provides are powerful and make it so easy for users to gather data out and about.


But every so often, we run into a function that we're so used to using on Desktop, but isn't available in Mobile. A great example of that is the lookup() function. We have List Lookup at our fingertips, but sometimes we need to calculate a value without our users needing to select from a dropdown with only one value in it.


 Just because this is how I've gotten around it, doesn't mean it's the right way!


So let's think about what a use case scenario might be.







On our Nintex Mobile form, we want our users to choose their Airplane Type from a dropdown, and then their Airplane Model - and have the form automatically select the correct Fuel Capacity and multiply that by the current fuel cost ($1.20/L).


However, at present, we'd need our user to select the Type from a lookup ... and then the Model from a lookup... and then the Fuel Capacity as a single item from the final lookup, in order to be able to take it out and calculate it. We don't want our users to have to select any more than the Type and Model of their plane.


Users can get understandably frustrated when they have to redundantly enter / select information.




1) We have a list of airplanes, named "Airplanes" - in this list, we have the following columns:


  • Airplane Type
  • Airplane Model
  • Fuel Capacity


3) We have a mobile form where we want a user to select the Airplane Type and display a dropdown of Models along with their Fuel Capacity. 


4) On that mobile form, we also want to take the Fuel Capacity and multiply it by a fuel cost which will reside on the form.


5) We want to display the total cost to fuel the airplane to the user, live, on the iPad / Mobile form.








1) The very first thing we'll do is create a column in both of our lists that will combine each row of data into one, with a label in the front, automatically. We will only grab those items we require. 


  • Create a calculated SharePoint column - name it something like MergedAirFuel or whatever makes sense for your situation.
  • Combine each column by using a formula like:

="AIRPLANE MODEL: "&[AirplaneModel]&" FUEL CAPACITY: "&[FuelCapacity]

This produces a column that looks like:



2) Now that we have our merged column, we can set-up our controls on our form. Here's what we'll need:


  • 2 List Look-up controls

  • Calculated Value controls

3) In the first List Look-up, we just want to fetch the list of Airplane Types that we have, so we can do the following:


Name: AirplaneType

Source SharePoint Site: (the one your list is in)

Source List: Airplanes

List Column Name: Airplane Type


4) In a Calculated Value, we'll make sure the ID of the look-up doesn't show up so we can use it to filter our other look-up's control:


Formula: parseLookup(AirplaneType)

Name: AirplaneTypeParsed


5) In another List Look-up, we'll find our merged row of data dependent on the Airplane Type that was chosen earlier, like so:


Name: AirplaneDataRow

Source SharePoint Site: (the one your list is in)

Source List: Airplanes

List Column Name: MergedAirFuel


We'll also open up the "Filtering" section, and choose:


Filter available selections: By a control's value

Where field: AirplaneType

Filtered by control: AirplaneTypeParsed

Action when no filter applied: Show none









What have we achieved so far: We now have a drop down where, when the user selects their Airplane Model, they will also see the details beside it - for example:


But how do we get that Fuel Capacity out of there to work with!? 


RegEx, is how. Here's what we'll do:


I'm doing these all separately to show each step, but it could be just one field, probably.


6 a) In a Calculated Value field, we'll parse again to ensure we get a nice clean string to work with (without the ID) : 


Formula: parseLookup(AirplaneDataRow)

Name: AirplaneDataParsed


6 b) In a Calculated Value field, we'll use Reg Ex to strip out the Fuel Capacity first - this Reg Ex formula says "select everything up to & including "FUEL CAPACITY: " and remove it from the variable:


Formula: replace(AirplaneDataParsed,".+\FUEL CAPACITY: ","")

Name: FuelCapacityRegEx

6 c) In a Calculated Value field, we'll use subString to get only the first 4 digits returned, in case there is additional data after that we do not need.


Formula: subString(FuelCapacityRegEx,0,4)

Name: FuelCapacity

7) In our final Calculated Value, we'll determine the total cost for the selected airplane which is the Fuel Capacity times the cost.


Formula: FuelCapacity*1.20

Name: FullFuelCost


And there we have it - getting and utilizing a value from a look-up list in a Nintex Mobile form. A bit round about, and I fully expect someone to say "Rhia, you idiot, what about this way", but I welcome it -- this worked for me in a pinch. 


Let me know what you think. 


Further Recommended Reading:


Hi Guys,

my name is Ollie and I'm working since a half year with Nintex Workflows and Forms .I like them, but I'm tired of clearing the History every week. Especially when using the "Filter" actions the History is getting full and the WFs are getting in stuck.
So I couldn't find how to clear the history automatically, i decided to make a Workflow clearing the History automatically (may be there is somewhere a tutorial but i didn't find it!?).


Now that is I made it with an time scheduled Workflow:


1. Create an new Site Workflow with the following Variables:

   - List_Collection

   - List (String)

   - Yesterday (Date)

   - ID_Collection

   - ID (String OR Number)

   - Index (Number)


2. Now that is how you should arrange the Items in your Workflow


3. Now you should go to the calculate Date and Calculate how Old the Entries should be to be deleted

4. Go to " 'Site Settings' --> 'Manage workflow history lists' " (or you can type into your Browser "YOUR TEAMSITE/_layouts/15/NintexWorkflow/ManageHistoryLists.aspx") and copy the History List Name from these Lists you want to delete automaticaly like shown into the Regular Expression.



5. Create a For Each Loop through the List_Collection an store the Value into the String-Variable List


6. Now it's getting tricky, build the Query with the CAML editor

When you Copy this Query the Workflow will store all ID's into the ID_Collection from entries older than 1,5 days (or how ou had set it up before in the calculate date). Please watch out that everything should be same like shown above, especially with the "List Title" (by default it's "List ID"). If you want to query another field than Modified or Created dont't forget to change the Value Type. To avoid Problem with the Query on List with more than 5.000 entries put the <ViewAttributes Scope="Recursive"> flag to your Query.


7. Optional: Count the Amount of Value's in the ID_Collection an store the Value in the Index variable. Now build a Runf If and here you can define how many Value's there should be in a list for minimum to delete. Put the loop from the next Step inside this Run if


8. Build a For Each Loop from the ID Collection and store each value in the ID Variable.


9. Now we need the Delete Multiple Values action and use there the CAML editor too.

Type in the Query exactly like shown above.


Now that's it from building the workflow. Now you can publish it and add as a time scheduled workflow.

You'll never have an overfilled History again.




Of course you can query by other values too. I'm often using the filter action, wich can't hide from the history. So I make a query by "The item under workflow did not meet the filter criteria." from the field "Description" too.

Heres is this Query-example


Please let me know if this tutorial was helpfull for you. If necessary I can make some several other tutorials too.

If yout got some Questions please put it in the Comments.


With Kind Regards



April 2017 release review

Posted by rickbakker May 13, 2017

This post is a review of the April 2017 releases of all Nintex products. What is included in this post is my personal observation/opinion. I decided to write a review not in the same month anymore so I can name all new features, the release notes are up-to-date and I perhaps even have some time to play with them


This month, there were besides the new functionalities mentioned in this blog post, also several minor improvements, bugfixes and some security improvements. Although I do not describe the improvements, some are pretty nice too. Good work Nintex!


The biggest feature changes were imo in ‘Nintex Workflow Cloud’ and ‘Nintex Workflow for Office 365’.



*** Nintex Workflow Cloud ***


  1. Some new connector events and connector actions.
  2. New action: Log to instance details.
  3. Availability of Nintex Hawkeye workflow analytics.
  4. Workflows can be configured to ingest files as part of “External start” start events.


Some new connector events and connector actions.

What is to say. Keep and going!


New action: Log to instance details.

This is a great new action, mainly for troubleshooting purposes. For on-premise, using this action for production workflow is not recommended as a bad-practice. I wonder if this also applies to NWC. At the moment, I assume not.



Availability of Nintex Hawkeye workflow analytics.

This was of course a must have for NWC. It is great to see that Nintex is offering this key feature in all “their” platforms now. Now we have to wait for Document Generation


Workflows can be configured to ingest files as part of “External start” start events.

I had no time to play with this feature yet, but I can imagine it to be big. Being able to work also with unstructured data (files) opens up several new process automation possibilities. People then do not need to have access to the data stores to be able to get access to it.


Because Nintex released this feature, I just cannot imagine that several other connectors are improved too in the future so files can be placed read from and placed into them.


Part of this feature is a new option to set a default storage location. This can be found under ‘Settings’. Below, 2 related screenshots are shown.




*** Nintex Hawkeye ***


Nothing seems to have changed here.



*** Nintex Mobile Apps ***


Nothing seems to have changed here.



*** Nintex App Studio ***


Nothing seems to have changed here.



*** Nintex Forms ***

Office 365

The following important information is given: This release includes changes to behaviours of some controls. The changes may require adjustments to custom JavaScript. No additional information is given.


I do not like this at all. How can we know which controls have changed? Nintex should really improve this. In real life we cannot always test everything after a new update is installed. This also applies to the important information given for Nintex Forms 2016, Nintex Forms 2013 and Nintex Forms 2010.



  1. A new button action: Save and Continue
  2. A new button option: Button redirect


A new button action: Save and Continue

In March 2017, this features was added to Nintex Forms on-premise. Good to see that Office 365 was updated soon after. A blog post about this topic has already been added by Nintex: Lucky You, there's New Form Features!


A new button option: Button redirect

In March 2017, this features was added to Nintex Forms on-premise. Good to see that Office 365 was updated soon after. A blog post about this topic has already been added by Nintex: Lucky You, there's New Form Features!



*** Nintex Workflow ***

Office 365


  1. Document Generation - New Features (Action Upgrade)
  2. Disable Action
  3. Support for Dynamic CRM 2016


Document Generation - New Features (Action Upgrade)

The new Document Generation functionality is just really awesome and a good blog post has already been made by Nintex (Click here). I expect that Document Generation will be one of the primary reasons why businesses will invest in Nintex, so having this awesome functionality in Office 365 is just very good to hear.


Disable Action

This is not a new action, but the possibility to disable/enable an action for existing actions. For me, this is a great addition. I use it a lot on-premise during the development of workflows and in rare occasions also when fixing an errored workflow. There was a kind of workaround (using the ‘Run If’ action) but yeah, that was more work.


Support for Dynamic CRM 2016

This addition is very customer specific of course. Businesses having Dynamic CRM 2016, Office 365 and Nintex will be able to benefit from it. Beware, this connector is not for free.



Release notes



Nintex Workflow Cloud

Click here

Nintex Hawkeye

Click here

Nintex Mobile Apps

Click here

Nintex App Studio

Click here

Nintex Forms for Office 365

Click here

Nintex Forms 2016

Click here

Nintex Forms 2013

Click here

Nintex Forms 2010

Click here

Nintex Workflow for Office 365

Click here

Nintex Workflow 2016

Click here

Nintex Workflow 2013

Click here

Nintex Workflow 2010

Click here

With the encroaching end of a major effort I have been a part of for the better part of this year, the time has come to look back and review all the things that were encountered and see if they could have been done better. I wanted to take a moment and share something that was asked of me mid-way through this project and changed how I approached the workflow.


A Bit of Background

At the core, this is nothing more than an approval process. That said, it goes through 9 different approvals ranging from service reps, to field reps, to engineers looking at installed equipment. In total, there are 5 different groups that have to touch this and within each of those groups, it may be assigned to a different user depending on geo-location.


So you may already see where I am taking this, but the issue that arose is how can we assign a task to someone but allow for someone else to jump in and take over?


Delegation right? Well delegation requires the assigned user to do the delegation. What happens if that user is unavailable? What if the supervisor needs to step in or have a "secondary" user process the step that it is on?


After some thinking I landed on assigning the task to the entire group, but only sending the notification to the specific user. This allows for the entire team to have access to complete the task if needed, but still only notifies the proper "assigned" user to complete the task.


How I Did It

This approach is simple enough.

Create the task, but do not send a notification, then, in a parallel action, send the notification.

Within the task itself, you will need to capture the task ID within a workflow variable (integer):


You will also need to set the delivery type to "None" so that the task does not generate a notification:

On the parallel branch, you will need to put a slight pause in the workflow so that the system can create the task.

Immediately after the pause step, you can add your notification. Within your notification, you will need to build a task URL using the task ID variable. So something like this:


{Common:WebURL}/Lists/Workflow Tasks/EditForm.aspx?ID={WorkflowVariable:taskID}


If you do not add a pause, the task ID variable may be blank/empty because the task ID has not been set and you are using it to create the task URL.



And that is it! You now have a task assigned to a group of users, but are only notifying a specific user(s) that it exists. This allows you and the assigned team the flexibility to shift work when needed without changing anything within the task or workflow and without bombarding users with task notifications.


Final Thoughts

As always, there is probably a million ways to approach this and I am eager to hear what others have to say and how they would tackle this. Let me know in the comments below and as always, hope this helps!

I come to the Nintex Community on a regular basis because I want to stay on top of new features.  For me, this translates into experience in what I am doing in my current job because I am learning through other's examples and feedback. I also try to leave my insight for the next user with the hopes that they will learn something through my experiences. 


This happened just the other day with the May Mission - Quick Top Tip!  I was looking over all of the great tips and tricks that other users have and while most of these are "common sense", many of them I never really took the time to practice. One in particular is to slow down and think of a plan before diving into development. Again, this makes complete sense, but how many times do we get super excited with a new project and think of all the cool things Nintex can provide for us, and then just jump right into the canvas and start dragging in actions! We have all done it, but slow down. Take a moment. Think about the process and where it is and where it needs to go.


I added to this by saying replace what you have. In terms of a process, form, or whatever you are looking to do, first step is simply replace currently functionality. This "conversion to Nintex" will naturally show you and your users areas of improvement without changing anything! From there, you can begin to add in enhancements and make "upgrades". I recommend this because too often we overlook all the work that was done previously to get the process or form to the state that it is in today. You would be surprised how much you can learn; perhaps it provides some insight on how previous developers tackled an issue or created custom functions/services to do something. All of these points of functionality can be used to your advantage, but if you rush in and just start developing, you will overlook them and possibly run into the same problems!


I share these experiences and thoughts because I think that we are all in this together; we are a community. We are here to connect and to learn. If I can save someone out there hours of frustration by writing a blog about what I did and how I overcame something, it is a win. I want to inspire others to do the same because you never know who it will help. You never know, someone may come back and give you feedback on a better way to do something! The learning never ends if we keep connecting and pushing each other.

I have set up create item workflow on list database which is set to start on item creation and creates word document out list item properties. The documents are being created in document library on the same site as list database is.


This workflow is set up the following way. It has just create item action


create item action settings


and it works fine. When item is created in the list document is also created in the library.


BUT, I have a second workflow on that list which is set up to start when item is modified and it is supposed to Update document based on changes done in parent item. It is set up the following way


Update doc action WF settings

the first two actions are to build Update doc source and output URL (consists of [path to doc library]/[current item title - same as doc name].docx) The other 3 actions are to get updated values from list item fields into the variables. Update doc action is set up the following way (source URL is the same as Output URL=constructed path to word doc and overwrite existing item is selected at the bottom)



BUT, this WF doesn´t work as expected! It actually updates the document, you can see modification "A few seconds ago" with respective word doc. but the values in in Content controls remain the same as they were when doc. was created by the WF described above.


Any ideas please?


Many thanx





Recently, I had the need to hide/show panels based on a value or values of a choice control. Online I saw multiple posts on how to accomplish this using simple rules; however, they did not explain how this would affect the user when accessing the form in read-only.


For this post, I'll be referring to the following setup:

  • A choice control with three options: Panel A, Panel B, and Panel C
  • Three panels, each corresponding to the options listed on the choice control

The expected behavior is as follows:

  • A user sees only sees the panels the correspond to the options selected in the choice control.
  • When the recipient or user opens the form in read only, he/she should see the panels that were selected in the choice control

Solution 1:

  • Create three formatting rules, one for each panel. The formula is as follows: Choice != 'Panel A'. Lastly, the Hide checkbox should be checked.

  • ISSUE: When selecting only one of the options from the choice control, the rules work as expected; however, if the user selects multiple options, the panels do not show as expected, i.e. they remain hidden.

Solution 2:

  • The first solution does not work when multiple options are selected because you working with an array. To solve the issue explained in the first solution, you will need to use the runtime function, inArray(). With that being said, the formula in the first solution would change from Choice != 'Panel A' to not(inArray(Choice, 'Panel A')). You will need to nest the runtime function in a not() function because the formatting rule will expect a FALSE outcome to make the panel visible. TRUE values keep the panels hidden.

  • ISSUE: When the form is opened in read only, the panels will not show if only one option was selected. The first solution works towards resolving this issue; however, if multiple options are selected, none of the panels are shown.


  • I noticed that the first solution works when one option is selected in both read only and edit mode. In addition, I noticed that the second solution works when multiple options are selected in both read only and edit mode. In order to combine both solutions, I decided to use an if() runtime function. The formula I built is as follows: 
    • IF(inArray(Choice, 'Panel A'), not(inArray(Choice, 'Panel A')), Choice != 'Panel')
  • What I'm saying with this formula is the following:
    • If the Panel A is in an Array, meaning multiple options were selected, use Solution 2. If Panel A is not in an array, meaning it is the only selected option, use Solution 1.
  • With this solution, the user can see the panels that corresponding with the selected options. In addition, users can view the corresponding panels with opening the form in read only.

This month, we're starting a new way of connecting you to the people who make Nintex Connect the community that it is. And to do that, we're literally asking you to "follow" ten people!  


Each month for the foreseeable future, I'll name ten people to an "honor roll" and you can visit their profile and click "follow" to make them a connection in the community.


Why do this?  Because following puts their activity in the news stream of your choosing and exposes you to how leading community members are engaging in Nintex Connect.  You'll see what content they're creating, and responding to.  It's a great way to enrich your community experience.


This month's Honor Roll members to follow:


honor roll big


Honor Roll members will get this badge in their reputation center, along with 100 points.


This is not an undemocratic process!  If you'd like to nominate someone for the honor roll next month, post their name below and tell us why you think they should have a bigger following!

Hi All!


Wanted to do a quick walkthrough on how Reusable Workflow Templates work within Nintex Workflow for SharePoint. Hope this helps in your workflow designing, and if you have any questions, please shoot me a message, or post it in the comments below.


Also check out my other videos over on my site Working On It!


As a note: Best Practices for Reusable Workflow Templates 

Following on from the success of January 2017 Mission "What is your Nintex New Years Resolution", which was all about what bad habits you have when using Nintex that you would like to dispel of, we have created a positive spin in this months mission!


So what do you have to do to get the loot?  Simple really, share your quick top tip for any of the products in the Nintex suite, easy right?! 


top tip may

A simple couple of lines as a comment below about your top tip will do the job.  For your trouble, you pick up the badge pictured, and 100 points!


Why are we doing this?  In the hope that your top tip might be something that users in the community have never even heard about - and imagine if you could save them time and less headaches by simply sharing yours...




Here is mine:  Use the "Log in history list" action.  Simple enough I know, but for the first eight months of developing workflows I didn't know it was there and I used to bombard myself with emails trying to debug my workflow and get the values from my variables!

Filter Blog

By date: By tag: