{"id":440,"date":"2019-02-20T00:00:00","date_gmt":"2019-02-20T07:00:00","guid":{"rendered":"http:\/\/officedevblogs.wpengine.com\/?p=440"},"modified":"2022-03-22T12:34:03","modified_gmt":"2022-03-22T19:34:03","slug":"microsoft-graph-or-azure-ad-graph","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/microsoft-graph-or-azure-ad-graph\/","title":{"rendered":"Microsoft Graph or the Azure AD Graph"},"content":{"rendered":"<div id=\"body-content\">\n<p><strong>UPDATE March 1, 2022:<\/strong><\/p>\n<p>Please note that we have postponed the retirement date for Azure AD Graph. The Azure AD Graph retirement date will be postponed through at least the end of 2022. For the most up to date information about end of support for Azure AD Graph, please read the blog post: <a href=\"https:\/\/nam06.safelinks.protection.outlook.com\/?url=https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-active-directory-identity%2Fazure-ad-change-management-simplified%2Fba-p%2F2967456&amp;data=04%7C01%7Clauragra%40microsoft.com%7Cfbc8124d5c074b099df108da0c3a4aff%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637835741812830827%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=tR4YBSl8BSvO91wD2kU8%2BaiVuW38Gh5FkbRv41rC4iI%3D&amp;reserved=0\">Azure AD: Change Management Simplified &#8211; Microsoft Tech Community<\/a>.<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>Howdy folks,<\/p>\n<p>We\u2019ve seen a few posts recently on Stack Overflow from developers asking whether they should be using\u00a0<a href=\"https:\/\/developer.microsoft.com\/graph\">Microsoft Graph\u00a0<\/a>(developer.microsoft.com\/graph) vs\u00a0<a href=\"https:\/\/msdn.microsoft.com\/Library\/Azure\/Ad\/Graph\/howto\/azure-ad-graph-api-operations-overview\">Azure AD Graph<\/a>\u00a0(graph.windows.net).\u00a0 So we thought we\u2019d provide some guidance, as well as a bit of a roadmap to clarify things, for new and existing developers who require directory-based features.\u00a0<strong>In general, we recommend the use of Microsoft Graph over Azure AD Graph, as Microsoft Graph is where we are investing for Microsoft cloud services.<\/strong><\/p>\n<p><strong>Roadmap for AAD Graph and Microsoft Graph<\/strong><\/p>\n<p>First of all, we&#8217;ll lay out the roadmap for Microsoft Graph (as it is related to Azure AD Graph functionality).\u00a0 In each of the sections below we&#8217;ll also highlight the opportunities and implications for developers.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Two endpoints, different functionality<\/strong><\/p>\n<p>Currently (as of February 2019) Microsoft Graph supports most of the directory features that Azure AD Graph supports, but not all.\u00a0 In some cases, Microsoft Graph supports functionality that is not in Azure AD Graph (such as ability to make $select projection queries).<\/p>\n<p>Even with those gaps, we <strong>strongly<\/strong> recommend that developers start using Microsoft Graph over Azure AD Graph, unless those specific gaps prevent you from using Microsoft Graph right now.\u00a0 For a list of the high level gaps, as of February 2019, please see the end of this blog post for more details.<\/p>\n<p><strong>Microsoft Graph closing the gap with Azure AD Graph<\/strong><\/p>\n<p>The Microsoft Graph team is working hard to close the gap between Microsoft Graph and Azure AD Graph functionality, making it easier for developers to choose Microsoft Graph.\u00a0 We will also start to introduce newer directory features on Microsoft Graph (and in some cases\u00a0<strong>only<\/strong>\u00a0on Microsoft Graph).\u00a0 You\u2019ll start to see the gap closure and new features over the coming months.\u00a0 Please monitor both\u00a0<a href=\"https:\/\/developer.microsoft.com\/en-us\/graph\/blogs\/\">http:\/\/developer.microsoft.com\/graph\/blogs<\/a>\u00a0and the Microsoft Graph\u00a0<a href=\"https:\/\/developer.microsoft.com\/graph\/changelog\">changelog<\/a>\u00a0to see this happen real-time so to speak!<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Microsoft Graph supports all functionality exposed by Azure AD Graph<\/strong><\/p>\n<p>At some point in the near future (we hope within 6 months) Microsoft Graph will support <strong>all<\/strong> functionality that Azure AD Graph offers (and more).\u00a0 At this point developers building new apps (or integrating an existing app with Microsoft cloud services) will be directed to use Microsoft Graph in favor of Azure AD Graph.<\/p>\n<p><em>Update 2\/20\/2019: Starting February 23<sup>rd<\/sup> 2019, we will prevent newly registered apps from calling three older Azure AD Graph versions 0.5, 0.8 and 0.9. All scenarios in these versions are fully supported in Microsoft Graph. For existing apps calling the AAD Graph 0.5-0.9 versions you have until July 1, 2019 to migrate your app to Microsoft Graph API as these versions will be deprecated. \u00a0<\/em><\/p>\n<p><strong><em>NOTE:\u00a0\u00a0<\/em><\/strong><em>As we start removing support for non-GA versions of Azure AD Graph (versions 0.5-0.9) we will deprecate additional GA versions in the future. We urge developers to migrate to Microsoft Graph. Regardless, the Azure AD Graph GA endpoint will remain fully available for all applications including production applications.\u00a0 We will continue to closely monitor this API, fix service issues and strive to continue to provide 99.99% service availability.<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>For developers with existing apps that call Azure AD Graph, we will provide guidance for those who want to switch their apps over to Microsoft Graph (from Azure AD Graph).\u00a0 Additionally, we\u2019ll do it in such a way that existing users for your applications won\u2019t need to re-consent to your application to access directory data through Microsoft Graph.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Client libraries<\/strong><\/p>\n<p>While we continue to support the Azure AD Graph client library, this is only available for .Net applications and it is maintenance mode.\u00a0 On the other hand, Microsoft Graph client libraries are available on <a href=\"https:\/\/developer.microsoft.com\/en-us\/graph\/code-samples-and-sdks\">multiple platforms and languages<\/a>, that enables you to have more choice in how you can use directory data in apps for your customers.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>We&#8217;d like to hear from you<\/strong><\/p>\n<p>We hope this post clarifies the future of both Microsoft Graph and Azure AD Graph, and how you should think about developing against these APIs.\u00a0 In general, we recommend the use of Microsoft Graph over Azure AD Graph, as Microsoft Graph is where we are investing for Microsoft cloud services. As always, we\u2019d like to hear what you think of our roadmap plan.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Gaps between Microsoft Graph and Azure AD Graph<\/strong><\/p>\n<table border=\"1\" width=\"810\">\n<tbody>\n<tr>\n<td width=\"450\">\n<p class=\"\"><strong>AAD Graph Capability<\/strong><\/p>\n<\/td>\n<td width=\"450\"><strong>Status in Microsoft Graph (February 20, 2019)<\/strong><\/td>\n<\/tr>\n<tr>\n<td class=\"\" width=\"450\">1. Differential query (aka delta sync) for users, groups and organizational contacts<\/td>\n<td width=\"450\"><strong>GA availability<\/strong>\u00a0with\u00a0<a href=\"https:\/\/developer.microsoft.com\/en-us\/graph\/docs\/concepts\/delta_query_overview\">Delta Query<\/a>.<\/p>\n<p>Delta query on organizational contacts is not available but is planned (see below).<\/p>\n<p>Sync from now and some other new capabilities like scoping filters (track changes on one or more users or groups) are supported in Delta Query.<\/td>\n<\/tr>\n<tr>\n<td width=\"450\">2. Organizational contact resource type<\/td>\n<td width=\"450\">Preview <a href=\"https:\/\/docs.microsoft.com\/en-us\/graph\/changelog#december-2018\">recently updated<\/a> with a restructured resource, as we ready for release to GA, very soon.<\/td>\n<\/tr>\n<tr>\n<td width=\"450\">3.\u00a0\u00a0\u00a0\u00a0 Management of applications including:<\/p>\n<p>a. \u00a0 Application and service principal entity types<\/p>\n<p>b. \u00a0 Managing assignment of applications to users and groups<\/p>\n<p>c. \u00a0 Assigning OAuth permissions to apps<\/td>\n<td width=\"450\"><a href=\"https:\/\/docs.microsoft.com\/en-us\/graph\/api\/resources\/application?view=graph-rest-beta\">Application<\/a> and <a href=\"https:\/\/docs.microsoft.com\/en-us\/graph\/api\/resources\/serviceprincipal?view=graph-rest-beta\">service principal<\/a> are available in preview.<\/p>\n<p>Extensive breaking changes are planned over the coming few months for application APIs, in preview, before this rolls out to Microsoft Graph v1.0.<\/td>\n<\/tr>\n<tr>\n<td width=\"450\">4.\u00a0\u00a0\u00a0\u00a0 Partner admin on behalf of capability (for resellers and syndicators who are part of the\u00a0<a href=\"https:\/\/partner.microsoft.com\/en-US\/cloud-solution-provider\">Cloud Solution Provider program<\/a>)<\/td>\n<td width=\"450\"><strong>GA availability<\/strong>.\u00a0 See\u00a0<a href=\"https:\/\/developer.microsoft.com\/en-us\/graph\/docs\/concepts\/auth_cloudsolutionprovider\">CSP support in Microsoft Graph<\/a>.<\/td>\n<\/tr>\n<tr>\n<td width=\"450\">5.\u00a0\u00a0\u00a0\u00a0 Domain resource type (mainly relevant for Cloud Solution Providers)<\/td>\n<td width=\"450\"><strong>GA availability<\/strong>. See\u00a0<a href=\"https:\/\/developer.microsoft.com\/en-us\/graph\/docs\/api-reference\/v1.0\/resources\/domain\">Domain<\/a>.<\/p>\n<p class=\"\">This now includes the ability to forcefully delete a domain.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"450\">6.\u00a0\u00a0\u00a0\u00a0 Contracts resource type (only relevant for Cloud Solution Providers)<\/td>\n<td width=\"450\"><strong>GA availability<\/strong>. See\u00a0<a href=\"https:\/\/developer.microsoft.com\/en-us\/graph\/docs\/api-reference\/v1.0\/resources\/contract\">Contract<\/a>.<\/td>\n<\/tr>\n<tr>\n<td width=\"450\">7.\u00a0\u00a0\u00a0\u00a0 Registering directory schema extension definitions<\/td>\n<td width=\"450\"><strong>GA availability.<\/strong>\u00a0Extending resources with application data is available with\u00a0<a href=\"https:\/\/developer.microsoft.com\/en-us\/graph\/docs\/concepts\/extensibility_overview\">Extensions<\/a>\u00a0and schema extensions.<\/p>\n<p>NOTE: Not available for extending application or service principal resource types.<\/td>\n<\/tr>\n<tr>\n<td width=\"450\">8.\u00a0\u00a0\u00a0\u00a0 Batching<\/td>\n<td width=\"450\">Available in\u00a0<strong>preview.\u00a0<\/strong>See\u00a0<a href=\"https:\/\/developer.microsoft.com\/en-us\/graph\/docs\/concepts\/json_batching\">JSON batching<\/a><\/td>\n<\/tr>\n<tr>\n<td width=\"450\">9.\u00a0\u00a0\u00a0\u00a0 Missing properties on the User resources (sipProxyAddress, otherMails, licenseDetails)<\/td>\n<td width=\"450\"><strong>GA availability<\/strong>: See\u00a0<a href=\"https:\/\/developer.microsoft.com\/en-us\/graph\/docs\/api-reference\/v1.0\/resources\/user\">User<\/a>.<\/p>\n<p>This was <a href=\"https:\/\/docs.microsoft.com\/en-us\/graph\/changelog#january-2019\">recently updated<\/a> to add otherMails, faxNumber, employeeId and other properties. With the exception of managing users in a B2C tenant (see below), the User resource in Microsoft Graph is now at parity with Azure AD Graph, and contains additional properties and capabilities (like restoring deleted users) over and above Azure AD Graph.<\/td>\n<\/tr>\n<tr>\n<td width=\"450\">10.\u00a0 GetObjectsByObjectIds method<\/td>\n<td width=\"450\"><strong>GA availability<\/strong>. See\u00a0<a href=\"https:\/\/developer.microsoft.com\/en-us\/graph\/docs\/api-reference\/v1.0\/api\/directoryobject_getbyids\">getByIds method<\/a>.<\/td>\n<\/tr>\n<tr>\n<td width=\"450\">11.\u00a0 IsMemberOf method<\/td>\n<td width=\"450\">Not planned.\u00a0 Use checkMemberGroups method instead.<\/td>\n<\/tr>\n<tr>\n<td width=\"450\">12.\u00a0 Manage users in a B2C tenant (set local accounts, sign in names)<\/td>\n<td width=\"450\">\n<p class=\"\">Coming soon to preview, in a few months.<\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table border=\"1\" width=\"810\">\n<tbody>\n<tr>\n<td width=\"450\">\n<p class=\"\">13.\u00a0 Policy<\/p>\n<\/td>\n<td width=\"450\">\n<p class=\"\">Policy resource is available in preview.\u00a0 However some significant breaking changes are planned, before this is GA.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Thanks,<\/p>\n<p>Dan Kershaw on behalf of the Microsoft Graph and Azure AD Graph teams<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Provides guidance and a roadmap for using Microsoft Graph vs. Azure AD Graph.<\/p>\n","protected":false},"author":69077,"featured_media":441,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3,5],"tags":[22],"class_list":["post-440","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>Provides guidance and a roadmap for using Microsoft Graph vs. Azure AD Graph.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/440","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\/69077"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/comments?post=440"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/440\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media\/441"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media?parent=440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/categories?post=440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/tags?post=440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}