{"id":6158,"date":"2021-04-01T10:00:52","date_gmt":"2021-04-01T18:00:52","guid":{"rendered":"https:\/\/officedevblogs.wpengine.com\/?p=6158"},"modified":"2021-04-01T10:00:52","modified_gmt":"2021-04-01T18:00:52","slug":"get-microsoft-graph-change-notifications-delivered-through-azure-event-hubs","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/get-microsoft-graph-change-notifications-delivered-through-azure-event-hubs\/","title":{"rendered":"Get\u00a0Microsoft Graph\u00a0change notifications delivered\u00a0via Azure\u00a0Event\u00a0Hubs"},"content":{"rendered":"<p><span data-contrast=\"none\">We\u00a0are\u00a0excited to announce that\u00a0<\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/graph\/webhooks\"><span data-contrast=\"none\">Microsoft\u00a0Graph change notifications delivery\u00a0through Azure Event Hubs<\/span><\/a><span data-contrast=\"none\">\u00a0is now\u00a0Generally\u00a0Available\u00a0(GA)\u00a0following a successful\u00a0<\/span><a href=\"https:\/\/developer.microsoft.com\/en-us\/graph\/blogs\/announcing-the-public-preview-of-microsoft-graph-change-notifications-delivery-via-azure-event-hubs\/\"><span data-contrast=\"none\">Public Preview<\/span><\/a><span data-contrast=\"none\">.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/event-hubs\/%22%20\/\"><span data-contrast=\"none\">Azure Event Hubs<\/span><\/a><span data-contrast=\"none\">\u00a0is a popular real-time\u00a0event\u00a0ingestion and distribution service built for scale and can be used instead of traditional webhooks to receive change notifications.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">This change notification node will enhance high throughput processes (e.g., subscribing to large sets of resources, subscribing to resources that change with a high frequency, multi-tenant applications that subscribe to resources across a large set of organizations etc.). Developers can take advantage of this service to minimize chances of missing change notifications from Microsoft Graph due to their endpoint downtimes. This change notification delivery mode supports Azure Active Directory, Microsoft Exchange, OneDrive, Share Point, Security Graph, Microsoft Teams conversations, meetings, shifts, and presence status, Microsoft Outlook, To Do, and Universal Print resources.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<h4><span data-contrast=\"none\">Why the change\u00a0notification?<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}\">\u00a0<\/span><\/h4>\n<p><span data-contrast=\"none\">Historically,\u00a0the main delivery modes\u00a0for\u00a0<\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/graph\/webhooks\"><span data-contrast=\"none\">change notifications<\/span><\/a><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"auto\">\u00a0we<\/span><span data-contrast=\"none\">re\u00a0webhooks\u00a0and Delta\u00a0Queries. It can be challenging to take advantage of webhooks\u00a0or\u00a0delta queries\u00a0for high throughput scenarios when the receiver cannot expose a publicly available notification URL.\u00a0\u00a0With this change notification delivery\u00a0mode, notifications\u00a0are\u00a0sent to the provisioned\u00a0Azure\u00a0Event Hub. You can\u00a0therefore\u00a0build an\u00a0Event Hub\u00a0processor\u00a0to receive notifications.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<h4><span data-contrast=\"none\">What\u2019s new?\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/h4>\n<p><span data-contrast=\"none\">Change notifications will continue work the same way for authorization, API contract, and SDK support, and only differ in the following points for Azure Event Hubs:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ul>\n<li><span data-contrast=\"none\">You do not need to implement the\u00a0<\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/graph\/webhooks#notification-endpoint-validation\"><span data-contrast=\"none\">notification URL validation<\/span><\/a><span data-contrast=\"none\">\u00a0anymore.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"none\">You will need to provision an Azure Event Hub.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"none\">You will need to provision an Azure Key Vault.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"none\">You will use the Event Hubs SDK to receive the change notifications.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ul>\n<h4><span data-contrast=\"none\">Getting\u00a0Started<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/h4>\n<p><span data-contrast=\"none\">Please follow these steps to get started:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<ol>\n<li><span data-contrast=\"none\">Register\u00a0your application\u00a0from your Azure portal<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"none\">Configure\u00a0the Azure Event Hub<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"none\">Configure the Azure Key Vault<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"none\">Configure the Azure Storage Account<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"none\">Create the change notification subscription<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"none\">Create and run the Azure Event Hub listener\u00a0to receive\u00a0notifications<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ol>\n<p><span data-contrast=\"none\">Learn\u00a0more\u00a0on\u00a0how you can setup change notification delivery via Azure Event Hubs from\u00a0<\/span><span data-contrast=\"none\">the <\/span><span data-contrast=\"none\"><a href=\"https:\/\/docs.microsoft.com\/en-us\/graph\/change-notifications-delivery\">Get change notifications delivered in different ways<\/a> topic in the Microsoft Graph documentation and let us know what you think!<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">We welcome your feedback, so if you have further questions, you can reach out to\u202fus on\u202four\u00a0<\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/answers\/topics\/microsoft-graph-change-notifications.html\"><span data-contrast=\"none\">Q&amp;A platform<\/span><\/a><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">-The Microsoft\u00a0identity\u00a0platform\u00a0team<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This change notification node will enhance high throughput processes and minimize chances of missing change notifications from Microsoft Graph due to their endpoint downtimes.<\/p>\n","protected":false},"author":69081,"featured_media":25159,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3,5],"tags":[22],"class_list":["post-6158","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft-graph","category-microsoft-identity-platform","tag-azure-ad"],"acf":[],"blog_post_summary":"<p>This change notification node will enhance high throughput processes and minimize chances of missing change notifications from Microsoft Graph due to their endpoint downtimes.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/6158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/users\/69081"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/comments?post=6158"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/6158\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media\/25159"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media?parent=6158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/categories?post=6158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/tags?post=6158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}