top of page

Offline-Focused Power Apps Project

  • Writer: Justin Stevenson
    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):

  1. Each team (over a dozen of them) filled out their paper daily logs. This included safety logs, daily hours, legal compliance, and client updates.

  2. 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!).

  3. The collected forms were (eventually) scanned, manually checked, categorized, filed, and entered into a spreadsheet, all by hand.

  4. 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

  • ID (Unique Identifier)

  • Name

  • Address

  • Geographical Coordinates

  • Project Type

  • Active Status

  • Client Information

  • Primary Contact

  • Permit Numbers

Equipment List

  • ID (Asset Number)

  • Name

  • Category (Heavy Machinery, Hand Tools, Safety Equipment, etc.)

  • Serial Number

  • Maintenance Status

  • Current Location

  • Last Maintenance Date

  • Operational Condition

  • Assigned Project/JobSite

Employees List

  • ID (Employee Number)

  • Full Name

  • Position

  • Department

  • Approved Job Sites

  • Security Level (1-4)

  • Contact Information

  • Certification Status

  • Active/Inactive Flag

  • Date of Hire

Materials List

  • ID (Inventory Number)

  • Name

  • Category

  • Unit of Measurement (UoM)

  • Current Inventory

HeaderItems List

  • Unique GUID

  • Form Type (Safety Report, Daily Log, Equipment Check, etc.)

  • Date and Time of Entry

  • Employee ID (Submitter)

  • Job Site ID

  • Weather Conditions

  • Shift Information

  • Total Work Hours

  • Supervisor Approval Status

  • Approval Timestamp

  • Geolocation of Entry

  • Images (Blob Storage Reference)

  • Signatures (Blob Storage Reference)

  • Sync Status (Offline/Online)

LineItems List

  • Parent Header GUID (Relationship to HeaderItems)

  • Line Item Type ID (1-9) (Employee Hours, Material Usage, Safety Observation, etc.)

  • Specific Details (Depending on Line Item Type)

    • Emp Hours: Employee ID, Name, Hours Worked, Task Description

    • Materials: Material ID, Quantity Used, Purpose

    • Safety:Description, Severity, Recommended Action

  • Timestamp


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

Rated 0 out of 5 stars.
No ratings yet

Add a rating

Justin Stevenson

  • alt.text.label.LinkedIn

©2024 by Justin Stevenson

bottom of page