How to migrate your stuff from Toodledo to OmniFocus
After using Toodledo as my trusted GTD system for around four years, I recently switched to OmniFocus. OmniFocus is one of the applications at the top of the task manager food chain, so I was surprised how few import options there are. I’ve recorded the process that worked for me and I’m hoping others making the transition will find this useful. If you’re migrating to OmniFocus from another task manager, most of this will apply as long as your current task manager can export data in CSV format.
You cannot import Toodledo’s CSV output into OmniFocus without first massaging the data. Task-to-project associations are not migrated but recreating these relationships is straightforward in OmniFocus. There are more steps here than I’d like, but if you follow the process you shouldn’t have much trouble.
You’ll need the following applications before you get started. Current versions are shown in parenthesis:
- Microsoft Excel (v14.4.3) or another spreadsheet application. I’ve provided instructions for Excel, but Numbers or Google Spreadsheets should work just as well.
- OmniFocus (v2.0.1)
- OmniOutliner (v4.1.1)
1. Review your existing data
This is the perfect time to review everything in your existing system and clean up as much as you can. Drop any stale projects and tasks you’re not committed to. The less data you have to migrate the easier the transition will be. You’ll need to do some cleanup work in OmniFocus, so the fewer items the better.
2. Export your current tasks from Toodledo
Next export all your incomplete tasks.
1. Login to Toodledo and select Tools, Import / Export / Backup from the menu.
2. Click CSV Import / Export.
3. Select Download CSV to save a copy of outstanding (uncompleted [sic]) tasks. This creates a file called toodledo_current.csv.txt in your Downloads folder.
4. Rename the file to
5. Open the file in Excel.
3. Prepare the text file for import
Next you need to edit your text file in preparation for import to OmniFocus. OmniFocus supports fewer import options than I expected. In fact OmniOutliner is the only option. Fortunately the Omni Group offer a 14 day trial of all their applications so you don’t need to buy OmniOutliner.
Each row of the text file must represent a single project or task. This comes unstuck when you use carriage returns in the Notes field — something I do often. OmniOutliner will interpret each new paragraph in the notes as a new line unless you reformat the field first. To get around this, I converted these carriage returns to a different character sequence and converted them back once the data was in OmniOutliner.
3.1 Remove unnecessary data
- Delete all columns that you don’t used in Toodledo. TASK, CONTEXT, DUEDATE, STATUS, STAR, and NOTE were the only fields I migrated.
3.2 Convert carriage returns to another character sequence
To avoid OmniOutliner creating a new record every time I’d used a carriage return in the notes field, I converted all the carriage returns to ++. There’s nothing special about the plus signs. Any characters you’re not using elsewhere should work. Once the data is in OmniOutliner you’ll convert each ++ back into a carriage return.
- Select the empty cell to the right of the NOTES column in row 2 (cell G2) in my example).
- Enter the formula:
=SUBSTITUTE(F2,CHAR(13),"++")and press enter. This substitutes all carriage returns (CHAR(13)) in cell F2 with the characters ++.
- Copy this formula down to the last row which contains data. Your spreadsheet should now look something like this:
3.3 Convert the formulae to values
Next you need to convert the Excel formulae into text.
- Select the range you copied down in the previous step (G2:G23 in my example).
- Select Edit, Copy or press cmd + c.
- Select the first cell in the NOTES column (cell E2 in my example).
- Select Edit, Paste Special.
- Select Values and click OK .
- Select the last column (column G in my example) and delete it. You’ve copied the contents into the notes column as text, so the calculation is no longer needed.
Your spreadsheet should now look more like this:
3.4 Review the file contents and save
The data is almost ready for transfer. Scan all entries and verify the format is consistent. I found some non-alphanumeric characters were mangled in the export — apostrophes in particular. I manually corrected them before going any further, but you can do this any time.
Look through the file and correct any abnormal rows which might have slipped through. Save your file now in case anything goes wrong to avoid redoing this work.
4. Transfer your tasks into OmniOutliner
If you don’t already own a copy, download the 14-day OmniOutliner trial from the Omni Group. It’s a great outlining application that you might find other uses for.
4.1 Correct the field names
- Start OmniOutliner, select Checklist from the available templates and click New Outline.
- Press cmd+a to select the pre-populated data and hit delete to clear it.
- Select all cells containing data in Excel and copy and paste the data into the empty outline file.
- Edit the column headings with the appropriate OmniFocus field names as shown below:
- Click the dot at the beginning of the row containing the Toodledo field names (TASK, CONTEXT etc) and press delete to remove this row.
4.2 Bring back the carriage returns
Next you’ll convert the ++ characters back to carriage returns.
1. Select Edit, Find, Find…
2. In the Find String field enter ++.
3. In the Replace String field press opt + enter. You won’t see anything in the field, but this represents a carriage return.
4. Click Replace All.
Any multi-line notes are converted back to their original format. OK, we’re nearly there.
5. Transfer your tasks into OmniFocus
With everything now back to normal, it’s time to transfer your stuff to the OmniFocus inbox.
- Click the dot at the beginning of any task to select the entire row.
- Press cmd+a to select all rows.
- Press cmd+c to copy all tasks.
- Switch to the Inbox view in OmniFocus and press cmd+v to paste the tasks.
- Click OK to accept the metadata mappings.
6. Set up your projects
Congratulations. You now have your tasks in OmniFocus, but the job isn’t quite done yet. All entries are created as tasks, but some of these entries are really projects. Next you’ll convert your projects into items that OmniFocus recognises as projects.
- Select the Contexts perspective tab in OmniFocus.
- Select the @ Projects context in the sidebar. This will be a sub-context of Import of [import date].
- Select any task in the list and press cmd + a to select all tasks in this view.
- Select Edit, Convert to Project or press cmd + ! to convert these tasks to projects.
7. Reassign actions to projects
The last step is to manually reassign the remaining inbox tasks to their respective projects. I opened OmniFocus and Toodledo side-by-side and just worked through the list. This took me about 15 or 20 minutes. Now you know why I suggested cleaning up before starting.
I had around 250 tasks and projects in Toodledo that I transferred to OmniFocus. With a list of this size, you should be able to complete the entire process in under an hour.
This process would be much simpler if OmniFocus could import the CSV files exported by many task management tools. Toodldo’s XML export identifies relationships between parent tasks (projects) and sub-tasks. This migration process could be almost completely automated by someone who knew what they were doing with AppleScript. If you take up that challenge, please let me know in the comments.