Showing results for 
Search instead for 
Did you mean: 
Advocate I
Advocate I

How to use logical IF with string function in Microsoft flow?

I built a flow to abstract a GUID from email body when new emails come in. The email body could contain:





I have built the following expression to extract the GUID


if(greater(indexof(body('Html_to_text'), '***KeyEnd'), 1),
substring(body('Html_to_text'), Add(indexof(body('Html_to_text'), 'KeyStart***'), 11), 36),
substring(body('Html_to_text'), 0, 36))


For the second case, it works. For the first case, it always returns "index out of range" in the substring. Does anyone know why?

Community Support
Community Support

Hi @Gaolai,


Could you please share a screenshot of your flow's configuration?


The issue is confirmed on my side, I think this issue is related to the second parameter within your if() function. But when I add the following formula within a separated "Compose" action, the "Compose" action works well when the email body contains 3932FB4C-0DF5-11E8-A5C3-7804C4623542:





I afraid that this is issue is related to the if() function. In addition, you could consider take a try with the the following workaround as an alternative way:

  • Add a "When a new email arrives" trigger.
  • Add a "Html to text" action, Content field set to Body dynamic content of the trigger.
  • Add a Condition, click "Edit in advanced mode", type the following formula:
@greater(indexof(body('Html_to_text'), '***KeyEnd'), 1)
  • Within "If/yes" branch of Condition, add a "Compose" action, Inputs set to following formula:
  • Within "If/no" branch of Condition, add a "Compose 2" action, Inputs set to following formula:

Image reference:14.JPG

The flow works successfully as below:15.JPGBest regards,




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.

Thanks for your reply. I actually found out where the problem came from, the If operation will evaluate both parameter 2 and 3 no matter if the parameter 1 is true or false.

Thanks @v-xida-msft this fixed my si,milar issue, but is there somewhere I can vote to get the if statement to not require this workaround. 

Helpful resources

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.

Carousel April Dunnam Updated 768x460.jpg

Urdu Hindi D365 Bootcamp

Dont miss our very own April Dunnam’s The Developer Guide to the Galaxy! Find out what the Power Platform has to offer for the traditional developer.

Users online (3,038)