My cage, however, is that my organization invests into systems that support the student life cycle. Systems which support staff are very often de-prioritized, lost in the enterprise queue.
Every three years, to start the big push towards physical inventory, the asset management office reaches out to the managers and directors with the main goal of identifying whom has been delegated the responsibility of conducting the physical inventory. The delegated persons will then be sent targeted instruction and information to fulfill the procedure according to policy.
The managers and directors will use Power Apps to interact with connections to SharePoint and Office 365 Users.
A recurring trigger will get the SharePoint items and convert to a CSV file to be uploaded into an AD group using a PowerShell script.
I chose to use a SharePoint List because unfortunately there is no database view that has the information I need; it is in the queue.
As you can, see it is rather simple.
Simple SharePoint List
I did get fancy by adding a calculated column which I use to extract the samaccountname for AD.
Calculated Column
=IF(NOT(ISBLANK(PropertyCoordinatorEmail)),LEFT(PropertyCoordinatorEmail,INT(FIND("@",PropertyCoordinatorEmail)-1)),"null")
I created a view that I use later in Power Automate.
A customized SharePoint View
The welcome screen for the manager or director. In OnStart, I set a variable '_curUser' which allows me to display a filtered gallery.
App > OnStart > Set(_curUser,User().Email);
GalleryDept > Items > Sort(Filter(PropertyCoordinatorMaintenance,ManagerEmail = _curUser || DelegatedEmail = _curUser),DeptID,Ascending))
Most of the managers and directors have very few departments however, some have near a dozen. All departments need to be assigned a Property Coordinator. I decided to allow single selection, by clicking a gallery item or mutli-selecting gallery items via a checkbox. Either way the item(s) are added to a Collection.
Adding a selected item to a Collection
GalleryDept > checkbox_Dept > OnCheck >
If(
IsBlank(
LookUp(CheckedItems, coll_DeptID = ThisItem.DeptID)
),
Collect(
CheckedItems,
{
coll_DeptID:ThisItem.DeptID,
coll_Department:ThisItem.DepartmentDescription,
coll_Coordinator:ThisItem.PropertyCoordinatorEmail
}
)
)
ThisItem.PropertyCoordinatorEmail is populated after assignment.
CheckedItems Collection
Depending on the previously collected items, the manager or director can then select a person who they would like to assign the physical inventory task.
Overlay to assign the Property Coordinator
Using a simple text input box I can filter Office 365 Users.
GalleryEmployee > Items > Filter(Office365Users.SearchUserV2({searchTerm:textInput_Employee.Text,top:50}).value,!IsBlank(Department))
The !IsBlank( ) was added to filter the users results even more as I am only interested in staff and faculty; students do not have departments.
Filter Office 365 Users
A selected item gets added to the 'SelectedEmployee' Collection.
GalleryEmployee > OnSelect > ClearCollect(SelectedEmployee,{coll_emplName:DisplayName,coll_emplEmail:UserPrincipalName})
A simple gallery of the 'SelectedEmployee' serves as a visual confirmation prior to saving.
Selected and ready to be saved
The result of a save is visual confirmation on the landing page.
Green is good
A recurring schedule runs a Power Automate flow to create a CSV file for import into AD. The detail file is also created at the same time only to provide a quick glimpse of the transactions.
I add Filter Query, Order By, and Limit Columns by View criteria to the 'Get Items from SharePoint' step.
Get Items from SharePoint
Using the applied step from above, I create CSV tables with selected columns.
Create CSV table
Lastly, create SharePoint files for consumption.
Create SharePoint File
How is this #BetterTogether? Three years ago I was using Power Query, Word (mail-merge), Google Forms, and Google Sheets. As you can imagine, a lot of managers and directors asked, "Is this a phishing scam?". Now we have an integrated and dynamic experience for the user.
This idea was only approved yesterday (04/20/2020) by our accessibility office so I didn't want to create a Power BI report without knowing if my datasource would even be used. As a Super User in the community, it will not take much to get Power BI connected to a SharePoint List and then create a couple of measures for this dataset. There is the other issue, which is I am one of the few that has a Pro license so embedding into the Power App itself does not do much good.
The app is actually in the Teams General Channel. There is a small issue in that I cannot add the Teams O365 group to the app which would give share permissions to the members. I have submitted a ticket to have our tech support to take a look. I also have created a couple of Power Automate flows to 'Post Message to Channel' and 'Post Message to User' as the flow bot probably on a SharePoint trigger.
I am excited to see how other folks are doing #BetterTogether!
Stay up tp date on the latest blogs and activities in the community News & Announcements.
Mark your calendars and join us for the next Power Apps Community Call on January 20th, 8a PST
Dive into the Power Platform stack with hands-on sessions and labs, virtually delivered to you by experts and community leaders.