locked
Organizer's calendar is not updated when orgazer's outlook received the (ics) meeting request RRS feed

  • Question

  • I wrote a third party application to use icalendar format to organize a meeting in outlook 2007. E.g, it can create a meeting use mail_A@test.com as Organizer, and Mail_B@test.com and Mail_C@test.com as attendees. Every thing works well(Create/Update/Delete) and attendee can see the meeting and update their outlook 2007 calendar.

    BUT the question is : Orgarizer's calendar cannot be updated, which means Organizer cannot see the meeting created by the third party application in his own outlook calendar.

    I read the rules of ics file and tried several ways, but still cannot resolve it, thanks for your sharing and help.

    Tuesday, December 20, 2011 2:04 AM

Answers

  • Hi Keith,

     

    As far as I know this is fixed via KB944094. Support for this was first added in a post Service Pack 1 Hotfix for Outlook 2007 and later in Service Pack 2 as well so I suggest that you first check that Outlook is fully up-to-date before attempting this fix. Outlook 2010 also offers support for this.

     

    Once updated, you’ll have to add the following Registry value;

     

    Key: HKEY_CURRENT_USER\Software\Microsoft\Office\<version>\Options\Calendar

    Value name: ExtractOrganizedMeetings

    Value type: REG_DWORD

    Value: 1

     

    When this key is missing or set to 0, then you cannot accept meetings that have been sent to you in a 3rd party/unknown calendar format.

    When this key is set to 1, then an attempt is made to interpret the 3rd party/unknown calendar format so you can accept it.

     

    Have a good day,

     

    Tom


    Tom Xu [MSFT]
    MSDN Community Support | Feedback to us
    Tuesday, December 27, 2011 1:54 AM

All replies

  • Hi Keith,

     

    Thanks for posting in the MSDN Forum.

     

    Would you please show me some snippet to reproduce your issue? As far as I know, we will distribute ics file to update calendar on client side via attached it to a mail.

     

    Have a good day,

     

    Tom


    Tom Xu [MSFT]
    MSDN Community Support | Feedback to us
    Wednesday, December 21, 2011 9:37 AM
  • Hi Tom, thanks a lot for your reply. Here are some code snippet, hope it can describe the issue clearer.

    Build ICS file:

    public string BuildMeetingRequestICS(DateTime start, DateTime end, string attendees, string organizer,
                string subject, string description, string UID, string location)
            {
                System.Text.StringBuilder sw = new System.Text.StringBuilder();
                sw.AppendLine("BEGIN:VCALENDAR");
                sw.AppendLine("VERSION:2.0");
                sw.AppendLine("METHOD:REQUEST");
                sw.AppendLine("BEGIN:VEVENT");
                sw.AppendLine("ORGANIZER;CN=\"KeithWang\":mailto:" + organizer);
                // Here just use hardcode attendees to test.
                sw.AppendLine("ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:aaa@abc.com");
                sw.AppendLine("ATTENDEE;ROLE=OPT-PARTICIPANT;RSVP=TRUE:mailto:bbb@abc.com");
                sw.AppendLine("CLASS:PUBLIC");
                sw.AppendLine(string.Format("CREATED:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow));
                sw.AppendLine("DESCRIPTION:" + description);
                sw.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", end));
                sw.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow));
                sw.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", start));
                sw.AppendLine("SEQUENCE:0");
                sw.AppendLine("UID:" + UID);
                sw.AppendLine("LOCATION:" + location);
                sw.AppendLine("SUMMARY;LANGUAGE=en-us:" + subject);
                sw.AppendLine("BEGIN:VALARM");
                sw.AppendLine("TRIGGER:-PT720M");
                sw.AppendLine("ACTION:DISPLAY");
                sw.AppendLine("DESCRIPTION:Reminder");
                sw.AppendLine("END:VALARM");
                sw.AppendLine("END:VEVENT");
                sw.AppendLine("END:VCALENDAR");
                return sw.ToString();
            }
    

    Send request:

    private void SendOut()
            {
                string organizer = "aaa@abc.com";
                string attendee = "bbb@abc.com";
                string id = "6ce363af-3532-4456-84e9-84931e21c593";
                string meetingInfo = BuildMeetingRequestICS(
                    DateTime.Parse("12/23/2011 7:00 AM"),
                    DateTime.Parse("12/23/2011 7:20 AM"),
                    attendee, organizer,
                    "Test Subject", "Test Meeting Description 001",
                    id, "Test Location");
    
                System.Net.Mime.ContentType mimeType = new System.Net.Mime.ContentType("text/calendar; method=REQUEST");
                AlternateView ICSview = AlternateView.CreateAlternateViewFromString(meetingInfo, mimeType);
                MailMessage message = new MailMessage();
                message.To.Add(organizer);
                message.To.Add(attendee);
                message.From = new MailAddress(organizer);
                message.AlternateViews.Add(ICSview);
                SmtpClient client = new SmtpClient("SmtpServer", 25);
                client.Send(message);
            }
    

    When using this application to create/update/delete meeting request:

    1. For attendee, bbb@abc.com, he's outlook can receive the meeting request and update calendar successfully. "Update" and "Delete" meeting reuqest from third-party application also work well for bbb@abc.com.

    b. For Organizer aaa@abc.com, he can receive the meeting request successfully, but cannot find a way to update this meeting reqeust into organizer's calendar. (Also "Upate" "delete" from third-party application cannot affect organizer's calendar.)

    Looking forward to your feedback, thanks a lot~

    Wednesday, December 21, 2011 10:08 AM
  • I wrote a third party application to use icalendar format to organize a meeting in outlook 2007. E.g, it can create a meeting usemail_A@test.com as Organizer, andMail_B@test.com andMail_C@test.com as attendees. Every thing works well(Create/Update/Delete) and attendee can see the meeting and update their outlook 2007 calendar.

    Here are the code methods:

    Build ICS file:

    public string BuildMeetingRequestICS(DateTime start, DateTime end, string attendees, string organizer,
                string subject, string description, string UID, string location)
            {
                System.Text.StringBuilder sw = new System.Text.StringBuilder();
                sw.AppendLine("BEGIN:VCALENDAR");
                sw.AppendLine("VERSION:2.0");
                sw.AppendLine("METHOD:REQUEST");
                sw.AppendLine("BEGIN:VEVENT");
                sw.AppendLine("ORGANIZER;CN=\"KeithWang\":mailto:" + organizer);
                // Here just use hardcode attendees to test.
                sw.AppendLine("ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:aaa@abc.com");
                sw.AppendLine("ATTENDEE;ROLE=OPT-PARTICIPANT;RSVP=TRUE:mailto:bbb@abc.com");
                sw.AppendLine("CLASS:PUBLIC");
                sw.AppendLine(string.Format("CREATED:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow));
                sw.AppendLine("DESCRIPTION:" + description);
                sw.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", end));
                sw.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow));
                sw.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", start));
                sw.AppendLine("SEQUENCE:0");
                sw.AppendLine("UID:" + UID);
                sw.AppendLine("LOCATION:" + location);
                sw.AppendLine("SUMMARY;LANGUAGE=en-us:" + subject);
                sw.AppendLine("BEGIN:VALARM");
                sw.AppendLine("TRIGGER:-PT720M");
                sw.AppendLine("ACTION:DISPLAY");
                sw.AppendLine("DESCRIPTION:Reminder");
                sw.AppendLine("END:VALARM");
                sw.AppendLine("END:VEVENT");
                sw.AppendLine("END:VCALENDAR");
                return sw.ToString();
            }
    
    

    Send request:

    private void SendOut()
            {
                string organizer = "aaa@abc.com";
                string attendee = "bbb@abc.com";
                string id = "6ce363af-3532-4456-84e9-84931e21c593";
                string meetingInfo = BuildMeetingRequestICS(
                    DateTime.Parse("12/23/2011 7:00 AM"),
                    DateTime.Parse("12/23/2011 7:20 AM"),
                    attendee, organizer,
                    "Test Subject", "Test Meeting Description 001",
                    id, "Test Location");
    
                System.Net.Mime.ContentType mimeType = new System.Net.Mime.ContentType("text/calendar; method=REQUEST");
                AlternateView ICSview = AlternateView.CreateAlternateViewFromString(meetingInfo, mimeType);
                MailMessage message = new MailMessage();
                message.To.Add(organizer);
                message.To.Add(attendee);
                message.From = new MailAddress(organizer);
                message.AlternateViews.Add(ICSview);
                SmtpClient client = new SmtpClient("SmtpServer", 25);
                client.Send(message);
            }
    
    

    When using this application to create/update/delete meeting request:

    1. For attendee, bbb@abc.com, he's outlook can receive the meeting request and update calendar successfully. "Update" and "Delete" meeting reuqest from third-party application also work well for bbb@abc.com.

    b. For Organizer aaa@abc.com, he can receive the meeting request successfully, but cannot find a way to update this meeting reqeust into organizer's calendar. (Also "Upate" "delete" from third-party application cannot affect organizer's calendar.)

    Looking forward to your feedback, thanks a lot~

    • Merged by 许阳(无锡) Tuesday, December 27, 2011 3:06 AM Same issue
    Monday, December 26, 2011 2:20 AM
  • Hi Keith,

     

    As far as I know this is fixed via KB944094. Support for this was first added in a post Service Pack 1 Hotfix for Outlook 2007 and later in Service Pack 2 as well so I suggest that you first check that Outlook is fully up-to-date before attempting this fix. Outlook 2010 also offers support for this.

     

    Once updated, you’ll have to add the following Registry value;

     

    Key: HKEY_CURRENT_USER\Software\Microsoft\Office\<version>\Options\Calendar

    Value name: ExtractOrganizedMeetings

    Value type: REG_DWORD

    Value: 1

     

    When this key is missing or set to 0, then you cannot accept meetings that have been sent to you in a 3rd party/unknown calendar format.

    When this key is set to 1, then an attempt is made to interpret the 3rd party/unknown calendar format so you can accept it.

     

    Have a good day,

     

    Tom


    Tom Xu [MSFT]
    MSDN Community Support | Feedback to us
    Tuesday, December 27, 2011 1:54 AM