Offline-Focused Power Apps Project
- Justin Stevenson
- Dec 3, 2024
- 5 min read
Updated: Apr 29
At Kan-Arm Contracting, we were struggling with a chaotic mess of paper logbooks—about 30 in total—covering safety, daily field reporting, invoicing, scheduling, SharePoint list management, and more.
The general workflow was like this (hundreds of hours per month):
Each team (over a dozen of them) filled out their paper daily logs. This included safety logs, daily hours, legal compliance, and client updates.
Each of these forms were collected each day and sent to the Site Admins & Project Admins in their respective field office (hopefully none were lost or damaged!).
The collected forms were (eventually) scanned, manually checked, categorized, filed, and entered into a spreadsheet, all by hand.
Pictures and signatures were attached at a later date, It was clear we needed a digital solution to bring some order to this chaos.
This was clearly not a sustainable solution. Doing everything by hand was a huge challenge, considering each team's complexity, massive company growth, and team accountability. It was clear there needed to be a way to solve these problems at scale, and what had worked in the past wasn't going to work for the future.
Enter Microsoft PowerApps. PowerApps was brought as the perfect solution to be able to automate and digitize the workflows without spending hundreds of thousands of dollars on developer resources. However, this implementation was far from smooth. The apps weren't scalable, there was no documentation to guide us on what was already made, and a significant unique challenge emerged: the need for complete offline capability. Each app would sometimes only get internet connection once a month, and needed to work locally at all times. This eliminated many no-code or SaaS platforms. Every single app needed this capability, and incorporating it alongside all other requirements was no small feat.
The Challenge
Managing these paper logbooks presented several issues. There was inefficiency with manual data entry and tracking, leading to errors. Without a version control system, it was impossible to ensure all employees used the most updated version of the logbooks apps, which caused data fragmentation issues. SharePoint lists hosting the data have something called delegation issues, causing documents to fail to submit with more than 5,000 rows of data (this happened multiple times per week). Maintenance and troubleshooting were also problematic due to no documentation and unclear app design.
When I first started, only two of the logbooks had been replaced with digital versions. My goal was to expand this as demand required, and streamline the existing ones.
The Solution
To tackle these issues, I had to roll up my sleeves and dive deep into PowerApps, Power Automate, and third-party services. Here’s how I transformed our operations:
Setup Lists (Reference Data)
These lists served as the foundation, providing structured reference data for the entire application:
JobSites List |
| Equipment List |
|
Employees List |
| Materials List |
|
HeaderItems List |
| LineItems List |
|
Problems We Solved
The offline functionality was a critical component of the application, designed to ensure uninterrupted workflow in the challenging environments of construction sites.
Offline Data Synchronization Strategy
We used many collections via ClearCollect, creating copies of the original SharePoint Lists which could be opened again offline via SaveData and LoadData functions. This allowed for automatic and manual refreshes of data submission upon app load and upon user trigger with a refresh button.
We were able to handle conflicts in data by preventing them. All entries would have a localized timestamp added to the file name/header name in the collection, which was generated via a variety of fields such as Employee ID and job site and time. This also gave the added benefit of site admins and site managers being able to instantly recognize what the document was for based on its name. When the documents were synced ahead of time, there would be no conflicts or missing data. If data did somehow end up missing or duplicated, this could be manually fixed through the admin page.
Delegation Issues
Hosting data in SharePoint lists was convenient, but was causing delegation issues, with apps not saving or processing submitted data when the LineItems list exceeded 5,000 rows. I needed to optimize data storage and handling to reduce the need for frequent data deletion. This was solved by using delegatable functions like StartsWith instead of using slower ones like Search in my Filter commands, along with referencing the HeaderID in the filter.
Images in SharePoint Lists
Additionally, people before me hadn't figured out how to save images directly to the SharePoint list. They were just embedded in the HTML and PDF and called it a day. I overcame this technical challenge using blob storage and proper encoding to ensure images could be saved and accessed as needed, in a direct column added to the SharePoint list.
Power Automate
Power Automate was integrated to convert SharePoint list data into HTML and PDF documents automatically. I also implemented automated file naming and storage in SharePoint for consistency and ease of access. This linked to a 3rd party service called Encodian for the direct file conversion action. Finally, these documents were also emailed directly to all of the relevant job site managers as each document was submitted online.
Approach to App Design
Despite the technical complexity, the ultimate goal was simplicity for everyone in the company. The app was designed for workers more comfortable with physical logbooks than digital interfaces, ensuring:
Intuitive navigation and use
Minimal input requirements
Tablet focused design, as all managers and supervisors did all of their paperwork on tablets
To do so, this required me having careful app design and planning. Anything that wasn't immediately obvious to the user and required explanation was discarded; otherwise, nobody would recognize it as a feature, or just get frustrated and go back to paper.
Using constant feedback and testing with key managers and admins, I was able to get a working product that everybody was happy with.
Conclusion
By combining technical innovation with a deep understanding of user needs, we created a solution that didn't just replace log books, but truly enhanced how quickly and effectively work gets done. This had the end result of saving hundreds of hours of work per month and made everyone's jobs much easier and happier.
Comments