Ditto Public beta

page_hero_Ditto Public beta

Ditto is a tool for transferring Asana projects between workspaces. It is a complete rewrite of an earlier project with the unwieldy title ‘Organise Asana Projects’ but colloquially known as ‘Kothar’ by the Asana community.

Ditto, or ‘Kothar 2’, fixes a number of longstanding issues with the original implementation, allowing faster and more accurate project copies to be created. It’s also much more pleasant to work with from the development side, which means I am more inclined to spend time updating and improving it.


The original tool was started in 2013, and was based on a script posted to GitHub by AWeg, which in turn was based on an earlier version by MhdHejazi.

My code took that script and added a web-based UI to choose projects, and later made the changes necessary to support new features launched by Asana such as Teams and Custom Fields.

The original tool became extremely popular, in no small part due to Asana support referring people looking to transfer projects between workspaces. This has resulted in great feedback from users, which has motivated me to keep the tool up to date and fix problems. This new version provides all the original features, plus several improvements. I hope all the existing users will find the switch painless and possibly even enjoyable :)

Previously the tool was supported entirely by donations. People’s generosity in this regard was completely unexpected, but very welcome. Over the last six years the costs of running the service have just about broken even with donations.

With Ditto I’ve decided to try something different, and will be adding the option to upgrade to a Pro account. The basic features of the tool (everything in the original tool, plus fixes) will remain free, but more complex features will require the upgrade.

How does it work?

Ditto works by taking a ‘snapshot’ of the projects you wish to copy. This is accomplished by reading all the tasks, then downloading attachments, looking up tags and custom fields which have been used, users who have been assigned tasks, etc.

Once this snapshot is complete, it is then compared to the destination workspace. In particular, the common features such as tags and custom fields need to be lined up so that there are no duplicates or missing data. Once this step is complete the user is presented with a short report of the status of the copy, and whether there are any problems detected such as naming collisions or users present in one workspace and not the other.

Finally, when the user confirms they want to proceed, the new projects are created and tasks are copied into them. This process takes into account multi-homed tasks and is able to correctly place a single copy of the task in two or more projects, or as a subtask.

The copy operation is extremely efficient, and creates tasks in parallel as much as possible. Within a project, section or parent task, new tasks are first created in batches before being moved into the correct order, which is much quicker than creating them one by one in the correct order from the start.