Tuesday, August 30, 2005

Outlook 2003: For iCal import, use Gregorian instead of Lunar?!

Well, as promised, I installed Outlook 2003, but it still can't import my .ics files (generated by Apple's iCal). I guess Trumba's business model is safe even from Outlook 2003, and Microsoft's Gnomedex demo is still just a starting point for them.

At least I received an interesting error message:

"Microsoft Office Outlook cannot import vCalendar file. This error can appear if you have attempted to save a recurring Lunar appointment in iCalendar format. To avoid this error, set the appointment option to Gregorian instead of Lunar."


Huh? Can anyone explain this? After digging around the Outlook 2003 help system, as well as the Web, I could not.

42 comments:

Anonymous said...

I dug into this proble with loading iCal .ics files into Outlook. The problem seems to be that iCal adds VTIMEZONE sections to the ics file that Outlook can't handle. They generate the misleading lunar/gregorian silly error message.

Outlook 2003 seems to want to have GMT times, and also wants to have DTSTART and DTEND fields for the start and end of an event, instead of DTSTART and DURATION.

We can configure iCal to generate GMT-only information that reads into Outlook, but need to do it for every event, which isn't practical.

I'm currently looking into writing a custom proxy to transcode from Apple ics attachments into Outlook 2003 ics attachments.

My question: Why don't a LOT of people have this problem? Does no one share calendars cross platform without using a calendar server?

Leona Barratt said...

I have the same problem! I need to import my mac's calendar into Outlook at home. It won't read the .ics file. Was there a solution for this?
Thanks!
Leona

Anonymous said...

I have the same problem while I was trying IMac sync tools. I am trying to integrate windows and macs calendars and adressbooks. Why is that so hard?

Anonymous said...

Yes everyone has this problem when iCal invites Outlook. I invite my .mac email as an attendee to an Outlook events, send the invitation, accept it on the .mac, and acknowledge the return in Outlook. Then both calendars look the same.

So to trash Outlook, I'm just inviting my .mac self to the open Outlook events. Contacts were moved with a Vcard transfer program.

This helps my retirement by prohibiting me from inviting any outlook users to events I schedule. They'll get the invitation and details but can't post it without rekeying it.

Anonymous said...

The best part of this glorious incompatibility is that Outlook creates icalendar files that cannot be imported into Outlook. On a stock Outlook 2003 install, using "Action->Forward as iCal" will result in a .ics file that cannot be re-imported into a stock Outlook 2003.

Go Microsoft.

Anonymous said...

Just to add insult to injury. I have the same problem sending calendar entries from my Nokia E61 (Symbian OS)....There definitely seems to be a single point of failure here. I'm sure if I asked Microsoft, they would suggest an upgrade to Vista......WOW...it still wouldn't work.

Anonymous said...

Just bought my wife the new iMac 24". I'm forced to use Outlook 2003 at work. It would help my marriage if I could accept my wife's iCal invitations. Has anyone found a work around?

Unknown said...

I came across this blog entry while trying to find out why iCal files produced by the PHP library iCalcreator gave this error when loaded into Outlook 2003.

After a bit of fiddling I found that if I removed the VERSION:2.0 line (and disabled the code from the library that added it), Outlook would import the appointments OK. Not ideal but it does work. Hope this helps anyone who was in the same position as me!

Anonymous said...

SOLUTION: The last posters solution is the one that works. Simply save the .ics attachment on your desktop, edit it with notepad and delete the line "VERSION:2.0" then save. You can then double click the file and it will open in Outlook. Appointment times appear to be GMT though...

Anonymous said...

Removing "VERSION:2.0" didn't do the trick for me.
Now I get a different error message: "vcalendar/icalendar import failed". At least it's not some nonsense text about a lunar calendar.

More ideas, anyone?

Anonymous said...

Hi there, thanks a lot, this helps enormously. It seems a slightly clumsy way of doing it and in most cases it's easier to actually re-enter the details. Not for meeting invitations though of course. I would really like to hear of a solution for making this happen automatically.

Doug said...

both mail systems are crap- ms outlook being the worse of the two. But you can get around the issues with both by using a sync service like Plaxo.

Unknown said...

Here's one workaround that just worked for me for a one-time export of a Mac iCal calendar and import into Outlook 2003 (and ultimately to a shared Public Calendar in Exchange Server 2003 that could be accessed via Entourage).

Take the exported iCal .ics file and move it to a Windows PC (or, like I did, launch XP in Parallels). Import the .ics file into Mozilla's Sunbird (I used the latest 0.7 release). Export from Sunbird into "Outlook CSV" format (I tried Sunbird export to .ics first and that didn't work either). Launch Outlook and import the CSV file into a new personal Calendar folder (or into your existing calendar if you want to merge the data). If all you want to do is get the data into Outlook, you're done. Timezone information came through correctly but my user thought it had gotten some of the start days for multi-day, all day events wrong, YMMV.

I actually wanted the calendar to be a Public calendar in Exchange but you can't import directly to a Public Folder, and it didn't appear that you could move a personal calendar to the Public Folder space, AND I don't know an easy way to select all of the items in a calendar and copy them to another calender in Outlook, so... over to Entourage.

First create your Public Folder calendar (if it doesn't exist already) and Add it to your Favorites. Switch to Calendar view and create a new Custom View with Item Type "Calendar events," Location "This Calendar" and the name of the personal calendar you created during the Outlook import process, and Criteria "Category is None" which will match all of the imported events. Select all and drag them to your Public Folders calendar (hold down Option to Copy instead of Move).

It's just that easy ;-). Thanks for this blog, Scott, I come here frequently to check the Swamp Drain gauge.

dave80 said...

We were able to upgrade to Outlook 2007 which resolved our problem.

Anonymous said...

I had this error trying to import ics files into Outlook 2003.

In Outlook 2007, the calendar would say that it's empty and would add a new calendar, so I would have 2 in my mailbox.

What I did was I opened the .ics file in Notepad and found that there were spaces at the begining of the lines in some of the code.


What I did was I removed the spaces and saved the file. Opened it and no more error! Not ideal, but it worked. :)

Here is what I changed:

eg.
  BEGIN:VCALENDAR
  BEGIN:VEVENT

to

BEGIN:VCALENDAR
BEGIN:VEVENT

Hope this helps someone ^^

Anonymous said...

I too had the same issue.

Removing the 'Version:2.0' resolved the problem.

Captain K said...

Using Outlook 2003...

For me, removing the "version 2" line didn't work.

The solution using Sunbird is great, except that Outlook tells me that CSV files don't support annual recurrence, so all my contacts' birthdays happen only in the actual year they were born.

As has been said: go Microsoft!

Anonymous said...

Hi,

i used RemoteCalendarsSetup-6.3
(http://sourceforge.net/forum/forum.php?forum_id=697660) and it's working for me.

cheers

Anonymous said...

Can anyone please give the solution of this instead of posting problems.

:( I am creating meeting calendar in c# and it is working fine with outlook 2007 but not for 2003.

Please let me know asap if any solution.........

Thanks a ton in advance .........

Anonymous said...

I opened the file in notepad, copied all the content to a new empty file and saved it as “test.ics”. Somehow this worked for me. I have seen this before with generated php, unix and other flat files that had content from a third party platform which windows does not see/recognize. By copy pasting the content to new file you get rid of the “unseen” data.

Hope this works for you guys.

Anonymous said...

Awesome, I removed the VERSION:2.0 line and this fixed my problem - outlook 2003 can now open my ics files. Thanks!

Anonymous said...

I had a similar problem, but removing the REQUIRED "VERSION" property is not the solution.

This does not solve the issue. This will break certain properties of the iCalendar formatted file.

*Recurrence will not work*

Please refer to RFC 2445 for the proper formatting of an iCalendar file.

Also, your issue with Outlook 2003 may stem from the fact you are not using the following properties: DTSTAMP in the VEVENT, METHOD:PUBLISH in VCALENDAR, and a UID for the VEVENT.

nowa said...

I had a problem opening files that are not encoded as "UTF-8 without BOM".

Anonymous said...

I just found this post and I think I found the problem with the outlook. It turns out that if you use any other code for the linefeed in the 'DESCRIPTION' field except ASCII 13. (if you have multiple lines in the description field).

Hope this help.

Joe

Matt McAdams said...

I think Joe in the previous comment was on the right track, at least for me. Here's how I fixed the problem.

First, I'm generating these ics files in Perl using the Data::ICal perl module, and emailing them using MIME::Lite, similar to the guy at http://www.mavetju.org/programming/outlook-ics.php. I'm doing this to add a feature to the web-based software I'm working on. (The software sends an email with an iCal attachment.) I tried everything in the comments above, but kept getting the Lunar/Gregorian error message from Outlook when I double-clicked the calendar attachments in the emails that were sent to me from Perl.

Looking at the raw data in the .ics files, it looks like Outlook is changing the line terminators from CR-LF to CR-CR-LF. (CR = carriage return, LF = line feed; these are two different ASCII characters.) The iCal spec calls for CR-LF, and the Perl module appears to be doing that correctly; but Outlook is adding an extra CR. Actually, I can't be sure Outlook is doing that in the received email -- it might be an artifact of me saving the attachment to a file, uploading it to my webserver, downloading to my Mac, and running the "od" utility to examine the file. But I suspect it's Outlook doing it when the email is received.

Anyway, when I changed the text encoding in MIME::Lite from quoted-printable to base64, Outlook liked the attachments -- no more error. I.e. the encoding technique in the email attachment made the difference.

So, my point is, like Joe said, look at the end-of-line characters, and make sure that your file isn't having those changed by whatever process you're using -- in my case, the encoding method for the email attachment.

Anonymous said...

I just debugged this and found that adding a single line:

METHOD:PUBLISH

resolved it in Outlook 2003. After adding that line directly after VERSION:2.0 Outlook allowed me to import the iCalendar file.

Looks like another cryptic bug for Microsoft....wish I had a dime for everybody looking for "Gregorian" option.

Anonymous said...

hi frnds

the time that the appointments adds in outlook is 5 hrs behind....what is the reason..

Marc Vermut said...

Thanks for a solution finally! Removing Version:2.0 worked for me as well.

Ryan Ford said...

exported my ics file from Google and even with removing the "Version 2.0" line, saving and trying to import into Outlook 2003 I continue to receive:

This error can appear if you have attempted to save a recurring Lunar appointment in iCalendar format.

To avoid this error, set the appointment option to Gregorian instead of Lunar.

More information about this error message online. (link)

...and the "link" is as follows:

Details
Product: Office
ID: 10070
Source: OfficeErrorMessages
Version: 11.0
Message: Links to additional information about the error message you saw are available below.
-----------------------------------
Currently there are no Office Assistance articles available for this error message.

...well, isn't that just swell! This is rediculous!

Ryan Ford said...

Someone said that they debugged and found a line to add "METHOD:PUBLISH"... Well that is already in the ics file... as my file begins:

BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
CALSCALE:GREGORIAN
VERSION:2.0
METHOD:PUBLISH

Anonymous said...

I've been having trouble getting this to work as well and in the end I decided to let Outtlook do the hard work for me.

Set up an appointment in outlook similar to those that you are trying to import.

Save the file using Save as... and select file type .ics

Open the file using your favourite text editor and gradually work through the file deleting lines, saving the file and then double clicking on it until you get the minimum content that will work.

I found it necessary to save it in DOS format, not Unix.

As a mimiumum I've found the following lines necessary:

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
(these previous 3 lines are all one line)
VERSION:2.0
METHOD:PUBLISH
DTSTART:20100219T130000
DTEND:20100219T150000
RRULE:FREQ=WEEKLY;UNTIL=20100531T000000Z;INTERVAL=1;BYDAY=FR;WKST=MO
TRANSP:OPAQUE
SEQUENCE:0
UID: some random hex string
DTSTAMP:20100217T080637Z
Summary: Whatever\n
PRIORITY:5
X-MICROSOFT-CDO-IMPORTANCE:1
CLAS:PUBLIC
END:VEVENT
END:VCALENDAR

You may be able to delete some more of the lines and it shouldn't take too much effort to work out what the lines do and the format

Ajay said...

For me, the issue was resolved by replacing the line breaks (CR-LF) in DESCRIPTION by "\n"

Anonymous said...

HERE'S THE SOLUTION AND WHY...

VTIMEZONE, DTEND, etc. Those are not the problem. There's a great deal of Red Herring -chasing going on here and so I felt compelled to share:

Open your .ics file with Notepad on Windows (any version of Windows). Be certain your Word Wrap is turned-off under the Format menu.

Now, do a File | Save As...

Notice the file is in UTF-8 (or perhaps Unicode)? Outlook chokes on this. Save the file with "Encoding: ANSI".

Double-click it to open in Outlook and you should see it open without any trouble.

Note, however, that any special characters that require UTF-8 encoding will not show correctly (or at all). That requires you to modify those characters to something that fits in the 7-bit ANSI ASCII realm.

Reasons:
The Word Wrap will cause there to be forced end-of-line characters in the file where you do not want them. This isn't why you get the error, it's just something that can "break" the file.

Outlook's handling trouble does not appear to be a simple issue with the Unicode Signature (BOM) that forms the invisible first character of some UTF-8 files; the character that should tell an application to read the file as UTF-8 instead of ASCII. Even with that BOM removed, Outlook doesn't seem to like the UTF-8 at all.

Now, in the IETF's RFC 5545 (which describes the iCalendar format) it states...

"6. Internationalization Considerations

"Applications MUST generate iCalendar streams in the UTF-8 charset and MUST accept an iCalendar stream in the UTF-8 or US-ASCII charset."

I hope that helps to know why it doesn't work and how to make it work.

Anonymous said...

Please see the following post on codeproject article - the code given in that project produces an invalid vCalendar/iCalendar file, but the comment lists many good resources for creating a valid working iCalendar file.

broken code - do not use as-is - please read the RFC and validate
http://www.codeproject.com/KB/cs/sendtaskspgmticly.aspx?msg=3429265

Read the RFC at http://tools.ietf.org/html/rfc5545 and use the iCalendar validator tool available at http://icalvalid.cloudapp.net/ to help create proper iCalendar files (read the full codeproject post for more details).

In particular notice that the PRODID property has a break (\n) in it where it shouldn't, which produces MIMEDIR starting on a line by itself. This is incorrect, as there is no property named "MIMEDIR," and it should really be a part of the line above it.

Steven Ellis said...

This worked for me:

Create an event in Outlook, go to 'Actions' -> 'Forward as iCalendar', save the generated .ics file to your hard-drive, and copy that format in your own .ics file.

Anthony @abrrow said...

SOLVED - at least for me anyway.

Looking at iCal spec it appears a CRLF is required at end of every line so changing my .jsp

Before:
out.print("BEGIN:VCALENDAR ");
After:
out.println("BEGIN:VCALENDAR ");

Notice the "ln", it appends a CRLF to the output.

Viola, no more pesky error message, REJOICE!!!

Tested on Outlook 2003 client.

granadaCoder said...

I posted some additional information here:
http://microformats.org/wiki/icalendar-implementations

But basically, I created an .ics file that worked while I was logged in as an XP Admin account.
But the exact same file was failing when trying to import to Outlook as an XP-StandardUser.

The "lunar" exception seems to be "Anything that could go wrong under the Moon" type of catch-all exception.

In case the other url dies some time in the future, here is the icl contents.


BEGIN:VCALENDAR
VERSION:2.0
PRODID:www.testMeiCalendar.net
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20101231T230000
DTEND:20110101T010000
SUMMARY:New Years Eve Reminder
LOCATION:Downtown
DESCRIPTION:Let's get together for New Years Eve
UID:ABCD1234
SEQUENCE:0
DTSTAMP:20101125T112600
END:VEVENT
END:VCALENDAR


As I said, the above file worked (as is) under an Admin account, but the exact same file would fail under a Standard account with that lunar exception. :<

I was wasting alot of time tweaking the contents of the file, and it kept giving the Lunar exception. Then I figured I needed to try something different, which was namely, try a different Windows-Account.

The lesson learned is that whether you are Microsoft or you are a "normal" developer, writing good exceptions is a part of the job.
Keep them un-ambigious, and provide information back to the caller with some meaningful information, not just a "something blew up" exception.

Brad Fallon said...

How can I get Outlook 2003 to archive my mails on a 30 rolling days basis?

Anonymous said...

June 2011 and this is still an issue with Outlook 2003. My work around was add it to Google Calendar first and then 1 way sync Google with Outlook. Not pretty but functional.

rather crazy that both the ical and Outlook icons in evite create the same .ics file.

razvantim said...

Thank you granadaCoder, your code worked for me.

Piper said...

I am having a similar problem with .ics files going the other way: importing from one generated in Outlook 2003 into iCal. All the files from on correspondent show up on the iCal 7 hours late on the correct date. But only from certain senders.

Sagamore Honey said...

Don't know if this will work for everyone but I'm trying to import the 2013-14 NFL schedule for my fave team and had this same cryptic error message. After opening the .ics in Notepad and deleting the Version2.0 didn't work I tried copying and pasting to a new Notepad file but that didn't work either, so I reopened the file in Notepad to look for those pesky hidden spaces and discovered that the first line started with "BEGIN:VCALENDAR
VERSION:2. 0BEGIN:VEVENT
DTSTART:2013" instead of "BEGIN:VCALENDAR
VERSION:2.0..." so I deleted the space between the . and the 0, closed and saved, and then imported flawlessly with no further modifications. Hope this helps someone!