Sometimes you get overtaken by reality on the way to the finish line. That actually is true for the fifth and final part of this blog series. When I wrote the first part about one and a half years ago our team was scaling out the usage of PowerAutomate as a gate to RPA and the M365 for our enterprise process automations. By this time we were pretty busy migrating our payloads (~15 Power Platform Solutions) to new Power Platform environments, due to the merger of RTL and Gruner+Jahr.

My initial plan was to showcase some of the enterprise use-cases that we have developed the past 3 years. But as it is with plans: they change. In this case plans have changed, because my team develops enterprise solutions in an agile manner, which includes an inspect and adapt cycle. So a while ago we put our heads together and decided that using the low code environment comes with some disadvantages, we don’t feel too comfortable with, developing enterprise features (e.g. testability, application lifecycle management, parallel development, maturity). So we decided to no longer use PowerAutomate for new implementations, unless there is no way around it, but rather go with pro-code using Apache Camel + Camunda 8.

So i don’t feel comfortable motivating the use of PowerAutomate in the scope of legacy business process automation anymore and I won’t write about that. But don’t get me wrong: The Power Platform by Microsoft is a very powerful tool. We as a team decided that WE don’t want to use it for OUR purposes. You should have a look for yourself. I myself am using it for a couple of use cases. In the following I’ll show you one of them, that makes my life as a corporate employee a bit easier.

Desk booking + Outlook Calendar + Teams Status

Since we introduced a shared desk culture in our company I was facing two issues (potential manual tasks):

  1. When I am working on-site I like to book different desks, so I meet different people. As I book my desks some weeks upfront, when I arrive at the office, I have to figure out which desk I booked a couple of weeks ago. I would like to have this info in my work calendar, as I have my mobile at hand and don’t have to open a laptop to get that information.

  2. When my colleagues want to meet me in person, they have to know where they can find me. Our team decided to put this info in our teams status. (It can be found in the desk booking software too, but the feature is cumbersome to use)

Let’s say each of the manual tasks along the way take me 1 minute. That’s 2 minutes I spend (on pointless tasks) every time I am on-site. Having something like 60 Office days per year, I spend about two hours each year doing things that are repetitive, boring and could be spent adding other value for the company. So one day I skipped my lunch break and created two cloud flows that do this work for me. Let’s have look.

Manage calendar entries for my desk bookings

  1. Trigger: As the desk booking tool we use (vysoft) is based on Sharepoint I can subscribe changes on the list that contains the bookings

  2. Some housekeeping: I fetch some metadata from Azure Entra ID for my account and initialize a bunch of variables

  3. If the change in the booking list was not for me, i terminate the flow execution, otherwise I continue with step 4.

  4. I build the flow in a general fashion, so i could share it with my peers, so i look for a dedicated calendar for desk booking among my Outlook calendars and if there is none I fallback to the default calendar that outlook returned.

  5. Based on the Released property of the booking from Sharepoint I

    1. either create a new calendar entry that contains the booking id in the subject and a readable description that is used for the teams status later

    2. or delete all the events in the calendar that contain the booking id in the subject

This is an event that has been created by this flow:

Set teams status on a daily basis based on automatically created calendar entries

  1. Trigger: This flow is scheduled to run daily at 4am UTC

  2. Create a OData filter query for todays events:

    start/dateTime ge '@{formatDateTime(addDays(utcNow(),-1),'yyyy-MM-dd')}' and start/dateTime le '@{formatDateTime(utcNow(),'yyyy-MM-dd')}'
  3. Use the query to fetch todays events for my dedicated desk book calendar called “Schreibtisch”

  4. Prepare a dynamic text snippet depending on the current day of the week and the calendar entry if we found one

  5. set the teams status, using a workaround, that uses the “Send an HTTP request to SharePoint” action

The Teams status looks like this afterwards:

 

Creating these flows took me ~45 Minutes so the ROI for me was reached very soon.

 

This wraps up my blog series about our automation efforts. And as it turns out, this article also wraps up my personal journey at Gruner+Jahr and RTL as I will soon be leaving the company. Thanks to everyone for reading and especially my team for going on this ride with me for the last 8 years – it was a blast.