Forum Discussion

PascalGervais's avatar
PascalGervais
New Member
21 hours ago

Dataflow refresh fails with status code 403 storageAccess when run from power automate.

Hi All,

I have a Gen1 Dataflow in a Premium PPU Workspace that fails with status code 403 after about 50 to 70 minutes of execution when run from Power Automate with 'Refresh a dataflow'. The dataflow runs OK when refreshed manually.

Error: PipelineException: Downstream service call to url 'https://wabi-canada-central-b-primary-redirect.analysis.windows.net/metadata/v201606/cdsa/dataflows/b2e8f2dd-658a-45de-b52a-96d352062012/storageAccess' failed with status code 403.: MashupValueException. RootActivityId = b6ad9bed-01c0-4070-8e34-c3720da61775.Param1 = PipelineException: Downstream service call to url 'https://wabi-canada-central-b-primary-redirect.analysis.windows.net/metadata/v201606/cdsa/dataflows/b2e8f2dd-658a-45de-b52a-96d352062012/storageAccess' failed with status code 403.: MashupValueException Request ID: 24a9300c-bbd9-45ba-9cb2-3bbfaaa3770f.

I am running the dataflow as the owner of the workspace.
The dataflow accesses previously run dataflows data only.
I have refreshed the credentials in the dataflow also.
The power automate action 'Refresh a dataflow' connection reference is mapped to the account that is the owner account.

Any ideas or where I can get more detailed logs?
Thanks

 

4 Replies

  • Hi PascalGervais

    ShafiUllah-bc and jubinsoni already cover the logs and the token theory, so here's one extra test that splits the cause in two. Add a scheduled refresh to the same dataflow, at a time when nothing upstream is refreshing, and let it run its full 50 to 70 minutes. A scheduled refresh never goes through Power Automate. If it finishes and only the flow run dies with the 403, the problem sits in the flow's path and not in the dataflow or its linked sources. If the scheduled run fails too, look at the dataflow and its sources first. Either result is worth adding to the support case next to the Request ID and RootActivityId. I can't see your tenant, so this narrows it down but doesn't diagnose it.

  • Hi PascalGervais​,

    I would first separate a failed refresh request from a refresh that starts successfully and fails later inside the dataflow. The downstream storageAccess error does not, by itself, establish that the Power Automate connection token expired. The 50 to 70 minute duration is useful evidence, but not proof of token expiry.

    For a controlled comparison, run the automated refresh only after every upstream dataflow has completed, with no overlapping refreshes. Compare that run with a successful manual run against the same upstream state.

    In the dataflow's Refresh history, download the CSV for both runs. Compare the failing entity or partition, start and end times, and the detailed Error column. Microsoft documents these per-entity details; they are more useful here than the overall 403 alone.

    Also check whether the Power Automate refresh action fails immediately or succeeds before the dataflow later fails. Include that distinction, the flow run ID, the two refresh logs, and your existing Request ID and RootActivityId in the support case.

    Since this is PPU, the documented Pro dataflow limits of two hours per entity and three hours per dataflow do not explain this failure. I would collect the comparison before changing the authentication approach or splitting the dataflow solely to stay below an assumed one-hour limit.

    Microsoft reference

  • Hi PascalGervais​,

    The 403 StorageAccess error usually indicates a permission or authentication issue when Power Automate tries to trigger the dataflow refresh.

    I would suggest checking the following:

    1. Refresh the dataflow manually in Power BI Service. If it works, the issue is likely related to the Power Automate connection or its permissions.
    2. In Power Automate → Connections, check the Power BI connection and re-authenticate it.
    3. Make sure the account used by Power Automate has Member, Contributor or Admin access to the workspace containing the dataflow.
    4. Verify that the dataflow's source credentials are valid. If the workspace uses Azure Data Lake Storage, also check the storage permissions.

    If the manual refresh works but Power Automate still returns 403, try recreating the Power BI connection in the flow using an account with the required workspace permissions.

    Hope this helps!
    Best Regards,
    Maruthi
    LinkedIn - http://www.linkedin.com/in/maruthi-siva-prasad/
    X            -  Maruthi Siva Prasad - (@MaruthiSP) / X

  • jubinsoni's avatar
    jubinsoni
    Icon for Memorable Member rankMemorable Member

    Hi PascalGervais​,

    The detail that stands out is that the same dataflow completes when refreshed manually but fails with a 403 after roughly 50 to 70 minutes when started from Power Automate. A permission problem that you had at the start of the run would fail immediately, so a failure after about an hour suggests something that expires during the run, most likely the credential or token used by the trigger rather than the dataflow definition. I can't confirm that from the error alone, so here is how I would test it and what to collect.

    Why a long run can end in a 403

    PossibilityWhy it fits your symptomsHow to check
    Token lifetime of the triggering connectionManual refresh and the Power Automate action authenticate differently, and a run that lasts an hour can outlive the tokenCompare the failure time across several runs; if it is always close to the same elapsed time, expiry is likely
    Conditional access or sign-in frequency policyPolicies on the owner account can invalidate sessions after a fixed periodAsk your Entra admin to check sign-in logs for the account at the failure time
    Downstream linked dataflow callYour dataflow reads other dataflows, and the 403 is reported as a downstream service callCheck the linked dataflows were not being refreshed or edited by someone else at the same time, and that the account still has access to them
    Ownership or credential changeYou refreshed the credentials, which suggests this was already suspectedConfirm the connection reference in the flow uses the same account, and that it was re-authenticated after the last password or MFA change

    Where to find more detail

    • In the workspace, open the dataflow's refresh history and download the refresh log for the failed run; it lists the entity that was running when the failure happened.
    • Keep the Request ID and RootActivityId from the error, since Microsoft Support will ask for them.
    • In Power Automate, open the run history for the flow and note exactly when the action started and when it failed.

    Ways to avoid the long single run

    OptionNotes
    Split the dataflow into smaller dataflows and chain the refreshesEach run finishes well inside an hour; the flow calls them one after another
    Trigger the refresh through the REST API with a service principalAvoids tying the run to a user token; needs the tenant settings for service principals to be enabled
    Reduce the work per runCheck whether a few entities account for most of the time and move them to a separate dataflow

    If the failure always lands at the same elapsed time, you have strong evidence for token expiry and can raise it with support with that pattern, the Request ID and the flow run ID.

    So my overall approach would be:

    1. Record elapsed time at failure over several runs
    2. Check sign-in logs and conditional access for the owner account
    3. Download the dataflow refresh log for the failing entity
    4. Split the dataflow or use a service principal to shorten dependence on one token
    5. Open a support case with Request ID and RootActivityId

    AI-assisted drafting: AI was used to help structure and phrase this response. I reviewed and validated the technical content before posting.