Skip navigation
All Places > Getting Started > Blog
1 2 3 Previous Next

Getting Started

408 posts

I have been working with Nintex workflows for a long time now and have only just started using this action.  It is so simple but so powerful and has saved me doing this painful step in a lot of my workflows:

 

Scenario

I have a workflow that runs for all types of users entered into a list.  Most of the workflow is relevant to all types of users but there are some things that I would like to be done only if the user type is Employee.  Yes, I could use a Run If action, but I am using this fairly simple scenario to explain the filter action.

 

The Filter Action

As opposed to a Set a condition action where only one branch is executed, or a Run if action where the contents are run only on a condition being met, this action literally only executes the actions below it if the condition is met, otherwise the workflow is ended.  No need to add actions to a Run if container, or to add actions to one branch in a Set a condition action and an "End workflow" action in the other!

Action Configuration

Very similar to the Set a condition and Run if actions, you can specify:

  • Condition:  what you are comparing (i.e. current item, variable, metadata etc)
  • Comparison:  equals, not equals, contains, greater than etc.
  • AND/OR conditions

For my specific example I have the configuration as follows:

 

I have designed a lot of my previous workflows using the very first image on this post but will have to keep the filter action in mind going forwards as it does the same thing and is often overlooked!

Each month, I like to highlight valuable community members and name them to a monthly honor roll.  You, dear community member, are asked merely to follow them.

 

 

Just hover over their names and click "follow" or visit their profiles and follow them there to get their activity in your newstream in the community.  This helps expose you to how active community members are engaging with other Nintex users.  You'll see what content they're creating, and responding to.  It's a great way to enrich your community experience.

 

This month, we have a nice mix of customers, partners and employees.  I want to especially call out Bashya Rajan,  nmarples ,  Lakshmi C, and Philipp Lucas, four Nintex customers who always offer friendly, useful advice that is coupled with gentle suggestions about how to look at solutions from a different perspective. Gentlemen, I appreciate your approach and the help you've given others in this community. Thank you!

 

Our Nintex Partners are a tremendous asset to this community, too. The smartest ones know that sharing their knowledge (as they frequently do with informative blogs) helps raise their profile in the workflow world.  Ben Stori, Patrick Abel, thanks so much for your help!

 

Nintex Technical Evangelists round out the list. Be SURE to follow them to get notified when they post, so you don't miss their insights and news!

 

This month's Honor Roll members to follow:

 

Congratulations and thank you to all of this month's Honor Roll members!

 

 

honor roll big

 

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

 

This is not just open to the whims of the community manager! If you'd like to nominate someone for the honor roll next month, send me a message: frank.field@nintex.com or ping me via the community!

What steps can be taken to improve accessible experience on Nintex Forms?

 

An example of making Nintex Forms elements focus-able with tab-index and JavaScript?

 

    Manage focus on a form using keyboard commands or key handlers?

     

    How can we add WAI-ARIA authoring practices (roles or states) to Nintex Forms HTML markup for screen readers?

     

    Best practices to manage keyboard focus when using dialog boxes within Nintex Forms?

     

    Horizontal fields vs. Vertical fields how will tab order behave?

    • The form CSS / JS are highly customize-able, depending on what the accessibility standards are requiring for this question, they should be able to update and modify accordingly.

     

    Repeating section how will tab order behave?

    • All controls should function the same with tabbing behavior.  After doing some testing, it doesn’t look like the ‘Add New Row’ is part of the tab index.  This would likely require adding a JavaScript button to click the ‘Add New Row ‘ button.

     

    How will all the controls like check boxes, radio buttons, and other controls behave?

    • These can be edited by tabbing through the choices.  You can select the option by hitting the space bar.

    Overall Compatibility with Jaws reader

    • Haven’t tested with that one in particular, but you can use explicit labels to provide the functionality needed for other screen readers.
    • Added Value of Label Associations

    Question:

    I absolutely love the option of creating ‘pages’ in a form, which is an option in InfoPath. I start with the first page to ask the user a question. Depending on the selection they make, it will flip to a new page to ask additional questions or asks the user to fill in information. Once complete, they click submit and it flips to the final page saying thank you and provides any additional information.


    I also like the ability to create new pages based on what the user is doing, i.e. new item or edit item. If it is a new item, I start with Page 1. If I am editing an item, it starts with Page 8, which has all the information in read only format. Simple and easy to work with.


    However, the concept of ‘pages’ in Forms does not exist. It looks like I have to add ‘sections’, and then determine which one should be active based on a ‘value’. That does not make any sense to me. Why is such a simple concept so difficult to implement in Forms?

     

    Answer

     

    There are a few ways that this can be implemented. First option is to use tab functionality like was mentioned.  The second option would be to use JavaScript to switch the views.  I can follow up with the product team to see if there has been any movement on implementing this functionality natively, but the blog posts below can provide some options:

     

    https://community.nintex.com/docs/DOC-1361

    https://community.nintex.com/docs/DOC-1198

    http://www.slfiene.com/blog/2015/10/19/a-new-fantastic-point-of-view-slide-ux-for-nintex-forms

     

    Question:

    I have some ability to adjust the width of the ‘table’ in InfoPath. So if I want to show that form in a web part that is only 33% of the page, I can make the table 150px wide, which will fit into that web part. The problem is that it isn’t responsive, so the smaller I make the screen, the more it will bleed into the web part next to it.
    In Forms, I so far have no seen a way to create a form that is responsive, so putting it in a web part that is 33% and then making that form responsive based on how big or small the screen is just does not work. It seems no matter what I do, the ‘window’ of the web part is a certain size, so it always seems to expand beyond the 33% that I have designated as the web part size. Am I missing something here?

     

    Answer: 

    We should be rolling out responsive forms later this year.  This release should address the needs described above.  The one caveat here, is that the responsive forms will not support custom JavaScript.  We will still have the Pixel Perfect forms (current product) available if there is a more complex design requirement, and the user designing the form will have the option on which form type to deploy.

     

    Question

    In InfoPath, when I want to setup a conditional rule, it is simple – If x is No, do this. If x is Yes, do that. It is a simple selection of which item I want to be x, select the conditional item (equals, greater than, less than, etc.), and select the result. Again, I like seeing the options and knowing in plain language what it will do.

     

    Forms however does not take that approach. It seems even the simplest of needs requires knowing the JavaScript language to accomplish the need. To do a conditional rule in Forms, you have to write it up in a JS format. I do not know what that format is, so I now have to research how to do it, which takes it more time. This is not making the best use of my time, especially if I am just trying to put together a simple form.

     

    Answer:

    The help files have some pretty good information on how to configure rules and the operators: http://help.nintex.com/en-US/nintex2013/help/#Forms/RootCategory/Designer/Nintex.Forms.Rules.htmhttp://help.nintex.com/en-US/nintex2013/help/#Forms/RootCategory/Designer/Nintex.Forms.Rules.htm

     

    If the JavaScript operators are not ideal, there is also the capability to configure runtime functions, which may make more sense coming from the InfoPath world.

    http://help.nintex.com/en-US/nintex2013/help/#Forms/RootCategory/Designer/Nintex.Forms.RuntimeFunctions.htm

    I'm very excited to see the new Scheduling features for O365 Workflows. As first read from Tee Up Your Work - Scheduled Workflows Are Available for Office 365! we learned the basics of scheduling site workflows. So I ran a few site workflows myself and could not find the history that they executed. My first test workflow would send me an email, since I received the email I knew it was working. But there was no evidence. Typically, I would go to Site Contents from the suite menu gear, then click on Site Workflows.

    I then see my normal screen of available site workflows to run, and which are still running or completed. Notice in this view I don't see anything in the completed section, yet I had the Email Site Workflow scheduled to run and it executed.

    What I found was, by clicking on Show All Workflows, I then see the completed scheduled workflows.

     

    Clicking on the workflow name will then display the workflow history associated.

     

     

    The reason this was required is that the workflow executed under elevated App permissions. Notice the userID is app@sharepoint. So by selecting to show all site workflows I then could see workflows completed by the system.

     

     

    A couple of key notes to follow:

    1. Keep in mind you can disable these schedules and schedule data will be retained for 90 days after the final execution so you can quickly reference your prior work. This means specifically the schedule rules for the workflow from the workflow gallery. This is not related to History data.
    2. History for each workflow instance is saved to the history list specified in the workflow settings, typically the default site workflow history list. In SharePoint Online, the Workflow Auto Cleanup job permanently deletes workflow instances and related task entries that still exist 60 days after a workflow is completed or canceled. You can regularly export the workflow history list if you need to save the workflow history for longer than 60 days, or contact your Farm Administrator to reconfigure job settings.
    3. To view the default site workflow history list

      Append the following to your site URL:

      /Lists/Workflow%20History
      For example, if your site URL is https://example.sharepoint.com/sites/hr, then the appended URL appears as follows.
      https://example.sharepoint.com/sites/hr/Lists/Workflow%20History

    4. To enable scheduled workflows, the following SharePoint site feature must be activated by your site administrator:

      Workflows can use app permissions

      This feature remains inactive until it is activated.

    Many of you, like me, will have seen and used this feature many times.  What does it do?  Well it allows you to add a shortcut to your start workflow page directly on the item context menu.

    These are the settings you need on workflow settings:

     

    This then, when the workflow is published, displays as such on the item context menu:

     

    Now I have been using this awesome feature for many years and then Paul Crawford asked me why he seemed to be limited to only adding four workflows to the menu?!  I have never needed to add this many before so wasn't aware of any limitation... 

    I won't pretend I solved it, because I didn't, but he came up with a quick fix that I wanted to blog about so that neither of us forgot this simple trick:

     

    Rather than using Menu item position: 0, 1, 2, 3, etc

    Have Menu item position: 100, 101, 102, 103, etc

    Hi all and welcome to a new Community Mission!

     

    In this mission you don't have to build a form, you don't have to build a workflow so..what you are requested to do?

    Just a simple fix on an existing workflow that currently has some issues..attached to this post you can find all you need for your environment (there is a zip file for who is on O365 and one for on-premises).

     

    You just need to have Nintex Workflow and Nintex Forms installed and then you can start setting up your personal playground.

     

    How to setup the scenario:

    1. Import the three list templates that are in the zip (they template are for an English website)
    2. Create a list for each template (you should use template name as list name)
    3. In list "CommunityMissionDestination" you have to create a lookup column based on the settings shown in LookupConfiguration.png (the image is in the zip)
    4. In list "CommunityMissionSource" you have to import the Nintex Forms available in the zip and publish it
    5. In list "CommunityMissionSource" you have to import the workflow (for O365 users, remember to fill last action with valid credential) and publish it.

     

    Now, what the workflow should do? Every time a new item is added in the CommunityMissionSource list, it should check the repeating section that is present in the form and create one item for each row in the CommunityMissionDestination list. That's all? Not exactly.. last requirement is that for item in CommunityMissionDestination, "Type 1" value in the lookup field should always be selected, even if it wasn't selected by the user in source item.

     

    Once you've fixed the workflow, post your exported workflow as a document in the Nintex Gallery briefly explaining what you did! (Visit the space, click "actions" and then select "document" from the dropdown. You'll see a place to attach your file in the editor.)  Reply below with a link to it.

     

    fixit badge

    For your repair skills, you'll earn this badge and 100 points..good luck!

    Each month we name ten people to an "honor roll" in the community to highlight their contributions and encourage you to connect with them.

     

    Congrats to the Nintex Connect members below - and THANK YOU for your contributions!

     

    I encourage everyone to "follow" each of them. Here's how: Just hover over their names below and then click "follow" in the card that pops up, or visit their profile pages and click "follow" next to their name in the banner.

     

    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!

    We're scarcely half way through 2017, and we've already seen one community member attain Rock Star status!

    Congrats to Marian Hatala, who is a Nintex customer and member of our community Blue Ribbon Group!

     

    Marian spends a lot of time in Nintex Connect answering questions.  His advice is always to the point and he really knows his stuff!

     

    Thank you, Marian!

     

    The Blue Ribbon members do a lot to help others in the community. See the entire list here: Blue Ribbon Group for 2017 Announced!

    Find out what it means to be a Rock Star here: Be a Community Rock Star! 

     

    See where you rank by visiting the homepage and finding our leaderboard in the lower-right corner.  Or, visit your profile (click: Avatar>view profile>reputation).

     

    profile marian

     

    Find out about how to collect badges and points and work your way up that community status ladder here: Badges and Earning Points on the Site

     

    You may want to "follow" someone who provides a lot of valuable information. Just hover over their name in the community and click "follow" on the card that pops up. Or click their name and visit their profile page and click "follow" next to their name in the banner.  You'll then get notifications of their activity. A good group of people to follow are those in the Blue Ribbon Group, or the people who make the monthly Honor Roll.

    You can see those here:

    New: A Monthly Honor Roll

    Honor Roll: June 2017

    Honor Roll: July 2017

     

    Maybe you, too, can reach rock star status this year! Still lots of time to find out!

    The Nintex App Studio feature App Deploy lets you deploy apps without using an MDM.

    Instead, after building your app, use Nintex App Studio distribution lists to send the app to your recipients' email address. The distribution list sends an email containing the link to download the app.  Optionally, you can view reports on your sent and downloaded apps. Currently, App Deploy is only supported by iOS and Android devices.

     

    To create a distribution list

    1. Under the App Deploy tab, click Manage distribution lists.

      The App Deploy tab is accessible from the home page for all apps that are queued to build.

    2. Click Add on the Manage distribution lists page.

    3. Fill out the fields on the Edit distribution list page.

      You can copy and paste email addresses from most sources. Only valid email addresses are automatically extracted from the pasted text when you click Add

    4. Click the Nintex Mobile logo in the ribbon to return to the App deploy tab.

     

    To email your app

    1. Under the App Deploy tab, select your distribution lists from the Distribution lists field.

    2. Optionally, turn on the Auto deploy feature, which automatically sends emails to your distribution lists when a new version of Nintex Mobile is released.
    3. Click Preview email to receive a copy of the email that is sent to recipients.
    4. Click Send email to lists now to send the email immediately.

     

    To view downloaded reports

    1. Under the App Deploy tab, click View app downloads report.
    2. Specify any filters and then click Generate.

     

    To view sent reports

    1. Under the App Deploy tab, click View emails sent report.
    2. Specify any filters and then click Generate.

     

    If you have any questions about this feature, please feel free to leave a comment on this post!

    Hello again - 

     

    I posted this question a while back and abandoned it as I was pulled in a different direction

    Alas, I have returned and wanted to post my finding about it in the hope that I can save some people hours of banging their heads against their desk!

     

    The Scenario

    Simply put, I want to create a User Story in a project within Visual Studio Online. I want a user to fill out a form and then pass that information over into VSO. This is to be used for a web support team as a request form and queue for updates/changes to internal websites.

     

    The Setup

    Before we dive in, as always, lets take a minute to understand what we want to do and what we need to do.

    • Build a form to collect data
    • Build a workflow to pass data 

     

    Simple, right? 

     

    I do recommend that you take a look at the following sites as reference if you are unfamiliar with Visual Sudio APIs:

    Getting Started: Auth Overview

    Creating Personal Access Tokens

    Creating Work Items

     

    I am going to assume you have a basic understanding of Nintex Workflow 2010, and more specifically the Web Request Action, but if not, check out Nintex Help - Web Request.

     

    The Visual Studio Parts

    In order for this to all work, we need to make sure that the web service call has the proper authorization to create the work items in our project. To do this, we will create a Personal Access Token. Simple navigate to your Visual Studio Online environment and from the homepage open your profile and click on "Security".

    Next you will want to Add a Personal Access Token. This will generate a unique key that you can set to expire as well as what scope it pertains to:

     

    Once you have the key (be sure to copy and paste it somewhere because you cannot view it again after it is gone) you will need to encrypt your token in Base64 so that you can use it in an HTTP Header (which is what we will do).

     

    When encoding your token, do not forget your login! So for example, it will look like this:

    {yourVisualStudioUserName}:{YourPersonalAccessToken}

    jmchargue@duqlight.com:yourpersonalaccesstoekngoeshere

     

    When you encrypt it, it turns out like this:

    am1jaGFyZ3VlQGR1cWxpZ2h0LmNvbTp5b3VycGVyc29uYWxhY2Nlc3N0b2VrbmdvZXNoZXJl

     

    Once you have that setup we can move into the Nintex side of things

     

    The Nintex Parts

    I am not going to go over the form because I want to focus on the "how we connect Nintex Workflow to VSO".

    You can make the form anyway you want with any data points and controls you see fit. Here is my form (no extras added):

     

    I know its is not pretty, but we are going for functional! The workflow is where the magic happens so lets dive into that.

    At the core, we want to leverage a Web Request action. I use some other actions to help set variables (query user profiles, etc), but the focus is on the Web Request.

    You will want to use a PATCH and point your web request action to your project within Visual Studio:

     

    PATCH https://{instance}/DefaultCollection/{project}/_apis/wit/workitems/${workItemTypeName}?api-version={version}

     

    Your headers will be as follows:

    Content-Type: application/json-patch+json
    Authorization: Basic {YOUR Base64 ENCRYPTED USERNAME:TOKEN}

     

    Lastly, you will want to add your request body. For this example, I am creating a User Story and this is the body:

    [   
         {     
              "op": "add",
              "path": "/fields/System.Title",
              "value": "{ItemProperty:Title}"
         },
         {     
              "op": "add",
              "path": "/fields/System.Description",
              "value": "{WorkflowVariable:var_FN} {WorkflowVariable:var_LN} 
    <div>{WorkflowVariable:var_Email} </div>
    <div>{WorkflowVariable:var_PhoneNum} </div>
    <div>Description: </div>
    <div>{ItemProperty:Description}</div>"
         },
         {
              "op": "add",
              "path": "/fields/System.AssignedTo",
              "value": "{WorkflowVariable:var_assignedTo}"
         }
    ]

     

    Web Request Action Sample:

     

     

    Run Now:

     

    I recommend that the first time you simply try to create an item with a title so you do not get hung up on all the other properties. I have had some success with doing a "Run Now". I would recommend using it, but I use Fiddler or Postman to remove any issues that SharePoint may present. More on that later.

     

    Results

    Now that we have everything in place, let's create one and see it go through!

    Form (I had someone else fill it out to test permissions at the same time ):

     

    And here it is in Visual Studio:

     

    It works (yay)!

     

    Final Thoughts

    I recommend doing this in Postman or Fiddler first so that you can understand how the web service work and hammer out the syntax. I spent countless hours attempting to connect to realize I left off the "username@domain" from my access token... yea... it happens.

     

    Also, using Postman or Fiddler allows you to operate outside of SharePoint. We ran into issues trying to get the call to go out of our network... more wasted time, but figured it out in the end. Knowing that it works in one place can help determine issues and causes.

     

    Next I want to recreate this in Office 365. I would like to use Nintex Workflow Cloud, but did not see a Web Request action yet.

     

    Hope this helps, and as always, until next time!

    I recently had a client who needed a workflow that could handle voting in a way that was a bit challenging to get working.  I'm sure there a multiple ways to handle this, and I tried many unsuccessfully.  I wanted to share an approach that I was able to apply successfully in case anyone else has a similar scenario.  At a very high level, they need to gather votes and count the different responses, but the number of people who would actually respond might vary.

     

    The business requirements were as follows:

     

    1. Allow for email reply (LazyApproval)
    2. Send reminders
    3. Auto-close the task(s) after a specified time
    4. Allow everyone to vote
    5. Tally the votes, including the number of "no response", and save back to the item

     

    I'll go through the requirements individual and describe what I used to address them first.

     

    Allow for email reply

    This one was easy, enable LazyApproval in whatever task action I would use.

     

    Auto-close the tasks after a specified time (escalation)

    This was a requirement that pointed me to Flexi tasks.  The due date and time for the voting on these items could be specific, like in the middle of the day, so I couldn't just use days for this one.  I started with a Build string action, so I could take advantage of the inline functions like fn-DateDiffMinutes to get the number of minutes until the due date and time.

    get minutes until due with build string action

    Then, I used Set variable to make the Flexi task happy since it wanted a number in that field.  Looking back on this now, I am not sure this action is necessary.  You might just be able to use the text variable instead of making it a number.  It is all working now after a lot of effort, so I'm going to leave it.

    set variable action, number = text

    Here is the Flexi task with that variable for the Time to escalation:

    flexi task config

    I added an outcome and comments text to more easily track who didn't respond in the workflow tasks list.  Also, I need it for the tallying part later. Here are the two actions.

    two actions in workflow

    The Flexi tasks have an "Other" branch to handle the "No Response" scenario when the voting window has closed.

    flexi task with 3 branches

     

    Send Reminders

    This was one of the requirements that drove the decision to use Flexi tasks.  Initially, during the design of the workflow, I put "5" into the "Number of reminders" field arbitrarily.

    flexi task reminders config

    Something unexpected happened with the escalations when I did this and it took me a while to put the pieces together.  Now, it's possible that I got this wrong, but it seemed like the items wouldn't do the escalation (Complete task) until after all of the reminders were sent.  I was not expecting a dependency there, and maybe it is a bug in the version I have or I just got it wrong, but everything I observed made me think this is how it was functioning.  If my item was set with a time to escalation that was 1 day away, but I had the 5 reminders above, it wouldn't complete the task until after all of the reminders were sent.  So, with that in mind, I did the following:

    The voting due date was a required field in the form, so I wanted to get the number of days between the current date and the due date.  With a Build String action, I used the fn-DateDiffDays to get that number.

    build string to get difference in days

    I noticed that this was rounding when the result was something like 2.8 days, so I would get one extra reminder and the tasks would close one day late.  To address this, I used a Regular expression to split on the decimal.

    regular expression to split on the decimal

    So, that result is stored into a collection variable as 2;8.  Then, of course, I needed to use a Collection operation to get just the whole number of days, 2, from the collection.  

    Now, I have the number of reminders in a text variable that I can reference in the Flexi task.

     

    The variable "numCollIndex" is just an integer variable with a default value of 0.  I am only using it for this collection operation, so it is always 0 in order to get the number 2 from index 0 of the collection.

    workflow variable config

    Here, the result is referenced in the Number of reminders field for the Flexi task.

    flexi task config2

    This gave me the variable number of reminders without rounding, so if the due date is 1.2 days away, I get one reminder, if it is 2.8 days away, I get 2 reminders.  

    Here are the three actions together, ready to make some magic happen!

    three workflow actions

     

     

    Allow everyone to vote

    The "Request approval" action has a vote option, but unfortunately, it doesn't have the reminders or the escalation options, so this became a challenge and a significant driver of the workflow design.  Ultimately, there are 7 teams that get a vote.  For the most part, there is only one representative, but there may be cases when two people are part of the team.  So, I used SharePoint permissions groups here to make sure the members could be changed easily.

     

    I couldn't use just one Flexi task action assigned to all of the groups, or just one group with all of the members, because it doesn't allow for everyone to vote.  The tasks would close once a majority was reached.  With the all must agree options, the tasks closed when there was disagreement.  Your options are the following:

     

    task behavior options

    When I tried these options, the task would not allow for all responses in the way that we wanted that would be easy to understand for the process owners.  So, after trying a few approaches, I went with parallel actions.  I wanted to do a streamlined, elegant solution, but I opted for clarity and better supportability for my team later.

    Here are a few of the tasks... there are just 7 branches of Flexi tasks.  Since all the votes get tallied, there are no actions in any of the specific branches under the Flexi tasks.  I'll describe what these are doing in the next section.

    parallel flexi tasks

     

    Tally the votes

    The Flexi tasks have the standard Reject and Approve options, and we also need to know when people don't respond before the time to escalation elapses, so the "No Response" outcome is captured in those instances.  The escalation options for the Flexi task look like this:

    flexi task config

     

    A key part is to capture both the outcome and the task id for each of the voters.  We have 7 total, and below is the config for #3:

    task config

     

    After each of the Flexi tasks, I am using a Collection operation to capture all of the task IDs so I can get the specifics later with a list query action.

    collection operation to gather the vote

     

    The Collection operation just adds each task id from the corresponding variable:

     

    Now, we do a For each through the voting tasks in the CollVoteTaskIDs collection.  I did a pause for 5 minutes here to make sure all the updates to the items in the task list were complete before trying to loop through them:

    for each loop through vote tasks

     

    Here is the For each configuration

     

    The Query list

    query list config

    The variable "txtCurrentVoteOutcome" is the "Yes", "No", or "No Response" results for each voting group.  The "perCurrentAssignedTo" is the person who entered the vote.

     

    Next, I am going to get the display name of the person and start creating a multiline of text field, so later on the process owner can get an email with all of the voters and their responses.

    get display name and build string

     

    The Set variable looks like this:

    set variable

     

    And the Build string looks like this:

    build string

     

    Now the tally at the end of the For each... I have 3 variables to store the tallied results, numYesVotes, numNoVotes, and numNoResponse.  The conditions are looking at the variable I got from the Query list action called txtCurrentVoteOutcome.

    tally conditions

    In the first condition, if txtCurrentVoteOutcome = "Approve", the Math operation adds one to the numYesVotes variable.  In the second condition, if txtCurrentVoteOutcome - "Reject", the Math operation adds one to the numNoVotes variable.  If neither of these are true, one is added to the NumNoResponse variable.  Then it goes back to the top of the For each and checks the next one.

     

    After the loop, the tallied votes are put into the fields for the item.

    update item with votes

     

    At the very end is a final approval checkpoint.  This task goes to the process owner before the final "go/no go" meeting.

    This is just a regular Flexi task, but it contains all the voting info in the notification to the process owner.

    final approval email

    it includes a summary of the number of votes along with the outcome of each vote from the multiline of text variable (mtxtVoteOutcome) that was created earlier.

     

    In total, this voting component is part of a pretty large state machine workflow.  The rest of it deals with other parts of the business process, but this voting part was the most complex piece for me to figure out.  Hopefully, it gives you some ideas on a way to handle this if you have a similar scenario.  Happy Nintexing!

    Based on the question Is it possible to look for conflicting schedule in calendar app? risen by Rogelio Tan I've built a small example workflow how to identify overlapping events in sharepoint's calendar list.

     

    Note: workflow works just on simple not recurring calendar events!

     

     

    so this is how the workflow looks like and works.

     

     

    first of all we need to identify set of events that we want to compare.

    so we query a calendar list with some reasonable filtering condition. for this demonstration I haven't used any filters.

     

    we need to query for event's start and end times, plus some event identifier, eg. ID or Title.

    we save values for each queried fields to separate collection variable

    to identify overlapping events, we need to compare them each to other.

    so we will need two nested loops over collections returned from query above.

     

    so we configure first for each loop over ID collection, and save current event's ID value and current index to a scalar variables

    within  the loop, using index variable we do so as well for current event's Start and End times.
    then we will setup second for each loop over the same collection, save values for second event to compare.

    just like for first event we pick Start and End times for second event from source collection.

     

    note the run-if condition at the beginning of loop, which prevents to compare each pair of events twice.

    set a helper variable that will flag whether we identified overlapped events or not

    and proceed to comparison whether we have overlapping events or not.

     

    so first set of conditions.

    second set of conditions
    third set of conditions

    now we are sure whether events overlap or not.

     

    if they do, we will save them to another collection variables.

    we will maintain 6 of them - 3 variables for each of two events.

    the same index position across all the 6 collections will identify data of two overlapping events

    AND WE ARE DONE!

     

    we have data of overlapping calendar events in collections and we can process them further as needed.

     

    for this demo purposes we'll just write them to history log.

     

     

    this is how output might look like:

     

    events in calendar

     

    workflow output

     

     

     

    find the workflow attached.

    tested on NW2013 on-prem

     

     

     

    Hope it helps to someone!

    Here's an insider tip that will open up a world of possibilities for some community members: It's the "actions" link at the top right of most spaces and pages in the community.

    In a space like Getting Started or Nintex For Office 365, you'll see the "actions" button in the banner at the top. Clicking it will reveal the types of content that you're allowed to create in that space.  Permissions are based on your membership type, so you'll only see the types of content you are allowed to create in a given area.

    actionsspaces

     

     

    The same button on a piece of content, such as a blog or a document, reveals different options. Chiefly to "follow" or "bookmark" that document or blog.  Bookmarking will leave a link to that content in your profile page.  Following a piece of content or a user connects you to that person or item. You'll get in-box notifications of activity on that page or done by that person.  

    actionsdocument

     

    To see your connections, visit your profile page (avatar>view profile) and then click the "people" tab and select "following" or "followers." 

    Filter Blog

    By date: By tag: