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.

Overloaded motorbike

Photo credit: graeme_newcomb via photopin cc

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.

Export your data from Toodledo

Export your data from Toodledo


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.

Export outstanding tasks as a CSV file

Export outstanding tasks as a CSV file


4. Rename the file to toodledo_current.csv.
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

  1. 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.

  1. Select the empty cell to the right of the NOTES column in row 2 (cell G2) in my example).
  2. Enter the formula: =SUBSTITUTE(F2,CHAR(13),"++") and press enter. This substitutes all carriage returns (CHAR(13)) in cell F2 with the characters ++.
  3. Copy this formula down to the last row which contains data. Your spreadsheet should now look something like this:

    Replace carriage returns using the SUBSTITUTE formula

    Replace carriage returns using the SUBSTITUTE formula (click to see full size)

3.3 Convert the formulae to values

Next you need to convert the Excel formulae into text.

  1. Select the range you copied down in the previous step (G2:G23 in my example).
  2. Select Edit, Copy or press cmd + c.
  3. Select the first cell in the NOTES column (cell E2 in my example).
  4. Select Edit, Paste Special.
  5. Select Values and click OK .

    Use Paste Special to convert formulae back to text

    Use Paste Special to convert formulae back to text

  6. 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:

Convert formulae back to text values

Convert formulae back to text values (click to see full size)

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

  1. Start OmniOutliner, select Checklist from the available templates and click New Outline.

    Create a new outline using the checklist template

    Create a new outline using the checklist template (click to see full size)

  2. Press cmd+a to select the pre-populated data and hit delete to clear it.
  3. Select all cells containing data in Excel and copy and paste the data into the empty outline file.

    Tasks pasted into the outline

    Tasks pasted into the outline (click to see full size)

  4. Edit the column headings with the appropriate OmniFocus field names as shown below:
    Toodledo to OmniFocus field mapping

    Toodledo to OmniFocus field mapping

  5. Click the dot at the beginning of the row containing the Toodledo field names (TASK, CONTEXT etc) and press delete to remove this row.

    Edit the column headings so fields map correctly

    Edit the column headings so fields map correctly (click to see full size)

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.

Use opt + enter to add a carriage return character to the "Replace With" field

Use opt + enter to add a carriage return character to the “Replace With” field

Any multi-line notes are converted back to their original format. OK, we’re nearly there.

Back to normal - carriage returns strike back

Back to normal – carriage returns strike back (click to see full size)

5. Transfer your tasks into OmniFocus

With everything now back to normal, it’s time to transfer your stuff to the OmniFocus inbox.

  1. Click the dot at the beginning of any task to select the entire row.
  2. Press cmd+a to select all rows.
  3. Press cmd+c to copy all tasks.
  4. Switch to the Inbox view in OmniFocus and press cmd+v to paste the tasks.
  5. 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.

  1. Select the Contexts perspective tab in OmniFocus.
  2. Select the @ Projects context in the sidebar. This will be a sub-context of Import of [import date].

    Select the tasks that are really projects

    Select the tasks that are really projects (click to see full size)

  3. Select any task in the list and press cmd + a to select all tasks in this view.
  4. 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.

Wrap up

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.

You may also like...

5 Responses

  1. AB says:

    is omnifocus good? should I change?

  2. John Scullen says:

    Hi AB. OmniFocus is excellent. Works really well for me and has many users around the world.

    Should you change? Well that depends. OmniFocus is pretty sophisticated and can be overwhelming at first. What platform are you using? It’s Mac and iOS only so that might be a determining factor.

    What are you using to manage tasks now?

    What’s causing friction with your current workflow? What are the problem areas you’d want to address by switching?

  3. Rafael Costacurta says:

    Nice walkthrough! Too bad for me that I was looking for Something the other way, As I am planning to leave Iphone, I have to search for alternatives to OmniFocus. Thinking about a mix of 2do app, synced via Toodledo… But not sure is it is the Best choice…

    • John Scullen says:

      Rafael, you might want to look into Todoist. It seems to be a popular choice for people moving away from OmniFocus – especially if you need a more sophisticated application.

  1. September 30, 2015

    […] が回答。うーん、これは面倒くさい。と思って英語で調べると、有りました。(というか、日本語ベースでもメニューには記載されていたので「そりゃそうだ」という話では有ります)細かい内容は、こちらを参照。ほぼ画像なので、英語わからなくても解るかと。要は、ToodledoからCSVでダウンロードし、改行を++という文字に置き換え(使っていない文字列なら何でもOK)、その後OmniOutlinerにコピペして、++を改行に置き換え、最後に、OmniOutlinerからOmnifocusにコピペ。(そこでDue Date等を決める。)と言うもの。文字にすると簡単ですし(個人的にOutlinerを使っていたのもあって)楽ちんでした。なお、編集した後、Toodledoの複数項目編集はこちらの記事が便利でした。 […]

Leave a Reply

Your email address will not be published. Required fields are marked *