Share via

Logic apps trigger state reset to 0001-01-01 causing a flood of triggers and runs

Nishi Katiyar 20 Reputation points Microsoft Employee
2026-05-29T07:10:26.3633333+00:00

We have a logic app that polls ADO pipeline every 5 mins for any runs and if there are new runs matching a certain criterion, it queries more data related to it and sends an email.
The app sent out a flood of emails without any new runs on the ADO pipeline. Upon investigation I see the trigger state was reset to some arbitrary value and there were a flood of triggers and runs. We have the logic app disabled for now to stop the inbox spam. From docs, it looks like resetting the trigger would help.

Environment Details:

  • Logic App Runtime: Consumption plan
  • Trigger: ADO pipeline run completion
  • Polling Frequency: Every 5 minutes
  • Region: West US2
  • Workflow Type: Stateful

Questions:

  1. Is resetting the trigger the correct workaround for this?
  2. What can cause this to happen?
  3. How to ensure this does not happen again?

User's image

Azure Logic Apps
Azure Logic Apps

An Azure service that automates the access and use of data across clouds without writing code.


Answer accepted by question author

Jerald Felix 13,255 Reputation points Volunteer Moderator
2026-05-29T07:21:05.32+00:00

Hello Nishi Katiyar

Greetings! Thanks for raising this question in Q&A forum.

This is a well-documented and well-understood behaviour in Azure Logic Apps, and you've diagnosed it correctly. The trigger state resetting to 0001-01-01 (the .NET minimum DateTime value) is a known issue that effectively tells the Logic App's polling engine to treat everything from the beginning of time as "new", which causes it to re-process all historical ADO pipeline runs and flood your inbox. Let me answer each of your three questions clearly.

Answer to Question 1 — Is resetting the trigger the correct workaround?

Yes, resetting the trigger is the correct and documented workaround to stop the flood and restore normal behaviour. Here's how to do it properly. First, make sure the Logic App is still disabled (which you've already done good). Then, in the Azure Portal, open your Logic App, go to Overview, and click Reset under the trigger state, or use the Logic Apps REST API to reset the trigger history watermark to a current timestamp. After resetting, re-enable the Logic App. The trigger will now only pick up ADO pipeline runs that complete after the reset timestamp, and will no longer re-process historical runs.

You can also reset via the Azure CLI:

az rest --method delete \
  --url "https://management.azure.com/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/histories?api-version=2016-06-01"

Answer to Question 2 — What causes this to happen?

There are a few known causes for the trigger state resetting to 0001-01-01 on a Consumption plan Logic App. The most common ones are a platform-side internal state corruption in the trigger storage (which occasionally happens during Azure infrastructure maintenance or scaling events on the shared Consumption plan), saving or republishing the Logic App workflow definition which can reset the trigger watermark in some scenarios, a transient failure in the trigger's polling metadata storage that causes it to default to the minimum DateTime value on the next poll cycle, and in rarer cases, a connector update for the ADO connector that refreshes the trigger state.

Since you're on a Consumption plan with a stateful workflow, the trigger state is stored in Azure-managed storage, and occasional resets due to infrastructure events are a known limitation of the Consumption tier.

Answer to Question 3 — How to prevent this from happening again?

There are a few defensive measures you can take. First, add a date filter condition inside your Logic App workflow — after the trigger fires, add a condition that checks whether the ADO pipeline run's completion timestamp is within the last 10 or 15 minutes (relative to utcNow()). This acts as a safety net so that even if the trigger state resets, only genuinely recent runs will proceed to send emails, and historical re-fires will be filtered out automatically. This is the most reliable defence against this issue.

Second, consider migrating to Standard plan if this is a production-critical workflow. The Standard plan gives you dedicated compute and more resilient trigger state management compared to the multi-tenant Consumption plan.

Third, set up an Azure Monitor alert on Logic App run count if the number of runs in a 5-minute window exceeds a threshold (say, more than 10 runs), fire an alert to notify you immediately. This won't prevent the flood but will help you catch it much faster next time.

Fourth, you can add a concurrency limit on the trigger (set maximum concurrent runs to 1 or a small number) to limit the blast radius if this happens again.

If this answer helps you kindly accept the answer which will help others who have similar questions.

Best Regards,

Jerald Felix.

Was this answer helpful?

1 person found this answer helpful.
0 comments No comments

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.