Power Apps for Enterprise: Building a Global Results Library
The Problem: Scattered Test Results
At Dyson, A/B test results lived everywhere: in PowerPoint decks, Excel spreadsheets, Confluence pages, and people's email inboxes. When someone asked "Have we tested this before?" the answer required archaeological excavation through SharePoint folders. We were duplicating tests because nobody could find previous results.
I built a Power Apps solution that centralized all test results into a searchable, filterable library. Teams across 52 markets could log their tests, share findings, and check for duplicates before starting new experiments.
Why Power Apps?
The choice was pragmatic. Dyson runs on Microsoft 365. Everyone has a Power Apps license included. SharePoint was already the document management system. Building on this stack meant:
- Zero additional licensing cost: Power Apps is included in M365
- Familiar infrastructure: IT already manages SharePoint
- Easy authentication: Single sign-on via Azure AD
- SharePoint lists as backend: No separate database needed
A custom web application would have been more flexible, but would have required procurement, hosting, and ongoing maintenance. Power Apps was live in three weeks.
Architecture
The solution had three components:
SharePoint Lists as Database
I created structured SharePoint lists to store test data:
- Tests list: Test name, hypothesis, markets, status, date range
- Results list: Linked to tests, with per-market conversion data
- Learnings list: Key takeaways tagged by category and market
SharePoint lists are not a real database, but for this volume of data (hundreds of tests, not millions) they worked well enough. The important thing was having a single structured source of truth.
The Power App
The main application had four screens:
- Dashboard: Summary statistics, recent tests, top learnings
- Test catalog: Filterable list of all tests with search and market filtering
- Test detail: Full test information with per-market results and attached documents
- New test form: Structured form for logging new tests with validation
// Power Fx formula for filtering tests by market and status
Filter(
Tests,
(MarketFilter.Selected.Value = "All" || Market = MarketFilter.Selected.Value)
&& (StatusFilter.Selected.Value = "All" || Status = StatusFilter.Selected.Value)
&& (SearchBox.Text = "" || SearchBox.Text in Title || SearchBox.Text in Hypothesis)
)Power Fx (Power Apps' formula language) is limited compared to real programming languages, but it handles CRUD operations and filtering adequately.
Power Automate Flows
I used Power Automate to add workflow logic:
- New test notification: When a test is logged, relevant market owners receive a Teams notification
- Duplicate detection: When a new test is created, a flow checks for similar previous tests and flags potential duplicates
- Weekly digest: A scheduled flow sends a summary of completed tests to the optimization team
User Adoption Challenges
Building the app was the easy part. Getting teams across 52 markets to actually use it was harder. Here is what worked:
- Executive sponsorship: The Head of Optimization mandated that all test results be logged in the library
- Templates: Pre-filled templates for common test types reduced the effort to log a test
- Integration with existing processes: The test request form became the entry point for requesting engineering resources
- Visible value: The first time someone found a previous test that answered their question, the library proved its worth
What I Would Do Differently
SharePoint lists have limitations that caused friction:
- List view threshold: SharePoint limits views to 5,000 items without indexed columns. I had to carefully plan indexes upfront.
- Delegation: Power Apps can only delegate certain operations to SharePoint. Complex filters sometimes required loading all data client-side, which was slow.
- Relational data: SharePoint lists do not support proper joins. I used lookup columns, but they are awkward compared to SQL relations.
If I were building this today, I would use Dataverse instead of SharePoint lists. It handles relational data properly and eliminates the delegation limitations. The tradeoff is a slightly higher license tier requirement.
Impact
Within six months, the library contained 200+ tests with per-market results. Teams reported finding relevant previous tests about 40% of the time before starting new experiments, saving significant engineering and analysis effort. The weekly digest became a popular knowledge-sharing mechanism across markets.
This project taught me that sometimes the best solution is not the most technically elegant one. Power Apps is not sexy, but it solved a real business problem in three weeks with zero additional infrastructure cost.