Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions articles/event-grid/subscribe-to-graph-api-events.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ Besides subscribing to Microsoft Graph API events via Event Grid, you have [othe

- You're developing an event-driven solution that uses events from Microsoft Entra ID, Outlook, or Teams to react to resource changes. You need the robust event-driven model and publish-subscribe capabilities that Event Grid provides. For an overview of Event Grid, see [Event Grid concepts](concepts.md).
- You want to use Event Grid to route events to multiple destinations using a single Graph API subscription and you want to avoid managing multiple Graph API subscriptions.
- You need to route events to different downstream applications, webhooks, or Azure services based on some properties in the event. For example, you might want to route event types such as `Microsoft.Graph.UserCreated` and `Microsoft.Graph.UserDeleted` to a specialized application that processes users' onboarding and off-boarding. You might also want to send `Microsoft.Graph.UserUpdated` events to another application that syncs contacts information, for example. You can achieve that using a single Graph API subscription when using Event Grid as a notification destination. For more information, see [event filtering](event-filtering.md) and [event handlers](event-handlers.md).
- You need to route events to different downstream applications, webhooks, or Azure services based on some properties in the event. For example, you might want to route event types such as `Microsoft.Graph.UserUpdated` and `Microsoft.Graph.UserDeleted` to a specialized application that processes users' onboarding and off-boarding. You might also want to send `Microsoft.Graph.UserUpdated` events to another application that syncs contacts information, for example. You can achieve that using a single Graph API subscription when using Event Grid as a notification destination. For more information, see [event filtering](event-filtering.md) and [event handlers](event-handlers.md).
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This example now mentions Microsoft.Graph.UserUpdated twice (routing to both a specialized app and another app), which makes the scenario ambiguous. Consider adjusting the example so each destination gets a distinct event type (e.g., UserDeleted to off-boarding, UserUpdated to contact sync), and rewording “onboarding” since that typically maps to a create lifecycle that’s no longer applicable here.

Suggested change
- You need to route events to different downstream applications, webhooks, or Azure services based on some properties in the event. For example, you might want to route event types such as `Microsoft.Graph.UserUpdated` and `Microsoft.Graph.UserDeleted` to a specialized application that processes users' onboarding and off-boarding. You might also want to send `Microsoft.Graph.UserUpdated` events to another application that syncs contacts information, for example. You can achieve that using a single Graph API subscription when using Event Grid as a notification destination. For more information, see [event filtering](event-filtering.md) and [event handlers](event-handlers.md).
- You need to route events to different downstream applications, webhooks, or Azure services based on some properties in the event. For example, you might want to route `Microsoft.Graph.UserDeleted` events to a specialized application that processes users' off-boarding. You might also want to send `Microsoft.Graph.UserUpdated` events to another application that syncs contact information. You can achieve that using a single Graph API subscription when using Event Grid as a notification destination. For more information, see [event filtering](event-filtering.md) and [event handlers](event-handlers.md).

Copilot uses AI. Check for mistakes.
- Interoperability is important to you. You want to forward and handle events in a standard way using Cloud Native Computing Foundation (CNCF) [CloudEvents](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md) specification standard.
- You value the extensibility support that CloudEvents provides. For example, to trace events across compliant systems, use the CloudEvents extension [Distributed Tracing](https://github.com/cloudevents/spec/blob/v1.0.1/extensions/distributed-tracing.md). Learn more about [CloudEvents extensions](https://github.com/cloudevents/spec/blob/v1.0.1/documented-extensions.md).
- You use proven event-driven approaches adopted by the industry.
Expand Down Expand Up @@ -108,7 +108,7 @@ POST https://graph.microsoft.com/v1.0/subscriptions
Content-type: application/json

{
"changeType": "Updated,Deleted,Created",
"changeType": "Updated,Deleted",
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Microsoft Graph subscription changeType values are typically documented as lowercase (updated,deleted), and requests can fail if the service treats these values as case-sensitive. To keep the sample request executable and aligned with Graph docs, update this to the documented casing.

Suggested change
"changeType": "Updated,Deleted",
"changeType": "updated,deleted",

Copilot uses AI. Check for mistakes.
"notificationUrl": "EventGrid:?azuresubscriptionid=8A8A8A8A-4B4B-4C4C-4D4D-12E12E12E12E&resourcegroup=yourResourceGroup&partnertopic=yourPartnerTopic&location=theNameOfAzureRegionFortheTopic",
"lifecycleNotificationUrl": "EventGrid:?azuresubscriptionid=8A8A8A8A-4B4B-4C4C-4D4D-12E12E12E12E&resourcegroup=yourResourceGroup&partnertopic=yourPartnerTopic&location=theNameOfAzureRegionFortheTopic",
"resource": "users",
Expand Down Expand Up @@ -143,7 +143,7 @@ Content-type: application/json

---

- `changeType`: the kind of resource changes for which you want to receive events. Valid values: `Updated`, `Deleted`, and `Created`. You can specify one or more of these values separated by commas.
- `changeType`: the kind of resource changes for which you want to receive events. Valid values: `Updated`, and `Deleted` (`Created` is not supported by Graph, check Graph documentation for more details). You can specify one or more of these values separated by commas.
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The valid-values sentence is a bit awkward/grammatically inconsistent (extra comma after Updated, and a parenthetical that reads like an aside). Consider tightening this to “Valid values: updated and deleted.” and linking directly to the Microsoft Graph subscription documentation section for changeType, instead of “check Graph documentation for more details.”

Suggested change
- `changeType`: the kind of resource changes for which you want to receive events. Valid values: `Updated`, and `Deleted` (`Created` is not supported by Graph, check Graph documentation for more details). You can specify one or more of these values separated by commas.
- `changeType`: the kind of resource changes for which you want to receive events. Valid values: `updated` and `deleted`. `created` isn't supported by Microsoft Graph. For more information, see [Microsoft Graph subscription properties](/graph/api/resources/subscription#properties). You can specify one or more of these values separated by commas.

Copilot uses AI. Check for mistakes.
- `notificationUrl`: a URI used to define the partner topic to which events are sent. It must conform to the following pattern: `EventGrid:?azuresubscriptionid=<you-azure-subscription-id>&resourcegroup=<your-resource-group-name>&partnertopic=<the-name-for-your-partner-topic>&location=<the-Azure-region-name-where-you-want-the-topic-created>`. The location (also known as Azure region) `name` can be obtained by executing the **az account list-locations** command. Don't use a location display name. For example, don't use West Central US. Use `westcentralus` instead.
```azurecli-interactive
az account list-locations
Expand Down