How to migrate from Outlook 2000 to Evolution

From Nick Jenkins
Revision as of 04:10, 27 October 2008 by Nickj (Talk | contribs)

Jump to: navigation, search

How to migrate from Outlook 2000 to Evolution. See also the blog post giving some background and explanation about this.

On Windows

  • Backup your PST files, so that you have a safe copy somewhere.
  • Set up Outlook (if you have not already done so), and open your PST files.
  • Move your all Tasks and Notes to be under the main PST (under "Outlook Today"), if they are not already there.
  • Empty the "deleted items" folders in all your files.
  • Right click on each PST file, go Properties -> Advanced -> click "Compact Now".
  • Close Outlook, then restart Outlook.

Running O2M to export your mail, calendar, and contacts

  • Buy O2M, and install it on Windows. Yes, it costs $10. You can try the free options first, but if they don't work then O2M might save you a LOT of time and wasted effort trying things that don't work. Try the trial O2M version if you're unsure.
  • Open O2M:
    • next
    • select output directory (the default is usually fine)
    • next
    • hold down the down arrow key until every mail folder is selected
    • next
    • (default) convert all of my email
    • next
    • don't skip large file attachments, convert everything
    • remove every type from the file type exclusion list (i.e. we want everything)
    • next
    • select all contacts folders
    • next
    • (default) apple address book
    • next
    • work
    • next
    • yes move calendar appointments
    • next
    • Apple iCal
    • next
    • all appointments
    • next
    • only look up email addresses if an invite is addressed to fewer than 10 invitees
    • next
    • start

The actual conversion process can take a long time - mine took around 8 to 12 hours. I had to check it fairly often (see below), and regularly click "Yes" or "Ok" to help keep the export moving forward.

Problems with O2M

Although O2M is good, it's not perfect, and there are two major problems with it:

  1. O2M kept prompting during conversion with a very annoying dialog box: "One of your emails had an invalid 'Sent' date. This can happen if a date doesn't have a valid timestamp, or if the date isn't properly formatted. Mail won't import into Mac programs properly without valid dates. O2M can try to fix your dates for you. If O2M can't fix a date, the date can be set to today's date as a last resort so at least the email will import properly on your Max. If you choose not to have O2M fix your dates, mail with bad dates will be skipped. Would you like O2M to fix bad or missing Sent dates for you? Yes/No". Now, I must have clicked "Yes" nearly 1000 times to this damn dialog box. Literally every 3 minutes I would check if it got stuck at this dialog box, and click the "yes" button. This went only for literally 8 or more hours, checking every 3 minutes if it got stuck. It would be REALLY REALLY nice to have a "Yes to all" button, so that I could click this once, and never ever be prompted about this ever again.
  2. O2M collapsed the nested email folder hierarchy that I had, into a flat hierarchy, with a list of files in a single directory, with the mangled folder names as part of the file name (the names O2M uses are made up of the folders path with spaces and punctuation removed, and underscores for each level, and it adds ".mbox" to the end of the file name). I actually ended up writing a PHP script (see below) to recreate the folder hierarchy that I originally had (with "Inbox.sbd" folders, and "Inbox" mbox files, with no extension). It would be REALLY REALLY nice to have an option somewhere in O2M to keep the folder hierarchy completely intact, and to name the folders and mailboxes using the same naming system that Thunderbird and Evolution use, so that these files can be moved straight into those applications.

Running Outport to export your Notes and Tasks

  • Look for any Notes with slashes - '/' or '\' - in their names, and if there are any rename these to remove the slashes.
  • Download Outport, and with run it whilst Outlook is running too.
  • Tick your notes, and export these as "text files".
  • Tick your tasks, and export these as "Evolution tasks".
  • Save these into a directory (you can use the same directory as O2M).

On the Linux machine

  • Copy the exported data from O2M and the exported data from Outport onto your Linux workstation.

Importing your Email into Evolution

  • Copy all of *.mbox files into ~/.evolution/mail/local/Inbox.sbd/
  • You need to remove the .mbox extension from all of these files. If you don't care about your folder hierarchy, then you are done.
  • You can optionally try and recreate your folder hierarchy you had in Outlook. I had the folder hierarchy that Thunderbird had created, with a list of file names in a text file called 'linux-dir-list.txt' (i.e. I had what it should look like) so I was able to use that to try and move the O2M files I had into the correct locations (i.e. I knew what I wanted and wrote a script to move and rename O2M's mbox files to where I wanted them to be). The script I used is:

error_reporting( E_ALL | E_STRICT );

function O2M_mangle_path( $path, $is_dir ) {
	if( $is_dir ) $path = preg_replace( '/\.sbd$/m', '', $path );
	return str_replace( array( ' ', '-', "'", '(', ')' ), '', $path );

// input : "./Work.sbd/Product.sbd/CP web requests for info.sbd/2005-07 Random University"
// output: "Work_Product_CPwebrequestsforinfo_200507RandomUniversity"
function move_O2M_mbox_to_correct_location( $path ) {

	$path_parts = explode( '/', $path );
	array_shift( $path_parts ); // remove the current dir ("."), as it's useless.

	$filename = array_pop( $path_parts );
	$dir = implode( '/', $path_parts );
	if( !is_dir( $dir ) && !empty( $dir ) ) {
             mkdir( $dir, 0777, true );
	$source = '';
	foreach( $path_parts as $path_part ) {
		$source .= O2M_mangle_path( $path_part, true ) . '_';

	$source .= O2M_mangle_path( $filename, false ) . '.mbox';

	if( !is_file( $source ) ) {
		print "Warning: Could not find file to do: rename $source $path\n";
	rename( $source, $path );

// Takes the destination location, works out where the file will be currently, and moves 
// it to that location.
$input = file_get_contents( 'linux-dir-list.txt' );
foreach( explode( "\n", $input ) as $dest_file ) {
	if( preg_match( '/\.sbd$/m', $dest_file ) ) continue; // skip directories.
	move_O2M_mbox_to_correct_location( $dest_file );
  • If you don't have this, then you can either create this hierarchy manually, or you can hassle/beg the O2M developers to add an option to do this automatically, or you can put up with losing your folder hierarchy.
  • Two useful commands to run in the ~/.evolution/mail/local/Inbox.sbd/ directory, to check that you haven't stuff the folder hierarchy up were:
    • Checking that there are no empty directories (there should not be any) : find -depth -type d -empty
    • Checking that there are no mbox files (there should not be any) : find . | grep -inr "mbox"
  • You should now have your Outlook Email imported into Evolution.

Importing your Tasks into Evolution

  • In Evolution, create as many "Tasks Lists" as you need for the number of Task Folders you had in Outlook, by going Tasks, then New -> Task List.
  • In Evolution, go: File -> Import -> forward -> Import a single file -> Import -> Point to "tasks.ics" file created by Outport in the appropriate folder -> set type to "iCalendar files (.ics)" -> Forward -> select "tasks", location is "on this computer", and select the relevant Task List -> Forward -> Import.
  • Repeat the above for each Task List or Task Folder.
  • You should now have your Outlook Tasks imported into Evolution.

Importing your Notes into Evolution

  • At this point, you have a folder hierarchy of plain text files, with each folder full of files with names like note23.txt
  • Now, you might think you can just import these files into Evolution, or even just drag-and-drop these files (which are just plain text files) into the "Memos" section of Evolution. Unfortunately, you can't. Feature request for adding importing memos to Evolution.
  • Instead what you have to do is this:
    • You need to remove the first "date modified" line added to the first line each note's text file. We don't care when something was modified.
    • You need to rename the file to be called what we want the note to be called, instead of note23.txt.
  • To do this, I used this short shell script, which I ran in each directory that I wanted to port. This is the script:
for mFile in note*.txt
  # Replace Ctrl-M characters in this file.
  perl -pi -e 's%\r\n%\n%; s%\032%% if eof' $mFile
  # Remove the first line of the file
  perl -ni -e 'print unless 1..1' $mFile
  # Get the first line of this file
  mFirstLine=`head -1 $mFile`.txt
  # Now rename the file
  mv $mFile "$mFirstLine"
  • Then in Evolution, click on "Memos", and go New -> Memo List, and create a new Memo list for each of your Note folders that you had in Outlook.
  • Then we install an extremely useful (but still under heavy development) synchronisation application, called conduit. Either use the version that comes with your distro, or download a later one from conduit's getdeb page and double-click on it in Nautilus to install it.
  • Then go Applications -> Accessories -> Conduit Sychronizer.
  • For each Memo List or Notes folder, we do this:
    • In Conduit, drag and drop a new one-way schronisation channel, from "Files and Folders" -> Files, to "Office" -> "Evolution Memos".
    • You should then have a one way arrow from "Files" to "Evolution Memos".
    • Right-click on "Files" and go "Configure Item", then go "Add Folder", select a folder with Notes in them.
    • Right-click on "Evolution Memos" and go "Configure Item", and select the Memo List that you want these notes to be imported into.
    • When you're happy, right click on the one-way arrow, and go "Synchronize Group".
    • Repeat for each other Memo List or Notes folder.
  • You should now have your Outlook notes imported into Evolution.

Importing your Calendar into Evolution

  • In Evolution, go: Calendars -> File -> Import -> Forward -> "import a single file" -> Forward -> Select the "calendar.ics" exported from O2M -> set file type to "iCalendar (.ics)" -> Forward -> Forward -> Import.
  • You should now have your Outlook Calendar items imported into Evolution. If you have multiple calendars, you probably have to repeat this for each calendar.

Importing your Contacts into Evolution

  • In Evolution, create as many "Contact Lists" as you need for the number of Contact Folders you had in Outlook, by going Contacts, then New -> Contact Lists.
  • Then in evolution, go: File -> Import -> Forward -> "import a single file" -> forward -> select the "contacts.vcf" exported from 02M for this contact folder -> set file type to "vCard (.vcf, .grcd)" -> Forward -> Import.
  • Repeat the above for each Contact Folder, importing into the appropriate Contact List in Evolution.
  • You should now have your Outlook Contacts imported into Evolution.

Bugs or missing features or annoyances in Evolution, if you are migrating from Outlook

Now that you have migrated from Outlook to Evolution, you may well notice some bugs or missing features or annoyances in Evolution, for functionality that worked fine in Outlook. I'm keeping a list of the things that I have noticed so far in Evolution, and here it is:

  1. Evolution: Add a "reply in same format" option.
  2. Evolution: When deleting folders, move these to the trash, instead of deleting irreversibly.
  3. Evolution: Do not scroll to end of Draft messages when opened.
  4. Evolution: Multipage memo only prints first page.
  5. Evolution: Copy does not work in Memo preview pane.
  6. Evolution: Change of draft mail format to/from HTML is not saved if it is the only change. --> Marked as FIXED, will try again in 2.24.
  7. Evolution: Add a folder hierarchy for tasks, memos, and contacts.
  8. Evolution: No text/calendar (.ics) handling. (i.e. clicking a .ics link on a web page does not work).
  9. Evolution: Make copy/paste of files into draft Evolution emails insert attachments, not the file path as text.
  10. Evolution: do not insert "-- " (dash dash space) at the start of signatures. --> WONTFIX
  11. Evolution: more granularity for the priority of the messages - Cannot see a way to mark my outgoing email as low priority.
  12. Evolution: add a way to accept "bad" ssl certificate permanently. Discussion forum on this.
  13. Evolution: Spell check does not spell check an email's subject line.
  14. Evolution: Drag-and-drop moving of days for calendar appointments in the calendar view.
  15. You may also notice that Evolution crashes more than Outlook ever did. It's generally crashes about twice a day on average, whereas Outlook would typically crash once every 2 weeks for me, so on this basis we can empirically ballpark-estimate that Evolution seems to be around 20 times buggier than Outlook in real-world usage.
  16. Not logged yet: Using the above Task import method, tasks get imported with "high" priority, when they should have "normal" priority or no-specified priority.
  17. Not logged yet: Evolution does not seem to use the preferred PDF reader application (I have set up Acrobat Reader as the default reader *.pdf files, but when I open a PDF file in Evolution it still uses Evince).
  18. Not logged yet: I don't get any calendar reminders when an appointment is due. Actually, I did get one from an appointment from seven months ago, but have not yet got any reminders for appointments that due on the current day. --> This seems to be partially due to the timezone not been being set on the reminders when they get imported, and partially due to the reminder part of Evolution not always showing reminders for things that happened when your computer was off.
  19. Not logged yet: Evolution video corruption when composing emails using the proprietary NVIDIA driver. Suspect this is an NVIDIA driver bug, so will try with the free "nv" driver and see if problem persists. --> Confirmed, fixed by switching driver, so this was an NVIDIA proprietary driver bug.
  20. Evolution: Can copy/paste HTML checkboxes into plain text emails, and cannot undo this.
  21. Evolution: Ctrl-s as shortcut to "save draft" rather than ctrl-shift-s.
  22. Evolution: Please add a File -> Print menu to tasks, calendar items, and memos.
  23. Evolution: Make Tasks / Memos / Calendar items remember window size.
  24. Evolution: No Undo for tasks, notes and appointments.
  25. Evolution: Meeting invites (including from Outlook) are showing up just as text messages (not being treated as meeting invites). --> WORKAROUND: Edit -> Plugins -> Untick "Prefer plain-text".
  26. Evolution: Today not selected upon opening calendar.
  27. Evolution: Add a way to convert appointments into meetings, and meetings into appointments, or remove the distinction altogether.
  28. Evolution: Accept semicolons, as well as commas, as email-address separators in the "TO" address field.
  29. Evolution: Add a multi-column view for memos - i.e. more than one memo per line.


The above steps should hopefully help you migrate from Outlook to Evolution, and give you an idea of what to expect. As you can see, it's not easy, but hopefully it will become easier with time. Also there are still some problems with Evolution that you may encounter, but I am hopeful that some of the above will be resolved with time. Personally, I would very much like to see Evolution succeed, and become everything that was good about Outlook, and much much more. Ciao!