microsoft / hack-together

Hack Together: Microsoft Graph and .NET is a hackathon for .NET developers to learn Microsoft Graph and Microsoft 365.
MIT License
523 stars 85 forks source link

Project: SyncMateM365 #64

Open siddharth-vaghasia opened 1 year ago

siddharth-vaghasia commented 1 year ago

Project name

SyncMateM365

Description

Below is an idea of the gist we are working on :) we have yet not committed anything to the repo.

Problem Statement -

As technical consultant who uses M365 Outlook, we face the challenge of managing multiple accounts for different clients or businesses across various tenants. Synchronizing my calendars across these accounts can be quite a task, making it difficult to keep track of my availability. To put it in Bruce Wayne's shoes, with multiple M365 accounts under different email addresses, this task can be quite daunting. Consider Batman has the following M365 accounts.

Bruce@wayneenterprises.com

Batman@thedarknight.com

Batman@justiceleague.com

Batman@dccomics.com

Bruce@IamBatman.com

Imagine that Superman has sent a meeting request to Batman@justiceleague.com for a specific day and time (9-10 AM), requesting his help in saving Superman's mother from Lex Luthor. As a result, Batman's time in the Justice League calendar is blocked off, and other members such as Flash or Wonder Woman will see him as unavailable during that slot and choose another time for any upcoming meetings.

However, the directors at Wayne Enterprises wouldn't be aware of Batman's ongoing mission to save Martha and could potentially send a meeting request for the same day and time (9-10 AM) to Bruce@Wayneenterprises.com. This is because the slot would appear as available for that email account, even though Batman is already committed to the Justice League's mission. This would be the same for other tenants as well like thedarknight.com, dccomics.com, IamBatman.com

Well, it seems like Batman's schedule is as busy as his crime-fighting nights. Despite his heroic efforts, he'll have to decline the invitation and propose a new time that works for him. I mean, he has to juggle between all his Outlook accounts to find an available slot and let's face it, Batman doesn't have time for that. He's got more important things to do, like perfecting his Batarang throws and maintaining his chiseled abs.

The Solution

This is where the app shines and solves the problem. By signing into the app once with all of your multiple accounts, it will automatically subscribe to your calendar events for each added account. This allows the app to book your calendar time when an event is added, updated, or canceled in any one of your accounts. Here are the details of the app:

The app provides the ability to sign in to multiple Microsoft 365 Outlook accounts, allowing you to view a single calendar view across all your added accounts.

The calendar view includes legends to show events and meetings with distinct color codes, making it easier to differentiate between them. You can also remove any added account whenever you need to.

When an event is booked on one of your calendars, the app will mask the event in all other accounts with specific text, such as "Booked for another meeting." This ensures that cross-tenant data is not shared. Additionally, the app will create a placeholder meeting to prevent others from booking your time during the same slot across tenants.

To get change notifications, the app uses Graph API. It subscribes to changes on Microsoft Graph resources (specifically, on me/events) to ensure that all calendar events are up to date and accurately represented in the app.

Technical details

Below are high-level technical notes.

Future Releases

This can be extended to the below Changes types also

Repo URL

https://github.com/siddharth-vaghasia/SyncMateM365

Team members

siddharth-vaghasia, kunj-sangani, dharati1910, santoshsarnobat

siddharth-vaghasia commented 1 year ago

CC - @kunj-sangani @dharati1910 @santoshsarnobat

waldekmastykarz commented 1 year ago

Awesome idea! Looking forward to seeing it in action 🚀

svrooij commented 1 year ago

This is a great idea a lot of people facing this issue. To give you some ideas, you can check out my event concierge project, that tries to realize the same in Power Automate. I also created a flow chart on how it might work to give you some pointers.

siddharth-vaghasia commented 1 year ago

Thanks for sharing @svrooij - yes, I was doing something similar for while by sending one notification to one of my primary accounts, like sending a notification to teams from Power Automate that a new email arrives so that I can go and check :)...we have made very good progress in terms of implementation, facing some issues with Authentication/Authorization to from Deamon process to make graph calls.....but conceptually we should be able to figure it out....

siddharth-vaghasia commented 1 year ago

Hi @waldekmastykarz - we have a working demo version hosted at https://syncmatem365.azurewebsites.net/ also repo URL - https://github.com/siddharth-vaghasia/SyncMateM365

Please let us know your feedback :)

Awesome idea! Looking forward to seeing it in action 🚀

waldekmastykarz commented 1 year ago

Brilliant! Will check it out! Thank you for sharing it with us!

waldekmastykarz commented 1 year ago

Hey @siddharth-vaghasia, would you mind recording a short video walkthrough of your hack? Any format will work. It's not required for the hackathon but it would help us showcase your work both internally at Microsoft and publicly in the community. 😊

siddharth-vaghasia commented 1 year ago

Hi @waldekmastykarz - here is video https://www.youtube.com/watch?v=_3WvpfGqX54