
Every Activity Will Run Twice: Idempotency in Durable Functions
Learn how to make every Durable Functions activity idempotent so retry policies can safely rerun SharePoint and Graph provisioning steps.
Azure Functions as the backend for Microsoft 365 work: proxies that hide tokens, blob caching with 304s, Event Grid handlers and long-running provisioning.
Azure Functions is where the unglamorous half of a Microsoft 365 solution ends up: the thing that holds a secret the browser must not see, the thing that answers a webhook, the thing that runs for twenty minutes while it provisions a site.
The posts here are mostly about that boundary. Proxying a third-party API so its key never reaches the client. Serving a whole static site through one endpoint. Passing ETags through to blob storage so unchanged files never leave storage at all. Handling Event Grid deliveries without Easy Auth quietly eating them first.
Long-running work has its own topic in Durable Functions, which is where most of the provisioning material lives.

Learn how to make every Durable Functions activity idempotent so retry policies can safely rerun SharePoint and Graph provisioning steps.

Learn how to keep third-party API keys out of the browser by proxying SPFx web part calls through an Azure Function that swaps in the secret server-side.

Learn how to checkpoint a Durable Functions orchestration so a failed SharePoint provisioning run resumes where it stopped instead of starting over.

Learn what Azure Durable Functions are and what they can do, using a SharePoint site provisioning workflow as a real-world example.

Learn how to forward the browser's If-None-Match header to Azure Blob Storage with BlobRequestConditions, so unchanged files never leave storage at all.

Learn how a single Azure Function with a catch-all route can proxy an entire static website out of a private Blob Storage container, with auth in front of every file.

After testing with DevProxy, I found that monolithic PnP templates silently destroy your retry strategy. Here's what I learned.
No posts match — try another search.