Thank you for posting your question in Microsoft Q&A regarding the retrieval of Personal Contact Lists (Contact Groups) via Microsoft Graph.
Based on your description, I would like to share some information from my side and hope it proves helpful. According to your information, you are absolutely correct that relying on EWS is no longer a viable strategy given the upcoming retirement of the service.
The behavior you observed /groups returns no results is by design and the /groups endpoint queries Entra ID (formerly Azure AD). It allows you to retrieve organization-level objects (M365 Groups, Security Groups, Distribution Lists).
Personal Contact Lists are stored locally within a specific user’s Exchange Mailbox. They are not directory objects, so they do not exist in Entra ID and are invisible to the /groups endpoint.
And Graph Implementation is my recommended solution you can try. Microsoft Graph v1.0 does not currently expose the "members" of a personal distribution list as a standard JSON property. To replace your EWS ExpandDL logic, you must retrieve the raw item content.
- Find the Item using Extended Properties: Standard contact queries often filter out Distribution Lists. You must query the generic
itemsendpoint of the folder and filter by the MAPI Message Class (IPM.DistList). You can see more information here: Get singleValueLegacyExtendedProperty - Microsoft Graph v1.0 | Microsoft Learn
httpGET /users/{user-id}/contactFolders/{folder-id}/items?$filter=singleValueExtendedProperties/Any(ep: ep/id eq 'String 0x001a' and ep/value eq 'IPM.DistList')
- Retrieve the MIME Content: Once you have the Item ID, you must request the raw stream. (Note: Use the
/itemsendpoint. The/messagesendpoint will fail for contact items). For you more information: Get MIME content of a message using the Outlook mail API - Microsoft Graph | Microsoft Learn
httpGET /users/{user-id}/items/{item-id}/$value
- Parse Client-Side: The response will be a binary MIME blob. Your application must parse this stream (using a library like MimeKit for .NET or similar) to extract the email addresses. (Technical Note: Be aware that depending on how the list was created, the members may be stored inside a TNEF attachment (
winmail.dat) within that MIME structure).
Here is some Microsoft official information for your referral:
- EWS Deprecation: Deprecation of Exchange Web Services in Exchange Online | Microsoft Learn
- Contact API Limitations: contact resource type - Microsoft Graph v1.0 | Microsoft Learn
I hope these suggestions provide some helpful ideas. If you need further assistance, feel free to ask via comments section.
If the answer is helpful, please click "Accept Answer" 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.