Migrating from Outlook 2019 to Thunderbird

I decided recently that I wanted to move my email from Outlook to Thunderbird, while staying on Windows for now. I had been using Outlook for 25 or more years and had accumulated many emails across Hotmail and my ISP account using a combination of POP3 and IMAP. It was all a bit of a mess, especially my ISP account which seemed to have a huge number of emails in the inbox. I still don’t really understand what those emails are, I think many of them might have been emails I either deleted or had moved to other folders in Outlook. This is a partial account of how I transitioned, unfortunately I didn’t record all the steps because sometimes I had to experiment.

Email

The first thing I tried was Thunderbird’s built in import feature (Tools->Import, Import from Outlook). To begin with I kept getting a no profile found error. This turned out to be because when I installed Outlook I had installed the 32-bit version, and I installed Thunderbird as 64-bit. To get around this I temporarily removed the 64-bit version of Thunderbird and installed the 32-bit version. After doing this I was able to see the profile and import it. Once I had imported, then I switched back to 64-bit Thunderbird and used the profile that the 32-bit version had created.

I think this is how I ended up importing the Hotmail and ISP accounts. However, I found that many of the emails I had in the main PST file were not imported. I think this is because of the strange structure I had evolved over the years.

I wanted to import the PST file into Thunderbird’s local folders. I found that there is an open source tool that will convert PST files to the mbox format used by Thunderbird. It is called libpst and runs on Linux but will also run on Windows Services for Linux (WSL). I installed it on WSL (apt install libpst-utils), shutdown Outlook and ran it against my PST file. I got the readpst utility to write the output files to the host Windows directories where I intended to keep my local files, but I found that this didn’t work because of the way it works with files and the absence of case-sensitivity. I have opened a GitHub issue to describe the problem.

I also tried building libpst on Windows so I could more easily debug the problem, although I found later that the debug experience from Visual Studio running on WSL was pretty good. I made a partial attempt to convert libpst to using CMake, and I may submit a pull request for this at some point.

Once I had readpst working, I found it easier not to use the -r option to extract the folders recursively. Instead I let it create a flat set of mbox files in my local folders, then I imported the mbox files into Thunderbird, where I was then able to move folders around to re-create my original hierarchy. I had to install the add-on ImportExportTools NG to do this, once this is installed you can right click on Local Folders and select the import function from the add-on menu.

Once I had all my PST emails imported to local folders I was able to start rationalising my online accounts. I moved a lot of emails to my local folders. I also added the Remove Duplicate Messages add-on to try to clean up duplicates. I struggled a bit with this but eventually got it to remove quite a few duplicates.

Calendar

I considered synchronising my calendar with my Hotmail account, but it looks like Hotmail doesn’t fully support CalDAV. So, I decided to use my NextCloud installation to host my calendar instead. I just needed a way to import my calendar to NextCloud.

The readpst utility produced a calendar file, but Thunderbird considered it invalid. So I opened Outlook and exported the calendar by opening the calendar and then going to the File menu and selecting Save Calendar, taking care to select the advanced options to include full details and private appointment details. This produced a .ics file, but again Thunderbird could not import it.

I then tried importing the calendar directly to NextCloud. It could import the calendar file created by readpst but it missed many calendar items. Importing the Outlook export worked though, so this is what I settled on.

Note that in order to be able to create a calendar item in Thunderbird I had to select Client Side Email Scheduling in the calendar properties.

I have Thunderbird on my Android phone, but it doesn’t support calendars. So I had to install the davx5 app to synch my calendar in the Android calendar app.

Contacts

Given that I had chosen to use NextCloud for my calendar I chose to do the same for my contacts. I set up my NextCloud account as a remote address book in Thunderbird.

I exported my contacts from Hotmail by using the readpst utility on the Hotmail .ost file. This created a contacts file that I could import to NextCloud.

Contacts, just added my nextcloud contacts list as a caldav source. Got the address from NC and added it as a remote address book in TB. Exported contacts from outlook by using readpst on the hotmail ost file, had to consolidate contacts first in outlook as they were spread across different accounts.

This entry was posted in Retro-Computing. Bookmark the permalink.

Leave a comment