I built this tool to enable some end-users to refresh their Power BI data without granting them membership to the workspace. They needed to upload files at inconsistent times and wanted a way to trigger a refresh without being dependent on another team. I ended up building this into a solution that could easily be parameterised and deployed for any report.

The app offers a straightforward experience – a single button triggers the refresh. This starts a timer which runs a check every 15 seconds on a SharePoint list that is written to by the Power Automate flow that managed the refresh. Once triggered, the flow does the following:
- Checks if the report is already refreshing
- If not, trigger a refresh
- If it is, check every 30 seconds for a completion status
- Once refreshing, check every 30 seconds
- Log updates to the SharePoint list
- Log the final result

The users get updates from SharePoint displayed in the app. They can also see a progress bar that shows the time until the next update. A loading spinner helps show the user that things are still progressing.
The app can be embedded in Power BI apps – in my use case, I created a separate audience that could only see this app. The configuration is all baked into the URL and read in the app using the Param() function. To help other developers, I created a quick form in the app that builds the URL for them:

The flow handles dataflow dependencies via pre-mapped records that are built using the Power BI REST API. These are populated in lists that are referenced across multiple solutions for orchestration purposes.
Leave a Reply