Azure Data Factory schedule triggers do not support dynamically changing the next fire time based on pipeline output. A schedule trigger’s recurrence (frequency/interval/schedule) is fixed in the trigger definition and is evaluated independently of pipeline logic.
Key behaviors from schedule triggers:
- Recurrence is defined by
frequency, interval, and optional schedule (hours, minutes, weekDays, etc.).
- The scheduler computes future occurrences from
startTime and recurrence; it does not read pipeline outputs.
- When hours/minutes are not set in the schedule, the first execution time is used as default for subsequent runs.
- Schedule triggers cannot be used for backfill and do not have retry or concurrency controls like tumbling window triggers.
Because of this, the following patterns apply:
- A single schedule trigger cannot be made “dynamic” based on notebook output.
- Using
Wait inside the pipeline does not affect the trigger; it only keeps the current run alive.
- Self-calling pipelines via
Execute Pipeline are blocked by design to avoid recursive cycles.
Within native ADF capabilities, the supported way to vary frequency is to define different triggers with different recurrences and control which ones are active:
- For example, one trigger with
frequency = minute, interval = 15 and another with frequency = hour, interval = 1.
- Each trigger can also use a
schedule object to further constrain when it runs (e.g., specific minutes/hours or weekdays) as shown in the recurrence examples:
-
{"minutes":[0,15,30,45]} → every 15 minutes.
-
{"minutes":[0], "hours":[6], "monthDays":[1,-1]} → specific days/times.
However, trigger activation/deactivation is not driven by pipeline output; it is a management operation. There is no native mechanism in ADF for a pipeline to change its own trigger’s recurrence or switch between triggers based on runtime logic.
Given the documented behavior, implementing a dynamic delay outside ADF (for example, via an external orchestrator that can:
- Receive a signal from the pipeline (e.g., via Web activity),
- Apply a dynamic delay, and
- Then invoke the pipeline again
is consistent with the platform’s design, because it moves the “dynamic schedule” logic into a system that supports programmatic delays and callbacks. ADF itself only supports static recurrence definitions and cannot avoid overlapping runs except by design (e.g., ensuring the pipeline completes within the fixed interval or using a different trigger type such as tumbling window when backfill and strict windowing are required).
There is no cleaner fully native alternative in ADF documented for dynamically changing the next trigger time based on pipeline output; solutions rely on fixed recurrences and external orchestration if dynamic behavior is required.
References: