MS Teams Presence Subscription:- Patch Subscription & Renewal

Tenneti Sudheer Kumar 20 Reputation points
2026-07-16T10:01:30.6666667+00:00

We are implementing Microsoft Teams Presence change notifications using Microsoft Graph presence subscriptions (bulk subscription with delegated Presence.Read.All), and had a question about the expected lifecycle of subscriptions.

Our current understanding is:

  • We create a presence subscription using POST /subscriptions.
  • While the subscription is active, we renew it using PATCH /subscriptions/{id} before expirationDateTime.
  • If a renewal is missed and the subscription expires, Microsoft Graph deletes it, and a subsequent PATCH returns 404 Not Found, after which we create a new subscription.

Could you please confirm whether the following recovery strategy is the recommended approach?

  1. Renew active subscriptions using PATCH.
  2. If the subscription has already expired (or PATCH returns 404 Not Found because the subscription no longer exists), create a brand new subscription using POST /subscriptions.
  3. Treat 404 as an expected recovery scenario rather than an error requiring manual intervention.

Additionally, we have one more question regarding updating subscriptions:

Our presence subscription resource is of the form:

/communications/presences?$filter=id in ('id1','id2',...)

When the monitored user set changes, is updating the resource field via PATCH /subscriptions/{id} officially supported for presence subscriptions, or should applications instead create a brand new subscription whenever the resource filter changes? The documentation primarily discusses renewing expirationDateTime, so we'd like to confirm the supported behavior.

Thank you!

Microsoft Teams | Development
Microsoft Teams | Development

Building, integrating, or customizing apps and workflows within Microsoft Teams using developer tools and APIs

0 comments No comments

1 answer

Sort by: Most helpful
  1. Michelle-N 20,565 Reputation points Microsoft External Staff Moderator
    2026-07-16T11:06:08.9433333+00:00

    Hi @Tenneti Sudheer Kumar
    Your understanding aligns with the documented lifecycle for Microsoft Graph change notification subscriptions.

    For Microsoft Teams presence subscriptions, the subscription lifetime is limited to a maximum of 1 hour. The subscription should be renewed before expirationDateTime by calling PATCH /subscriptions/{id} and updating expirationDateTime. If the subscription has already expired and the renewal request fails because the subscription no longer exists, the documented recovery approach is to create a new subscription using POST /subscriptions.

    So the recommended lifecycle is:

    1. Create the subscription with POST /subscriptions.
    2. Renew it before expirationDateTime using PATCH /subscriptions/{id} with a new expirationDateTime.
    3. If the subscription has already expired and can no longer be renewed, create a new subscription with POST /subscriptions.

    Please refer: Get change notifications for presence updates in Microsoft Teams

    Update subscription

    In practice, treating a 404 Not Found response during renewal as a recoverable condition is reasonable, provided the application then creates a replacement subscription and does not require manual intervention.

    For your second question, I would not rely on changing the resource field viaPATCH.

    The Update subscription documentation says the API is used to renew a subscription by extending its expiry time, and the request body table lists the properties that can be updated as expirationDateTime and notificationUrl. It does not list resource as an updatable property.

    For presence bulk subscriptions, the supported resource format is:

    /communications/presences?$filter=id in ('{id}', '{id}', ...)
    

    and the bulk subscription is limited to a maximum of 650 user IDs.

    Therefore, if the monitored user set changes, the safer and documented approach is:

    1. Create a new subscription with the updated resource filter.
    2. Start processing notifications from the new subscription.
    3. Delete or allow the old subscription to expire, depending on your overlap strategy.

    I hope this information help.


    If the answer is helpful, please click "Yes" and kindly upvote it. If you have extra questions about this answer, please click "Comment".  

    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

    Was this answer helpful?

    2 people found 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.