One of the recent innovations from Microsoft is the ability to integrate a PowerApp with a SharePoint list.  What this means is you no longer have to create the PowerApp separately from SharePoint and then create connections to the environment, but instead you can actually create the PowerApp from within the list itself.  What this doesn’t mean is that a PowerApp can replace the list forms for a SharePoint list.  However, in a recent post from the PowerApps team we will be getting this functionality very soon.

In this post, I am going to show you how to create a PowerApp from a custom list and show you around the PowerApp development tools a bit.  This post is actually the first in a series that I intend to use to show you the different things you can currently do with PowerApps.  I intend to integrate Microsoft Flow as well later as well.  Since this is the first post it makes sense to start with a brief explanation of the design and how to create the App.

Solution Overview

This solution is going to be a training request form.  The intent is for users to access the list and request training based on several categories including the type of training and the category of training.  For instance, perhaps I want to take the online course about SharePoint development best practices.  I would utilize this list to request the training.  The list would then initiate a process that would allow my manager to approve the request.

Solution Design

The initial iteration of this solution is going to be pretty basic.  I am going to use the following columns as metadata within my list (all setup as site columns and grouped into a Content Type of course).

Column Display NameColumn Internal NameColumn Type  
Employee ManagerEmployeeManagerPerson or Group
Training CategoryTrainingCategoryChoice
Training CostTrainingCostCurrency
Training End DateTrainingEndDateDate and Time
Training InstructorTrainingInstructorSingle line of text
Training Provider CompanyTrainingProviderCompanySingle line of text
Training ReasonTrainingReasonMultiple lines of text
Training Request StatusTrainingRequestStatusChoice
Training RequestedTrainingRequestedLookup
Training Requested ForTrainingRequestedForPerson or Group
Training Start DateTrainingStartDateDate and Time
Training TypeTrainingTypeChoice

Please note: this is just the design for today’s post.  This metadata may change a bit as this blog series progresses and more options and features are utilized.

I setup the all items view to look like this:

Creating a PowerApp from a SharePoint List - List View

And the OOTB new item form looks like this:

Creating a PowerApp from a SharePoint List - New Item Form

Creating a PowerApp from a SharePoint List

To create a PowerApp from your list, simply click on “PowerApps” on your list ribbon and then click “Create an app

Creating a PowerApp from a SharePoint List - Create the App

Enter the name you wish to give the app and click create:

Creating a PowerApp from a SharePoint List - Set App Name

A new tab will open and PowerApps will let you know it is building the app for you:

Creating a PowerApp from a SharePoint List - Building The App

Once complete you will have three screens pre-made for you.  The BrowseScreen is basically a list view with a summary of the items in the list, a DetailScreen which is the same as a list’s view form, and finally an EditScreen that will allow you to modify and enter data that will be posted to the list.

There are a ton of configuration options to go along with each of the fields, but I am not going to go through them today.  We’ll leave those for another post.  Already we are going to see a few the limitations of the app in that the browse screen only displays a limited subset of available data times on the list.  The columns based on Choice, Lookup, and Person\Group are not available to be displayed.  This makes the user experience pretty poor as I would like some of those items, especially the requested for and training requested fields to be displayed on the screen.

I will discuss in the next post how to get around this limitation and gather the data that I would like to be displayed on my form.

Thanks for reading!!