MetricSign
Start free
error-reference12 min·

Azure Data Factory Pipeline Errors: A Reference Index of Common Failures

Your ADF pipeline failed at 03:42 with a UserError code that means nothing on its own. The Power BI refresh that depends on it is two hours away. Here is how to read the error class and jump to the fix.

Lees dit artikel in het Nederlands →

What ADF pipeline errors look like

Azure Data Factory does not raise a single class of error. A failed pipeline run can produce a numeric code in the 2xxx, 3xxx, or 5xxx range, a UserError* class name from the copy activity, an HRESULT from the self-hosted integration runtime, or a bare .NET exception name like OutOfMemoryException. The shape of the error tells you where it came from before you read the message.

ADF Studio · Activity log · failed
Pipeline: SalesDailyLoad · Activity: CopyToWarehouse · Run ID: 7e3f2a1c-8d04 · 03:47 UTC
UserErrorAzureBlobOperationFailed
Failure happened on 'Sink' side. ErrorCode=2200, 'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message=Failure happened on 'Sink' side. ErrorCode=AdlsGen2OperationFailed, Container=warehouse, Path=raw/sales/2026-05-09. Server failed to authenticate the request.
at Microsoft.DataTransfer.ClientLibrary.Adls.AdlsClient.WriteAsync() at Microsoft.DataTransfer.ClientLibrary.HybridDeliveryClient.CopyAsync()
Waar engineers tijd verliezen Deze UserError* klasse komt uit het activity log, niet uit het run log. In het run log zie je alleen "Activity 'CopyToWarehouse' failed" — twee klikken diep om de echte oorzaak te vinden.

Three log surfaces produce these errors and they do not always agree:

  • Run log — the per-pipeline run history in the ADF Studio Monitoring tab. Shows the activity that failed, the duration, and the error message returned by that activity. This is the surface you reach by clicking the failed run.
  • Activity log — the per-activity diagnostic detail behind each pipeline activity. For a copy activity, this is where you see UserErrorAzureBlobOperationFailed or UserErrorCopyActivityInvalidSinkConfiguration. For a self-hosted IR activity, this is where the HRESULT and stack trace land.
  • Trigger log — the trigger run history. A pipeline that never started because the schedule trigger failed will show up here, not in the run log. Easy to miss if you only check the pipeline view.

Reading the wrong log is the first place engineers lose time. A pipeline shown as "queued" in the run log can have a trigger-level failure that is only visible in the trigger log. A copy activity that returns a generic "failed" status in the run log usually has the actual UserError* class buried two clicks deep in the activity-level details.

Why ADF errors break your downstream Power BI, Fabric, and dbt pipelines

An ADF failure rarely stays in ADF. Most production pipelines exist to land data into a layer that something else reads — a lakehouse Power BI Direct Lake reads from, a Fabric warehouse a dbt project transforms, a Snowflake table a downstream BI dataset depends on.

Three cascade patterns cover the majority of incidents data teams handle:

The silent zero-row load. A copy activity completes without an error but writes zero rows because a source filter changed, a partition is empty, or a UserErrorInvalidColumnReferenced was caught and swallowed by an OnError activity. Power BI refreshes successfully on the empty table. The dashboard shows yesterday's cached data because Direct Lake fell back. Nobody is paged.

The late-but-completed pipeline. The ADF pipeline runs 22 minutes longer than its baseline because the self-hosted integration runtime hit UserErrorSelfHostedIntegrationRuntimeBusyWithFullTask and queued the run. The pipeline succeeds, but it finishes after the 06:00 Power BI refresh has already started. The refresh reads the previous day's snapshot and the Monday board report shows last week's numbers.

The downstream credential break. The pipeline fails with UserErrorOAuthTokenExpiredOrRevoked against a linked service. The dbt project that runs downstream sees no new partition and skips the model with a freshness check, which is correct behaviour but produces no alert. Six hours later, somebody notices.

In all three the ADF error itself is recoverable in minutes — once you find it. The damage is the time between the failure and the moment a human sees the alert.

For an end-to-end view of how ADF, Databricks, dbt, and Power BI fit together, see end-to-end data lineage from ADF to Power BI.

ADF error categories

ADF errors group into a handful of failure modes. Use this index to identify which class of problem you are looking at, then click through to the dedicated fix page for the specific code.

#### Configuration (most common)

These errors fire when the pipeline definition, linked service, or self-hosted integration runtime configuration is wrong. Tenant mismatches, missing assemblies, JVM not installed, ACLs not granted. Common after IR upgrades or tenant migrations.

CodeIssue
HRESULT: 0x8007007EJVM DLL Not Found on ADF Self-hosted IR Node
TypeInitializationExceptionSelf-Hosted IR Type Initializer Failure
FileNotFoundExceptionSelf-Hosted IR Assembly or File Not Found
HybridDeliveryExceptionSelf-Hosted IR Java Runtime Not Found
DllNotFoundExceptionSelf-Hosted IR Native DLL Not Found (jvm.dll)
ADF Pipeline Error 2709Access Token Is From the Wrong Tenant
ADF Pipeline Error 2705Forbidden — ACL Verification Failed for Data Lake Store
ADF Pipeline Error 2711ACL Verification Failed — Data Lake Store Access Forbidden

#### Data source

The pipeline reached the source or sink, but something about the data, the schema, or the request was rejected. Sink configuration mismatches, blob path missing, columns referenced that no longer exist, RU/s exceeded on Cosmos DB.

CodeIssue
UserErrorAzureBlobOperationFailedAzure Blob Operation Failed
UserErrorCopyActivityInvalidSinkConfigurationCopy Activity Invalid Sink Configuration
UserErrorCosmosDbRequestRateOrLimitExceededCosmos DB Request Rate or Limit Exceeded
UserErrorDataFlowExecutionTimeoutData Flow Execution Timeout
UserErrorFileNameContainerNotFoundFile Name or Container Not Found
UserErrorInvalidColumnReferencedInvalid Column Referenced
UserErrorMaxConcurrentRunsLimitReachedMax Concurrent Runs Limit Reached
UserErrorNoDestinationForColumnNo Destination For Column

#### Credentials

The pipeline reached the auth layer and was rejected. Service principal secret expired, Key Vault key missing, OAuth token revoked, linked service authentication failed. These usually surface as a cluster: every pipeline that uses the same linked service breaks in the same hour.

CodeIssue
UserErrorAccessDeniedAccess Denied
UserErrorKeyNotFoundInKeyVaultKey Not Found In Key Vault
UserErrorLinkedServiceAuthenticationFailedLinked Service Authentication Failed
UserErrorOAuthTokenExpiredOrRevokedOAuth Token Expired Or Revoked

#### Capacity

The data factory or one of its dependencies hit a quota or memory ceiling. ADF subscription quota exceeded, Cosmos DB request rate too large, the self-hosted IR ran out of memory mid-copy.

CodeIssue
UserErrorDataFactoryQuotaExceededData Factory Quota Exceeded
DocumentClientExceptionCosmos DB Request Rate Too Large in Copy
OutOfMemoryExceptionSelf-Hosted IR Out of Memory Error

#### Gateway

The self-hosted integration runtime is the gateway between ADF and on-premises sources. When it cannot run a Java dependency, is saturated by concurrent tasks, or the Windows service is not running on the host, every pipeline routed through it fails until the gateway recovers.

CodeIssue
UserErrorParquetJavaInvocationExceptionParquet Java Invocation Exception
UserErrorSelfHostedIntegrationRuntimeBusyWithFullTaskSelf-Hosted IR Busy With Full Task
UserErrorSelfHostedIntegrationRuntimeNotRunningSelf-Hosted IR Not Running

#### Connectivity

The pipeline failed before it could exchange data with the source or sink. ODBC driver returned a network error, SAP RFC destination registration failed, the self-hosted IR cluster peer is unreachable.

CodeIssue
ADF Pipeline Error 2200ODBC Operation Failed in Copy Activity
SapRfcDestinationAddFailedSAP RFC Destination Registration Failed
EndpointNotFoundExceptionSelf-Hosted IR Node Cannot Connect to Cluster Peer

#### Data format

The data reached the activity but the activity could not parse it. Usually a malformed query string, a column type mismatch in a schema-on-read sink, or an encoding issue in the source.

CodeIssue
UserErrorOdbcInvalidQueryStringInvalid ODBC Query String

#### Permissions

The pipeline ran but a Windows or RBAC permission was missing. The most common variant is a self-hosted IR service account without permission to read a local share or write a managed folder.

CodeIssue
UnauthorizedAccessExceptionSelf-Hosted IR Service Account Permission Denied

How MetricSign detects ADF pipeline failures

MetricSign reads the Azure Data Factory activity log, pipeline run history, trigger run history, and integration runtime status. Where ADF Studio shows a generic "failed" status, MetricSign extracts the underlying error class and surfaces it in a single alert against the affected pipeline and its downstream consumers.

Four detection paths cover the majority of production incidents:

  • Trigger-level failures. Caught from the trigger run history. A schedule trigger that never fired the pipeline produces no entry in the run log; MetricSign reads the trigger surface separately and alerts when an expected run did not start.
  • Activity-level failures. Caught from the activity-level details inside each pipeline run. The alert names the pipeline, the activity, the UserError* class, and the linked downstream Power BI datasets, dbt models, or Fabric items that depend on it.
  • Self-hosted integration runtime offline. Caught from the IR status endpoint. When an on-prem IR node flips offline because of UserErrorSelfHostedIntegrationRuntimeNotRunning or a JVM dependency error, MetricSign alerts before the next scheduled pipeline tries to use it.
  • Linked service authentication failures. When a cluster of pipelines all return UserErrorLinkedServiceAuthenticationFailed or UserErrorOAuthTokenExpiredOrRevoked against the same linked service, the failures are grouped into one incident instead of paging on each pipeline separately.

Honest caveat: MetricSign reads what ADF exposes through its REST API. Errors that ADF logs only on the self-hosted IR host machine — a JVM install that succeeded but pointed at the wrong path, a Windows event log entry that never made it into the IR diagnostic upload — are not visible to MetricSign or to anything else outside the host. For those the diagnostic still happens on the IR machine itself.

How to systematically diagnose an ADF error

When an ADF pipeline fails, work the diagnostic in this order rather than searching the message text:

  1. Check the trigger log first. If the pipeline never started, the run log is empty. Open the trigger run history in ADF Studio Monitoring and confirm the schedule actually fired.
  2. Read the error class, not the message. UserErrorAccessDenied and UnauthorizedAccessException both surface as "access denied" but require completely different fixes — one is a linked service credential, the other is a Windows ACL on the IR host.
  3. Identify the category. Configuration, data source, credentials, capacity, gateway, connectivity, data format, permissions. The category determines who can fix it. The index above maps each code to its category.
  4. Check whether it is one pipeline or many. A single pipeline returning UserErrorOAuthTokenExpiredOrRevoked is a per-pipeline credential issue. Every pipeline against the same linked service returning the same code in the same hour is a tenant- or subscription-level problem with that linked service or its key vault entry.
  5. For self-hosted IR errors, check the IR host before the pipeline. Errors with HRESULT, DllNotFoundException, TypeInitializationException, OutOfMemoryException, or EndpointNotFoundException originate on the IR machine, not in ADF. Run the IR diagnostic on the host and check the Windows event log before changing anything in ADF Studio.
  6. Match the timing to a deploy or a credential rotation. A burst of UserErrorLinkedServiceAuthenticationFailed at the same minute almost always lines up with a service principal secret expiring or a Key Vault rotation. A slow drift over a week is more likely a quota approaching its ceiling.

Skipping the category step is the most common mistake. Engineers Google the message text and end up reinstalling a JVM on an IR host when the actual fix was a Key Vault ACL.

Full ADF error index

Every code linked from this hub has its own page with the canonical Microsoft description, the typical pipeline scenario it appears in, and the fix steps. Use this list to jump directly to the code you are looking at.

CodeDescription
ADF Pipeline Error 2200ODBC Operation Failed in Copy Activity
ADF Pipeline Error 2705Forbidden — ACL Verification Failed for Data Lake Store
ADF Pipeline Error 2709Access Token Is From the Wrong Tenant
ADF Pipeline Error 2711ACL Verification Failed — Data Lake Store Access Forbidden
DllNotFoundExceptionSelf-Hosted IR Native DLL Not Found
DocumentClientExceptionCosmos DB Request Rate Too Large
EndpointNotFoundExceptionSelf-Hosted IR Cluster Peer Unreachable
FileNotFoundExceptionSelf-Hosted IR Assembly or File Not Found
HRESULT: 0x8007007EJVM DLL Not Found on Self-hosted IR Node
HybridDeliveryExceptionSelf-Hosted IR Java Runtime Not Found
OutOfMemoryExceptionSelf-Hosted IR Out of Memory
SapRfcDestinationAddFailedSAP RFC Destination Registration Failed
TypeInitializationExceptionSelf-Hosted IR Type Initializer Failure
UnauthorizedAccessExceptionIR Service Account Permission Denied
UserErrorAccessDeniedAccess Denied
UserErrorAzureBlobOperationFailedAzure Blob Operation Failed
UserErrorCopyActivityInvalidSinkConfigurationCopy Activity Invalid Sink Configuration
UserErrorCosmosDbRequestRateOrLimitExceededCosmos DB Request Rate Exceeded
UserErrorDataFactoryQuotaExceededData Factory Quota Exceeded
UserErrorDataFlowExecutionTimeoutData Flow Execution Timeout
UserErrorFileNameContainerNotFoundFile Name or Container Not Found
UserErrorInvalidColumnReferencedInvalid Column Referenced
UserErrorKeyNotFoundInKeyVaultKey Not Found In Key Vault
UserErrorLinkedServiceAuthenticationFailedLinked Service Authentication Failed
UserErrorMaxConcurrentRunsLimitReachedMax Concurrent Runs Limit Reached
UserErrorNoDestinationForColumnNo Destination For Column
UserErrorOAuthTokenExpiredOrRevokedOAuth Token Expired Or Revoked
UserErrorOdbcInvalidQueryStringInvalid ODBC Query String
UserErrorParquetJavaInvocationExceptionParquet Java Invocation Exception
UserErrorSelfHostedIntegrationRuntimeBusyWithFullTaskSelf-Hosted IR Busy With Full Task
UserErrorSelfHostedIntegrationRuntimeNotRunningSelf-Hosted IR Not Running

This index covers the ADF errors with measurable search volume and reproducible fix paths. The full Microsoft reference lists more codes; the ones above are the codes that surface in production pipelines often enough to have their own dedicated page.

ADF failures should not surface first as a stale Power BI dashboard or a skipped dbt model. MetricSign monitors ADF triggers, activities, and integration runtime status across your subscriptions and routes the alert before the next downstream refresh starts.

Frequently asked questions

What is an ADF pipeline error?+
An ADF pipeline error is any failure that prevents an Azure Data Factory pipeline from completing as expected. It can come from the pipeline itself (a numeric code like 2709), from a copy activity (a `UserError*` class such as `UserErrorAzureBlobOperationFailed`), or from the self-hosted integration runtime (a .NET exception such as `OutOfMemoryException`). The class of error tells you which subsystem rejected the run.
Where do I find the actual error code for a failed ADF pipeline?+
Open the pipeline run in ADF Studio Monitoring, click the failed activity, and expand the activity output. The error class (for example `UserErrorOAuthTokenExpiredOrRevoked`) is in the activity-level details, not the pipeline-level summary. If the pipeline never started, check the trigger run history instead — schedule-trigger failures do not appear in the pipeline run log.
What is the difference between a UserError and a system error in ADF?+
`UserError*` classes describe failures that ADF attributes to the configuration, data, or credentials supplied by the pipeline author. System errors and bare .NET exceptions (`OutOfMemoryException`, `EndpointNotFoundException`) usually originate in the self-hosted integration runtime or the underlying service. The split matters for who can fix it: most `UserError*` codes are pipeline-author fixable, system errors often require host or admin action.
Why does an ADF pipeline succeed but write zero rows?+
A copy activity returns success when the source query, the network, and the sink configuration all worked. If the source filter changed, the partition is empty, or an upstream system stopped emitting data, the activity reports success with zero rows written. Without volume monitoring this is invisible — every downstream tool reports a successful refresh while the data is empty.
How does MetricSign detect ADF pipeline failures?+
MetricSign reads the ADF REST API: pipeline run history, activity-level details, trigger run history, and integration runtime status. It parses the underlying error class out of the activity output, groups related failures (same linked service, same minute) into a single incident, and routes the alert to the data team before the next downstream Power BI, dbt, or Fabric job runs.
Can MetricSign fix ADF errors automatically?+
No. MetricSign detects, groups, and routes the alert with the underlying error class and the affected downstream consumers. Fixing the actual error — rotating a service principal secret, restarting an IR host, adjusting an ACL — still requires the data engineer or tenant admin. The value is detection time and routing accuracy, not auto-remediation.

Related error codes

Related integrations

Related articles