
HR Collaboration:
How I Built a Leave Tracking System That Bridged Two Payroll Systems on a $2 Billion Construction Project
Year
2023
Industry
Construction
Service
Automation, Process Improvement
Introduction
TL;DR: HR was losing thousands monthly because supervisors couldn't see leave requests across two separate company systems. I taught myself Power Automate from scratch and built an automated workflow that's still running two years later. Here's exactly how I did it.

The Problem Nobody Saw Coming
In 2023, I was working as IT Lead on the Coffs Harbour Bypass - a $2 billion highway construction project in regional New South Wales, Australia. It was a joint venture between two massive international companies: Ferrovial (Spanish) and Gamuda (Malaysian).
250+ employees. Two separate corporate tenancies. Two completely disconnected payroll systems.
Here's where it got messy: supervisors from Ferrovial were managing workers employed by Gamuda, and vice versa. The systems didn't talk to each other. At all.
So when someone called in sick or booked annual leave, their supervisor had zero visibility. The employee would take their leave, but because the supervisor couldn't see the request in their system, nothing got submitted to payroll. The result? People were getting paid for leave that was never officially recorded.
HR came to me one day with that look — you know the one. The "we have a big problem and need someone to fix it" look.
They were drowning. Manually cross-referencing spreadsheets, chasing supervisors, trying to reconcile two separate systems by hand. And the project was bleeding money every month in incorrect payments.
Why Traditional Solutions Wouldn't Work
The obvious answer might be: "Just get one unified system."
Yeah, good luck with that on a joint venture between two multinational corporations with their own established IT ecosystems, compliance requirements, and corporate red tape stretching across three continents.
We needed something that could:
Work within the existing Microsoft environment (Ferrovial's tenancy)
Bridge the gap between both payroll systems without replacing either
Cost nothing (or close to it)
Be simple enough that non-technical HR staff could maintain it
Go live quickly — we were losing money every day
I started looking at what tools we already had access to. Ferrovial was running Microsoft 365, which meant we had Power Automate included in our existing licenses.
I'd never touched Power Automate before. But I figured if it could do what I thought it could do, this might actually work.

The Discovery Phase: Asking the Right Questions
Before I wrote a single line of automation logic, I sat down with HR and mapped out the entire workflow. This is where most automation projects fail - people jump straight to building without understanding the full picture.
Here's what I needed to know:
Current State
How are leave requests being submitted now?
Where does the data go?
Who approves what?
What reports do the parent companies need?
Pain Points
Where are requests falling through the cracks?
What's the communication breakdown?
How much time is HR spending on manual reconciliation?
Requirements
What does the approval workflow need to look like?
Who needs to be notified and when?
What format do the parent companies need for payroll reporting?
What happens when someone's on leave and their supervisor is also away?
Future-Proofing
What happens when supervisors change?
How do we handle contractors vs. permanent staff?
Can HR update this themselves, or will they need IT every time?
This discovery phase took about a week. I documented everything — the workflow, the stakeholders, the data requirements, the edge cases. Then I presented it back to HR before writing any code.
That step saved me from building the wrong thing.
The Biggest Roadblock: Getting Access
Here's something nobody tells you about enterprise automation: the hardest part often isn't the technical build. It's getting the permissions to build it.
Ferrovial's IT team was based in Madrid. Time zone difference? About 16 hours from the project site. Language barrier? My Spanish is limited to ordering beer and asking where the bathroom is.
I needed them to create a dedicated service account with the right licenses — a central IT Operations account where all the automations would live. This was critical: if I built everything under my personal account and then left the project, the whole system would go with me.
Getting that account set up took almost two weeks of back-and-forth emails, Teams calls at weird hours, and a lot of patience. But it was worth it. That account is still running the automation today, long after I've moved on.
Lesson learned: Always build automation on service accounts, not personal accounts. Future-proof from day one.
Building the Stack: Tools I Used
Once I had access sorted, here's what I wired together:
Microsoft Forms The front door. This is where employees submitted their leave requests. I worked with HR to make sure the form was dead simple — date range, leave type, supervisor selection, any notes. No friction, no confusion.
The branching logic was important here. Different leave types needed different information. Taking annual leave? Cool, just the basics. Going overseas? We need to know about your work devices (more on that later).
Microsoft Excel The data backbone. Form responses dump into a SharePoint-hosted Excel file, but raw form data is messy. I built a second structured spreadsheet that cleaned and formatted the data exactly how the parent companies needed it for their payroll reports.
Microsoft Outlook Notifications. When someone submits a request, they get a confirmation email. When it's approved or rejected, they get notified. When HR needs to action something, they get pinged. No more "I didn't know about this" excuses.
Microsoft Teams Supervisor approval requests come through as Teams notifications, not just email. Most supervisors on a construction site live in Teams — that's where they'll see it fastest.
Power Automate The brain that connects everything. Form submission triggers the flow. Data gets routed to the right supervisor based on the employee's team. Approvals get tracked. Responses get logged. Monthly reports get generated and sent automatically.

The Workflow in Plain English
Here's what happens when an employee submits a leave request:
Employee fills out the form — Takes about 30 seconds. Date range, leave type, supervisor, notes.
Instant confirmation email — "Your request has been submitted for review. IMPORTANT: Also submit this leave in your dedicated payroll system." That second part was crucial. We weren't replacing the existing payroll systems — we were bridging them. Employees still needed to log leave in their company's official system. This automation just made sure supervisors had visibility and HR had a single source of truth.
Supervisor gets approval request — Email and Teams notification. They can approve or reject with one click, plus add comments.
Employee gets the outcome — Approved? Great, here's confirmation. Rejected? Here's why, contact your supervisor.
HR gets notified — Every approval, every rejection, logged and visible.
Data gets structured — Form responses flow into the clean Excel sheet, formatted for payroll reporting.
Monthly reports auto-generate — End of month, HR gets a formatted report ready to send to both parent companies.
The whole thing runs automatically. No manual data entry. No cross-referencing spreadsheets. No supervisors claiming they didn't know someone was on leave.
Phase 2: International Travel Tracking
A few months after the initial rollout, we added another layer.
When someone selected "Annual Leave" on the form and indicated they'd be traveling outside Australia, a new set of questions appeared:
Will you be taking your work phone?
Will you be taking your work laptop?
What countries are you visiting?
What dates?
If they answered yes to the devices, the automation would:
Notify our mobile provider not to bar service for international roaming
Notify Ferrovial's security team with the travel details, so when they saw sign-ins from Bali or wherever, they'd know it was legitimate and not a compromised account
Trigger Conditional Access policy exceptions so the employee wouldn't get locked out of their Microsoft account while overseas
This turned a potential security incident into a non-event. Security knew in advance. IT knew in advance. The employee could actually work if needed.
Results: The Numbers
1,500+ leave requests processed in the first year alone
Zero visibility gaps — every supervisor could see every request for their team
Thousands saved monthly — ghost leave payments eliminated
HR workload reduced dramatically — no more manual spreadsheet reconciliation
Still running today — over two years later, with no IT involvement required
The system is now self-managed by HR. When supervisors change, they update a simple list. When new fields are needed, they can modify the form. I built documentation and trained them on basic maintenance.
That was always the goal: build something that doesn't need me to keep running.
What I'd Do Differently
Looking back, a few things I'd change:
Start the service account process earlier. I underestimated how long it would take to get the account set up with Spain. If I'd kicked that off in week one instead of week two, I'd have shaved time off the project.
Build in more error handling from the start. The first version worked, but edge cases cropped up — what if a supervisor is also on leave? What if someone selects the wrong supervisor? I added those handlers later, but they should've been in v1.
Document everything as you build, not after. I wrote the training documentation at the end. It would've been easier to capture decisions and logic as I went.
Key Takeaways for Your Own Automation Projects
If you're looking to build something similar, here's what I learned:
1. Discovery before development. Spend real time understanding the problem. Map the workflow. Talk to stakeholders. The build is easy once you know exactly what you're building.
2. Use what you already have. Power Automate was included in our existing Microsoft 365 licenses. Zero additional cost. Before you go shopping for new tools, check what's already in your stack.
3. Build on service accounts. Your automation should outlive your employment. Don't make yourself a single point of failure.
4. Keep the user experience simple. The fanciest automation is worthless if people won't use it. Our form took 30 seconds to fill out. No training required.
5. Plan for maintenance. Someone needs to update this thing when you're gone. Build it so non-technical people can make basic changes.
6. Communicate the rollout. We didn't just flip a switch. There was a test phase with a small group, refinement based on feedback, then a project-wide rollout with clear communication about what was changing and why.
The Tools I Used (Quick Reference)
Tools | Purpose |
|---|---|
Microsoft Forms | User-facing leave request form |
Microsoft Excel | Data storage and reporting structure |
Microsoft Outlook | Email notifications |
Microsoft Teams | Supervisor approval notifications |
Power Automate | Workflow automation engine |
SharePoint | File hosting for Excel sheets |
All included in Microsoft 365 Business licenses. Total additional cost: $0.
Final Thoughts
This project taught me that automation isn't about replacing people — it's about removing the tedious stuff so people can focus on work that actually matters.
HR wasn't failing at their jobs. They were drowning in a structural problem created by two corporate systems that couldn't communicate. The automation didn't replace HR; it gave them their time back.
And honestly? Teaching myself Power Automate from zero to building a production system in 3-4 weeks was a good reminder that most technical skills are learnable if you're willing to dig in and figure it out.
If you're facing a similar problem — disconnected systems, manual processes burning hours, data falling through cracks — there's probably a solution hiding in the tools you already have. You just have to go looking for it.
Got questions about this project or thinking about building something similar? Get in touch - I'm always happy to talk automation.
About the Author
Chad Rossi is an IT automation specialist based (at the moment) in Canmore, Alberta. He specializes in Microsoft 365 administration, Power Automate workflows, and helping businesses eliminate manual processes. When he's not building automation systems, he's probably out photographing wildlife or treating complex IT problems like Dark Souls boss fights — tough, but worth it.






