Project Management

How a Construction Project Manager Tackled Citizen Development (Part 3)

From the Citizen Development Insights Blog
by , , , , , , , , , , , , , , ,
Citizen development is a disruptive approach to digital transformation and organizational innovation, where teams are empowered to turn ideas into applications using no-code/low-code technology. This blog provides insights, advice and practical knowledge from thought leaders and practitioners in Citizen Development.

About this Blog


View Posts By:

Cameron McGaughy
Ron Immink
Jody Temple White
Mario Trentim
Jelili Odunayo Kazeem
Jason Mayall
Chandrasekaran Audivaragan
Ryan Whitmore
Kimberly Whitby
Justin Sears
Derya Sousa
Vivek Goel
Raveesh Dewan
Dalibor Ninkovic
Ian Gosling
Tara Leparulo

Past Contributors:

Elizabeth Jordan
Arjun Jamnadass
Rogerio Sandim
Martin Kalliomaki
Richard Earley
Maelisa Woulfe
Octavio Arranz

Recent Posts

5 Top Citizen Development Myths Busted

Empowering Citizen Developers: Overcoming 5 Common Challenges Together

Citizen Development: The Path to Success Starts Small

Can No-Code/Low-Code ERP Replace Traditional ERP Platforms?

No Code, Big Bucks: How Citizen Developers Can Capitalize on the Future of Tech 


Agile, Best Practices, best practices, Career Development, CD Canvas, Change Management, Citizen Developer, Citizen Development, Citizen development, citizen development, Communication, Digital Transformation, digital transformation, Documentation, Innovation, IT Project Management, LCNC, Leadership, Lessons Learned, Low-Code, myths, No-Code, no-code, No-code and Gen Z, PM Think About It, PMI, PMI Global Congress 2013 - North America, PMO, Portfolio Management, Program Management, Programs (PMO), Project Delivery, Project Management, project management, Risk Management, ROI, software development, Stakeholder, Strategy, Talent Management, Tools


This is my third and final blog documenting the start of my journey through learning about citizen development and LCNC platforms.
At the end of my last blog, I set myself a goal to create a functioning app of my choosing by using everything that I learned that previous month.

I decided to use Microsoft PowerApps as my platform as it stood out to me as one of the better platforms on the market and had an amazing set of online learning modules.

What I built
The app I decided to build was simple, matching my basic skill set at the time; since I am currently in the construction industry, I wanted something to document customer details, contractor details, job details and have relationships between all of them so they could be cross-referenced within the app.

This would make for a good first step in removing the need for keeping stacks of papers about in folders that document all aspects of each ongoing job. Keeping paper copies and noting down outgoings on a small job may be convenient in itself, but it soon becomes a hassle when the job is nine months long and the outgoings tip over the £100,000 mark.

That is the exact reason I started constructing this app; it’s a step in the direction of becoming paperless, making life easy when there’s lots of receipts and invoices from contractors to keep a hold of.

So, with my goal in sight, I opened PowerApps and got started.

Creating the app
Through my learning process, I discovered that getting the app to look appealing and be visually consistent could pose to be a tedious task, at least if I didn't create a template page first! So that's the first thing I did—I built a template page that I could duplicate each time I wanted a new page.

That was the first page I created for the app! A simplistic design made for functionality, it has the company name section, a home button, the company logo (top right) and the navigation buttons to take you to each of the pages in the app.
After that, I hit the duplicate button a few times, linked them all together so that the navigation buttons functioned as intended, and voila! My base app was born.
Getting data
The next step was to get some data to work with. I could have used something simple such as an Excel spreadsheet and imported it into the app, but I didn't like that idea. I liked the idea of Microsoft's own data hosting service. Microsoft Dataverse is a cloud-hosted data service that lets you securely store and manage your business data, perfect for what I wanted.

I wanted to start by making the Customer portion of my app as it seemed by far the simplest, requiring only basic data such as a name, address and contact number, perfect since this was my first time attempting this and didn't want to overwhelm myself just yet.
Creating the first page
So, with a template in hand and a data table created in Dataverse, I was ready to make the first "real" page of my app.

I took what I learnt from the learning modules and got to work.

There it is, my first functioning page.

From the screenshot, you can see the table containing some example customers and their data, with a delete key for each row (which contains a pop-up message to confirm).

The little arrow on each row takes you to a screen that allows you to edit the contact information for each row; there is a search field that allows you to filter the customer table to return records that match what you type; and of course there is a button labelled "New" that navigates to a screen that allows you to create a new record.

You may have noticed that the table is also in alphabetical order. I did this by using a function called "SortByColumns."

Although the app is looking pretty basic at this point, I was nevertheless happy with the functionality.
Creating the rest of the app
So, now I have a template and a working Customer page, which is a great start and filled me with confidence in my ability to create apps within PowerApps—at least until I begun making the Contractor and Job pages, which proved to be just a little more difficult than I has anticipated.

Why was it more difficult? Well it had a lot more—and more complex—fields to manage.

The customer table was a walk in the park. It needs name, address and contact info data, which is all basic text and is static; nothing changes after the data has been input.

The jobs and contractor tables, however, are a different story. You need a whole bunch of new fields with dynamic data and a robust relationship so they can be cross-referenced throughout the app. Each contractor needed the same simple fields as the customer needs such as the name and contact information, but also fields such as their hourly rate and the hours they worked on a job (plus a field to calculate the sum of the hourly rate and hours worked to give the total salary).

The job table also needs to reference the customer that the job is being done for, and also list each contractor (including the hours worked and amount payable) that has been assigned hours on the job, plus list the date of the job and location and have all of the information updated and visible to the user at all times.

Yes, I did get everything functioning in the end, and the solutions seem simple now that I've figured them out. But go back in time a couple of weeks when I first started making the app, and it was a lot of trial and error whilst trying to compose a working function that was any more complex than four words long.

Yes, it was difficult. There were times that I spent hours pulling my hair out over functions not working and giving error messages, only to find out I put a comma in the wrong place (yes, this happened many times), but it was a great way to push my skill set and force myself to learn and overcome obstacles.
So, I finished the app (at least for now) and got it looking and functioning somewhat how I envisioned it. Here’s a screenshots for you...

Welcome to the contractor page!

Again, you have the list of contractors with a search bar to filter the data, a delete button, new button and I added that special red dollar symbol to show which of the contractors had outstanding payments.

When you select a contractor from the list, it highlights the selection in a slightly different shade of grey to show it has been selected (although this may change in the future as it's almost unnoticeable). The main thing to note is the table that pops up referencing the selection you make to showcase the list of jobs that they are related to and how many hours that have done on said job:

Last but definitely not least is the Jobs page. You'll notice all the similarities with the previous pages with the sorting and showcasing of the contractors referenced in the selected job, along with some additional calculated fiends at the bottom right to show what the sum end total of the costs and hours are.

Most of the magic here is with the Job details page, which is accessed by clicking the arrow on the job you wish to view. Let me show you the details for the example job "Garden renovation"...

There you have it—by far the most time-consuming part of this build.

There are lots of relationships, references and calculations on this page, which is the sole reason it took the most time. But it was also the most fun to design and build, and was also the biggest learning curve for myself.

Here you see a reference to the Job you have chosen. You can assign a contractor to the Job and input the start date (default to the job start date). After that, you look to the right and see the entire list of contractors that are working on the selected job and whether they have been paid yet or not.
What’s my experience in using the app?
Overall, the user experience is great. The app has been easy to use thanks to its simple design, and it only takes a few minutes to add or edit a job. However, it does seem to have more use when it comes to larger scale jobs as opposed to small ones.

Imagine you contract three people to carry out various work on a job. One sends you the invoice for their labour via email, one writes out a physical copy in their invoice book and hands it to you personally, and the third only does two hours of work so tells you to add it to the tab and pay at the end of the month.

Jobs like those aren’t too difficult to keep track of, although it may seem a mess at times with receipts and invoices coming from all directions. They typically get paid off pretty quick and can be forgotten about. However, it’s the larger-scale jobs that need some help, the jobs where one person will do that two hours of work but then come back four days later and do another eight hours, then again the next week.

You can have multiple people doing hours such as that on a job that’s six, seven or 12 months long, so having some sort of app to keep a track of those jobs will save time and keep everything organised. With the tap of a button, you will able to see who is working on what job—and whether they have been paid or not. It's a great first step to becoming paperless and more efficient.

What's next?
After actually building my first functioning app, I do feel a lot more confident in my ability to create something. The journey wasn't as difficult as I thought it might have been, although I did struggle to get parts to function as I wanted them to at times. All I needed to do when that happened was take a break and look at someone else's app to see how they overcame a similar obstacle and try relate it back to my own scenario.

Next, I will aim to revise and hone my skills enough to take the PL-400 Microsoft power platform developer certification exam. This will prove that I have the necessary skills to work with the power platform and give me a certification to show that.

As for my next app? I'm not sure yet...maybe I should try something more technical to push my skills further, or even use what I learn to further improve my current app.
Over to you
What are your thoughts and feelings on my first app? I'd love to hear your feedback so that I can learn to improve on my next project.

What should I build next to further test my skills and abilities?

Don't hesitate to message me if you have any questions about Citizen Development or PowerApps, I'd love to help out.

Posted by Jason Mayall on: May 11, 2021 05:16 PM | Permalink

Comments (1)

Please login or join to subscribe to this item
Rami Kaibni
Community Champion
Senior Projects Manager | Field & Marten Associates New Westminster, British Columbia, Canada

This is great, thanks for sharing your experience with us. I come from the construction industry as well so this feedback is valuable to me.

Day by day, I am becoming more passionate about CD.


Please Login/Register to leave a comment.


If I had only known, I would have been a locksmith.

- Albert Einstein