top of page
Writer's pictureKyle Anderson

Creating a Teams Based Organisational Power Apps Hub

The rise in Teams usage and the introduction of "Project Oakdale" has seen more emphasis on creating and using Power Apps within Teams. As Teams becomes the ever important focal point for users, it creates a unique opportunity for organisations to offer their organisational Power Apps in a single place and resource hub. One way of doing this is to create a Power App that can link to other Power Apps. In this post we'll look at how you can put something like that together.


 

Creating Your List of Organisational Apps


Once we have created the apps that we want highlighted for our users, we need to make a list of these somewhere, so that we can call them in our "Hub". In this example we will use a SharePoint list that will store the following details about our app:

  1. Display Name

  2. App ID

  3. App Description

  4. Image URI

  5. Background Colour

To get these details, add the "PowerAppsforMakers" connection and use a gallery to get these apps listed.



Gallery Value - get all of your apps

PowerAppsforMakers.GetApps().value

App Display Name

galAdminApps.Selected.properties.displayName

App ID

galAdminApps.Selected.id

App Description

galAdminApps.Selected.properties.description

Image URI

galAdminApps.Selected.properties.backgroundImageUri

Background Colour

galAdminApps.Selected.properties.backgroundColor

NOTE: To use the RGBA value that comes out of the background colour, you can use the following formula. This formula splits out the RGBA into individual components and pushes them back through the RGBA formula to get our colour:

RGBA(
Last(FirstN(Split(Substitute(Substitute(Substitute(ThisItem.properties.backgroundColor,"rgba(",""),")","")," ",""),",").Result,1)).Result,
Last(FirstN(Split(Substitute(Substitute(Substitute(ThisItem.properties.backgroundColor,"rgba(",""),")","")," ",""),",").Result,2)).Result,
Last(FirstN(Split(Substitute(Substitute(Substitute(ThisItem.properties.backgroundColor,"rgba(",""),")","")," ",""),",").Result,3)).Result,
Last(FirstN(Split(Substitute(Substitute(Substitute(ThisItem.properties.backgroundColor,"rgba(",""),")","")," ",""),",").Result,4)).Result)

Once we have added the apps to a list, we can pull them back into a gallery for our users to interact with. Below you will see an information box that will display the app description. And clicking the app icon/image allows the user to launch these apps from our central point.


In order for this to work, add the launch function to the "OnSelect" property of your gallery. Now when the user selects an app they would like to interact with, it will be launched in a new browser window.

Launch(ThisItem.AppID,{},LaunchTarget.New)

 

Adding the App to Teams


Now that our Hub is ready to be used, download the .zip file needed, by selecting "Add to Teams".


In the Teams admin centre expand "Teams apps", and select "Manage apps". Here you will be able to upload the new Hub App .zip file that you exported in the previous step. Once the file has been uploaded, you should see it by doing a search.


Once the app is ready, simply add it to the setup policy of your choice and the app should be visible to your users once the settings have synced down. For more details about Teams Policies.


 

Expanding this solution


One thing that we can also explore in this solution, is a page for our users to get into their own apps (either of the apps owned, or the apps that the user has access to). We can also provide a link that will take them straight into the apps studio to allow them to edit their apps.


To get their apps, we will use the formula we used earlier, but this formula lists all the apps the user has access to (including the ones we would have listed for use in our hub) so we'll want to use a range of filters to give unique and appropriate values.


Adding another gallery we will add the following formula. This will filter out the apps listed, the current app (Power Apps Hub) and the apps that the user is not an owner of.

Filter(
    PowerAppsforMakers.GetApps().value,
    And(
        Not(id in PowerAppsHub.AppID),
        Not(id = "/providers/Microsoft.PowerApps/apps/7b41966f-b186-4133-801f-1ff0d6c1338d"),
        (User().Email in properties.owner.email)
    )
)

And if we want to allow the user to launch the app in the Power App studio, we can use the below formula. You can adjust the locale ("https://uk.create" in this instance) of your link, but this should redirect you to the correct locale.

Launch("https://uk.create.powerapps.com/studio/#action=edit&app-id=%2Fproviders%2FMicrosoft.PowerApps%2Fapps%2F"&Substitute(ThisItem.id,"/providers/Microsoft.PowerApps/apps/","")&"&portal=Prod",{},LaunchTarget.New)

 

In Conclusion


Following this kind of approach will allow your organisation to create a singular home for the organisational Power Apps that your users use frequently. While Teams does allow your users to find these individual apps in Teams (if they are added to Teams), this approach allows you to pin a single app to the Teams navigation bar and allow quick and easy access to all of these apps. It is also a lot easier to add apps to a list in this manner than it is to add a Teams app. And you can allow users without Teams admin rights the ability to publish Power Apps to the organisation via this Power App hub interface.


The Apps highlighted to me by my organisation.

The Apps I own. I can either launch these and use them or launch them in the Power Apps studio to edit them.


83 views0 comments

Recent Posts

See All

Comments


bottom of page