cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
ITguy
Level: Powered On

Assign Approval to User based off a Value in a Sharepoint List (nested switchcase or If statement?)

Alright guys,

 

I've been trying to figure this one out and had no luck. Man Sad

 

Context:

 

I have a PowerApp where users submit a report (the data from which is uploaded to a Sharepoint list). 

 

When a new list item is added - this triggers an approval flow to the managers. 

 

I have a field in the list called "Branch" that is either East or West. 

 

I want to assign the approval to manager Bob if Branch = East OR manager Ted if Branch = West.

 

Note that this is a chain approval, so once Bob/Ted approves it, it gets approved down the line by several others. 

 

Issue:

 

Is there any way to implement a switch case within the "Assigned to" field of the approval process, or do I have to run parallel branches all the way down based off whether Branch = East/West? I would like to not have to replicate long approval chain branches (this is both tedious and leaves room for error). 

 

**I have tried playing with the if statements/dynamic content in this field to no avail. 

 

Documentation:

 

 Here is an image that shows what is going on - notice how I have to put the switch case before, then replicate the parallel chains all the way down because of having to split into two seperate approvals. Is there anyway I can have a single approval in which the "assigned to" field can be either Bob or Ted based off of the Branch field of the sharepoint list?

 

flow.help.1.jpg

 

 

 

Any help would be appreciated. Man Happy

1 ACCEPTED SOLUTION

Accepted Solutions
Super User
Super User

Re: Assign Approval to User based off a Value in a Sharepoint List (nested switchcase or If statemen

Hi @ITguy

 

I was trying some ideas for your scenario and this is what I was able to get. Hopefully this will either give you what you are looking for or get you close enough.

  • I used the same trigger and action steps you have on your flow.
    AssignApproval-1.JPG

  • Next, I added a "Variables - Initialize variable" step. I set the name to BranchManager and its type to String. You can set anything you want for the variable name.
    AssignApproval-2.JPG

  • Next, I added a Condition to check if Branch Value equals East. In the "If yes" and "If no" condition branches, I added a "Variables - Set variable" in each one. I then set the value to the respective email address the request is assigned to based on the Branch.
    AssignApproval-3.JPG

  • Outside of the "If yes" and "If no" condition, I added the "Start an approval" step. In the "Assigned To" field, I set its value to the BranchManager variable available in the Dynamic content.
    AssignApproval-4.JPG

Below is a screenshot of the complete Flow. Please check it out and let me know if it works for you.
AssignApproval-5.JPG

 

Regards,

Fausto Capellan, Jr


Fausto Capellan, Jr


Did I answer your question? Mark my post as a solution! Did my response help? Please give it a thumbs up!

Proud to be a Flownaut!


View solution in original post

11 REPLIES 11
Super User
Super User

Re: Assign Approval to User based off a Value in a Sharepoint List (nested switchcase or If statemen

Hi @ITguy

 

I was trying some ideas for your scenario and this is what I was able to get. Hopefully this will either give you what you are looking for or get you close enough.

  • I used the same trigger and action steps you have on your flow.
    AssignApproval-1.JPG

  • Next, I added a "Variables - Initialize variable" step. I set the name to BranchManager and its type to String. You can set anything you want for the variable name.
    AssignApproval-2.JPG

  • Next, I added a Condition to check if Branch Value equals East. In the "If yes" and "If no" condition branches, I added a "Variables - Set variable" in each one. I then set the value to the respective email address the request is assigned to based on the Branch.
    AssignApproval-3.JPG

  • Outside of the "If yes" and "If no" condition, I added the "Start an approval" step. In the "Assigned To" field, I set its value to the BranchManager variable available in the Dynamic content.
    AssignApproval-4.JPG

Below is a screenshot of the complete Flow. Please check it out and let me know if it works for you.
AssignApproval-5.JPG

 

Regards,

Fausto Capellan, Jr


Fausto Capellan, Jr


Did I answer your question? Mark my post as a solution! Did my response help? Please give it a thumbs up!

Proud to be a Flownaut!


View solution in original post

Community Support Team
Community Support Team

Re: Assign Approval to User based off a Value in a Sharepoint List (nested switchcase or If statemen

Hi @ITguy,

 

Could you please share a bit more about your SharePoint list?

Which date type of your Branch column in your SharePoint list?

Do you want to add a single "Start an approval" action within your flow?

 

I agree with @faustocapellanj's thought almost, you could also consider take a try with the following workaround:

  • Add a "When an item is created" trigger.
  • Add a "Update item" action, rename it as "Set Request Status as OPEN".
  • Add a "Start an approval" action, Approval type set to "Anyone from the assigned list", Within Assigned to field, type the following formula:
if(equals(triggerBody()?['Branch']?['Value'],'East'),'Test1@xxxxxx.xxxxxxxxxxx.com','Test3@xxxxxx.xxxxxxxxxxx.com')

Note: The Branch column is a Choice type column in my SharePoint list and the value of it is East or West. The "Test1@xxxxxx.xxxxxxxxxxx.com" email address represents the email address of manager Bob, the "Test3@xxxxxx.xxxxxxxxxxx.com" email address represents the email address of manager Ted

 

Image reference:5.JPG

The flow works successfully as below:6.JPG

 

Best regards,

Kris

 

 

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Super User
Super User

Re: Assign Approval to User based off a Value in a Sharepoint List (nested switchcase or If statemen

Hi @v-xida-msft,

 

A different approach with less steps? I like it. Good job!

 

Regards,

Fausto Capellan, Jr


Fausto Capellan, Jr


Did I answer your question? Mark my post as a solution! Did my response help? Please give it a thumbs up!

Proud to be a Flownaut!


ITguy
Level: Powered On

Re: Assign Approval to User based off a Value in a Sharepoint List (nested switchcase or If statemen

@faustocapellanj

 

I ended up using your approach because it came first - it worked very well and I never thought to deliniate the variable in this manner...

 

This is much more efficent than what I was doing before - basically cut my process creation time in half. 

 

As for your approach @v-xida-msft, I am going to try it on my next Flow and see which works better. 

 

Thanks again to you both.

 

****For anybody referencing this in the future... you can use both approaches. 

 

 

mkraus
Level: Powered On

Re: Assign Approval to User based off a Value in a Sharepoint List (nested switchcase or If statemen

In the triggerBody, is that the display name of the column or the Field name?

Super User
Super User

Re: Assign Approval to User based off a Value in a Sharepoint List (nested switchcase or If statemen

Hi @mkraus

 

That is the column name. You can see it is a dropdown since the expression has ['Value'] right after ['Branch'].

 

Regards,

Fausto Capellan, Jr


Fausto Capellan, Jr


Did I answer your question? Mark my post as a solution! Did my response help? Please give it a thumbs up!

Proud to be a Flownaut!


AlanPilz
Level: Powered On

Re: Assign Approval to User based off a Value in a Sharepoint List (nested switchcase or If statemen

Hi @v-xida-msft,

This scenario is very similar to the case I have right now. I have already developed a mulit approval flow that is connected to a SharePoint list. Each approver so far is "hardcoded" as the assignee.

 

I have a new requirement now to add some simple logic that determines the correct approval assignee on one of the approval steps based on classification of the SharePoint list item. The classification is a mandatory field in the sharepoint list and can be Platform, Vehicle or Architecture. Depending on which is selected, a different Project Manager needs to be assigned as the approver.

The case in this thread talks only about two conditions, and to be honest I have not dabbled with the expressions in flow before and a little lost in the syntax. I have written the same logic in an excel formula as follows that works as I need, but need a little help is writing this using the correct syntax required using the expression in flow.

 

=IF(A2="Platform","test1@outlook.com",(IF(A2="Vehicle","test2@outlook.com","test3@outlook.com")))

 

where A2 = Classification Field

 

Your expression is shown as follows, but I am not sure what is triggerBody() and how you build the expression. Do you build using dynamic content or type in manually? The logic structure is the same as my excel formula, just need a little assistance.

 

if(equals(triggerBody()?['Branch']?['Value'],'East'),'Test1@xxxxxx.xxxxxxxxxxx.com','Test3@xxxxxx.xxxxxxxxxxx.com')

 

AlanPilz
Level: Powered On

Re: Assign Approval to User based off a Value in a Sharepoint List (nested switchcase or If statemen

OK,

 

I have got this to work:-

 

if(equals(body('Set_Item_to_Review_and_capture_timestamp')?['Platform_x0020__x002f__x0020_Veh']?['Value'],'Platform'),'test1@outlook.com','test2@outlook.com')

 

But struggling to nest the second if(equals statement in the false logic state. With the error expression is invald.

 I have used the following:

 

if(equals(body('Set_Item_to_Review_and_capture_timestamp')?['Platform_x0020__x002f__x0020_Veh']?['Value'],'Platform'),'test1@outlook.com,if(equals(body('Set_Item_to_Review_and_capture_timestamp')?['Platform_x0020__x002f__x0020_Veh']?['Value'],'Vehicle')'test2@outlook.com',test3@outlook.com')

 

I am sure its just a syntax thing, but can't find a solution. Thanks

 

Super User
Super User

Re: Assign Approval to User based off a Value in a Sharepoint List (nested switchcase or If statemen

Hi @AlanPilz

I haven't tried nested IF statements, but your expression is missing a comma before 'test2@outlook.com' and a parenthesis at the end to close the first IF statement. I updated the expression with the missing elements, so please check it out and compare.

if(equals(body('Set_Item_to_Review_and_capture_timestamp')?['Platform_x0020__x002f__x0020_Veh']?['Value'],'Platform'),'test1@outlook.com,if(equals(body('Set_Item_to_Review_and_capture_timestamp')?['Platform_x0020__x002f__x0020_Veh']?['Value'],'Vehicle'),'test2@outlook.com',test3@outlook.com'))

Regards,

 

Fausto Capellan, Jr


Fausto Capellan, Jr


Did I answer your question? Mark my post as a solution! Did my response help? Please give it a thumbs up!

Proud to be a Flownaut!


AlanPilz
Level: Powered On

Re: Assign Approval to User based off a Value in a Sharepoint List (nested switchcase or If statemen

@faustocapellanj

 

Thanks for the feedback. I tried your suggestion and still have the same issue.

 

I raised a service request with Microsoft on this particular issue after posting this, after a one hour skype meeting explaining my use case the support team came back yesterday and told me that it isn't possible to nest two if statements as I am trying. The only approach provided is to use switch cases and repeat all the follow on approvals and actions multiple times.

 

I will put this forward as an enhancement / idea and hope it gets votes!

 

Alan

Super User
Super User

Re: Assign Approval to User based off a Value in a Sharepoint List (nested switchcase or If statemen

Hi @AlanPilz

I was able to do a Nested IF Statement and here's how I tested it:

I created a Flow with a Manually trigger a flow trigger. I set the input name to Vehicle Type and set it as a dropdown list with the values: Platform, Vehicle, Other.

if-1.JPG

 

I then added a Data Operations - Compose and created the following expression:

if(equals(triggerBody()['text'],'Platform'),concat(triggerBody()['text'],' was selected'),if(equals(triggerBody()['text'],'Vehicle'),concat(triggerBody()['text'],' was selected'), concat(triggerBody()['text'],' was selected')))

Here's the expression breakdown:

First IF Statement and the value to check if it's equals to:
if(equals(triggerBody()['text'],'Platform')
Value If True:
concat(triggerBody()['text'],' was selected'),
Value If False:
if(equals(triggerBody()['text'],'Vehicle'),concat(triggerBody()['text'],' was selected'), concat(triggerBody()['text'],' was selected')))

Of course, the second IF Statement contains it's own Value If True and Value If False. The screenshots below show the output after the successful run for each selected option in the dropdown menu:

 

if-platform.JPGPlatform selected

if-vehicle.JPGVehicle selected

if-other.JPGOther selected

Please give that a shot and let me know.

 

Regards,

Fausto Capellan, Jr


Fausto Capellan, Jr


Did I answer your question? Mark my post as a solution! Did my response help? Please give it a thumbs up!

Proud to be a Flownaut!


Helpful resources

Announcements
thirdimage

Power Automate Community User Group Member Badge

Fill out a quick form to claim your user group badge now!

firstImage

Incoming: New and improved badges!

We've given our badges an overhaul and also added some brand new ones!

fifthimage

Microsoft Learn

Learn how to build the business apps that you need.

sixthImage

Power Platform World Tour

Find out where you can attend!

seventhimage

Webinars & Video Gallery

Watch & learn from the Power Automate Community Video Gallery!

Top Kudoed Authors (Last 30 Days)
Users online (5,336)