{"id":564,"date":"2026-05-12T14:50:20","date_gmt":"2026-05-12T12:50:20","guid":{"rendered":"https:\/\/zupertails.be\/wur\/?p=564"},"modified":"2026-05-12T14:50:20","modified_gmt":"2026-05-12T12:50:20","slug":"adding-those-pesky-apps-to-your-m365-environment","status":"publish","type":"post","link":"https:\/\/zupertails.be\/wur\/?p=564","title":{"rendered":"Adding those pesky apps to your M365 environment"},"content":{"rendered":"<h2>Admin powers for everyone !<\/h2>\n<p>Imagine the following scenario :<\/p>\n<p>Your customer&#8217;s CEO has seen the proverbial light and instead of being the M365 lemming that everybody else is, he&#8217;s heard of Calendly; a nice app that allows meeting requests to be made under your M365 tenant in a way more covenient way than the default Microsoft Bookings can do.<\/p>\n<p>So being the good customer that he is, he just clicks on the &#8220;log in with your M365 credentials&#8221; button and clicks next-next-next, granting this app access to calendars and whatnot.<\/p>\n<p><img src=\"https:\/\/i.imgur.com\/DJCxoWB.png\" alt=\"Calendy system - Microsoft Q&amp;A\" \/><\/p>\n<p>&#8230; were it not that (luckily) your M365 environment blocks this behaviour by default for non-admin users, so (if you did your homework, as an IT implementor), your customer&#8217;s CEO does not have an admin role on his production account.<\/p>\n<p>The quick-and-dirty solution would be to grant the user temporary rights to install the app, after which you take away his rights.<br \/>\nAny update on the app would require you to do the same.<\/p>\n<p>&nbsp;<\/p>\n<h2>Wouldn&#8217;t it be nice&#8230;<\/h2>\n<p>As the Beach Boys already suggested in 1966, it would be nice &#8230; to handle this whole situation in a more structured way, because nothing screams <strong>chaos<\/strong> more than this sort of procedures.<\/p>\n<p>An ideal situation would be that your customer automatically created a support ticket in your organisation&#8217;s helpdesk software, whereas he requests access to this app be granted to him.<br \/>\nAfter you verify if this app is trustworthy.<\/p>\n<p>Well&#8230; that&#8217;s possible.<\/p>\n<p>The feature is called &#8220;Admin consent workflow&#8221; and I&#8217;ll show you how to quickly configure this, so your support team gets a hassle-free notification.<\/p>\n<p>&nbsp;<\/p>\n<p>First of all, turn on the feature in the following menu :<\/p>\n<p><a href=\"http:\/\/Entra.MIcrosoft.com\">Entra.MIcrosoft.com<\/a> &gt; (the entra admin center, where you log in as admin)<br \/>\nEnterprise Apps &gt;<br \/>\nConsent and Permission &gt;<br \/>\nAdmin consent settings.<\/p>\n<figure style=\"width: 1091px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" src=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity\/enterprise-apps\/media\/configure-admin-consent-workflow\/enable-admin-consent-workflow.png\" alt=\"Screenshot of configure admin consent workflow settings.\" width=\"1091\" height=\"508\" \/><figcaption class=\"wp-caption-text\">Self-explanatory screenshot of admin consent<\/figcaption><\/figure>\n<p>This will allow you to pick users (or specific groups or even roles) to be notified, by mail, that user <strong>X<\/strong> wants to install company app <strong>Y\u00a0<\/strong>.<\/p>\n<p>Seeing as most helpdesk systems support mail-to-ticket , that already solves your ticketing system automation, by adding that support mailbox to the notifications, allowing you to receive this request in your ticketing system. \u2705<\/p>\n<p>&nbsp;<\/p>\n<p>The next and most logical step is to do something with this notification as a support engineer\/admin.<\/p>\n<p>Easy enough:<\/p>\n<figure id=\"attachment_567\" aria-describedby=\"caption-attachment-567\" style=\"width: 810px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"wp-image-567 size-large\" src=\"http:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/admin-consents-1024x418.png\" alt=\"Yes, in Dutch, because.\" width=\"810\" height=\"331\" srcset=\"https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/admin-consents-1024x418.png 1024w, https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/admin-consents-300x123.png 300w, https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/admin-consents-768x314.png 768w, https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/admin-consents-1536x628.png 1536w, https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/admin-consents-2048x837.png 2048w\" sizes=\"(max-width: 810px) 100vw, 810px\" \/><figcaption id=\"caption-attachment-567\" class=\"wp-caption-text\">Admin consents overview<\/figcaption><\/figure>\n<p>Open that very same <strong><a href=\"http:\/\/Entra.MIcrosoft.com\">entra admin<\/a> <\/strong>page and go to &#8230;<br \/>\nEnterprise Apps &gt;<br \/>\nActivity &gt;<br \/>\nAdmin Consent Requests (or &#8220;Aanvragen voor toestemming van de beheerder&#8221; as it is so beautifully stated in the Dutch version)<\/p>\n<p>The screenshot above shows you the approval list under &#8220;My pending&#8221; , where you can either Approve, Deny or Block the request.<br \/>\nThe following Microsoft article explains in more detail what the 3 actions have as consequence :<br \/>\n<a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity\/enterprise-apps\/review-admin-consent-requests\"><strong>https:\/\/learn.microsoft.com\/en-us\/entra\/identity\/enterprise-apps\/review-admin-consent-requests<\/strong><\/a><br \/>\n&#8230;but judging by the names of the three options, I guess you can already tell.<\/p>\n<p>&nbsp;<\/p>\n<h2>Don&#8217;t Hassle the Hoff<\/h2>\n<p>In a small environment of 5 users, this procedure is to be handled perfectly easy.<br \/>\nIn a 300+ users environment, this becomes quite a hassle.<br \/>\nThere&#8217;s somewhat of an inbetween automated solution to making your admin life easier.<\/p>\n<p>&#8220;User consent settings&#8221;, to be found on&#8230;<br \/>\n<a href=\"http:\/\/Entra.MIcrosoft.com\">Entra.MIcrosoft.com<\/a> &gt; (the entra admin center, where you log in as admin)<br \/>\nEnterprise Apps &gt;<br \/>\nConsent and Permission &gt;<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-large wp-image-568\" src=\"http:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/user-setting-1024x401.png\" alt=\"\" width=\"810\" height=\"317\" srcset=\"https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/user-setting-1024x401.png 1024w, https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/user-setting-300x117.png 300w, https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/user-setting-768x301.png 768w, https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/user-setting.png 1241w\" sizes=\"(max-width: 810px) 100vw, 810px\" \/><\/p>\n<p>And yes, again with the Dutch :p<\/p>\n<p>This inbetween option allows you to choose the &#8220;sweet spot&#8221; for your admins, where you get to decide &#8211; based on a classification system &#8211; what apps are allowed by default.<br \/>\nClicking that link under &#8220;allow user to &#8230;&#8221; or clicking on &#8220;classifications&#8230;&#8221;<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-large wp-image-569\" src=\"http:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/classifications-1024x582.png\" alt=\"\" width=\"810\" height=\"460\" srcset=\"https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/classifications-1024x582.png 1024w, https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/classifications-300x170.png 300w, https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/classifications-768x436.png 768w, https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/classifications-1536x872.png 1536w, https:\/\/zupertails.be\/wur\/wp-content\/uploads\/2026\/05\/classifications-2048x1163.png 2048w\" sizes=\"(max-width: 810px) 100vw, 810px\" \/><\/p>\n<p>&#8230; you can decide either default rights to be allowed (such as user:read) for any app or pick a trusted API from the list, so next time a user wants access to that specific API or picks an app with very limited rights, they can go all out.<\/p>\n<p>I&#8217;m gonna leave you with figurig out how to define Low, Medium and High classifications yourself, but seeing as you made it to the end of this article without falling asleep, I&#8217;m confident you got this !<\/p>\n<p>&nbsp;<\/p>\n<p>See any mistakes in this article or have suggestions ?<br \/>\nYou know how to <strong><a href=\"https:\/\/zupertails.be\/wur\/?page_id=463\">contact<\/a> <\/strong>me !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Admin powers for everyone ! Imagine the following scenario : Your customer&#8217;s CEO has seen the proverbial light and instead of being the M365 lemming that everybody else is, he&#8217;s heard of Calendly; a nice app that allows meeting requests to be made under your M365 tenant in a way<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8,6,9],"tags":[74],"_links":{"self":[{"href":"https:\/\/zupertails.be\/wur\/index.php?rest_route=\/wp\/v2\/posts\/564"}],"collection":[{"href":"https:\/\/zupertails.be\/wur\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zupertails.be\/wur\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zupertails.be\/wur\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zupertails.be\/wur\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=564"}],"version-history":[{"count":3,"href":"https:\/\/zupertails.be\/wur\/index.php?rest_route=\/wp\/v2\/posts\/564\/revisions"}],"predecessor-version":[{"id":570,"href":"https:\/\/zupertails.be\/wur\/index.php?rest_route=\/wp\/v2\/posts\/564\/revisions\/570"}],"wp:attachment":[{"href":"https:\/\/zupertails.be\/wur\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zupertails.be\/wur\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zupertails.be\/wur\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}