1"use strict";(globalThis.webpackChunk_busyapps_site_busymac=globalThis.webpackChunk_busyapps_site_busymac||[]).push([[4047],{22338(e,n,s){s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>t,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"busycalios/using-busycalios-with-office-365-microsoft-graph","title":"Using BusyCal for iOS with Office 365 (Microsoft Graph)","description":"Connect BusyCal for iOS with Office 365 using Microsoft Graph API. Learn how to set up and use Office 365/Microsoft 365 with BusyCal on iPhone and iPad.\\n","source":"@site/docs/busycalios/using-busycalios-with-office-365-microsoft-graph.mdx","sourceDirName":"busycalios","slug":"/busycalios/using-busycalios-with-office-365-microsoft-graph","permalink":"/docs/busycalios/using-busycalios-with-office-365-microsoft-graph","draft":false,"unlisted":false,"tags":[],"version":"current","lastUpdatedAt":1789142568000,"sidebarPosition":25001,"frontMatter":{"slug":"using-busycalios-with-office-365-microsoft-graph","title":"Using BusyCal for iOS with Office 365 (Microsoft Graph)","sidebar_label":"Using BusyCal for iOS with Office 365 (Microsoft Graph)","sidebar_position":25001,"description":"Connect BusyCal for iOS with Office 365 using Microsoft Graph API. Learn how to set up and use Office 365/Microsoft 365 with BusyCal on iPhone and iPad.\\n","keywords":["exchange","microsoft-graph","office 365","office365","ios office 365","ios microsoft graph","busycal ios graph","busycal ios office 365","iphone office365","ipad microsoft graph","ios office 365 graph","ios microsoft 365 graph"]},"sidebar":"docs","previous":{"title":"Using BusyCal with Google","permalink":"/docs/busycalios/70676-using-busycal-with-google"},"next":{"title":"Using BusyCal with Exchange","permalink":"/docs/busycalios/70677-using-busycal-with-exchange"}}');var a=s(31085),o=s(71184);const t={slug:"using-busycalios-with-office-365-microsoft-graph",title:"Using BusyCal for iOS with Office 365 (Microsoft Graph)",sidebar_label:"Using BusyCal for iOS with Office 365 (Microsoft Graph)",sidebar_position:25001,description:"Connect BusyCal for iOS with Office 365 using Microsoft Graph API. Learn how to set up and use Office 365/Microsoft 365 with BusyCal on iPhone and iPad.\n",keywords:["exchange","microsoft-graph","office 365","office365","ios office 365","ios microsoft graph","busycal ios graph","busycal ios office 365","iphone office365","ipad microsoft graph","ios office 365 graph","ios microsoft 365 graph"]},r=void 0,l={},c=[{value:"iOS Office 365 Microsoft Graph Integration",id:"ios-office-365-graph",level:2},{value:"Personal Outlook",id:"personal",level:2},{value:"Setting up Office 365 with iOS and Microsoft Graph",id:"syncing",level:2},{value:"Flagged Emails Appearing as Tasks",id:"flagged-emails",level:2},{value:"Resources",id:"resources",level:2},{value:"Microsoft Teams Conference Calls",id:"teams",level:2},{value:"Shared Calendars",id:"sharedcalendars",level:2},{value:"Group Calendars",id:"groupcalendars",level:2},{value:"Microsoft Graph Limitations",id:"limitations",level:2},{value:"Categories",id:"categories",level:4},{value:"Possibly slow, initial sync",id:"slow-initial-sync",level:4},{value:"Due Times for Tasks",id:"exchange-due-times",level:4},{value:"Sharing Secondary Calendars Limitations",id:"sharing-secondary-calendars",level:4},{value:"Floating Times Unavailable",id:"floating-times",level:4},{value:"Alarm Limitations",id:"alarms",level:4},{value:"Repeating Event Limitations",id:"repeating-events",level:4},{value:"Attachments Limitations",id:"attachments",level:4},{value:"Public Calendars / Folders Unavailable",id:"public",level:4},{value:"Troubleshooting",id:"troubleshooting",level:2}];function h(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h4:"h4",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"In our continuous effort to enhance BusyCal for iOS's connectivity and feature set, we have transitioned our syncing mechanism for Office 365 (Microsoft 365)\naccounts to utilize Microsoft Graph API, Microsoft's latest sync offering. This guide explains how to use BusyCal for iOS with Office 365 through Microsoft Graph."}),"\n",(0,a.jsx)(n.h2,{id:"ios-office-365-graph",children:"iOS Office 365 Microsoft Graph Integration"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Why the Change?"})," Microsoft Graph represents the next generation in Microsoft's cloud services, offering broader capabilities and better\nsecurity than its predecessor, Exchange Web Services (EWS). Microsoft has announced a phased Exchange Online EWS retirement:\ninitial blocking starts on ",(0,a.jsx)(n.strong,{children:"October 1, 2026"}),", with full shutdown on ",(0,a.jsx)(n.strong,{children:"April 1, 2027"}),". By adopting Microsoft Graph, BusyCal for iOS ensures continued compatibility\nwith Office 365 and Outlook."]}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"What's Different?"})," While the core functionality of syncing calendars, events and tasks remains the same, Microsoft Graph enables enhanced\nperformance and compatibility with Outlook and its newest offerings, such as receiving updates from Microsoft Bookings and\ncreating one-click conference calls with Microsoft Teams, features that are otherwise not available via EWS."]}),"\n",(0,a.jsx)(n.p,{children:"For more details, please explore the following:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#personal",children:"Personal Outlook"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#syncing",children:"Syncing Calendars and Tasks"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#flagged-emails",children:"Flagged Emails Appearing as Tasks"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#resources",children:"Resources"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#teams",children:"Microsoft Teams Integration"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#sharedcalendars",children:"Shared Calendars"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#limitations",children:"Understanding Microsoft Graph Limitations"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#troubleshooting",children:"Troubleshooting"})}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"personal",children:"Personal Outlook"}),"\n",(0,a.jsxs)(n.p,{children:["When it comes to personal Outlook accounts, including those on ",(0,a.jsx)(n.code,{children:"outlook.com"}),", ",(0,a.jsx)(n.code,{children:"hotmail.com"}),", and similar non-enterprise services, the integration\nprocess is slightly distinct. Microsoft has phased out basic authentication methods (such as passwords) for these accounts\nin favor of more secure authentication protocols. This change aims to enhance security for personal users by reducing the reliance\non passwords, which are vulnerable to various security threats. As a result, BusyCal's connection to personal Outlook accounts leverages\nmodern authentication techniques, ensuring a secure and streamlined experience for managing your calendars and tasks.\nThis adjustment ensures that personal Outlook accounts benefit from the same robust Microsoft Graph connectivity as enterprise accounts."]}),"\n",(0,a.jsx)(n.h2,{id:"syncing",children:"Setting up Office 365 with iOS and Microsoft Graph"}),"\n",(0,a.jsx)(n.p,{children:"To sync BusyCal for iOS with your Office 365 account via Microsoft Graph, follow these steps:"}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"BusyCal for iOS supports multiple Microsoft Graph accounts of the same type. You can add more than one Office 365 or Outlook account, including accounts from separate organizations, and view them side by side in BusyCal."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.strong,{children:"BusyCal > Settings > Accounts"}),"."]}),"\n",(0,a.jsxs)(n.li,{children:["Tap ",(0,a.jsx)(n.strong,{children:"Add Account"})," to add a new account."]}),"\n",(0,a.jsxs)(n.li,{children:["Tap ",(0,a.jsx)(n.strong,{children:"Connect"})," next to Office 365 (under the Microsoft Graph label) from the list of options, enter your email address, then tap ",(0,a.jsx)(n.strong,{children:"Add"})]}),"\n",(0,a.jsx)(n.li,{children:"Follow any additional prompts to complete the setup. Once configured, BusyCal will begin syncing with your Office 365 account via Microsoft Graph."}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"important",children:(0,a.jsxs)(n.p,{children:["In case you're prompted to provide Admin Consent during the authentication process, you would need to reach out to your\nOffice 365 admin and ask them to grant BusyCal permission to connect to your account. We have detailed\ninstructions on how to ",(0,a.jsx)(n.a,{href:"/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-gra
1ph-api-access-in-busycal",children:"grant BusyCal access using the Azure Portal"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"flagged-emails",children:"Flagged Emails Appearing as Tasks"}),"\n",(0,a.jsxs)(n.p,{children:["Microsoft may include a ",(0,a.jsx)(n.strong,{children:"Flagged Emails"})," task list when you connect your account. Older flagged emails that are still incomplete can then appear as overdue tasks in BusyCal, including after switching from an older Exchange connection. See ",(0,a.jsx)(n.a,{href:"/docs/faqs/outlook-flagged-emails-appearing-as-tasks",children:"Why are old Outlook emails appearing as tasks in BusyCal?"})," to hide this list without changing your Outlook messages or flags."]}),"\n",(0,a.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,a.jsxs)(n.p,{children:["Conference Rooms / Printers and other resources on a Microsoft Graph / Exchange server can be added\nto events in BusyCal as an ",(0,a.jsx)(n.strong,{children:"attendee"}),". Simply typing in the name of the resource will auto-complete the resource\nname for you."]}),"\n",(0,a.jsx)(n.h2,{id:"teams",children:"Microsoft Teams Conference Calls"}),"\n",(0,a.jsxs)(n.p,{children:["You can add one-tap Teams meetings to events / invitations. Simply open ",(0,a.jsx)(n.strong,{children:"BusyCal Settings > View Preferences > Event Details"})," and make sure you have\nenabled the ",(0,a.jsx)(n.strong,{children:"Microsoft Teams"})," option to show. You should now see a ",(0,a.jsx)(n.em,{children:"Add Meeting"})," button appear in the Event Details screen when editing / adding new events.\nTapping on this button will automatically create a conference call (using Teams) and add it to the event."]}),"\n",(0,a.jsxs)(n.p,{children:["Please be aware that this functionality is contingent on specific account settings. It is available for Enterprise Office 365 accounts that\nhave not restricted Teams access via the Office 365 Portal. Additionally, the visibility of this feature depends on\nthe absence of administrative restrictions on your calendar. For those using Personal Outlook accounts,\nlook for the ",(0,a.jsx)(n.em,{children:"Add Skype"})," call option instead, allowing for easy incorporation of Skype calls into your events."]}),"\n",(0,a.jsx)(n.h2,{id:"sharedcalendars",children:"Shared Calendars"}),"\n",(0,a.jsx)(n.admonition,{type:"important",children:(0,a.jsx)(n.p,{children:"Some secondary calendars created a long time ago on Exchange (and still visible via EWS) will not be available via Microsoft Graph.\nOverall however, you should see the same calendars in BusyCal that you do in Outlook, for instance. If there are\nsome shared calendars not syncing through, you may need to separately configure these in BusyCal:"})}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["Open BusyCal Settings, click on the ",(0,a.jsx)(n.strong,{children:"Accounts"})," tab"]}),"\n",(0,a.jsxs)(n.li,{children:["Select the account from the list, then on the ",(0,a.jsx)(n.strong,{children:"Manage Sharing"})]}),"\n",(0,a.jsxs)(n.li,{children:["Enter the email address of the person that has ",(0,a.jsx)(n.em,{children:"shared their calendars with you"})," in the ",(0,a.jsx)(n.strong,{children:"Add delegate"})," field"]}),"\n",(0,a.jsxs)(n.li,{children:["Go back to main Settings and tap ",(0,a.jsx)(n.strong,{children:"Sync Now"})]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["Shared calendars should now appear in the calendar list for this account, which you can manage under Calendar Set settings.\nIn some situations, you may see duplicate calendars in the list for the same user that has shared their calendars with you.\nThis is because the server is syncing these normally as well as separately via the sharing setting. The only workaround is to ",(0,a.jsx)(n.a,{href:"/docs/busycalios/70656-getting-started-with-busycal-for-ios#calendars",children:"edit\nthe calendar"})," and toggle off the ",(0,a.jsx)(n.strong,{children:"Enable Calendar"})," option."]}),"\n",(0,a.jsx)(n.p,{children:"This way you will only see a single shared calendar."}),"\n",(0,a.jsx)(n.p,{children:"In case you're still unable to see certain calendars shared with you, please note that Microsoft Servers treat c
1alendars shared via\nOutlook differently than those shared from the Exchange Portal."}),"\n",(0,a.jsx)(n.h2,{id:"groupcalendars",children:"Group Calendars"}),"\n",(0,a.jsxs)(n.p,{children:["BusyCal supports Microsoft Group Calendars out of the box\u2014no additional setup needed. Any groups you're a member of will\nautomatically appear in the calendar list, typically as a calendar named ",(0,a.jsx)(n.strong,{children:'"Calendar"'}),"."]}),"\n",(0,a.jsxs)(n.blockquote,{children:["\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Note:"})," You may need to remove and re-add your Microsoft account in BusyCal to re-authenticate and grant the additional permission scopes required to access Group information.\nIn case this requires admin-approval, follow our step-by-step guide to ",(0,a.jsx)(n.a,{href:"/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal",children:"grant BusyCal access using the Azure Portal"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"important",children:(0,a.jsxs)(n.p,{children:["Microsoft 365 Group calendars in Graph can be read and written with delegated permissions (for example, ",(0,a.jsx)(n.code,{children:"Group.ReadWrite.All"}),").\nIn BusyCal, availability depends on the permissions granted to the signed-in user and any tenant policy restrictions."]})}),"\n",(0,a.jsx)(n.h2,{id:"limitations",children:"Microsoft Graph Limitations"}),"\n",(0,a.jsx)(n.p,{children:"While the Microsoft Graph API represents Microsoft's latest offerings, it continues to evolve. It offers significant improvements over\nExchange Web Services (EWS) across several fronts, including better security, more flexibility, and broader feature support.\nHowever, the transition towards fully adopting Microsoft Graph in place of EWS is still underway and you may find a few differences.\nThe most glaring worth mentioning:"}),"\n",(0,a.jsx)(n.h4,{id:"categories",children:"Categories"}),"\n",(0,a.jsxs)(n.p,{children:["Outlook categories sync with BusyCal on Office 365 accounts. If a category is added, recolored, or removed somewhere else \u2014 in Outlook on the web, for example \u2014 the change reaches BusyCal within a few minutes. Open Settings and tap ",(0,a.jsx)(n.strong,{children:"Sync Now"})," to pick it up right away."]}),"\n",(0,a.jsx)(n.p,{children:"Microsoft keeps one category list per mailbox, shared by Mail, Calendar, Contacts, and Tasks. A category created by any app on the account appears in every app's category picker, including tags you create in BusyContacts, which sync as categories on that same shared list. This is how Microsoft designed categories to work, so there is no way to keep separate lists per app. Removing a category from the list in Outlook removes it everywhere, though items that carried it keep working normally."}),"\n",(0,a.jsx)(n.p,{children:"BusyCal shows category colors from Microsoft's official category palette \u2014 the same colors classic Outlook for Windows uses. The new Outlook and Outlook on the web display softened, pastel versions of those colors, so a category's exact shade can look a little different between BusyCal and the web. It is the same underlying color. A category with no color assigned appears without a color, and its events simply keep their calendar's color."}),"\n",(0,a.jsx)(n.h4,{id:"slow-initial-sync",children:"Possibly slow, initial sync"}),"\n",(0,a.jsxs)(n.p,{children:["An initial sync can take several hours, and a large calendar with thousands of events may need to run overnight. BusyCal retrieves full event details from Microsoft Graph in batches of up to 20. Microsoft may split the initial event list into many pages or temporarily slow requests, so BusyCal can continue to show ",(0,a.jsx)(n.strong,{children:"Syncing"})," while data is still arriving."]}),"\n",(0,a.jsxs)(n.p,{children:["Events are not guaranteed to arrive in date order, so your calendar may look incomplete until the first sync finishes. See ",(0,a.jsx)(n.a,{href:"/docs/faqs/microsoft-graph-initial-sync-taking-a-long-time",children:"Why is the first Microsoft Graph sync taking so long?"})," for steps to help the sync complete and ways to reduce a large calendar history."]}
1),"\n",(0,a.jsx)(n.h4,{id:"exchange-due-times",children:"Due Times for Tasks"}),"\n",(0,a.jsxs)(n.p,{children:["BusyCal's Microsoft task sync reliably round-trips due dates. For due-time workflows, BusyCal preserves additional task metadata using\n",(0,a.jsx)(n.a,{href:"/docs/busycal/144591-syncing-extended-task-properties",children:"Extended Sync"})," between BusyCal clients."]}),"\n",(0,a.jsx)(n.h4,{id:"sharing-secondary-calendars",children:"Sharing Secondary Calendars Limitations"}),"\n",(0,a.jsx)(n.p,{children:"To share a secondary calendar with someone (in Outlook), you must also share your primary calendar with them, with at least Availability access. Once you\u2019ve\ngranted someone Availability access or higher to your primary calendar, you can share secondary calendars with them."}),"\n",(0,a.jsx)(n.h4,{id:"floating-times",children:"Floating Times Unavailable"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.a,{href:"/docs/busycal/70609-time-zones#option-3",children:"Floating Times"})," are not supported by Exchange. If you create an event in floating time in BusyCal, it appears in GMT time in other apps."]}),"\n",(0,a.jsx)(n.h4,{id:"alarms",children:"Alarm Limitations"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Exchange allows only one alarm per event."}),"\n",(0,a.jsx)(n.li,{children:"Exchange does not allow Alarms to trigger after an event's start time. If you create an alarm that triggers after the start of an event, it is converted to an \u201cAt start\u201d alarm after syncing with Exchange."}),"\n"]}),"\n",(0,a.jsx)(n.h4,{id:"repeating-events",children:"Repeating Event Limitations"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"If you create a repeating event with a recurrence rule that is illegal on Exchange, it is modified during syncing to be compatible with Exchange and your local copy is updated to match Exchange."}),"\n",(0,a.jsx)(n.li,{children:"Exchange doesn\u2019t allow detached events (or alarms) to overlap the next/previous occurrence of the event."}),"\n",(0,a.jsx)(n.li,{children:'Exchange doesn\u2019t allow "undoing" the cancellation or deletion of particular occurrences. If you delete an occurrence in BusyCal and perform undo, Exchange will revert the change during sync.'}),"\n"]}),"\n",(0,a.jsx)(n.h4,{id:"attachments",children:"Attachments Limitations"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Attachments are currently only supported for Events. Support for attachments for Tasks is coming soon."}),"\n"]}),"\n",(0,a.jsx)(n.h4,{id:"public",children:"Public Calendars / Folders Unavailable"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"There does not seem to be a way to explore and subscribe to public calendars / folders at the moment."}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,a.jsxs)(n.p,{children:["If you are unable to connect to your account or you're being prompted for ",(0,a.jsx)(n.em,{children:"Admin Consent"}),", you need to reach out to your Office 365 admin and ask them to grant BusyCal permission to connect to your account. We have detailed instructions on how to ",(0,a.jsx)(n.a,{href:"/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal",children:"grant BusyCal access using the Azure Portal"}),"."]})]})}function d(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},71184(e,n,s){s.d(n,{R:()=>t,x:()=>r});var i=s(14041);const a={},o=i.createContext(a);function t(e){const n=i.useContext(o);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.