/
MS Calendar v1

MS Calendar v1

 

Target release

Q1 2020

Epic

 

Document status

DRAFT

Document owner

@Aaron Rothschild (Deactivated)

Designer

 

Tech lead

 

Technical writers

 

QA

 

Objective

  1. Improve the utility of Mattermost in a collaborative environment by letting other MM users know someone is in a meeting or currently unavailable

  2. Demonstrate that Mattermost “works with Microsoft” by embracing Microsoft business users too

Out of Scope

  • A visual view of a user’s calendar in Mattermost

  • Connecting with Microsoft On-Prem/Hosted Exchange servers. This project works with MS graph API - which is not supported by MS Exchange. We are designing the code to allow other calendar systems to be added/used in the future. There are some On-prem/Integration gateways that may allow us to connect with MS Exchange servers using a common API in the future.

  • Allowing a user to manually update their status (Custom Status) within the MM UI.

NOTE: Manual Custom Status is a different “project” handled by the Apps team (ie: “Hey I’m on vacation till Jan 3rd”) tentatively planned for 2H 2020. This MS Calendar integration project will only cover allowing a user’s MM online/offline status to be automatically updated based on their Meetings/OOO.

 

Opportunities with this Project:

  1. Understand the Microsoft development environment and challenges with On-prem deployment, etc. for future microsoft projects.

  2. Leverage the slash command auto-complete functionality to help users with slash command usage

  3. Explore what needs to be improved in the “Mattermost Status” area….customers often request the ability to set a custom status message. We may need to revisit the code architecture as part of this project. The user status code path is one of the most touched on the platform.

Interested Customers:

  • CBA, Cooley,Expeditors, Illumina, SecureWorks, Spiria, Tesco, UTC

Primary Use Cases

  • When someone is OOO, they want to have their status in MM listed as something like “Out of Office” or “In a Meeting” if there is a calendar event/OOO flag on their exchange server account so other team members know of their status and when they can reach out to them again.

  • Allow users to Accept/Decline meeting invites from within a chat window/Bot Conversation so they don’t need to leave Mattermost for common tasks.

  • Notify users of their upcoming workday and plan (accept/decline)

  • Notify user of upcoming appointments so they can remain on time for meetings during the day

Success metrics

Goal

Metric

Goal

Metric

Demonstrate that Mattermost has over 20 customers using Microsoft with MM

Track over 20+ MS Calendar plugin activations in first 2 months of release

MS Calendar Adoption rate average >25% of active MM users on a server

Track the number of authenticated users (MS) vs current number of MM users on that server

Increase usage of slash commands and completion rate

Track how many events are created via slash command

??? Add.

 

Assumptions

  • This integration is designed for companies using Office 365 Calendar. MS Exchange is out of scope.

  • Assume that there will relatively high adoption of this plugin within an organization because…everybody has calendars. Not everyone uses Jira.

  • Not all users will be familiar with command line/slash commands for common tasks

Requirements

Requirement

User Story

Importance

Jira Issue

Notes

Requirement

User Story

Importance

Jira Issue

Notes

1

Update the status of a MM user when they are in a meeting

HIGH

 

 

2

 Update the status of a user when they are scheduled to be OOO

 

 

 

 

3

Allow a user to create a simple calendar event from MM

 

low

 

 

4

Display the user’s “day at a glance” in a bot channel

 

 

 

 

5

Allow users to Accept/Decline incoming invitations

 

 

 

 

6

 

 

 

 

 

User interaction and design

 

Updated design Document located Here

 

Welcome to CalendarBot

Consideration: When a user first is made aware of the plugin.

How can we help the integration capability “spread” across users within MM so more of them are aware of the benefits and also that it’s available to them to use. They just need to connect their account.

Welcomebot: First bot Conversation that is presented to a user - (perhaps the admin needs to “launch” the welcome message for their users as part of deployment?):

 

Microsoft Permissions Landing Page

After clicking “click here” they are brought tothe Authentication screen (which we have little control over - provided by MS)

(insert approval screen here)

 

After initial connection to Calendar:

Location: CalendarBot channel

We need to inform the user what we are going to be doing with their statuses…

 

Updating the User’s Status

We can let them be notified whenever we change the status, OR just do it!

When we are about to go to modify their status, we can notify them with a message that looks like this:

The options “don’t update status this time” allows the user to remain “available” as a status if they aren’t planning to actually attend the meeting for example.

Dynamic Text: The status text could be “In a Meeting until 10am” which is automatically generated by the end time of their meeting. This would obviously be timezone specific to the user.

Questions:

  • What are the “rules” for updating a user’s status?

    • set it back to what it was before? What if they change it while in the meeting?

  • Meeting conflicts vs OOO status

  • Once a meeting has ended, it takes you back to original status. Perhaps, check to see if status has changed since the beginning of the meeting before updating the status to ensure it doesn’t overwrite a user’s manually set status.

  •  

 

When a new Invitation arrives - Accept/Decline

When a new invitation comes in, we should show the user how that new invite relates to the rest of their currently scheduled day so they can decide if it makes sense to accept the request. We should provide them the options Yes/No/Maybe, but is there a way we could also let them send a note or a message asking for a slightly different time, etc. ?

Important: Present the user with the calendar events surrounding the new event.

 

My Daily Calendar View

Similar to how Github bot knows when you start using MM, the Calendarbot should “wake up” and do a check every morning for the user and produce a “daily agenda” for the user. If there are any meetings they haven’t accepted yet, make it easy for them to accept/decline and plan out the rest of their day. A link to their native calendar makes it easy for them to get to extra functionality only available in the MS Calendar (find other people’s times, invite others, etc.).

Questions:

  • How will we present this in a slack attachment?

  • Can we use links?

  • What is the mobile experience for accept/decline?

  • Can we have a different experience for mobile vs desktop using plugins? @Christopher Speller @Elias Nahum @Jesse Hallam Any thoughts?

Notification of an upcoming meeting

When a calendar meeting is about to happen, notify the user that it is upcoming.

(QUESTION: How can a user set their notification preferences? This could get annoying BUT we have had users request it!)

User Options/Settings

We should present the user with some ways to set their preferences for the behavior of the bot. Currently this may need to be set by a slash command.

Idea:

  • Display it on a webpage served up by the plugin (ie: the landing page the plugin serves up)

  • GREAT idea: Consider using the RHS to display settings in the context of the user’s current location in the app

    • Doesn’t work on mobile, but that may be OK

Creating a new Calendar Event

A user can create a new calendar event witht he following slash command /office cal new

 

Possible Slash Commands

  • Authentication - /office connect

  • /office cal help

  • /ocal connect

  • /ocal status (synchronization)

  • /ocal today

  • /ocal notifications (may be big project)

  • Subscriptions:  Accept/Decline (options for / command needed?)

UI Considerations:

How do we expose the user’s status in the app better?

Asaad had this idea:

 

Open Questions

Question

Answer

Date Answered

Question

Answer

Date Answered

Where will we let the user store their preferences?

Tabs in the UI? Slash command? Modal window?

 

 

Related content