So, a meeting workspace was created. Subsequent meetings then where linked to the workspace, one by one, as the meetings where scheduled. At some point the organizer deleted "something" and it no longer appears on her Outlook calendar or the Events calendar. However, the meeting instance that was supposedly removed still is there. And the little drop down that would otherwise appear happily asking to either keep, move, or delete this instance (number 31) does not show up.

I've tried the following things:

and then trying to pick another meeting. No worky. SharePoint out- smarted me

Things I'm about to try ( in this order)

  1. Try using the "Delete" option instead of the move option
  2. Maybe see if there is a stsadm commmand available of this
  3. Write some C# to work with the Workspaces.asmx to rid myself of the instance
  4. Backup/restore the workspace in place
  5. Silently pray for divine intervention.

Any suggestions would greatly be appreciated.

  • 1: Maybe 2: I do not think there is one 3: This sounds like it might work 4: It might backup the problem as well 5: Not gonna work... Commented Mar 26, 2010 at 23:50
  • On the workspace, do you happen to see the message "This meeting was changed in your calendar and scheduling program from a recurring meeting to a nonrecurring meeting. You can keep or delete the workspace. If you keep the workspace, you will not be able to link it to another scheduled meeting"?
    – Paul Lucas
    Commented Mar 27, 2010 at 16:21
  • It would be great if I did. I am aware that once you remove a meeting workspace tied to an event calender item the meeting workspace will give you an option to remove it by a drop down over the date in the meeting workspace. However, this is not the case. The instance of the meeting is completely orphaned and doesn't give me the operations drop down.
    – Mike T
    Commented Mar 28, 2010 at 16:12
  • Hmmm ok... what was the outcome of the options you mentioned you were going to try out?
    – Paul Lucas
    Commented Mar 29, 2010 at 23:36
  • haven't tried them yet
    – Mike T
    Commented Mar 30, 2010 at 2:09

2 Answers 2


I've been looking for a solution to remove meetings from a workspace for some time. I'm attempting the solution above:

Meetings.MeetingsSoapClient meetings = new Meetings.MeetingsSoapClient();
meetings.ClientCredentials.Windows.ClientCredential = new NetworkCredential();

I have hardcoded the meeting workspace GUID whilst debugging:

meetings.RemoveMeeting(3, "STSTeamCalendarEvent:List:{1B049DAE-332F-4AB4-A169-2B438F460971}:Item:2", 0, DateTime.Now, true);

I am getting a FaultException, the detail of which is:

Cannot complete this action. Please try again.

I was kinda thinking this is a permissions error, however I have Full Control permissions for the Site - anyone have any suggestions?

  • Check the current documentation on the Meetings.RemoveMeeting method. I'm guessing that your sequence variable cannot be '0'. Updates to the list do not come necessarily in order. Forcing your update to be first may mean that SP discards it. I used uint.MaxValue to be sure that the update gets made last against the list.
    – Mike T
    Commented Nov 30, 2010 at 20:51

In the end I needed to fire up the VS 2008 big guns and get to work. I decided that I would use the Web Services and not the object model so that I wouldn't need to develop on the server itself. Using the WCF framework, create service reference to the Meetings web service (i called it Meetings). You will also need a service reference for Lists web service ( Lists in my case) Then initialize the proxy:

MeetingSoapClient mSClient=new Meeting SoapClient();
mSClient.ClientCredentials.Windows.ClientCredential= new NetworkCredential();

ListsSoapClient lSClient=new ListsSoapClient();
lSClient.ClientCredentials.Windows.ClientCredential = new NetworkCredential();

Then call the proxy's Remove Meeting method:

mSClient.RemoveMeeting(0, InstanceUID(InstanceID), uint.MaxValue, DateTime.Now, true);

You will need to know the instance ID of the meeting. Hovering over the link to the meeting usually gives you this. You will then need to find this meetings unique instance ID. The instance UID can be found from this code:

private static string InstanceUID(uint InstanceID)
            /*Use the CreateElement method of the document object to create elements for the parameters that use XML.*/
            XmlDocument xmlDoc = new XmlDocument();
            XmlElement query = xmlDoc.CreateElement("Query");
            XmlElement viewFields = xmlDoc.CreateElement("ViewFields");
            XmlElement queryOptions = xmlDoc.CreateElement("QueryOptions");
            query.InnerXml = @"<Where><Eq><FieldRef Name=""ows_ID""/><Value Type=""Counter"">" + InstanceID + @"</Value></Eq></Where>";

            XmlNode ndResult = lSClient.GetListItems("Meeting Series", "", query, viewFields, "150", queryOptions, null);

            XmlNode mainNode = ndResult.ChildNodes.Item(1);
            mainNode = mainNode.ChildNodes.Item(1);
            XmlNode eventUID = mainNode.Attributes.GetNamedItem("ows_EventUID");
            return eventUID.InnerText;

I leave the full explanation as to what each of this does to the inquisitive reader. Go Google and be blessed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.