EWS sends invitations to everyone when removing a required attendee - c#

I have the following code:
(Meeting beeing the exchange appointment)
For Each Recipient As String In emailAdresses
For i As Integer = 0 To Meeting.RequiredAttendees.Count - 1
If (Meeting.RequiredAttendees(i).Address).ToUpper() = Recipient.ToUpper() Then
Meeting.RequiredAttendees.RemoveAt(i)
Exit For
End If
Next
Next
Meeting.Update(ConflictResolutionMode.AutoResolve, SendInvitationsOrCancellationsMode.SendOnlyToChanged)
Now as you can see i'm using SendInvitationsOrCancellationsMode.SendOnlyToChanged.
But even though that i'm using that mode it is still sending the appointment to all of the attendees.
I've looked at msdn and the code is exactly the same. And msdn tells me the following should happen:
Save the meeting and send a meeting cancellation message to the attendee or attendees that you removed
So basically msdn sais it is works but it does not. Is there a work around for this issue or is anyone else experiencing the same problem?
our exchange server is a 2007 SP1 version.
The answer can be in C# or VB.NET, I'll translate it to the language we need.
PS. Adding members and using this mode causes the invite to send to the newly added member only. But as I said before deleting does not have this same behaviour.

Doing:
Meeting.Update(ConflictResolutionMode.NeverOverwrite, SendInvitationsOrCancellationsMode.SendOnlyToChanged)
Instead of:
Meeting.Update(ConflictResolutionMode.AutoResolve, SendInvitationsOrCancellationsMode.SendOnlyToChanged)
Solved my problem, I do not know why and what it was having trouble with though.

Using ConflictResolutionMode.AutoResolve instead of ConflictResolutionMode.NeverOverwrite did not work for me. After some research, I found out that this is the normal behaviour.
The SendInvitationsOrCancellationsMode enum's values SendOnlyToChanged and SendToChangedAndSaveCopy behave similarly when it comes to sending email (the only difference is that the latter saves a copy of the sent email and the former doesn't):
Send meeting invitations/cancellations only to attendees that have
been added or modified
There is no reference to attendees that have been removed. I thought that the work 'modified' here means that, but apparently that is not the case.
This Microsoft Support Article (Article ID: 2873493) says that this is the expected behaviour:
EWS issue: SentToChangeAndSaveCopy parameter in Appointment.Update
method does not work
Symptoms
Consider the following scenario:
You build an Exchange Web Services (EWS) application to update a meeting request in a Microsoft Exchange Server 2010 environment.
One or more invitees in the meeting request are externals or distribution lists.
You use the Appointment.Update method together with the SentToChangeAndSaveCopy parameter to remove one invitee from the
meeting request and to update the meeting request.
In this scenario, a meeting update is sent to all invitees.
Cause
This behavior is expected.

Related

Micorsoft Outlook GraphAPI Returns Nulls

I'm working on a .NET Project, in summary I need to call the Outlook Graph API to get messages from a certain mailbox, parse the data returned and save into a database. I'm able to make the call but out of the +37 fields (https://learn.microsoft.com/en-us/graph/api/resources/message?view=graph-rest-1.0) that a messages payload returns, only 3 fields have any values in them namely (Id, Subject and sender ) all other fields are null.
I enabled the entire permission realated to messages here (https://learn.microsoft.com/en-us/graph/permissions-reference#mail-permissions) yet, I continually get nulls also I'm logged in as admin.
Please help with pointers.
Regards

Yammer REST API - Get Messages from Group

I am trying to get all threaded messages from a group of yammer, but it seems that something wrong happened in the call.
The retrive all messages from the group I use this call:
/api/v1/messages/in_group/{groupId}.json?threaded=true
And when this call ends, I save the last message retrieved from the result and I execute the following call recursively until there is no more messages in the group:
/api/v1/messages/in_group/{groupId}.json?threaded=true&older_than={messageId}
It seems that the process works correctly, but when you look the data that you have retrieved from Yammer, there is some messages that appear in the Yammer group Wall that have been not retrieved using the REST API.
Do someone know why the REST API is not getting all Yammer data?
Thank you so much!
Aleu
From the docs https://developer.yammer.com/docs/messagesjson, here is the intended functionality of threaded=true: "threaded=true will only return the thread starter (first message) for each thread. This parameter is intended for apps which need to display message threads collapsed. threaded=extended will return the thread starter messages and the two most recent messages all ordered by activity, as they are viewed in the default view on the Yammer web interface."
Based on your question, perhaps threaded=extended would give you what you need.

When exactly should I refresh the EWS URL while using managed API

I am getting the EWS URL as below:
var response = myAutodiscoverService.GetUserSettings(
"userA#domain.com",
UserSettingName.ExternalEwsUrl,
UserSettingName.InternalEwsUrl,
UserSettingName.EwsSupportedSchemas);
string settingValue;
if (response.TryGetSettingValue(UserSettingName.ExternalEwsUrl, out settingValue)
|| response.TryGetSettingValue(UserSettingName.InternalEwsUrl, out settingValue))
{
// If ExternalEwsUrl is not returned in the response,
// we consider InternalEwsUrl for auto-discover
string ewsurl = settingValue;
}
Now, I am caching this ewsurl I get with this request as recommended since auto-discovery is really slow. What happens when this ewsurl expires (because let's say user's mailbox was moved to a different endpoint). What error should I expect in order to implement a failure mechanism to get the new updated ews url?
Edit: I am using the ews url to subscribe for new mail events on EWS using ExchangeService.SubscribeToPushNotifications So I have another question, suppose if the ews url was changed after user subscribed for notifications, will I get a notification for that user for a new mail event on the callback url of my application?
I seem to recall the ROT from MSFT was you should re-autodiscover every 24 hours, but I've not seen anything recently. As to the Push notifications: since there is a "heartbeat" facility in Push notifications, if you miss two heartbeats in a row, it's safe to say you should tear down the subscription and re-subscribe, which to be safe, implies re-autodiscovery. Of course with O365, since the EWS URL seems (for now) to always be the same, re-autodiscovery is less of a concern.

Retrieve Attendee Address details from Eventbrite v3 API

I'm trying to retrieve address information and home phone of attendees though the endpoint "https://www.eventbriteapi.com/v3/events/{eventId}/attendees/?token={token}".
But in the response i did not find the address information of any attendee though i had added the address fields. In response, i found a profile key which gave me the "cell_phone" but still no luck with the home phone or the address details.
The address details i'm taking about is the country, address, city, state, zipcode. i'm not able to find the same within the documents. i'm using the new version of api, the old version had event_list_attendees method which listed all the information i needed.
I would want the same response which "event_list_attendees" gave. Is there any method in the new API which would do the same.
Am i missing some step or the v3 API doesn't return these field ?
Kindly help.
Well i found that this is a bug with the new version of API. we have raised a ticket with the eventbrite team and this would be taken care of shortly.
I've had the same issue, they say they are aware and are updating the API - its currently only in preview!
I know this is quite old, but just wanted to let you know that the issue has been resolved and you can now access all Attendee address information.

WCF CustomToken error " security token with the 'Basic' attachment mode must be signed."

So I have created a custom token, based mostly from the MSDN example (http://msdn.microsoft.com/en-us/library/ms731872.aspx) but I can't seem to get it to work. I always get this error " security token with the 'Basic' attachment mode must be signed." in the logs. I have been over the code base several times and
A) obviously it compiles and runs
B) I can't see where the issue is.
The log message isn't all that helpful. I thought it might be something with the cert but I have beat that to death and created a couple different certs (one using server name set to localhost etc...).
A Google search for this turns up almost nothing.
Anyone got a clue what this is, or just tell me where I can maybe look? Like I said - I have been through this code many times, I see the authorization policy get created and all that good stuff, I can see the certificate is set, I just don't know where else to look, I really don't have any code to post, there are so many classes you have to implement. If someone has an idea of what maybe I can look at I will be happy to post that particular class / code snippet.
Thanks
See here: http://social.msdn.microsoft.com/forums/en-us/wcf/thread/F822CCB9-A8A1-474F-87AF-E5CD9EC34494
... wasn't copying the "id" property of the security token correctly.
This was causing a new ID to get created for the security token on the server, which no longer matched the security signature data, and so the message would be rejected.
In your implementation of your custom WSSecurityTokenSerializer to serialize your security token, you probably aren't copying the Id property of the token. The ID needs to match from the client to the server.
A common mistake (one that I'm sure I've made too) is to just id = Guid.NewGuid().ToString() in the constructor. That is fine for its initial creation on the clinet, but when it deserializes on the server, it needs to use the same ID from the client, not a new guid again.

Categories