Forum Discussion

Nikhil_BI's avatar
Nikhil_BI
New Member
1 month ago
Solved

Detect the new reports in Power BI workspaces

Currently, there are multiple workspaces and it is difficult to track if a new Power BI report went live/got published in the list of workspaces to keep the Report Catalog up-to-date.   Report Cata...
  • DataTako's avatar
    1 month ago

    Yes, this is definitely possible, and your proposed flow is basically the right approach.

    The key issue is the authentication to the Power BI REST API. To retrieve the reports from a specific workspace, you can call:

     

    GET https://api.powerbi.com/v1.0/myorg/groups/{workspaceId}/reports

     

    This returns the reports in that workspace, which you can then compare against the Excel Report Catalog. Microsoft supports this endpoint for workspace report retrieval.

     

    The Access to api.powerbi.com was denied message most likely means that the identity used by the automation does not have sufficient Power BI API/workspace access, rather than there being a problem with the flow itself.

    I would recommend using a Service Principal / Entra App Registration for the automation rather than a personal user account. In the Fabric/Power BI Admin Portal, the tenant setting that allows service principals to call Fabric/Power BI APIs needs to be enabled, preferably for a dedicated security group. The service principal also needs access to each workspace that you want to monitor. Microsoft specifically documents that a service principal needs to be added to the workspace, typically as Member or Admin, before it can access the workspace content through the APIs.

     

    So your architecture could be:

    Scheduled Power Automate / Azure Function → authenticate with Entra ID → GET /groups/{workspaceId}/reports → read Excel catalog → compare report IDs/names → send email for anything missing

     

    I would compare using the Report ID where possible rather than only the report name, because names can change or potentially be duplicated.

     

    Another option, especially if you have Fabric Administrator access, is to use the Power BI Activity Log instead. The Activity Events API exposes tenant Power BI activities and keeps up to approximately four weeks of history. You could periodically check for report publishing/creation events and send a notification from there. However, for your specific requirement “does a report currently exist in these workspaces that isn't in my catalog?” I actually prefer your scheduled inventory comparison because it also catches reports if an event was missed.

     

    So I wouldn't redesign the solution yet. I would first ask your Power BI/Fabric administrator to check:

    - Whether the identity running the flow has access to the relevant workspaces.

    - If using a service principal, whether Service principals can call Fabric public APIs / use Power BI APIs is enabled for it.

    - Whether you're obtaining an Entra access token for the Power BI API before calling api.powerbi.com. Microsoft also has an HTTP with Microsoft Entra ID connector that can call Entra-authenticated endpoints from Power Automate.

     

    Once that authentication issue is solved, the rest of the flow you designed should be relatively straightforward.