Forum Discussion

ggtoth's avatar
ggtoth
Regular Visitor
9 months ago
Solved

Gen1 Dataflow Activator in Fabric

Hi,

I'm looking for a way to start a data pipeline in Fabric Capacity when a Gen1 dataflow completes successfuly on Premium Capacity.
Some reports were migrated to Fabric Capacity and I can't set up a way to automatically consume the dataflow to refresh them.

I was using Power Automate connectors before which were able to:

  • Check if a Gen1 dataflow completed successfully (When a dataflow refresh completes)
  • Initiate a semantic model refresh (Refresh a dataset)

The best options I can think of are:

  • Sending an email from Power Automate and starting the pipeline refresh manually
  • Setting up a schedule that will sometimes miss the dataflow update (be started before the refresh is finished)

The main restriction is:

  • I only have view access to the Premium workspace
  • I don't have access to the data that the dataflow uses, I can only get access through the dataflow

Is there a better way to do this?

Thank you in advance!

  • Hi ggtoth ,

    Since you don’t own the Gen1 dataflow and don’t have access to its underlying source systems or queries, migrating it to Dataflow Gen2 or re-implementing its logic isn’t feasible at the moment. The existing Gen1 dataflow effectively acts as a curated, external data contract.
    Given this constraint, the most practical and supported approach is to orchestrate around the Gen1 dataflow, not replace it:

    Use Power Automate to listen for the Gen1 dataflow refresh completion event, this works with view permissions.
    Once the refresh succeeds, trigger the Fabric pipeline or semantic model refresh programmatically via Fabric REST API using a service principal, or via a Fabric Notebook fallback if Power Automate HTTP is not licensed.
    This keeps the process event-driven and avoids unreliable scheduling or manual intervention.

    Migrating to Dataflow Gen2 would be the best long-term solution, but it requires action from the owning team of the dataflow. Until then, event-based orchestration around the existing Gen1 dataflow is the only viable, low-risk engineering solution.

    Hope this helps.
    Thanks.

10 Replies

  • Hi ggtoth ,

    You are in a tricky spot because of the "View Only" permission on the source workspace. This rules out most internal Fabric event triggers (like Eventstream or Activator) because you generally cannot attach listeners to artifacts you don't own/edit.

    Your intuition to use Power Automate is actually the best architectural fit here. It bridges the gap because:

    1. Trigger: It runs under your identity (reading the Gen1 status via your View permissions).

    2. Action: It can execute actions in the Fabric workspace (where you presumably have higher permissions).

    The missing piece you are looking for is how to "Start the Pipeline" from Power Automate. There isn't a simple "Run Fabric Pipeline" button in the standard connector yet, so you need to call the Fabric REST API.

    Here is the robust, event-driven solution:

    The Solution: Power Automate + Fabric REST API

    1. The Trigger Keep using the standard Power BI connector: "When a dataflow refresh completes".

    • Select the Gen1 workspace and dataflow.

    2. The Action Add an "HTTP with Microsoft Entra ID" (formerly Azure AD) action.

    • Note: This is a Premium connector. If you don't have a license, you can use the standard "HTTP" action, but you'll need to handle authentication headers manually or use a Service Principal.

    3. Configure the HTTP Call You will use the Fabric API to trigger a "Job" (the pipeline run).

    • Method: POST

    • Url of the request:

      Plaintext
       
      https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{pipelineId}/jobs/instances?jobType=Pipeline

      (You can find the workspaceId and pipelineId in the browser URL when you have your Fabric Pipeline open).

    • Body: {} (Empty JSON object)

    Connection Settings (for HTTP with Entra ID):

    Why this is the "Better Way"

    • No Polling: It is purely event-driven. It runs seconds after the Gen1 flow finishes.

    • Permissions: It respects your "View Only" constraints on the source while using your "Member/Admin" permissions on the destination Fabric workspace to execute the job.

    • No "Dummy" Schedules: You don't risk missing the window or running the pipeline before the data is ready.

    This bridges the gap between the "Old World" (Gen1 on Premium) and the "New World" (Fabric) perfectly!

    Hope this gets your automation running!


    If my response resolved your query, kindly mark it as the Accepted Solution to assist others. Additionally, I would be grateful for a 'Kudos' if you found my response helpful.
    This response was assisted by AI for translation and formatting purposes.

    • ggtoth's avatar
      ggtoth
      Regular Visitor

      I don't have Power Automate Premium license.
      Could you please share a post which deals with doing the authentication with the regular HTTP request?

      • burakkaragoz's avatar
        burakkaragoz
        Icon for Super User rankSuper User

        That is a valid concern. Licensing can often be the biggest hurdle!

        Important Warning: Just to set expectations, in Power Automate, the generic "HTTP" action is also considered a Premium connector in most Microsoft 365 plans. If your license restricts you from using the "HTTP with Entra ID" connector, it will likely restrict you from using the generic "HTTP" connector as well.

        However, if you do have access to the generic HTTP action (e.g., via a per-flow plan or specific Logic Apps setup) and just need to know how to handle the authentication manually, here is the "Service Principal" method.

        This replaces the "magic" of the Entra ID connector with a manual 2-step "Handshake".

        The 2-Step "Raw HTTP" Method

        Prerequisites:

        1. App Registration: Create an App in Azure Entra ID. Generate a Client Secret.

        2. Permissions: Add this App (Service Principal) as a Member/Contributor to your destination Fabric Workspace.

        Step 1: Get the Access Token (The Handshake) Add your first HTTP action to request a token from Microsoft.

        Step 2: Parse the Token (Optional but cleaner) You can use a Parse JSON action on the body of the previous step, or just extract it directly in the next step using an expression.

        Step 3: Call the Fabric API Add your second HTTP action to actually trigger the pipeline.

        The "Zero-License" Alternative (Fabric Native)

        If you find that you are blocked from using any HTTP action in Power Automate due to licensing, you can move this logic entirely inside Fabric since you mentioned you have Fabric Capacity.

        1. Create a Fabric Notebook.

        2. Write a simple Python script using mssparkutils.

        3. Logic:

          • Check the status of the Gen1 Dataflow (using Power BI REST API).

          • If it finished successfully in the last X minutes -> Trigger the Pipeline.

        4. Schedule this Notebook to run every 15-30 minutes.

        This uses your Fabric Capacity (which you already have) instead of a user-based Power Automate license.

        Let me know if you'd like the Python snippet for that Notebook approach!

  • Hi ggtoth !

     

    Have you considered migrating your Gen1 dataflow to a Dataflow Gen2?

     

    Dataflow Gen1 cannot be orchestrated from a Fabric pipeline, whereas Dataflow Gen2 is natively supported in Fabric Data Factory pipelines and can be directly added as an activity.

    By migrating to Gen2, you gain:

    • Native pipeline orchestration

    • Proper dependency management

    • Centralized monitoring in Fabric

    • A future-proof architecture aligned with Microsoft’s direction

    Gen1 dataflows cannot be triggered by Fabric pipelines, but Gen2 dataflows can.

    And so, on your pipeline you can send email to know if refresh is succedded or not, and initiate the semantic model refresh.

     

     

    Ressources : 

    https://learn.microsoft.com/en-us/fabric/data-factory/dataflows-gen2-overview

    https://learn.microsoft.com/en-us/fabric/data-factory/dataflow-gen2-migrate-from-dataflow-gen1

    https://learn.microsoft.com/en-us/fabric/data-factory/move-dataflow-gen1-to-dataflow-gen2

     

    Hope it can help you ! 

    Best regards,

    Antoin

    • ggtoth's avatar
      ggtoth
      Regular Visitor

      This is probably the best solution and also the easiest from an engineering standpoint but I can currently only access the data via that dataflow. I don't own it so I don't know what queries or databases it uses and connects to.

  • I am sure you have considered migrating to DF Gen2.  What issues have you encountered there?

    • ggtoth's avatar
      ggtoth
      Regular Visitor

      I considered it but it's more convenient to use the already prepared dataflow which contains all the data that I need.
      That would probably be the best option in the long run.

      I don't have access to the underlying data that the dataflow pulls from.

      • v-echaithra's avatar
        v-echaithra
        Icon for Community Support rankCommunity Support

        Hi ggtoth ,

        Since you don’t own the Gen1 dataflow and don’t have access to its underlying source systems or queries, migrating it to Dataflow Gen2 or re-implementing its logic isn’t feasible at the moment. The existing Gen1 dataflow effectively acts as a curated, external data contract.
        Given this constraint, the most practical and supported approach is to orchestrate around the Gen1 dataflow, not replace it:

        Use Power Automate to listen for the Gen1 dataflow refresh completion event, this works with view permissions.
        Once the refresh succeeds, trigger the Fabric pipeline or semantic model refresh programmatically via Fabric REST API using a service principal, or via a Fabric Notebook fallback if Power Automate HTTP is not licensed.
        This keeps the process event-driven and avoids unreliable scheduling or manual intervention.

        Migrating to Dataflow Gen2 would be the best long-term solution, but it requires action from the owning team of the dataflow. Until then, event-based orchestration around the existing Gen1 dataflow is the only viable, low-risk engineering solution.

        Hope this helps.
        Thanks.

  • v-echaithra's avatar
    v-echaithra
    Icon for Community Support rankCommunity Support

    Hi ggtoth ,

    I just wanted to check if the issue has been resolved on your end, or if you require any further assistance. Please feel free to let us know, we’re happy to help!


    Thank you 
    Chaithra E.

  • v-echaithra's avatar
    v-echaithra
    Icon for Community Support rankCommunity Support

    Hi ggtoth ,

    May I ask if you have resolved this issue? Please let us know if you have any further issues, we are happy to help.

    Thank you.