Run ADF pipeline inside Azure Function

Abstract: Enables Azure Functions to trigger ADF pipelines via REST API using service principal authentication and SDKs.

Created: 2026-09-03 by

You can trigger an Azure Data Factory pipeline from an Azure Function by using the Azure SDK for Python, .NET, or Java to call the ADF REST API. This approach allows you to decouple orchestration logic from data movement, enabling event-driven triggers and custom business logic before execution begins.

Prerequisites and Authentication

Before writing code, ensure you have an active Azure subscription with both Azure Data Factory and Azure Functions resources provisioned. The most critical step is establishing secure authentication between the two services. You should create a Microsoft Entra ID (formerly Azure AD) application registration in the Azure portal. This app will serve as the service principal that the Azure Function uses to authenticate against the ADF management plane.

Once the application is registered, note down the Application (client) ID, Directory (tenant) ID, and create a new client secret. These three values are required for your function to obtain an access token. You must also assign the Data Factory Contributor role to this service principal on the specific resource group containing your Data Factory instance. Without this role assignment, the function will receive a 403 Forbidden error when attempting to start a pipeline.

Store these credentials securely in the Azure Function App settings under "Application Settings" or use Managed Identities if your environment supports it. Never hardcode secrets in your source code. If you are using Python, you will need the azure-identity and azure-mgmt-datafactory packages installed in your virtual environment.

Configuring the Azure Function

Create a new HTTP-triggered Azure Function. This type of trigger is ideal because it allows external systems or other functions to invoke the pipeline via a webhook URL. In the function code, you will initialize the credential object using the environment variables you configured earlier. For example, in Python, you would use ClientSecretCredential passing the tenant ID, client ID, and client secret.

from azure.identity import ClientSecretCredential
from azure.mgmt.datafactory import DataFactoryManagementClient

# Retrieve secrets from environment variables
tenant_id = os.environ["AZURE_TENANT_ID"]
client_id = os.environ["AZURE_CLIENT_ID"]
client_secret = os.environ["AZURE_CLIENT_SECRET"]

credentials = ClientSecretCredential(
    tenant_id=tenant_id,
    client_id=client_id,
    client_secret=client_secret
)

Next, instantiate the DataFactoryManagementClient. You need the subscription ID and the name of your Data Factory resource. This client object provides the methods necessary to interact with pipelines, datasets, and linked services. Ensure that the region specified in the client initialization matches the region where your Data Factory is deployed.

Executing the Pipeline

To run a pipeline, you call the pipelines.create_run_by_resource_group method (or similar depending on the language SDK). You must pass the resource group name, the factory name, and the pipeline name. Optionally, you can include parameters that match the inputs defined in your ADF pipeline JSON definition. This allows dynamic configuration of the data flow without modifying the pipeline structure itself.

The response from this API call includes a pipeline_run_id. It is best practice to capture this ID and return it in the HTTP response body of your Azure Function. This ID allows downstream processes to track the status of the execution. You can then poll the ADF API using this ID to check if the pipeline has succeeded, failed, or is still running.

If you need to handle large-scale triggering, consider adding retry logic with exponential backoff to handle transient network errors. Additionally, implement proper exception handling to catch authorization errors or missing pipeline names, providing clear error messages to the caller. For more complex workflows involving multiple steps, such as validating data before triggering, see Add column mapping in Azure Data Factory to understand how parameterization works within the destination dataset.

Monitoring and Error Handling

Reliability is key when integrating cloud services. Your Azure Function should not assume immediate success upon receiving the create_run response. Instead, implement a loop that checks the status of the pipeline run at regular intervals. Use the pipelines.get method with the pipeline_run_id to retrieve the current state.

Common states include Pending, InProgress, Succeeded, and Failed. If the state becomes Failed, retrieve the detailed error message from the response to log appropriately. You can integrate with Application Insights to store these logs for long-term analysis. This helps in debugging issues related to data connectivity or permission changes over time.

Consider setting up alerts in Azure Monitor for failures originating from the Azure Function. This ensures that your team is notified immediately if the integration layer breaks, rather than waiting for a manual audit of the Data Factory runs. Proper monitoring transforms a simple script into a robust enterprise-grade integration point.

Frequently Asked Questions

Can I trigger a pipeline directly from a timer instead of HTTP?

Yes, you can change the trigger type to Timer in the Azure Function configuration. This allows the pipeline to run automatically at scheduled intervals without any external request. The authentication and execution code remain identical regardless of the trigger mechanism.

What happens if the Azure Function times out before the pipeline finishes?

Azure Functions have execution limits, typically 5 minutes for Consumption plans. Since ADF pipelines often take longer, the function will timeout while waiting. To avoid this, only initiate the run in the function and return the Run ID immediately. Let a separate process or dashboard poll for the status later.

Do I need to install additional libraries in the Azure Function app?

If you are using Python, you must specify dependencies in a requirements.txt file located in your function folder. Include azure-identity and azure-mgmt-datafactory there. The Azure platform will automatically install these during deployment. For .NET, add the NuGet packages directly to your project.

Is it possible to pass complex objects as pipeline parameters?

ADF pipeline parameters are limited to basic types like strings, numbers, and booleans. You cannot pass complex JSON objects directly as single parameters. Instead, serialize your complex data into a string format, such as JSON, and pass it as a string parameter. Parse it inside the pipeline using expressions.

How do I debug permission issues when the function fails?

First, verify that the service principal has the Data Factory Contributor role assigned to the correct resource group. Second, check if the client secret has expired. Third, ensure the firewall settings of the Data Factory allow connections from the Azure Function's IP range if VNet integration is not used.

Latest News

How to Display Output of xterm Command in Terminal Screen using Cron

Resolve the inability to display xterm output in a terminal screen from cron by redirecting logs or using wall instead of insecure X11 workarounds.

Read More
Expose Local Server on VPS Preserving Real Client IPs (OS Level)

Resolve VPS logging showing only gateway IPs by configuring reverse proxies to forward real client addresses via X-Forwarded-For headers.

Read More
How to Clear Recent Files History in Linux without Deleting Actual Files?

Clear recent files history in Linux by deleting ~/.local/share/recently-used.xbel without removing the actual files.

Read More
Best HDD Copy Strategy: Manually Syncing and Rewriting Scratch

Resolve data drift between two 4TB hard drives by using rsync with the --delete flag to manually sync and rewrite scratch data for an exact mirror.

Read More
Understanding Bash Prompt Abbreviations: An Overview

Resolve repetitive typing errors by creating and persisting Bash aliases in the .bashrc file for improved command-line efficiency.

Read More
Free Tools and Methods to Log Real-Time Performance Details in Task Manager

Log real-time CPU and memory metrics to CSV files using Windows Performance Monitor Data Collector Sets to troubleshoot system slowness.

Read More
Contact Qatar Airways Customer Service: Phone Number, Help Center, and More

Resolve urgent Qatar Airways reservation issues like flight changes and baggage claims using the US phone number +1801-855-5905 or online self-service tools.

Read More
Windows 11: Alt Codes Displaying Wrong Characters - Solutions

Resolve Windows 11 Alt codes showing wrong characters by verifying the US keyboard layout and enabling Num Lock.

Read More
Run Programs with Elevated Privileges: A Comprehensive Guide

Eliminates the need to type sudo for frequent administrative tasks by configuring .bashrc aliases or functions.

Read More
Dynamically Changing Dates in Excel Formulas Using Cells

Eliminate manual date updates in Excel by using cell references to create dynamic formulas that automatically adjust calculations when input dates change.

Read More
Granting Edit Access to a Specific Excel Sheet in an Office 365 User Email ID-Based Login

Excel Online lacks native sheet-level permissions, so users must split workbooks or use worksheet protection to isolate edit access for specific tabs.

Read More
Creating Network Load on Local Wi-Fi from One PC

Generate sustained Wi-Fi bandwidth load from a single PC using a VM SFTP server to test router stability and throughput.

Read More
Changing the Default Editor for Batch Files in Windows 11's File Explorer

Resolve the issue of batch files opening in Notepad by changing the default editor to a preferred application like VS Code.

Read More
Gain WiFi Connection Minutes Before Losing it by Changing MAC Address

Bypass MAC address filtering to restore WiFi connectivity temporarily when a device is blocked by network administrators.

Read More
Photos Folders Turned Black: Troubleshooting Picture Applications on Windows

Resolve black screens in Windows Photos by resetting the app, updating graphics drivers, and repairing system files.

Read More
Troubleshooting High CPU Temperature Values: A Step-by-Step Guide

Resolve high CPU temperatures and thermal throttling by monitoring with Speedfan, cleaning dust from cooling components, and replacing degraded thermal paste.

Read More
Make cURL establish TLS connection with CA unknown

Resolve cURL TLS connection failures with unknown or self-signed certificates by using the --insecure flag to bypass CA validation.

Read More
Troubleshooting Incorrect Network Metrics Values in Grafana, Prometheus, InfluxDB, and Telegraf

Fix incorrect network metrics in Grafana, Prometheus, InfluxDB, and Telegraf by verifying interface selection, resolving unit mismatches, and handling counter resets.

Read More
Start Another Terminal Window (cmd.exe) Windows Repair/Troubleshoot

Provides step-by-step instructions to access the Windows Command Prompt via bootable media for advanced system repair and troubleshooting.

Read More
Thinkpad P1 Gen 6: Sudden Thunderbolt 3 Dock USB-C Charging Stopped Working

Resolve sudden Thunderbolt 3 dock USB-C charging and internet failure on ThinkPad P1 Gen 6 by updating firmware, resetting the dock, and adjusting power settings.

Read More
ASUS Windows 11 Laptop: Internet Connection Issue with Hotspot

Resolve ASUS Windows 11 laptop spinning wheel issue when connecting to mobile hotspot by resetting network stack, disabling IPv6, and adjusting power settings.

Read More
Developing iOS Project with Firebase: Logging in and Sending Push Notifications

Integrates Firebase to enable secure user authentication and push notifications in iOS applications.

Read More
Troubleshooting Bash Script with Suspected Issues of Spaces, Dashes, Filenames and Quoting

Resolve Bash script failures caused by word splitting, globbing, and special characters in filenames by applying proper quoting techniques.

Read More
Populating OneDrive Folder for Local Backup without Affecting Remote Files

Prevent OneDrive from deleting remote files during Windows reinstallation by unlinking the account or using symbolic links to isolate local data.

Read More
Force First Frame as Keyframe Without Re-encoding: A Quick Solution

Resolve inaccurate seeking and playback glitches by re-encoding video to ensure the first frame is a valid keyframe.

Read More
Find Information in Database Using WSL (Ubuntu) on Windows-10

Resolve database connection issues from WSL Ubuntu on Windows 10 by configuring client tools and network access to query remote or local servers.

Read More
Configuring a New Router with Different Networks: One Family, One Guest

Resolve IP conflicts and isolate guest traffic by configuring a second router with a distinct subnet via its WAN port.

Read More
Quickly Open Multiple Stock Websites with a Single Command

Solve the problem of manually opening multiple stock research websites by creating a single command to launch them simultaneously on Windows, macOS, or Linux.

Read More
Improved Adobe Acrobat Search Experience: Access Advanced Search with Ease

Access advanced search filters like case sensitivity and regex in Adobe Acrobat by clicking More Options in the Find bar.

Read More
Port Forwarding VM via OpenVPN: A Comprehensive Guide

Configure OpenVPN server and iptables to forward specific ports from VPN clients to a virtual machine's internal IP address.

Read More
Understanding Partitions in the 1980s: A Look Back at MS-DOS and Master Boot Record

Explains how the Master Boot Record and partition table enabled MS-DOS to manage multiple disk volumes on a single physical drive.

Read More
Windows 10 Enterprise: Keyboard Not Detected in Managed Organization with Admin Privileges

Resolve Windows 10 Enterprise keyboard detection failures caused by Group Policy restrictions, driver corruption, or USB enumeration errors.

Read More
Can't Find x86_64 Versions of Applications on MacOS arm64 (M1)

Resolve missing x86_64 app issues on M1 Macs by installing Rosetta 2 and reinstalling apps as universal binaries.

Read More
How to Hide Installation Source for an Android App

Manage Android app installation source visibility by using USB transfers or file managers to reduce browser traces and isolate data via work profiles.

Read More
Connecting Momentus 4200.2 ST9808210A Hard Drive via USB Cable

Resolve inability to access Seagate Momentus 4200.2 ST9808210A hard drive by connecting it via USB using a compatible SATA-to-USB adapter and configuring the disk in Windows.

Read More