Best Stupid-simple Outlook meeting category automation!

Why is Outlook Rule Wizard not a Stupid-simple Outlook meeting category automation tool! I find the #Microsoft #Outlook Rule Wizard to be outdated and too “static” for any real use… I have been frustrated, annoyed, and super confused on fx. why setting categories based on meeting participants are not posible and therefore need manual effort in setting every day!

I have asked myself many times what is the alternative to automate categories in Outlook and how do I automatically color code Outlook meeting categories?

I have searched for a solution multiple years and ended up given up and refusing to Automatically change Appointment categories by using VBA code or use the build-in #Outlook Rule Wizard is not able to fulfill my requirements.

Last week I woke up the day after having a training session on Microsoft Office Graph and realized I could connect “the dots” in a new way to have #PowerAutomate save my day and set Category to Appointment automatically.

My dream and requirement of setting Outlook meeting category based on email participant list (setting 🟥 = Customer meeting, 🟨=internal meeting, ⬜=own preparation) was made possible due to new action on a not so obvious standard connector… let me explain and show how i did it.

First aha moment – Microsoft Graph

Microsoft Graph is the gateway to data and intelligence in Microsoft 365. It provides a unified programmability model that you can use to access the tremendous amount of data in Microsoft 365, Windows 10, and Enterprise Mobility + Security. Use the wealth of data in Microsoft Graph to build apps for organizations and consumers that interact with millions of users.

Microsoft Graph, Microsoft Graph data connect, and Microsoft Graph connectors enable extending Microsoft 365 experiences and building intelligent apps.

Microsoft Graph exposes REST APIs and client libraries to access data on the following Microsoft cloud services:

  • Microsoft 365 core services: Bookings, Calendar, Delve, Excel, Microsoft 365 compliance eDiscovery, Microsoft Search, OneDrive, OneNote, Outlook/Exchange, People (Outlook contacts), Planner, SharePoint, Teams, To Do, Workplace Analytics.
  • Enterprise Mobility and Security services: Advanced Threat Analytics, Advanced Threat Protection, Azure Active Directory, Identity Manager, and Intune.
  • Windows OS services: activities, devices, notifications, Universal Print.

To find out more, see Major services and features in Microsoft Graph.

An image showing the primary resources and relationships that are part of the graph

For setting Outlook meeting category on Appointments/Events there is a Graph API to use for Outlook Event/Appointment for updates which include the option to set “Catagory” by sending a

HTTPs PATCH request to https://graph.microsoft.com/v1.0/me/events/{id}

with JSON payload

{
“categories”: [“{Catagory name}”]
}

Second aha moment – Have Power Platform call Microsoft Graph

Most Power Platform standard connectors are already configured on top of Microsoft Graph API, but some functions and actions are left out and not exposed as a standard connector… do not ask me why!

This is here where it usually gets “complex” and requires a Custom connector for Power Platform to interact with Microsoft Graph for services not already exposed as standard connectors. After you register your app and get authentication tokens for a user or service, you can make requests to the Microsoft Graph API through a custom connector or an HTTP call, see fx this lengthy guide here Power Automate Flow: Calling MS Graph API – TechNet Articles.

But it is stupid simple now as the standard connector of Office 365 Groups now include (in preview of writing this blog post) an action called “Send an HTTP request” which can Construct a Microsoft Graph REST API request to invoke.

Connector
Best Stupid-simple Outlook meeting category automation! 10
Best Stupid-simple Outlook meeting category automation!
Best Stupid-simple Outlook meeting category automation! 11

Step by Step Guide

I put it all toghter in less than 10 minutes and made below recording for you to follow my steps to reproduce it in your own enviroment. In this example I show how it is posible to set meeting catagory based on if organizer is from own company or an external.

Find it all a bit hard to follow than start one of these Power Platform Hands-on Learning or start reading up on Power Platform App Maker: Exam prep guide PL-100 certification.

End result

After adding a bit of business logic to extract and filter Participant I got my dream furfilled of setting Outlook meeting category based on email participant list (setting 🟥 = Customer meeting, 🟨=internal meeting, ⬜=own preparation)

Best Stupid-simple Outlook meeting category automation!

Tools to snoop around Microsoft Graph

Setting Outlook meeting category is not the only thing possible with Microsoft Office Graph. To see what is possible and try them out there is a Graph Explorer which is a web-based tool that you can use to build and test requests using Microsoft Graph APIs. You can access Graph Explorer at: https://developer.microsoft.com/graph/graph-explorer.

You can either access demo data without signing in, or you can sign into a tenant of your own. Use the following steps to build the request.

The following example shows a request that returns information about users in the demo tenant:

Screenshot of Graph Explorer with a GET user request highlighted

7 thoughts on “Best Stupid-simple Outlook meeting category automation!

  1. Excellent! Works perfectly. I use the trigger “When a new event is created” so that events are categorised immediately.

    By the way somehow “smart quotes” have been applied to your json example.

    1. yes good spotted Patrick. Using the trigger “When a new event is created” would work for some… Unfortunately, it will not be enough for my meeting habits as I start with an internal placeholder meeting that is updated with customer participation at a later stage.

  2. Great implementation however, i’m getting a BadRequest – Unable to read JSON request payload

    “body”: {
    “error”: {
    “code”: “BadRequest”,
    “message”: “Unable to read JSON request payload. Please ensure Content-Type header is set and payload is of valid JSON format.”,
    “innerError”: {
    “date”: “2022-10-06T14:55:24”,
    “request-id”: “e2e5b4fb-772a-413c-beab-fa19e904c063”,
    “client-request-id”: “e2e5b4fb-772a-413c-beab-fa19e904c063”
    }
    }
    }
    }

Leave a Reply