Guest Post: How we built a cross-platform event app in less than a week

This guest blog post is written by Vishwas Lele from Applied Information Sciences (AIS). AIS provides software and systems engineering services to government agencies and businesses across the United States. They specialize in cloud services, DevOps, custom application development and IT services. For additional information please visit www.appliedis.com

The problem

Our journey started with an email from a customer of ours. They were looking to build an event app for their upcoming regional sales summit. The requirements fit the mold of a typical event app – Provide:

· An up-to-date schedule of sessions;

· The ability to download documents associated with a session;

· The ability to share pictures, and

· The ability to respond to a survey, among others.

While there are a number of event apps in the market, there were a couple of considerations:

i) All the attendees were Microsoft employees;

ii) All of the data about the sessions – date and times, presentations and even survey data – was to be hosted in SharePoint Online;

iii) The app needed to be integrated with Outlook web and desktop, and finally,

iv) The app needed to be in place in less than a week J

The solution

Day 1 – Discovery

Given the shortness of time, it was clear to us that we needed to “generate” the app (rather than “develop” it). Hence, PowerApps was the obvious choice. Furthermore, the ability to leverage Azure AD (so we don’t have to worry about auth) and the out of the box support for SharePoint, further reinforced our initial design decision.

Next, we conducted a detailed design session to map all the data we needed with the PowerApps data sources. We realized that ideally we needed various SharePoint list types including DocumentLibrary, Survey, Events and Picture Library. However, the PowerApps designer currently only supports a custom library out of the box. So we knew we wanted to leverage the customs lists to the extent we could, and of course, we had the fallback of calling a custom API if needed.

As you know, Windows Phone is not yet supported, but the event organizers were ready to move forward with the support for Windows Store App, iOS, Android and a Web Browser.

Day 2 & 3 – Implementation

We created a sandbox O365 subscription and then created a bunch of custom lists to capture the details associated with events, documents, pictures and survey data.

Once the custom lists were in place, wiring up the screens inside the PowerApps Studio was easy enough. Here are some examples:

The Integration with Outlook Web and Desktop required an additional step. We wanted users to be able to click on an event and have that event added to their respective calendar. Since the Office 365 connection does not yet support calendars, we achieved this by calling the O365 Calendar API via the Flow.

Microsoft Flow allows for creating workflows that can connect one of more APIs. Workflows can be executed in response to an event or a trigger. Flow is the default choice in PowerApps to integrate with external services or to start a workflow.

We created a Flow that gets triggered when a user clicks on the “Add to Calendar” button. In turn, it calls the Calendar API by providing the event details as parameters.

Day 4 – Realizing advanced use cases

With the basic functionality done, we turned our focus to more advanced use cases. Specifically, we delved deeper into the survey capability. Our first approach was to use Flow to submit the survey data to the custom list. However, we ran into an issue with logic expression. We reported this issue to the PowerApps team and they jumped into help (as of writing of this blog post the fix is already in production – a testament to responsiveness of the team, even during the preview phase). In the meantime, we also realized that storing the survey data in a custom list was not ideal from a data aggregation standpoint.

So we decided to build the survey capability using the Azure Storage Table. Essentially, we created a custom API that wrapped the Azure Storage Table. Then we added a PowerApps connection to the custom API. Finally, we wired the survey submit button to the custom API (shown in the adjacent picture).

Day 5 – Deployment

The final phase was to provision the SharePoint content types and custom lists, populate the lists with appropriate data and publish the app within the Microsoft organization – making it available to all employees attending the sales summit.

Summary

As you see from the brief description above, PowerApps + Flow allowed us to “generate” the event app in matter of days. The ability to host all the event data within SharePoint made the initial data entry (not to mention the subsequent updates) wonderfully easy. We did not have to worry about authentication, app store publication or distribution since the app was available to users within the organization.