Microsoft Graph Subscription Limitations - azure

We have an app that creates MS Graph Subscriptions where a user wishes to 'track' an outlook email conversation. The subscription uses the conversation id of the email to send notifications when an email within the conversation is sent or received.
Once we receive a notification from MS Graph, we then use the message id to get details about the email so we can store it in our CRM.
I am trying to find information on what the limitations/throttling are in regards to this.
I have read the info here and here but neither are very specific. I also raised a GitHub issue with the MS Graphs docs team here but they have not responded.
I really want to know:
Is there a limit for Outlook based Graph subscriptions per user?
Is there a limit to the number of messages that we can retrieve per user?

Is there a limit for Outlook based Graph subscriptions per user?
Yes there is limit. Each user or groupcan requests 10,000 API call in a 10 minute period. It could be same for user and group as
well. You could have a look official document
Is there a limit to the number of messages that we can retrieve per user?
Normally 500 message each user can retrieve but it is customizable. You can customize it up to 1000 for each user.
For more you could have a look official document here
Hope that would help. If you still have any concern feel free to share.

Related

Limit on max users and groups in Docusign

Is there a max limit on the number of users I can create/manage from a single admin account?
Is there a max limit on the number of groups I can create while managing those users ?
Is there a way to send additional params in the webhook url ?(I am configuring it through the docusign connect in admin portal) ?
Thanking you in advance
AFAIK, the only limit to the number of users is the number of seats you have purchased on your account. There's no technical limit.
I'm similarly not aware of any limit to the number of groups.
Now your last question is not clear and may require a separate thread. What kind of parameters you would like to send? from where to where? One method to include meta-data on envelopes is using custom fields, which can be sent to the webhook UI (Connect), but I'm not sure that is what you mean.

MS Graph Calendar API | Subscribed users calendar | 50% meeting notification missing when create 100 or more meetings in parallel

I am using MS Graph API to subscribe users calendar for meeting notifications. There is no issue with few meetings for multiple users but when we run our load test with 100 meetings then there were lots of missing booking notifications.
For better understanding, I m adding a few steps to verify:
Deploy an Event Hub for exchange notifications as per Microsoft Document. I have tried both Event Hub and an azure function for verification.
Subscribe user calendar with the above URL as notification URL using Graph Subscription API POST.
Run 100 meeting load test where we are creating an outlook meeting from graph API on the subscribed user calendar.
I have run a different load with 2 users and the result is below:
So my question is that, is there any kind of limitation in Graph Notification or any other issue!
You are experiencing throttling. According to Graph throttling guide for Outlook service, you can have up to 4 concurrent requested per user calendar. a large number of your requests are throttled, thus no events are created - no change notifications..
My recommendation:
Read through the throttling guide here then
Run your load test with out reaching Graph because Graph will handle your load in production with reasonable throttling mechanism.
Run your load test using different user calendars such that the matrix is within the acceptable load on Graph

How to get attendees list of a meeting call in MSTeams?

I need to get list of attendees of a MSTeams meeting call, and their times by an Azure Application.
For now, i've tried 3 different approaches without success:
Registering a Bot
Retrieve the attendee report of an event
callRecord subscription
In more detail:
Registering a Bot
MembersAdded event works as described in the documentation for v4.7 of the Bots SDK, ie. when a new user is added to a chat or a team, webhook is called, which does not work for online meetings. However for v3 of the Bots SDK there is a mention:
The conversationUpdate event with the membersAdded object in the
payload is sent when a user is added to a private scheduled meeting.
The event details will be sent even when anonymous users join the
meeting.
I've not tried this version of SDK, but i think it has the same behaviour as v4.7 because i don't see any request comming to my bot's webhook when an user joins a meeting.
Moreover, when i request Members of a meeting on message event to a bot by invoking:
var members = await TeamsInfo.GetMembersAsync(turnContext);
i get a list of team/chat members where a meeting is created but not the list of attendees of a meeting for the current time.
Retrieve the attendee report of an event
By this request, I can get the list of attenees, but only for live events.
However Teams clients (in preview mode now) can get this report for ordinary meeting with the full history of who/when entered/leaved a meeting with even guest names(!).
Anyway, this method has the following disadvantages:
As mentioned in the Get onlineMeeting and according to the Allow applications to access online meetings on behalf of a user, a Tenant administrator have to invoke PS command Grant-CsApplicationAccessPolicy for each meeting organiser, to grand my app permision to download this report
Administrators must create an application access policy and grant it to a user, authorizing the
app configured in the policy to retrieve an
online meeting on behalf of that user (user ID specified in the
request path).
Uses Beta version of the GraphAPI, so it can't be used in production
callRecord subscription
According to the Create subscription, i can subscribe to create and update events of a callRecord, and everything works well - when a meeting call is finished, my notification URL is called in 5-20 minutes, so i can find original meeting by callRecord.joinWebUrl and Get onlineMeeting:Example 3. Seems it's most suitable method for me, but has the following disadvantages:
Guests cannot be identified, their names as them passed in MSTeams clients are not reported to callRecord ie. callRecord.Participants[].AddtionalData["guest"].displayName == "Guest user" for any guest (seems like a bug), however entered/leaved information can be found by searching callRecord.Participants[].AddtionalData["guest"].id in callRecord.Sessions[].Segments[].Caller.Identity.AddtionalData["guest"].id
External users cannot be also indentified, callRecord.Participants[].User.DisplayName == "External user" for any external user, however i can retrive tenantId and userId, but still cannot get user's profile because my app has to have Directory.Read.All permision in that tenant, and it's not possible for every tenant.
PS. I can setup MSTeams to do not allow guests or external users, then it works partially well, because each user has to have Teams license assigned, and there is NO login page appears during joining a meeting, just an error page saying that meeting does not allow guest or external users, so the user should find a link to login to a tenant, which is not obvious in MSTeams Web Client, but possible.
PSS. In the Microsoft Teams admin center, i've checked the calling history of an organiser for a meeting with 1 guest, 1 tenant and 1 external and here it is:
Seems for guests, displayName is not stored at all, however for an external user there AAD email is stored (this is AAD guest user ie has '#EXT#' in his principal name, and has the same email as on the picture), however i'm not sure from where it resolved from by Azure - either from external tenant AAD or my tenant AAD for external user, because Azure has access to both.
So, maybe you know a method to get attendees and their times in a meeting call ?
Thank you for your suggestion/advice/reply !
Thanks for reaching us!
Teams by default generate attendees report and meeting report after completion of meeting call. We can able to see the list of attendees and the report. But at present we don't have any API to fetch list of attendees and their timings.
As this feature is not available at present, could you please raise an UserVoice if this needs to be consider as a future request.

How can I pull a list of all the envelopes sent/received by all the users (like in report tab) through Docusign REST API?

I am an admin account user and to get insights from data I need to pull the details of all the envelopes from all accounts. The similar thing is what a report provides in Docusign dashboard but I need the list of recipients as well. Can anyone please help me. Thanks.
Listing envelopes sent by your users: Envelopes::listStatusChanges
I think that call may cover envelopes sent by anyone in your account (if the accessToken represents a user with admin privileges). But I'm not sure.
If it doesn't then you can loop through the account's users.
Tracking who has received an envelope through their DocuSign account is done with the Folders::listItems API call. You may need to list both the Inbox and Deleted folders. You also need to check that the person signed the specific envelope vs receiving it for some other reason (cc, certified copy, etc).
Finally, an alternative if you have higher volumes is to purchase the DocuSign Report Feed product (see note below). It will send you DB table dumps about your account activity on a regular basis so you can do your own reporting on DocuSign activity. It is the best way to have full access to report data. Ask your DocuSign contact for more info.
Note: I'm not sure of the exact name for the reporting product.
This can be done if you install DocuSign for Salesforce managed package and use Connect feature in DocuSign. Configure your webhooks to create DocuSign Status and DocuSign Recipient Status records for each send. Any DocuSign objects or custom object can be used in the Connect configuration, after selecting objects, select which events you want the results to be pushed back to Salesforce.
Use a parent object to store envelope details and child object for the recipient data. Use Envelope Id to relate the child records to the parent. Eventually, you will be able to build various reports on Salesforce.
More info here: https://support.docusign.com/guides/dfs-admin-guide-ds-connect-for-salesforce

How to find the unique ID of an MS Teams group?

Many of the new beta Microsoft Teams APIs, such as this require the caller to specify the unique ID of the group. Does anyone know how to find a given group's ID?
You can use the joinedTeams API to get all of the Teams that the current user belongs to. The response contains the group ID for each Team.
It looks like you want to use this group ID with the listThreads API. Note that this returns Outlook email conversation threads and not Teams chat threads. Currently, there is no API for reading Teams chat threads - I will update this answer when it arrives.
In the meantime, look at what the Microsoft Graph currently supports for Microsoft Teams. In summary, you can use most of the existing group APIs - for accessing the Team's roster, files, calendar etc. You can also (in Beta) create/read channels and create a new chat thread (you just can't read that thread yet, as above).

Resources