cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
ericonline
Community Champion
Community Champion

Test for Empty Array?

Hello. I'm using the O365Users connector to look up employees in Active Directory. If an employee is NOT in AD, the response is Body: []

I cannot figure out how to determine if "[]" is true using a Condition.

I've tried 10 different Expressions including:

  • empty(array('Search_for_users'))
  • array('Search_for_users', '[]')
  • array('Search_for_users', '/[/]')
  • []
  • '[]'
  • '/[/]'
  • string('[]')
  • and every other iteration I could think of!

flowAd5.png

Can anyone assist?

Thank you

1 ACCEPTED SOLUTION

Accepted Solutions
ericonline
Community Champion
Community Champion

Jeez, this is crazy. Finally got this after spending MANY hours trying every variation...

Apparently taking the Body from Search_for_users and comparing it to an empty() array...

flowAD6.png

Is NOT the same as adding empty() alone...

flowAD7.png

 

This is the type of thing that make learning Flow VERY DIFFICULT.

View solution in original post

22 REPLIES 22
ericonline
Community Champion
Community Champion

Jeez, this is crazy. Finally got this after spending MANY hours trying every variation...

Apparently taking the Body from Search_for_users and comparing it to an empty() array...

flowAD6.png

Is NOT the same as adding empty() alone...

flowAD7.png

 

This is the type of thing that make learning Flow VERY DIFFICULT.

I agree! I ran into the same problem.

I ended up convering the body array to a string and checking if the length was less or eq to 2 ([]):

 

length(string(body('Search_for_users')))

 

Not very elegant but it works for me.

Anonymous
Not applicable

gosh I wish I found this thread earlier... think I've gone through every iteration other than that one

@RezaDorrani also showed me another method for this type of check. Might be of use to folks...

empty(body('Search_for_users')) is equal to true

You don't need to convert to string. you can try use length(body('Search_for_users')) equal 0

Anonymous
Not applicable

Hello! And apologies for hijacking this thread slightly but I have a question on the back of it.

 

You / OP has said "If an employee is NOT in AD, the response is Body: []"

 

However I'm finding that the body for one particular flow / user is [] even though they ARE in AD. And I'm wondering if anyone knows why this might be? I can see the user has a handful of empty data fields within their AD user object (Job Title, Department etc) so my go-to thought is that they are being treated as a non-entity because one of these fields is empty, but I'm not sure if that's definitely the case, or which field if it is the case.

Thank u!, it worked perfectly.

You are correct. Your solution is even better. Thanks. 

Anonymous
Not applicable

Hi,

 

This seems like bug as workaround what I did is create another variable as empty array used that to compare with out value which in our case is body i believe.

 

Heey,

 

I know this is an old issue, but I write this down anyway for people new to this subject.

 

This issue has nothing to do with Flow really and it isn't a bug. The logic you try to apply is incorrect and Flows is correct. The Condition action should have a Boolean (true or false) as input. The function empty(variable x) returns 'true' when variable x is empty or 'false' if it is not empty. In your example you want to check if 'Search_for_users' is empty, but you don’t. You check if the value of ‘Search_for_users’ is equal to the return value of the empty(variable x) function.

 

For example: ‘Search_for_users’ doesn’t have a value (this means it’s value isn’t true or false, but empty). The function empty(‘Search_for_users’) returns true because ‘Search_for_users’ is empty. So what you are asking in your first example is: Is the body of ‘Search_for_users’ equal to the return value of empty('Search_for_users)? NO it isn’t. ‘The body for Search_for_users’ isn’t true but empty. In other words: Is null equal to true --> No it is not.

 

Your second example DOES work because empty(‘Search_for_users’) returns true to the Condition action. In your first example you compare the body value of ‘Search_for_users’ with the return value of the empty() function, which in turn returns false to the Condition action.

 

So your condition should be: empty(‘Search_for_users’) is equal to true.

hi im form mexico im going to try use my best

 

im trying to put this on my flow empty(body('buscar_usuarios_(V2)'))  but always say true i try to use @ but in my flow say that this ewxpression its grong

 

i dont now what to do now 

diavoloplanas_0-1634087304688.png

 

 

i try all the answers in this 

what im doing wrong =(

my result ist not true always its false

diavoloplanas_0-1634088656238.png

 

 

i have this error message

"La función de lenguaje de plantilla "length" espera que su parámetro sea una matriz o una cadena. El valor que se ha proporcionado es de tipo "Object"

 

 

 

Hello diavoloplanas,

 

The error La función de lenguaje de plantilla "length" espera que su parámetro sea una matriz o una cadena. El valor que se ha proporcionado es de tipo "Object" is saying that you gave an object to the length function. However, the length function can only have a string or an array as input. This is logical because the function should be able to count something.

 

String

A string exists out of characters. The string "hello" has 5 characters, so the length function will return 5.

 

Array

An array exists out of elements. The length function counts the number of elements, for example:

["Green", "Blue", "Red"] <-- this array has 3 elements: green, blue and red. So the function returns 3. 

 

Object

For an object there is no way the function understands what the length is because an object can exist out of anything. An object can have multiple properties. For example:

 

{

"Haircolor": "Brown",

"Eyecolor": "Blue",

"Height": 182,

"Age": 33,

"Brothers": ["Jason", "Alex"]

}

 

The properties of this object are: haircolor, eyecolor, height, age and brothers. The length function can count the number of characters in the property haircolor or eyecolor and the number of elements in the property brothers. So you should provide the length-function one of these properties and not the object itself.

 

Empty() function

For the empty() function you can provide an object as a parameter. If the object doesn't have anything (null) the function will return true. If it's not empty (not null) then it will return false. If the empty function tells you that body(buscar_usuarios_(V2)) is empty than the body properly is empty.

 

What to do?

When you run the flow, you can see the output of the Buscar Usuarios (V2) action. Can you please tell me what is in there? That way I might be able to help you.

 

Kind regards,

Civ

I also used length to solve this issue. But, I want to call out that when used on an array, it counts the objects in the array vs the characters. I tested to confirm this by initializing an integer and setting its value to the same function, length(body('Filter_array'))

dangthis_0-1635946457965.png

Which yielded this result

dangthis_2-1635946622781.png

At face value, we see that there is more than 4 characters there. Loading the raw output from the filter array into a JSON viewer, we see there are 4 objects

dangthis_3-1635946785316.png

So to simplify the Flow, you dont have to convert the array to a string, just set your condition to greater than 0

dangthis_4-1635947098150.png

 

Jfranz
Frequent Visitor

Just adding my experience to this since even with all the above awesome information I still struggled. Below is my flow, I have a Get Items that is looking for a specific item in a list. When it doesn't find anything it returns an empty array. So for testing purposes I set my variable to be an array with the results of the filter - that checked out so I created a compose that will return a value of true or false if the array is empty. The function in the compose is 

empty(variables('FilteredArray')) FILTEREDARRAY is the name of my variable. Then in my condition I had to set the outcome of the compose to equal the function false - if I just typed in false it would not work. I think for a cleaner flow I could get rid of the array variable and just achieve this in the condition but it JUST wouldn't go.

 

my workaroundmy workaround

I had a similar issue.  I also recommend checking the "Configure Run After" setting of your Condition Control connector.  In my scenario, the default was for the condition control to only run if the Search for User previous step was successful.   If you want the Condition control to run after Search returns a "user not found", you need to change the Configure Run After setting.   

 

allan_t_0-1697133726739.png

 

The default was to only run after success.  I selected all options, then it ran as expected.  

 

allan_t_1-1697133869321.png

 

 

wcavarra
Regular Visitor

Thank you for taking the time to submit your solution, it was very helpful.

wes_a
New Member

You are better off using the Graph REST API to pull users if possible, Power Automate is a needless waste of time. You can learn Python in the time it takes to figure this out

Thanks for this; saved my bacon! 

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!    This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Community MembersNumber SolutionsSuper UsersNumber Solutions Deenuji 9 @NathanAlvares24  17 @Anil_g  7 @ManishSolanki  13 @eetuRobo  5 @David_MA  10 @VishnuReddy1997  5 @SpongYe  9JhonatanOB19932 (tie) @Nived_Nambiar  8 @maltie  2 (tie)   @PA-Noob  2 (tie)   @LukeMcG  2 (tie)   @tgut03  2 (tie)       Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 2: Community MembersSolutionsSuper UsersSolutionsPower Automate  @Deenuji  12@ManishSolanki 19 @Anil_g  10 @NathanAlvares24  17 @VishnuReddy1997  6 @Expiscornovus  10 @Tjan  5 @Nived_Nambiar  10 @eetuRobo  3 @SudeepGhatakNZ 8     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 3:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji32ManishSolanki55VishnuReddy199724NathanAlvares2444Anil_g22SudeepGhatakNZ40eetuRobo18Nived_Nambiar28Tjan8David_MA22   Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 4:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji11FLMike31Sayan11ManishSolanki16VishnuReddy199710creativeopinion14Akshansh-Sharma3SudeepGhatakNZ7claudiovc2CFernandes5 misc2Nived_Nambiar5 Usernametwice232rzaneti5 eetuRobo2   Anil_g2   SharonS2  

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages

Users online (602)