cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
EJack
New Member

Sending reminder email on the last (working) day of the month?

I'm new to Power Automate, and trying to set up what should be a simple flow. I need to send two reminder emails to managers to check and approve timesheets.

 

The first is every other Friday, the last day of a pay period. This was easy to create using a recurrence and mail.

 

The second is on the last working day of the month, for the close of the fiscal period. Timesheet approvals done outside of a fiscal period cause havoc in our ERP system. This is where I'm running into problems. While tools like Outlook calendar can do recurrences on the last day of the month, this isn't available in the PA recurrence feature.

 

I've searched and found references to code that determines the correct day, but because I'm new at this, I'm not even sure how or where to use that code. Any help with a step-by-step would be greatly appreciated. Thanks!

11 REPLIES 11
Hardesh15
Super User
Super User

@EJack 

 

After daily recurrence, use this condition-

Hardesh15_0-1600870542817.png

 

if last and previous last day of month is saturday and sunday then it is not last working day.

 

Thanks

Hardesh

@Hardesh15 

 

This sort of worked. The problem is the email will be sent every day on the 27th, 28th, 29th, 30th and 31st as long as those days aren't a Saturday or Sunday. I only want it to send once, on the last workday of the month.

 

So... if the 31st is a Sunday, the email would send on the 29th, but not the 28th or 27th.

@EJack 

I found some exceptions in this , will post you complete solution after testing.

 

Thanks

Hardesh

Michal
Kudo Collector
Kudo Collector

@EJack 

Do you need to take into consideration holidays?

@Michal 

 

I hadn't thought of that. Yes, I suppose I should. But at this point, I'll take the flow with or without holidays as long as I can get the email sent on the last working day of the month otherwise.

@EJack 

 

Here is your solution. i have considered all permutation and combination.

Hardesh15_0-1600974633602.png

Hardesh15_1-1600974663627.png

Hardesh15_2-1600974692033.png

Hardesh15_3-1600974715635.png

Hardesh15_4-1600974744022.png

Hardesh15_5-1600974783020.png

 

My Logic- for 31 days month like Jan,March etc if 31st is not saturday and sunday then it is last working day. And if 29 & 30 of 31 days month falls on friday then it is last working day. Same way i did for 30 days month and feb as well.

 

Thanks

Hardesh

 

 

 

 

 

 

@Hardesh15  Let's take it from another side. I found this solution as inspiration and decided to put it into the Power Automate frames. 

 

@EJack , So in short, let's take the 1st day of the next month and count it backward, day by day until you get a working day (dayOfWeek(variables('Date') is not equal 0 or 6). Here is the explanation of the dayOfWeek.

And if you finally get such a day check if this is today. 

Simple, isn't it? 😏

 

I thought so, but end up with a pretty complex flow. 

Here are some pictures. If you need details - let me know. 

Michal_0-1600983258624.png

 

Michal_1-1600983450115.png

The Date variable is initialized with this formula:

 

addDays(startOfMonth(addToTime(utcnow(),1,'Month')),-1)

 

 The Date-1:

 

addDays(variables('Date'),-1)

 

And DayofWeek:

 

dayOfWeek(variables('Date'))

 

 Condition at "Do Until" loop is advanced:

 

@or(not(equals(variables('DayOfWeek'), 0)),not(equals(variables('DayOfWeek'), 6)))

 

And the rest should be pretty straightforward. 

 

Let me know if this works? I have tested a bit with November, as the 1st of November is Sunday, and it looks working. But I might do wrong conditions, so better test different scenarios and don't take it for granted.  

@Hardesh15 

Thanks! There's a lot to this. I'm also wondering what happens when you get to leap year with Feb having 29 days.

 

@Michal 

Thank you as well! I think I like the idea of counting backwards from the first day of the next month. That would seem to work regardless of what month it is an if it was a leap year or not. I haven't had a chance to play with this yet, as it takes my non-programmer brain a little while to wrap my head around it.

 

Is your example sharable? If you have more details on how to recreate those frames, I won't say no. 🙂 

Michal
Kudo Collector
Kudo Collector

Hi @EJack 

I have built, checked, and published the flow. You can download and use the flow from here

Happy flow! 🙂

Wonderful job Michał, just used it!

rziya
Regular Visitor

Came across this post while looking for a solution to the same problem...

 

Shouldn't the code below work with the exception of public holidays... 

 

...If today is a weekday and tomorrow is the first day of next month or

             if today is friday and the first day of next month is the day after tomorrow (sunday) or the next (monday)....

 

Note: for me dayofWeek returns (1...7) for (Monday...Sunday)...

 

or(and(less(dayofWeek(utcNow()),6),equals(dayOfMonth(addDays(utcNow(),1)),1)),and(equals(dayofWeek(utcNow()),5),or(equals(dayofMonth(addDays(utcNow(),2)),1),equals(dayofMonth(addDays(utcNow(),3)),1))))

 

Helpful resources

Announcements
Power Platform Conf 2022 768x460.jpg

Join us for Microsoft Power Platform Conference

The first Microsoft-sponsored Power Platform Conference is coming in September. 100+ speakers, 150+ sessions, and what's new and next for Power Platform.

May UG Leader Call Carousel 768x460.png

June User Group Leader Call

Join us on June 28 for our monthly User Group leader call!

MPA Virtual Workshop Carousel 768x460.png

Register for a Free Workshop

Learn to digitize and optimize business processes and connect all your applications to share data in real time.

Power Automate Designer Feedback_carousel.jpg

Help make Flow Design easier

Are you new to designing flows? What is your biggest struggle with Power Automate Designer? Help us make it more user friendly!

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