How to restore Unfuddle dumps: migrating to Drupal CaseTracker

Submitted by Frederic Marand on

Unfuddle is a very convenient and fairly cheap SaaS hosted Redmine (with extensions) and SVN/Git, which I use regularly on customer projects. Their service includes reassuring "Backup" options, going as far as to include the ability to backup to your own Amazon S3 bins in addition to their local backups.

Recently, however, I had to go back to an archived project for which I had dutifully taken a dump before closing it on Unfuddle, and looked for a way to restore it to my Unfuddle account. To no avail. Unfuddle support then kindly confirmed that the service did include a backup feature, but no restore:

Backups of projects within Unfuddle are for personal use only and cannot be restored into accounts via the interface. This however may be possible with some custom scripting on your part and with the use of our API (http://unfuddle.com/docs/api).

What then ? I will not comment on the business sense of such a "backup / no restore" proposition, but in this specific case, it prompted me to find a way to take my business elsewhere, and what better way than to Drupal ? Project and friends being a bit too complicated for these needs, I figured this would be a good occasion to flex my Migrate chops and built a Migration enabling the import of Unfuddle dumps to CaseTracker, the project management component in Open Atrium. So here it is:

Unfuddle backup restored to CaseTracker, main screen

As you can see, this code, even in its first incarnation, can restore a bunch of information from your Unfuddle backups to Casetracker:

  • Unfuddle Users, as Drupal users
  • Unfuddle Projects, as CaseTracker projects
  • Unfuddle Tickets, as CaseTracker basic cases
  • Unfuddle ticket Follow-ups, as CaseTracker comments

The image below shows the mapping of Unfuddle Ticket fields to CaseTracker Cases.

Unfuddle Ticket mapping to CaseTracker case

Of course, this being a one-off effort, the features are limited, but for anyone interested, the code is available from the OSInet Git repository for the migrateunfuddle module. Should anyone be willing to work on it, it could obviously be moved to Drupal.org, like my previous Migrate Remote Migrate extension for over-the-wire migrations using XML-RPC.

To use it, just install the module normally, uncompress your Unfuddle backup in the sites/(your site)/files/unfuddle directory, and head over to the Migrate v2 administration screen.

Messages ?

In case you are very observative and noticed the non-empty list of messages on the Migrate UI screen copy, these are useless "Comment was created" from comment module, which happen to be the reason for core issue #1268636 to allow watchdog() to ignore low-priority messages.

This looks like great work! More modules using Migrate is definitely a good thing, especially if those projects result in more documentation being created in the Migrate handbook.

But I think it's really important to keep Drupal-related code on Drupal.org. One of Drupal's strengths is that it has one canonical place to get extensions, and I think that doing everything we can to keep that strength is worth doing.

Do you have a full Git account? If not, you should put in a request for one here. I'd be happy to do the code review as soon as it's posted: this is really good stuff.

Even last year, I would probably have created this as one more project on d.o., indeed, like other projects I did.

However, changes since then have occurred on d.o.: there is a distinct notion that we have now too many little-used, little-maintained modules which do not do Drupal in general any good, meaning any new project now starts life as a sandbox project, voluntarily hidden by the d.o. redesign to avoid giving them visibility, and without the ability to create releases, and can only graduate over time to normal projects.

I did use the sandbox for Migrate Remote, which is a much more generic migration, on which DamZ and Bojanz also worked, but this Migrate Unfuddle module is more of a one-off thing I did in a few hours for a specific customer need, and which seems likely to attract less interest.

Now, if other customers express interest, or if you say you are interested in maintaining/evolving it, or someone else in this thread does, I have indeed no qualms putting it back on d.o.. But if no one is interested in so doing, I am not sure it will do anyone any good. Are you ?