How To: Using Nintex Forms to create Itemized Requests

There are a lot of complex forms that users interact with on a regular basis and I wanted to review one of the common use cases that we see with Nintex Form; an itemized form. If you are unfamiliar with an itemized form, think of any form where you are adding multiple entries or items on a single form. A great use case for this is an expense report. You would not create a report for each expense, but rather multiple expenses that you will submit in a single report. Let’s look at a simple example of just how easy it is to setup.

Scenario

For this scenario, we will be building an expense report that our users can fill out each month from an intranet site within our O365 environment. Let’s keep it simple and build our form to gather the following expense details:

  • Date of transaction
  • Description of transaction
  • Amount of transaction
  • Vendor Name

As you can imagine, there are many more things that we can require from our users such as who was in attendance, copy of a receipt, etc. However, adding more data points to our form is straightforward and can very easily be done.

Setup Environment

For this example, we are going to build out a Nintex Form in Office365 using a SharePoint Online site. I have a site already that I will use and created a list called Monthly Expense Form. In this list I created one (1) column:

  • RepeatingSectionXML – Multiple Lines of Text

Again, you could add more columns to your list if you want or need to, but for this example, we are focusing on the itemization within the form. The RepeatingSectionXML column will be used to collect all the items that are going to be added to the form. You may be able to guess that we will be using a repeating section within the form, but more on that in the next section. Once I have my site and list setup, we can dive into the Nintex Form designer.

Advertisements
Advertisements

Nintex Form Designer

I decided to build out my form in classic view because there is a need to add CSS to the form. Don’t worry, we are not diving into CSS in forms today! You could use either Responsive designer to accomplish the same thing, however, there are some differences that I will point out at the end.

Starting with the out of the box Nintex Form, we can remove the RepeatingSectionXML label and control and replace it with a Repeating Section Control.

Within the repeating section control, we want to add in all the data points that need to be collected for each expense (see above). To do this, grab a date control and drag it into the repeating section control. We also need a few single line text controls for the other data points. Once you have all your controls added in, it should look something like this:

Now that we have all the controls in the repeating section, each time a user fills out the form, they can easily click on the “+ Add new row” to add another item to the same form. This makes submitting expenses super easy! We could also apply this to requesting new materials on an invoice or even requesting a replenishment of office supplies. The use cases for this are many!

We are collecting the data, that’s great, however, there is nothing detailing out what each control is on the form. That is a problem as the users will not know which control is for the amount, vendor, or description. To rectify this, we simply add some labels outside of the repeating section control. Why outside? We do not want to repeat the labels each time there is a new item. Drag the label control onto the canvas and align it so it is above the proper control on your form:

I would say the form is good to go now. Wait, what about the data the is being collected? Since we are not committing it back to a SharePoint column, where is the data going?

The Form Data

The form data is still being collected in the Nintex Form even if the data is not being committed back to a SharePoint list column. This means that each time I open the form, it will render all the data that was collected in the correct controls. What about when I want to get to the data from the repeating section and use it elsewhere, like within a workflow or another list? There are a few different ways to go about this but one of the most straightforward ways to is to simply connect the repeating section control to a SharePoint list column (I did it here in this blog). In our scenario here, we are connecting it to the RepeatingSectionXML column we created earlier.

Final Thoughts

We see this scenario come up a lot and there are a lot of ways to approach it. This is how I have built out solutions in the past and approach similar ones each time. From here, we can take the XML data within the repeating section and do just about anything with it within our workflow. We could even send each item in the repeating section to another “Itemized” list with a link back to the original form (we will cover that on the next blog). This keeps the original form intact but gives a clean list view for each item in the repeating section for users to perform further actions upon, like reviews and approvals.

Default SharePoint UserProfile Properties

I constantly have to search for the out of the box UserProfile properties for SharePoint and figure I should write them down someplace for myself but also for others to easily find them as well.

I will add more details to each of them over time but here are the Basic Information and Contact Information properties that are most commonly used.

Display NameName
Section: Basic Information 
About meAboutMe
Account nameAccountName
Active Directory IdADGuid
Ask Me AboutSPS-Responsibility
Claim Provider IdentifierSPS-ClaimProviderID
Claim Provider TypeSPS-ClaimProviderType
Claim User IdentifierSPS-ClaimID
Data sourceSPS-DataSource
DepartmentDepartment
Display OrderSPS-DisplayOrder
Distinguished NameSPS-DistinguishedName
Don’t Suggest ListSPS-DontSuggestList
Dotted-line ManagerSPS-Dotted-line
First nameFirstName
Hire dateSPS-HireDate
IdUserProfile_GUID
Job TitleSPS-JobTitle
Last Colleague AddedSPS-LastColleagueAdded
Last Keyword AddedSPS-LastKeywordAdded
Last nameLastName
ManagerManager
Master Account NameSPS-MasterAccountName
MemberOfSPS-MemberOf
My Site UpgradeSPS-MySiteUpgrade
NamePreferredName
Object ExistsSPS-ObjectExists
Outlook Web Access URLSPS-OWAUrl
PeersSPS-Peers
Personal sitePersonalSpace
Phonetic Display NameSPS-PhoneticDisplayName
Phonetic First NameSPS-PhoneticFirstName
Phonetic Last NameSPS-PhoneticLastName
PicturePictureURL
Proxy addressesSPS-ProxyAddresses
Public site redirectPublicSiteRedirect
Quick linksQuickLinks
Resource Forest Account NameSPS-ResourceAccountName
Resource Forest SIDSPS-ResourceSID
Saved Account NameSPS-SavedAccountName
Saved SIDSPS-SavedSID
SIDSID
SIP AddressSPS-SipAddress
Source Object Distinguished NameSPS-SourceObjectDN
TitleTitle
User nameUserName
Web siteWebSite
Work phoneWorkPhone
Section: Contact Information 
AssistantAssistant
FaxFax
Home phoneHomePhone
Mobile phoneCellPhone
OfficeOffice
Office LocationSPS-Location
Time ZoneSPS-TimeZone
Work e-mailWorkEmail

Building Automation Around Existing Processes Using the Nintex Gateway

I worked through a different use case recently and wanted to share out my thoughts and approach to it for others to leverage in the future. This one is unique because I did not focus on improvement but rather on putting intelligent automation around process. Like all other things, there are multiple ways to approach this and probably more elegant ways, but this sheds some light on how we can solve the issue of taking existing data from a cloud source and pushing it to an on premise machine to be processed. So let’s take a look at what I did and how I approached it.

Scenario

I need a way to submit my monthly project risks and have them validated in order to be uploaded into a master system. I have a predefined Excel document to be uploaded and the current process requires me to email it to our admin for validation. Now, as an admin, this is manually done countless times at the end of each month and want to put some automation around it.

For those thinking about using Nintex Forms or any other front-end, this would be a viable solution, however, there are times where we do not need to. Think about existing processes where you may be leveraging Excel files that have 50+ columns that have their own drop-downs and rules within. We do not want to rebuild that interface, at least right now. That is a separate effort entirely. While we would agree that there is a better way to (should) approach this, for now, we simply need a way to off load the burden of checking and validating the data within the file to something more hands-off.

Advertisements

The Process

Ultimately we want to have the Excel file checked for any issues. We need to setup a botflow that we can train to look for various business logic exceptions and then format the document to send back to the user. But what about getting the file to the RPA bot? Typically users would email the Excel file to the admin, but if we want to eliminate, or reduce, the interaction needed from the admin, we need a way to get the Excel file from the user to the RPA bot. Also, we will need to consider how do we manage letting the user know that there is re-work required. This is where Nintex Workflow Cloud comes in to focus.

We can easily build out a simple form to collect the Excel document and route that document to a cloud based file storage location. We will use OneDrive for this scenario. Once the the form has been submitted with the uploaded Excel document and stored into OneDrive, the RPA bot can easily get to the file. But how do we kick off the RPA bot? How does it know that it has something to go and do? Why we tell it to do something! Through the Nintex Gateway we can kick off a RPA job and process whatever we define within the botflow, which, the first step would be to grab the Excel file!

We pass data through the Nintex Gateway in order to provide necessary details for the botflow to execute properly. These details are:

  • Excel File Location
  • Submission Date
  • Submitter’s Email Address

From here, the botflow has all that it needs to execute the process and validate the file. In my example, I am looking for special characters; specifically semicolons (“;”) and slashes (“/”) as well as validating that the data provided matches what is expected. I am looking at the “Inherent Risk Rating” for each project and have a list of expected choices. If the provided data does not match, I need to mark it along with the special characters.

Looking for Special Characters

I made a sample file with only 6 columns and 5 records for simplicity, but you could imagine just how time consuming this would be to manually check with hundreds or records and 50+ columns. Here is how it looks in real time:

Final Thoughts

I wanted to share this experience and showcase how easy it is to go from Nintex Workflow Cloud to Nintex RPA using the Nintex Gateway, but also to highlight something we often get stuck in; process improvement. I admit, the first time working on this solution, I wanted to build out a polished form in Nintex Workflow Cloud, but that would have taken a long time. I quickly realized that I can take what was already there in front of me and simply wrap automation around that. Improving upon this further will make us take a closer look at the Excel document and see if we can make a form out of it by removing data points or perhaps moving them to other steps in the process.

Working From Home: The Impact

Now that we most of us have been working from home for a few weeks, we are starting to see the impact it has to our daily routine. Not only to ours, but to those around us, like your children that are now trying to do all their schoolwork from home or your spouse trying to find normality in all of this. Even those that are close to you like your extended family or close friends are impacted by this change. Why is that? For some, it has been a large change, but for others, like me, working from home is a normal workday. So, I wanted to share my thoughts and experiences so far and have an open discussion on how to handle these disturbances.

This is fine…

For those that do not know much about me, I have been working from home full time (other than when I have work events) for over a year now. In the time that I have been working from home I have been able to remodel a house, buy a new house, move, and sell a house (the one I remodeled). Oh, and I have 5 kids. Yeah….5. Their ages are 9, 6, 4, and twin 2-year-olds, so needless to say, each day is an adventure in my house. My amazing wife is a full-time mom but also taking classes at Penn State University for Cyber Security!

So now that you know a bit more about me and how crazy my life is normally, let’s talk about all the changes that have affected everyone over the last few months. In case you missed it, I am talking about the shelter in place order that we were all given in order to slow down COVID-19. I won’t go into the politics of it nor the other impacts this epidemic is having on the rest of the world, let’s just focus on our work and home life. I am fortunate enough to work for an amazing company and poised for success while working through this difficult time. I wrote a blog previously about how to be successful while working from home so go check that out. However, it takes more than a dedicated space and some leveraging technology to be successful. You need to understand that the situation affects everyone around you and how you can adjust to that is just as important.

Advertisements

The Changes

For many, just working from home on a regular basis has been a big change. Not going to an office or traveling to clients is something we all must figure out on how to adapt to our new work life. This means thinking about how to manage your time better or creating a routine to stay on top of work and not slip into hours of surfing YouTube videos! But what about being comfortable not having that social interaction? What about not having those 5-minute breaks to go and chat with a co-worker? These are important aspects of our routine that is difficult to replace when we are being told to not leave our house!

Another large change has been having kids home. All. The. Time! Don’t get me wrong, I love my kids, and think the world of each one of them, but there is a reason I am not a 4th grade teacher! My wife and I do our best to help both of our kids that are in school with their work and making sure they are doing it. This alone is not difficult and not very time consuming but coupled with the typical day-to-day that is required with work, it becomes a bit stressful. You must juggle their work, keeping them on track and engaged, as well as your own work.

Also, I have 3 kids that are not in school yet, so we must make sure they are being entertained and engaged with as well. While my youngest ones would love nothing more than to watch Daniel Tiger all day, they need a bit more. This means coming up with activities for them to do while the other kids are doing their schoolwork. Before all of this, spending time with them was easy and happened naturally, but now we must actively make time for all of them whenever possible.

As I mentioned at the beginning, for me, I did not see this shelter in place order as much of a change for me as I already stay home. The one area I overlooked was how it affected those around me. My wife, for example, has her own routine while I do my work each day. Typical day is cleaning, meal prep, diaper changes, more cleaning, laundry…you get the point, it is a lot of stuff, but she had a routine. When the order was given in our state and the kids were no longer going to school, my wife had to add on to her already packed schedule, 4th grade and kindergarten home-schooling.

This caused a lot of stress for my wife and ultimately myself as we had to figure out how to manage all of it. Again, any one single part of this is easily manageable, but when you combine everything, shelter in place, kids now needing home schooled, it becomes the perfect storm.

Dealing With it All

It was not until the stress got so bad between my wife and I that I had to make a change and made me realize that we had a unique opportunity in front of us. The kids were home all the time and I was not traveling for work. This meant that I could spend much more time with my kids and help them with their schoolwork, play trains or superheroes with my younger kids, or just sit down and read a book. For my wife, this meant that I was available for more projects! However, I overlooked at for the first week or so because for me, it was business as usual, just working from home.

Since then, we put together a plan and it has been working out well so far. I now have a standing meeting with my oldest son every morning at 9am. This allows for him to show me everything that needs to be completed (see image) that day and ask for clarification if he is confused on any of it. I then transition into work calls and emails but force myself to take more breaks with my kids throughout the day. This helps my wife so she can get a break from dealing with kids all day but also myself to keep in mind that there are 6 other people in the house! I dedicate time in my day to do lunches with everyone so that I can get that human (even if it is with a 2-year-old) interaction. My wife does all the order pick-ups so that we are all not exposed to anything and I am OK with that. Being a gamer and working from home means I could stay indoors probably longer than most 🙂

Final Thoughts

I know this blog was not my usual content, but I wanted to share out my experiences thus far as it is important to keep things in perspective during these trying times. We are all a bit stressed out with all the changes and it helps to know that we are not the only ones going through it. For me, it is with my wife and kids, but for others it may be obnoxious roommates or even pets that are not handling this well. Whatever your situation is, just try to keep in mind what is important and take care of that. The rest of it is unknown at this stage.

Working From Home, Everyday

There has been a surge in companies that have recently recommended to their employees that they work from home given the current health conditions. This presents a unique situation for many people as they have never had the opportunity to work from home. Your entire workday is different when you work in an office compared to that of someone that is remote. There is no commute. There is no “water cooler” conversation. Just work. So why do people, like me, do it every day? I believe there are more benefits from working from home than in an office, but there are some drawbacks.

Dedicated place to work

It goes without saying but you should have a dedicated place to work. Whether it be your bedroom or an office, you need a place to work that is quiet and free from distractions. I have an office now, but I have worked from a bedroom before! The key is to find a place that is separate from your normal day to day living area so that you can focus in on the work. If all else fails, there is always Starbucks or even your local library.

My office

Use Technology

We live in an age where we are always connected. Be sure you use it to your advantage! Talk to coworkers on your instant messaging service so that you are in contact with them. Since you’re not in an office setting, there is little time for chit-chat! Also, use your camera when on conference calls. This goes a long way if you are meeting with clients or even coworkers. Yes, this means you need to look presentable, but you don’t need to worry about where you are given most video conference services now provide virtual or blurred backgrounds.

Use background to avoid disruptions

Keeping a schedule

It is important to keep a schedule so that you stay on task. We all have our routines; check email, coffee break, project work, lunch, etc. but it is key to set some sort of schedule while working from home. This keeps you on task with what needs accomplished but also allows for you to plan much easier as new tasks arise each day. This will also help when you want to take some time for yourself and run to Starbucks!

For me, I take some time in the morning to sit with my kids and wife. This helps me set expectations with them on what I have planned for the day (meetings, heads down work, etc.) but also take a moment to enjoy them. I don’t have a commute to my office…it is right down the hall!

Advertisements

Taking breaks

Just as important as making and keeping a schedule, consider taking breaks. When working from home you are always on. Ask anyone that does this on a regular basis, you’ll do more work from home than in the office. This is because we live in an age where we are always connected. We always have our phones on us which means we have access to Teams, Slack, email, or anything else you may use!

This does not mean that you must do work all the time. Taking breaks or dedicated time to disconnect is a big part of doing this over a long period of time. I take time each day to eat with my kids, sit down at nap time, and sometimes get outside and play for a bit. The key is to know when you can fit that in. Setting expectations with yourself and loved ones is important for you to achieve your daily goals.

Taking 5 minutes to read to my “co-workers”

I am sure there are plenty of other areas to consider, but these are the ones I focus on every day. What do you think or what do you do that brings you success when working from home? Leave it in the comments and talk soon!

User Groups in Nintex Workflow Cloud

The concept around user groups within Nintex for SharePoint is nothing new, but what about Nintex Workflow Cloud (NWC)? This feature was recently rolled out and makes governance within NWC much easier! So, let’s take a look at what it is and how we can leverage it.

Nintex Workflow Cloud

If you don’t have a Nintex Workflow Cloud tenant already, you can go out to the Nintex website and request a free 30 day trial.

What is it?

If you are familiar with User Groups within SharePoint, the concepts are similar. User Groups within Nintex Workflow Cloud allow for tenant admins to share assets such as workflows and connections with a subset of users in that tenant. This means that we can now set connection permissions on a group which makes managing who has access to the connection much easier! Also, this can be leveraged for who has access to specific workflows.

Advertisements

Setting Up User Groups

From your Nintex Workflow Cloud dashboard, click on the Settings tab in the upper right corner and navigate to your User Management section.

From here you can easily manage Groups, Users, and Identity federation. Like all things Nintex, creating a new group is straightforward… click Add new. Give your group a name and a description, set the owner and who is in the group, and that’s that!

So now that we have a group setup, we can apply it to different workflows as well as connections that we have inside of Nintex Workflow Cloud. Well that’s great, but what does that mean and why should you care? From an Enterprise standpoint, this means that you can now implement governance on your workflows and connections. Giving you the ability control who has or does not have access to various assets.

More to Come

With this roll out, we begin to look at how we can manage larger tenants with multiple developers. This also lays the foundation for future enhancements and refining the functionality to be leveraged in other areas. What those areas may be is yet to be determined, but leave a comment if you want to see something or head over to the Nintex User Voice and add it there!

How To: Extracting XML Data from a Repeating Section

How to create an itemized list of all data within a repeating section on your form. In this blog we will discuss how to leverage Query XML, Loops, Collections, and Document Generation actions.

We have all ran into this scenario before: “I need to be able to submit multiple (insert things to submit here) but in one single form.” This is not a new concept of having a form that allows for multiple items within it, nor is the idea of how to go about collecting that data anything new. However, there does seem to be some different approaches on what to do with the data AFTER it has been submitted. Here is how I would approach this scenario, but please, let me know what you think in the comments below and what you would change or how you would go about architecting a solution like this. Let’s jump in!

Scenario

I have a form that I use to request banking information. I know the bank name and location, but need to know additional information for each one. Rather than fill out a form for each bank, I can use a repeating section to capture each request and process the entire form altogether.

Things you’ll need if following along:

  • SharePoint list – data entry (form)
  • SharePoint list – create an itemized list of request
  • Document Library – the document is generated at end of a workflow (used in the second part) – more to come on this!

Form

I am not going to go into great detail on how to design the form, but there is one specific piece that needs to be addressed. In my SharePoint list, I have multiple lines of text column named RepeatingSectionXML. This colum will be used in the form and connected to the repeating section. This allows me to capture all of the data that is being entered into the repeating section and usable within my workflow.

Here is the published form (filled out):

Advertisements

Workflow

Now that the form is setup and we are collecting the XML data in a list column, we can move on the building out our workflow to break it apart and push it to an itemized list.

First step: Get Data from Repeating Section XML

I use a parallel action to get all of the elements I need and store them into collection variables. For the above banking example, it will look like this:

And here is a closer look at the Query XML actions:

Be sure your XPath query is accurate. I recommend using something like https://www.freeformatter.com/xpath-tester.html to test and validate your query.

Second step, now that we have all the needed data points in collections, is to simply loop through them and create a new item in our itemized list in SharePoint.

We begin our loop by pulling out data for each Bank and then getting the data from the Location collection at the same index:

At this point we have both the Bank Name and Location that was requested and can send it to the Itemized list for further processing. This is as simple as leveraging the Create Item in List action setup like this:

You’ll notice that we are storing the newly created SharePoint item ID in a variable so that we can save it and use later. Here, we may also want to consider adding some more content to the new item as we are creating it. Perhaps the {currentItem:ID}? If we add a reference to the “parent” item (the form we filled out in the beginning), we can perform lookups later on in another workflow or process to ensure updates happen if needed. Last step is to add the item ID to a collection and we can do so like this:

At this point, we have filled out a form to request additional information on some banks. This data was stored in a repeating section (XML) and we used that data to create an itemized view in another list (via query XML, looping, and create item actions). The main focus was how to parse through the XML and do something with it. For this scenario, we broke it apart and send each item to a new list. From here, you can replace all of the actions inside the loop with whatever actions you need to perform for your specific process/workflow.

In this example, we have one more step; Document Generation.

I am generating an Excel sheet of all of the Bank Names, Locations, and SharePoint IDs that will be used for lookup the additional required data. The reason I am doing this is because the information that needs to be referenced is on the FDIC website and will be scraped using out Nintex RPA offering.

How To: Auto Populate Form Controls in SharePoint Online with Nintex

We always want to make intelligent forms for our users, and one way to do that is to auto populate as much on a form as possible. This reduces the amount of time a user spends on a form as well as increases data accuracy. Win-Win all around! How can we do this within Nintex for Office 365? Quite simple.

TL;DR – Use the lookup function.

This approach will be for the Classic and Responsive designer that Nintex offers. If you are looking for how to do this in the New Responsive designer, check out this video. I will post a guide on this approach soon.

For this scenario I am going to be looking up some employee data that is in a SharePoint list. Perhaps I need to build a request form and want to pull in a user’s name and department based off of their Employee ID. We can absolutely do that with Nintex Forms. Here is my set of data:

Now let’s build out the form on our request list. For this, I am going to collect all of the same data points. I am going to set them as text fields, but rather than having my users enter all of the information, I am going to have them select their Employee ID from a drop-down on the form. If the user needs to change what was auto populated, they can still do that as we are not using Calculated Value controls for this.

The Employee ID is what will drive the rest and auto populate the form. Be sure to connect this List Lookup control to a column in your list so that you commit the data back to the list! Here is how that control would be setup for this scenario:

For the rest of the controls, we can use rules and when the lookup control has data, we can set the value using another lookup function. Confused? Not to worry, it is simple. In order to add a rule to a control in Nintex Forms, simply select the control, let’s select First Name, and click on Add Rule in the top ribbon. Here is where we want to build out the logic to lookup the First Name data from our EmployeeData list based off of the EmployeeID we selected in the drop-down.

The rule will be triggered when the Employee ID control is NOT NULL OR EMPTY. This means that the form will not auto populate until a selection has been made. This also means that each time the selection changes, it will trigger another lookup, thus updating the data!

Now, time for the lookup. When the rule is triggered, we want to set the control to the result of the lookup function. The First Name, in this case, will come from our EmployeeData list, using the Employee ID as our key. The lookup function is this:

lookup("EmployeeData", "EmployeeID", parseLookup(Employee ID), "First Name")

Let’s take a moment and break the lookup function down to something a bit more manageable.

“EmployeeData” – This is the list where we want to lookup data from

“EmployeeID” – This is the column in the lookup list that we want to filter on

parseLookup(Employee ID) – This is the value we want to filter on in the above column. This is the lookup control that is on the form. Why use parseLookup() and not just the control? When using a lookup control, the selected value also has the ID appended to it. For example, if we selected Employee ID 55555, the resulting data would look like this: “1;#55555”. We just want the value, not the ID, so we use parseLookup().

“First Name” – This is the column we want to be returned from the list we looked up and filtered. As you can imagine, this is the piece that would change for each control you want to auto populate.

If you want to read more on the lookup function, check out the Nintex help files.

Advertisements

From here you can easily duplicate your rule, add it to another control, and change the lookup function to return the desired data. Once you have everything setup, test it out in the preview mode that is available in Nintex Forms. You should see something like this:

Now, keep in mind that since we used text controls and rules to auto populate and not Calculated Value controls, we allow for changes when needed.

Can make changes to controls as needed

Once submitted, the data can be made visible within the request list that we created earlier.

Final Thoughts

Why use Single Line Textbox over Calculated Value? Using a SLT control allows for changes to the data, whereas a Calculated Value control is read only. Both have their uses and can easily be setup. One could even setup the SLT to be read only by setting “Enabled” to “No” in the control settings. It would result in something like this:

First, Middle, Last Name and Department are not “Enabled”

Can this approach be used in SharePoint on-prem? Yes, absolutely! Even using the Classic forms designer.

Want to take this a bit further? You could setup the form to auto populate based off of the current user! There is a section called “Common” when inserting reference into the rules. There is a reference to current user (Display Name, Email, and Login ID) that can be used.

I hope this has been helpful and pointed you in the right direction when it comes to auto populating your Nintex Forms in Office 365.

Let me know your thoughts in the comments below!

How To: Leverage Your Nintex (XML) Form Data

I get this question a lot and there are a lot of articles out there around this topic, but I wanted to clarify a few things. What is this used for? Why would I use it? Just how easy it? So let’s jump in!

Nintex (XML) Data, What Is It Used For and How Can I Use It?

The Form Data variable within Nintex Workflow (on prem, O365 it is call NFFormData) is used for unbound data in your Nintex forms. This means that any controls you are using in your forms that are not connected back to a SharePoint list column will be here. That’s great, but why would I need use this? There are many use cases on why we would want to use this everything from accessing repeating section data to not wanting to commit the data back to SharePoint. We will use the example of not wanting to commit the data back to SharePoint in this discussion.

Collecting Data without Commiting to a SharePoint Column

The idea of not commiting data back to a SharePoint list is more common than most people realize. For various reasons, we want to collect the data in an easy, user friendly format (Nintex forms to the rescue!), but do not want to create a SharePoint column for every data point. We still want to access the collected data within the workflow though so it needs to be accessible. This is where it all comes together with the Form Data variable in the workflow! So how easy is it to start using it? You probably already have access to it without realizing!

The Ease of Form Data

First and foremost, you need to be using Nintex forms to see this variable. If you are just using the out of the box SharePoint form, you will not see it in the workflow tool. Once you create a form you will see it in the Item Properties tab:

Left: No Nintex Form Data | Right: Nintex Form Data

So let’s take a look at the Nintex form. Below is a sample I put together and have 3 controls that are not connected to a list column:

Nintex Form with unbound controls
Advertisements

Now, let’s say we want to access the data within the workflow to update other systems or create SQL queries using the data points. Within the workflow we can query the Form Data variable (since it is XML) and target each node. So taking a look at the XML of the above form, here is how easily we can setup the workflow action:

<?xml version="1.0" encoding="utf-8"?>
<FormVariables>
	<Version />
	<Project_x0020_Number type="System.String">A113</Project_x0020_Number>
	<User_x0020_Name type="System.String">jesse_mchargue</User_x0020_Name>
	<Internal_x0020_ID_x0020_Number type="System.Int32">8675309</Internal_x0020_ID_x0020_Number>
</FormVariables>

Query XML workflow action:

Query XML Action

All we need to do is target the node we want and store it in a variable. We can then use the variables how ever we want. If you need some help building the XPath to target the node, check out the XPath Builder button in the workflow action (onprem) or here is a free online XPath tester

Here are the results for our example:

Extracted Data: 
Project Number: A113
User Name: jesse_mchargue
Internal ID: 8675309

Is it that easy?

Yes, it is that easy! Keep in mind that Form Data is only available when you have a Nintex form and you want to access the unbound data in your workflows. Of course, if it is bound to a list column, you can query the list.