Wednesday, January 12, 2022

Microsoft 365 self-service using Power Apps

This blog post is a showcase for a Power App around self-service. It is also a perfect example of fusion development. Microsoft made sure we have an API we can use to assign the settings we want. The Power App is already set up to use those connections, and you as a citizen developer only need to make sure the app interacts with those as you desire, with a minimum of coding effort. 





The idea behind the app

The concept of this app is straightforward: it puts users into groups. And the best part is: they can do it themselves. Now, Microsoft 365 offers a broad set of self-service capabilities already, but for some organizations, that can be really scary. By default, users can even create their own groups and teams themselves, but this feature is often disabled by IT.  It also might not be the most user-friendly option 


Back to the concept of groups. These can be either security or Microsoft 365 groups. Using this app, you can offer self-service to your end-users, while staying in control. Next to that, you can make it a user-friendly experience, because you can design your own User Interface around it. So, you can put additional information in the UI, as we did in this app. Since it can be used for every group in Azure AD, this can be used within all integrated services like Office 365, Microsoft Endpoint Manager, and even security features like Azure AD Authentication policies, and Conditional Access. 


The ultimate goal of this app thus is a UI where any end-user in the organization can select what pilot programs they want to be part of. In the demo, there are several different UI elements to help users with their selection ranging from toggles to sliders.  



The idea behind the slider is to bring your users in control of their modern workplace, easier put: on what pace updates will get delivered to their Windows device. By choosing a different update channel, they will be assigned to a specific Windows Update for Business ring in the back-end. 





The toggles can be used to let the user participate in different pilots or features that Microsoft 365 offers. It can also be used to request licenses, for example, if the user needs Power-BI Pro for a specific project. You could even build an additional flow that will ask for manager approval first, or you can make use of Azure Active Directory Access Reviews to review the groups periodically. 


Group-based licensing

Leveraging Azure Premium P1, we could use group-based licensing to automatically assign licenses to users based on group membership.  


In the Azure portal, go to Azure Active Directory -> Licenses. Select the preferred licenses, then go to the Licensed groups blade, and click + Assign.  





From the list, select the underlying services that you want to assign to the group. 





As soon as the user is added to the group, the license is automatically assigned. When the user is removed, also the license will be unassigned.  


How does the app work under the hood?

The app is using Power Automate to connect to the Graph API. Inside the Power Automate flow, we use the HTTP connector to send out the API calls. Based on the parameters that we define in Power Apps, the user is either added or removed from the group.  






The flow is using the switch feature to determine what action should be taken. This can be either “add”,”remove”, or “fetch. More details on the app and flow can be found in the extended documentation on GitHub.  





Power Apps in Microsoft Teams

As Power Apps can run natively in Microsoft Teams, this app can do that as well. This will make the app easily accessible for end-users.  




How to get started?

This demo app is available on GitHub and can be up and running in minutes. Reach out to this repository for detailed information and step-by-step instructions. Also, make sure to check out this YouTube video for a short tutorial.    



We hope to have provided some inspiration in facilitating your end users with a self-service experience using the Power Platform. Allowing your users to interact with an easy interface and requesting the features they feel add value will make sure you stay in control!   

Posted at