Share via

The function is not triggered as expected.

Leon Chen 21 Reputation points Microsoft Employee
2026-05-29T12:20:44.62+00:00

Subscription

Outlook Azure Admins (d54e5ce3-effa-4ae3-924b-03e26f89940d)

Service type

Function App

Resource

ExchangeOssku-PATv2

Problem type

Availability

Problem subtype

Timer trigger function failed to trigger

Summary*

The function is not triggered as expected.

Azure Functions
Azure Functions

An Azure service that provides an event-driven serverless compute platform.


2 answers

Sort by: Most helpful
  1. Sina Salam 29,846 Reputation points Volunteer Moderator
    2026-05-30T16:42:42.8766667+00:00

    Hello Leon Chen,

    Welcome to the Microsoft Q&A and thank you for posting your questions here.

    I understand that the Azure Function App ExchangeOssku-PATv2 timer-triggered function is not firing as expected.

    The issue description is generic, and most likely caused by one of these validated Azure Functions TimerTrigger failure points: the function host is not starting or indexing the timer function, the timer trigger metadata is not synced after deployment, AzureWebJobsStorage is invalid or unreachable, the NCRONTAB schedule is incorrect, Always On is disabled on a Dedicated/App Service plan, or there is a host ID collision when multiple apps/slots share the same storage account. Azure Functions timer triggers require a valid six-field schedule, a running/indexed host, and a valid runtime storage connection. - https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer, https://learn.microsoft.com/en-us/azure/azure-functions/scenario-scheduled-tasks

    The best practice resolution is to:

    • Confirm the timer function is visible and indexed under the Function App.
    • Validate the timer schedule uses Azure Functions’ six-field NCRONTAB format.
    • Confirm AzureWebJobsStorage is valid, not using local development storage, and reachable by the Function App.
    • Enable Always On if the Function App runs on a Dedicated/App Service plan.
    • Check and fix any host ID collision if multiple apps or slots share the same storage account.
    • Use Application Insights logs to confirm whether the failure is startup, indexing, storage, schedule, or invocation related.

    After correcting the failed item above, restart the Function App, sync/redeploy the triggers, and verify the next scheduled execution in Application Insights. This directly addresses the actual scenario and gives the customer the reliable path to both resolution and root cause. Use the below official resources for more reading and implementation steps:

    I hope this is helpful! Do not hesitate to let me know if you have any other questions, steps or clarifications.


    Please don't forget to close up the thread here by upvoting and accept it as an answer if it is helpful.

    Was this answer helpful?

    0 comments No comments

  2. Pravallika KV 16,365 Reputation points Microsoft External Staff Moderator
    2026-05-29T12:38:18.3533333+00:00

    Hi @Leon Chen ,

    Please check if below diagnostic steps help to solve the issue:

    1. Verify the host actually started
      • If Application Insights is enabled, run this Kusto query to see if the Functions host threw any startup errors:
             
             exceptions
             
             | where customDimensions.Category == "Host.Startup"
             
        
      • If you have a Log Analytics workspace attached, use a query like this to look for startup exceptions in the App Service logs:
             
             AppServiceConsoleLogs_CL
             
             | where AppName_s =~ "ExchangeOssku-PATv2"
             
             | where Log_s contains "ErrorOccuredDuringStartupOperation"
             
        
    2. Check for invocation errors
      • In Application Insights:
             
             exceptions
             
             | where customDimensions.prop__functionName =~ "*YourTimerFunctionName*"
             
        
      • Or in Log Analytics:
             
             AppServiceConsoleLogs_CL
             
             | where AppName_s =~ "ExchangeOssku-PATv2"
             
             | extend logJson = parse_json(strcat(
             
              split(split(Log_s, 'FunctionAppLogs,,"')[1], '}"')[0], '}'))
             
             | where logJson.eventName == "FunctionCompleted"
             
              and logJson.level == "Error"
             
        
    3. Validate your timer configuration
      • Double-check the CRON expression in your function’s [TimerTrigger] attribute or in host.json—it must match the six-field CRON format (sec min hr day mon dow).
      • Ensure you didn’t accidentally set runOnStartup or useMonitor flags incorrectly.
      • If you care about local time zones, verify the WEBSITE_TIME_ZONE (Windows) or TZ/WEBSITE_TIME_ZONE (Linux) app setting.
    4. Confirm your storage account connection
      • The timer trigger uses AzureWebJobsStorage. In the Function App’s Configuration blade, make sure the AzureWebJobsStorage setting points to a valid storage account and that networking/firewalls on that account allow your Function App outbound IPs.
      • Ensure your Function App has Blob Data Contributor (or higher) access to that storage account.
    5. Look for competing listeners or idle host issues
      • If you accidentally deployed two instances of the same Function App pointing at the same storage, only one host will pick up the timer.
      • On a Consumption plan there’s no “Always On” setting, but on a Dedicated (App Service) plan make sure Always On is enabled under your Function App’s Configuration → General settings.
    6. Review long-running executions
      • If your timer function takes longer than its CRON interval, it can prevent the next run. You can bump up the functionTimeout in host.json or optimize the code.
      • A quick restart of the Function App can also clear any stuck executions.
    7. Hope this helps!

    If the resolution was helpful, kindly take a moment to click on User's imageand click on Yes for was this answer helpful. And, if you have any further query do let us know.

    Was this answer 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.