cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
chandrashekhar
Advocate V
Advocate V

Using AND/OR in same condition

Question: If we are having a condition like "If status equal approved and (  modifiedby equals 'User1' OR  modifiedby equals 'User2')"  how to implement this condition in flow.

 

I have tried  AND / OR condition like below:

 

@or(
equals(body('Update_item')?['Editor']?['DisplayName'], 'Kumawat, Chandrashekhar'),

equals(body('Update_item')?['Editor']?['DisplayName'], body('Update_item')?['Author']?['DisplayName'])
)

 

@AND(
equals(body('Update_item')?['Editor']?['DisplayName'], 'Kumawat, Chandrashekhar'),

equals(body('Update_item')?['Editor']?['DisplayName'], body('Update_item')?['Author']?['DisplayName'])
)

 

and both this works fine.

 

But i want to use OR condition inside AND like below:

 


@and(
     equals(body('Update_item')?['Editor']?['DisplayName'], 'Kumawat, Chandrashekhar [AUTOSOL/PSS/PUNE]'),

@or(
    equals(body('Update_item')?['Editor']?['DisplayName'], body('Update_item')?['Author']?['DisplayName']),
    equals(body('Update_item')?['Editor']?['DisplayName'], body('Update_item')?['Author']?['DisplayName'])
   )
)     // this does not work. please suggest

 

1 ACCEPTED SOLUTION

Accepted Solutions
v-micsh-msft
Community Support
Community Support

Hi @chandrashekhar,

 

Please modify the formula as below:

@and(
     equals(body('Update_item')?['Editor']?['DisplayName'], 'Kumawat, Chandrashekhar [AUTOSOL/PSS/PUNE]'),

     or(
    equals(body('Update_item')?['Editor']?['DisplayName'], body('Update_item')?['Author']?['DisplayName']),
    equals(body('Update_item')?['Editor']?['DisplayName'], body('Update_item')?['Author']?['DisplayName'])
         )
)   

 

There is no need to add another "@" ahead of the or function.

Removing it should make the formula work.

Regards,

Michael

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

View solution in original post

16 REPLIES 16
v-micsh-msft
Community Support
Community Support

Hi @chandrashekhar,

 

Please modify the formula as below:

@and(
     equals(body('Update_item')?['Editor']?['DisplayName'], 'Kumawat, Chandrashekhar [AUTOSOL/PSS/PUNE]'),

     or(
    equals(body('Update_item')?['Editor']?['DisplayName'], body('Update_item')?['Author']?['DisplayName']),
    equals(body('Update_item')?['Editor']?['DisplayName'], body('Update_item')?['Author']?['DisplayName'])
         )
)   

 

There is no need to add another "@" ahead of the or function.

Removing it should make the formula work.

Regards,

Michael

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

View solution in original post

Than you Michael . That worked great!! Thanks a lot!!

Hi,

 

i have a date column in sharepoint list i need to send a mail before 7 days, i am using below formula it is giving error. could you please help me.

 

@and(less(items('Apply_to_each')?['Sp_x00e4_testens_x0020_zu_x0020_'], addDays(utcNow(), 8)),
(greater(items('Apply_to_each')?['Sp_x00e4_testens_x0020_zu_x0020_'], addDays(utcNow(), 6))
)

 

i have tried with equal also, it is not comparing.

@equals(items('Apply_to_each')?['Sp_x00e4_testens_x0020_zu_x0020_'], addDays(utcNow(), 3))

Hi Satya,

 

You can use something like this:

 

use this:

@equals(formatDateTime(item()?['Sp_x00e4_testens_x0020_zu_x0020_'], 'MM/dd/yyyy'), formatDateTime(addDays(utcNow(), 7), 'MM/dd/yyyy'))

 

instead of :

@equals(items('Apply_to_each')?['Sp_x00e4_testens_x0020_zu_x0020_'], addDays(utcNow(), 3))

 

Please refer below link for more detailed approach:

FLOW TO SEND EMAIL WHEN DATE APPROACHES

 

Anonymous
Not applicable

I tried to constuct my formula the same as seen here but it does not work for me.

My flow has the following 2 parallel branches to send an email.  Both have the same AND portion of Status='Pending HR Approval'.

#1 should send email 1 only when the location is Perrysburg or Bridgewater.

#2 should send email 2 if the location is anything other than Perrysburg or Bridgwater (thus NOT Perrysburg or Bridgwater).

 

How it currently works with the formulas below:

1-The problem is that if the location is either Perrysburg or Bridgwater, both email 1 AND email 2 is sent.  This is Incorrect as only email 1 should be sent

2-If the location is anything other than Perrysburg or Bridgwater, email 2 is sent.  This is Correct!

 

#1 

@AND(
equals(body('Get_item')?['Status'],'Pending HR Approval'),
OR(
equals(body('Get_item')?['Internship_x0020_Location']?['Value'],'Perrysburg'),
equals(body('Get_item')?['Internship_x0020_Location']?['Value'],'Bridgwater')
     )
)

 

#2

@AND(

equals(body('Get_item')?['Status'], 'Pending HR Approval'),

OR(

not(equals(body('Get_item')?['Internship_x0020_Location']?['Value'], 'Perrysburg')),

not(equals(body('Get_item')?['Internship_x0020_Location']?['Value'], 'Bridgwater'))

     )

)

@Anonymous Please share a screen shot of the parrallel branch if possible.

Anonymous
Not applicable

Flow1.jpgFlow2.jpg

I'm not sure I can or how it would be helpful to you. The flow scrolls off my screen to the right and you can't see much of the condition because the box is so small.

Is there anything else I can tell you to help?  What would I need to change in the conidtions to make it work?

Hi @Anonymous,

 

1. Do not use parallel branch for this.

2. This is a simple case where: Using case 1 as you mentioned will do the work:

#1 

@AND(
equals(body('Get_item')?['Status'],'Pending HR Approval'),
OR(
equals(body('Get_item')?['Internship_x0020_Location']?['Value'],'Perrysburg'),
equals(body('Get_item')?['Internship_x0020_Location']?['Value'],'Bridgwater')
     )
)

 

3. Add the above condition in "IF" condition, if result is "YES" send "Email1" , for result "NO"  send "Email2".

4. Remove Parallel branch.

 

Let me know for queries, if not clear.

 

Regards,

Chandrashekhar,

Pune, India.

Hi @Anonymous

Just a small advice, regarding your printscreens.

You can hold CTRL and move mouse wheel to make your flow smaller.





Did I answer your question? Mark my post as a solution!

Proud to be a Flownaut!





Anonymous
Not applicable

Thanks for the tip!

Anonymous
Not applicable

Thank you for your response.  The problem is that if I put this into the No part without a condition, this is triggered for other status' (i.e. Status=Denied which I have another branch for).  If I add a condition then I'm in the same boat of not being able to get the condition formula to work.

Can you take a look at my 2 formulas and tell me what's wrong with them?  Why doesn't #1 work?

 

How it currently works with the formulas below:

1-The problem is that if the location is either Perrysburg or Bridgwater, both email 1 AND email 2 is sent.  This is Incorrect as only email 1 should be sent

2-If the location is anything other than Perrysburg or Bridgwater, email 2 is sent.  This is Correct!

 

#1 

@AND(
equals(body('Get_item')?['Status'],'Pending HR Approval'),
OR(
equals(body('Get_item')?['Internship_x0020_Location']?['Value'],'Perrysburg'),
equals(body('Get_item')?['Internship_x0020_Location']?['Value'],'Bridgwater')
     )
)

 

#2

@AND(

equals(body('Get_item')?['Status'], 'Pending HR Approval'),

OR(

not(equals(body('Get_item')?['Internship_x0020_Location']?['Value'], 'Perrysburg')),

not(equals(body('Get_item')?['Internship_x0020_Location']?['Value'], 'Bridgwater'))

     )

)

 

Hi @Anonymous,

 

Change formula 2 to as below:

 

#2

@AND(

equals(body('Get_item')?['Status'], 'Pending HR Approval'),

AND(

not(equals(body('Get_item')?['Internship_x0020_Location']?['Value'], 'Perrysburg')),

not(equals(body('Get_item')?['Internship_x0020_Location']?['Value'], 'Bridgwater'))

     )

)

Keep formula 1 as it is.

 

Check and let me know.

 

Regards,

Chandrashekhar

Anonymous
Not applicable

This worked, thank you!

As soon as I saw it, I knew you were right but I just could not get it.

Hi @Anonymous,

 

You are welcome.

 

Happy to help. Even i am in learning mode.

 

Regards,

Chandrashekhar

Pune, India.

Anonymous
Not applicable

Hi,  this condition is not executing Correctly.

 

@AND(contains(items('Apply_to_each_Attachment_on_the_email')?['Name'], 'txt'),
OR(contains(items('Apply_to_each_Attachment_on_the_email')?['Name'], 'xlsx')))

Hi @Anonymous,

 

1. Mistake - AND/OR can be applied on two statements.   you are using both at the same time.

 

2. Solution:

 

AND :

 

@AND(contains(items('Apply_to_each_Attachment_on_the_email')?['Name'], 'txt'),
(contains(items('Apply_to_each_Attachment_on_the_email')?['Name'], 'xlsx')))

 

OR :

 

@OR(contains(items('Apply_to_each_Attachment_on_the_email')?['Name'], 'txt'),
(contains(items('Apply_to_each_Attachment_on_the_email')?['Name'], 'xlsx')))

 

Please test and let me know for issues.

 

Regards,

Chandrashekhar

Pune, India.

 

Helpful resources

Announcements
Process Advisor

Introducing Process Advisor

Check out the new Process Advisor community forum board!

MPA User Group

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group

V3_PVA CAmpaign Carousel.png

Community Challenge - Giveaways!

Participate in the Power Virtual Agents Community Challenge

Carousel 2021 Release Wave 2 Plan 768x460.jpg

2021 Release Wave 2 Plan

Power Platform release plan for the 2021 release wave 2 describes all new features releasing from October 2021 through March 2022.

Top Solution Authors
Top Kudoed Authors
Users online (2,147)