Alikutty A
Tera Sage

 

Parallel approvals have been a very common thing in the world of workflows. Today, if you try to configure the same in a flow designer, you might face a lot of issues in setting it up within a flow. Yes, You are hearing it right! Parallel approvals does not work in the flow designer and you could read several posts/workarounds in the community regarding the topic.

 

As it happened, I had to implement a similar requirement and had chance to explore all possible workarounds and I am sharing my experiences around it in the blog. Searching across community, you could find several different approaches around parallel approvals. A lot of them talk about using the Ask for Approval action and to setup multiple approvals rules of type ‘Anyone approves’ or ‘# of users approve’. This configuration does work if you have a single approver listed in the data pill but fails badly if you have more than one approver and you try to reject or approve the request.

 

AlikuttyA_0-1671557904299.jpeg

 


My scenario was a very dynamic use case with multiple approvers and I was not able to use this option. Another common approach discussed was around calling workflows within a flow as a solution. This work properly as the execution of parallel approvals were taken care by workflows. I was again unable to use this approach as it defeats the whole purpose of migrating towards flow which was a primary goal of my requirement.

 

There are also posts mentioning about using the ‘Do the following in parallel’ flow logic but this option is straightaway not working in the platform.

AlikuttyA_1-1671557904364.png

 

 

I had multiple incidents opened with ServiceNow support and understood this to be an issue with the original design of flows and it would require a major change to fix it permanently. Based on my understanding, flow engine treats an approval record to be tied to a single task record and whenever you approve/reject it, the entire set of approvals associated with the task are considered to be no longer required and ignored. Originally this was supposed to be fixed in Tokyo but further incidents with support has revealed that it may get delayed to either in Utah or later release.

 

Before I end, there is still a workaround that could be used for unavoidable cases which does take care of the highlighted issues but it has certain drawbacks as well. You will need to create a temporary task record and then associate it to the approval. Each parallel approval should be tied to a separate task within ‘Do the following in parallel’ flow logic and then requested for approval. This will ensure that approvals are tagged to different task records and it work parallelly as expected. Of course, you will have to manage the drawbacks of dealing with the temporary task closure and also around the approval visibility on the request. This is not a recommended approach but a workaround provided by ServiceNow until the actual issue is fixed.

 

AlikuttyA_2-1671557904364.png

 

 

Comments
kvprasanna
Tera Contributor

@Alikutty A , Can you please elaborate more on Actions - Create Task record and Ask for Approval 

Alikutty A
Tera Sage

Try setting the Approval field as empty in the flow, this is the latest workaround that works for me

Elizabeth Hemon
Tera Contributor

Thank you SO much for posting this. I just ran a quick test with approval field empty and it worked! This has been a serious pain point for us that is resolved. Any downstream effects from removing the approval field?

rznesq
Tera Contributor

I'm having the same problem, I'm trying to run a parallel approval flow with 3 different approvals, I just managed to make it work with the approval field - approval set. but I don't know if this can cause some kind of downstream

Alikutty A
Tera Sage

@Elizabeth Hemon  @rznesq This is official workaround from ServiceNow listed in one of flow designer platform academy sessions. So I assume no impacts and it has been working for me since some time. 

jagabandhu padh
Tera Contributor

Hi @Alikutty A @rznesq @Elizabeth Hemon 

 

Can you tell me how you are making the approval field as empty . i tried to use "update record" action to make it empty or NULL but the value is getting updated to "not yet requested" (default value) after some time . in the " parallel action " logic only using "update record" action which is not working and making the field as empty .

 

also i have tested in Vancouver and can see still this issue persists any idea when it will be fixed .

 

Thanks 

Jaga

Keerthi Lakshmi
Tera Contributor

I cannot find create task record. What do you mean by empty approval field.

Keerthi Lakshmi
Tera Contributor

Under the Req the temporary RITM cannot be found. Only in the flow context I can be able to find.

 

Community Alums
Not applicable

To avoid this error, dont use "Ask for approval" action instead use create record on approval table, add wait for condition to check state change.

 

Screen Shot 2024-03-01 at 7.38.31 PM.png

_Damian
Tera Contributor

@Community Alums this is fine for singel user approval but thats not gone work  for group approval. 

Community Alums
Not applicable

Why it wont, we are creating record in approval table, so should work for group approval too.

_Damian
Tera Contributor

Because for group you will need to create for example 10 approval records for each user and later on "watch" all of them...  but on your example you are "watching" only one.  

Ron Legters
ServiceNow Employee
ServiceNow Employee

Several folks are asking how to set the Approval field empty. It's a property of the Ask for Approval action:

RonLegters_0-1711132850663.png

 

Vikasgc
Tera Contributor

@Alikutty A  it won't work for more than 2 or more l,this approach not best practice for multiple  approval 

umaa
Tera Explorer

I Tried making approval field empty, with foreach loop , but it still waits on first approval record only 😞

yvonne007
Tera Contributor

As well as blanking the Approval Field. I was able to get parallel group approvals working by creating a new subflow and adding the Ask for Approval action there. The Input is just the existing change record.

RajiniM
Tera Expert

Marking the approval field empty worked for me, but there is an another issue. If anyone rejects, it doesn't cancel the request instead waiting for other approvals to be approved. But we want to close/cancel the request if anyone rejects.
Our requirement is to send simultaneous approvals, wait for all approvals to be approved, then create a task and if anyone rejects directly cancel the entire request and end flow.
Both options have an issue. Any workaround please.

 

awesomethan
Tera Expert

@RajiniM 

 

i am having the same exact issue. my flow needs to end as soon as the approval is rejected. did you ever find a work around?

RajiniM
Tera Expert

Hi @awesomethan 
Yes I did, I have used scripted approvals and flow variables. It worked as expected.

 

RajiniM_0-1754626572507.png

Reference:

https://www.servicenow.com/community/workflow-automation-blogs/scripted-approvals-in-flow-designer-w...

PattenM1
Tera Contributor

I created approval subflows that check if the requestor is in the approval group, etc. By calling a subflow you can run them in parallel and include 'wait for completion' on the subflow.

 

edit: I actually found a really good discussion on approval processes in the Digital Services Forum July 6th 2023. 

Version history
Last update:
‎12-20-2022 09:43 AM
Updated by:
Contributors