Power Automate: Pause Weekend Notification and Proceed on Next Weekday

This blog will discuss the way to pause the notification for the weekend. It means it stops the notification for the weekend and continues on Monday to send the notification.

Requirement

We had a requirement to send a notification when the case status is updated to urgent. But the case status is updated to ‘Urgent‘ when the case is not picked up or worked by anyone for 24 hours using the ‘Not Started‘ status. Pause the notification that was specific to the one time zone.

For example, Case created on Friday at 9 AM, Friday evening clocks stop counting and continue Monday at 8 AM. In this case, 24 hours will be calculated as

Fri 9 AM to 6 PM – 9 Hours

Mon 8 AM to 11 PM (Mid Night) – 15 Hours

Case Status will be updated  to Urgent on Monday 11 PM.

Solution

  • Find the Upcoming Friday Evening based on record created date
  • Find the Upcoming Monday Morning based on record created date
  • Calculate the number of hours before the weekend
  • Calculate the number of hours after the weekend
  • Decide whether to change the status

Power Automate Flows

 

We have 2 flows for this use case

  1. Scheduled Flow – Runs every x hours to set the Status to Urgent
  2. Automated Cloud Flow – Runs when the record is modified to send a notification

Now will walk through the flow of each action

Flow 1: Scheduled Flow

Flow Chart to calculate the number of hours Before and after the weekend

Flow Explanation

 

  • Initialize below variables

 

  • List rows and loop through the records

 

  • Find Upcoming Friday and Monday

Need to find upcoming Friday and Monday based on the record created date time. The below section will run for each record to be within each loop.

  • Formulas used to find upcoming Friday and Monday
Set CreatedOn
items(‘Apply_to_each_Account’)?[‘createdon’]
Set Current Time
utcNow()
Compose CreatedOn
formatDateTime(variables(‘CreatedOn’), ‘yyyy-MM-ddTHH:mm:ss.fffZ’)
Compose Current Time
formatDateTime(variables(‘Current Time’), ‘yyyy-MM-ddTHH:mm:ss.fffZ’)
TargetTimeNow
convertFromUtc(variables(‘Current Time’), variables(‘Target Time Zone’))
UpcomingFriday
convertToUtc(formatDateTime(concat(string(addDays(outputs(‘Compose_CreatedOn’),  sub(5, dayOfWeek(outputs(‘Compose_CreatedOn’))), ‘yyyy-MM-dd’)), ‘ 18:00:00’), ‘yyyy-MM-ddTHH:mm:ss’),  variables(‘Target Time Zone’))
UpcomingMonday
convertToUtc(formatDateTime(concat(string(addDays(outputs(‘Compose_CreatedOn’),  sub(8, dayOfWeek(outputs(‘Compose_CreatedOn’))), ‘yyyy-MM-dd’)), ‘ 08:00:00’), ‘yyyy-MM-ddTHH:mm:ss’),  variables(‘Target Time Zone’))
  • Condition Target Time less Than Upcoming Friday
less(outputs(‘Compose_Current_Time’), outputs(‘UpcomingFriday’))

  • Set Before Weekend
div(sub(ticks(outputs(‘TargetTimeNow’)), ticks(convertFromUtc(outputs(‘Compose_Createdon’),  variables(‘Target Time Zone’)))), 36000000000)
div(sub(ticks(outputs(‘UpcomingFriday’)),  ticks(outputs(‘Compose_Createdon’))), 36000000000)
  • Condition Target Time Greater Than Upcoming Monday

greater(outputs(‘Compose_Current_Time’), outputs(‘UpcomingMonday’))
  • Set After Weekend
div(sub(ticks(outputs(‘Compose_Current_Time’)),  ticks(outputs(‘UpcomingMonday’))), 36000000000)

At this time, we have a number of hours before the weekend and after the weekend. So now add both together.

add(if(less(variables(‘BeforeWeekend’),0),0, variables(‘BeforeWeekend’)), variables(‘AfterWeekend’))

Outputs(‘Compose_Total_Hours’)

  • Update the status to urgent when total hours are more than 24 hours

Flow 2: Automated Cloud Flow – Runs when the record is modified to send a notification

 

 

 

 

It’s a very simple flow which triggered when a record is modified and sends the notification

Conclusion

We can calculate the number of hours with no weekend.

Leave a Reply

Your email address will not be published.