I am looking for advises how to wait for all answers from all participants in 'Request Approval' action even if someone says 'Rejected'. Default behavior is no matter what configuration you specify for the action itself it finishes the approval process as soon as someone says Rejected. In theory this behavior might be good, but for our particular case we need to ask people for their feedback (approve/rejected) in our case and get their ALL opinions.
I have tried to use FlexiTask, but it has pretty the same behavior - ends approval as soon as someone says rejected. The only 'out-of-box' option that I can envision right away is to use Assign To-Do task where you can wait to all responses. But in this case instead of 'user-friendly' Nintex approval task form with Approve/Reject and a comments field you get very pure standard form (yeah, SharePoint one, no complains)where you need to answer via 'Edit' action what is very confusing for most of end users. I can modify display/edit forms but it seems to be real over complication for absolutely simple case of parallel approval. One more minus of using ToDo tasks that I have to query tasks list to get results of approval process, but it might be the case that the task has been already deleted by assignee. I can play with security of course, but it looks like artificial complication.
Another option would be to start workflows in parallel for each participant but again it looks more like a work around because you loose transparency of the process....
Just knowing that ToDo task can wait for all replies I do not see any reasons why Request Approval cannot wait for all responses and then decide 'Approved/Rejected' in its logic, so probably I am doing something wrong.
Any ideas are welcome. Thanks a lot for your comments!
P.S. Nintex Workflows for SharePoint 2013.
In the Request Approval action, Approval options, there is an option to "Vote". Why not just use that and set the approvals required to the number of approvers you're sending the task to. That way you're guaranteed to get all the responses.
Hi Brendan, thanks for your idea, but it does not work as I need.
Lets take an example. We have 3 approvers: Approver 1, Approver 2 and Approver 3. I want to know feedback from all of them. It means no metter if Approver 1 says 'Rejected', I want to know other answers as well.
Vote works in another way (at least for me). I put 'Approvals Required' = 3 (or in another way fn-Length(Stakeholders)).
But then if an approver who completes his task first says 'Rejected' all other tasks get canceled and marked as Not Required.
This is improper behavior for my case.
Am I doing Vote config in wrong way?
ok so a little left of centre.. What about assigning an indivdual task to each user via a for each loop (you would need to pop the approvers in a collection) then in the flexi taxi down in advanced, turn the branching off, as so the task gets fired off to each user without waiting for a result. Once that's done build in some logic to then check for answers.. Just an idea
No, it appears it works like the other options that when someone rejects the task, it cancels all the others. I didn't see that in the help documentation so was thinking it would behave differently. I think Dan Stoll's option below may be your best bet.
Hi Dan, thanks a lot for the idea, i think it might work.
UPDATE: no, does not work for me: '' options still wait for a task to be completed .... And it leads to sequential execution and not parallel
Dan, your comment really did help me to find the solution. thanks a lot!
The change comparing to your solution is you do not need to do for each (even with branches disabled for flexi task), because in this case you will need to wait for a task to be completed by first participant before second person would get his task.... But Assign unique tasks for the whole group
So, proper setup for my case is:
1) Use one single Assign Flexi Task with all participants specified, but mark 'Create individual tasks' and in advanced turn branches off
2) When completed just look for tasks with required Workflow Instance ID and check Outcome
Works perfectly fine now.
Thanks a lot once again for the idea. It took quite a while to play with different settings but looks good now
Sorry, guys, my previous comment is absolutely wrong. After additional tests it became obvious that Assign Flexi Task does not wait for all responses anyway - there are plenty of cases that will not work, not matter what options you select. So, after one more day of fighting with absolutely simple parallel approval process the proper solution is found and works as expected. Many thanks to tha author and idea here: Build a Better Nintex Workflow “Assign To-Do Task” Form | TechRhodes
In short words
1) Use Assign ToDo activity, specify all participants and enable 'create individual tasks' option
2) Before that use Request Data activity to customize approval form and to get all benefits similar to Flexi task - delegation, complete button, document details form, etc
2) Wait until all tasks are done and query tasks list using Workflow Instance Id as a filter
3) Analyse results in any ways you want