Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

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.

share|improve this question
    
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... –  spevilgenius Mar 26 '10 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 Mar 27 '10 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 Mar 28 '10 at 16:12
    
Hmmm ok... what was the outcome of the options you mentioned you were going to try out? –  Paul Lucas Mar 29 '10 at 23:36
    
haven't tried them yet –  Mike T Mar 30 '10 at 2:09
add comment

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?

share|improve this answer
    
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 Nov 30 '10 at 20:51
add comment
up vote 0 down vote accepted

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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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