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

13 REPLIES 13
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

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

Martin_MC
Helper II
Helper II

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.

LadyAda
Frequent Visitor

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.

diavoloplanas
New Member

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

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

Welcome Super Users.jpg

Super User Season 2

Congratulations, the new Super User Season 2 for 2021 has started!

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
Users online (1,286)