Our migration to Team Foundation Server started a couple of months ago with the Source Control adoption. Another step that we performed was to transfer our Countersoft's Gemini bug-tracker projects to TFS Issue Tracking System.

I've been searching around for a tool that would perform the job automagically ;-) and found nothing but other inquiries on the subject without answers. So, I'm posting the code, which helped us migrate our projects. Hopefully someone else can benefit from it too and I can save some of your time up.
 
Well, there is no rocket science here, but the code, I believe, is easy to reuse. Several SQL queries get all the issue information (subject, history, comments, attachments and links) from your Gemini database. Then we create the work items for the respective type, title, description, area, priority (if applicable), state, assignee, attachments and links. We've put custom mapping everywhere so that one can add his/her own lists of Gemini issue types, categories, assignees, states, etc. since Gemini allows easy customization of each project. The issue comments are added into work item's history in the appropriate format.

Some details coming to my mind:

  1. The current query skips the closed Gemini issues
  2. The code disallows work item duplication. Say you start the tool, but it fails somewhere throwing an exception. When you address the issue, restart the tool and it will skip the project work items that have already been created (comparing the item title).
  3. The regular expressions helped us a lot in description formatting (although I should say it's still not perfect), but they may not be necessary at all. Our Gemini distribution includes RadEditor, which adds issue description as HTML. Thus we use the expressions to format descriptions via adding new lines, converting HTML tags, etc.
  4. Attachments are loaded from the database and saved in the file system. TFS WorkItem Attachment requires a path to the file to be added.
  5. Links (RelatedLink types) are added if the linked item has already been  created in TFS. Otherwise, we add a note in the item description, which could help when the item is reviewed.
  6. Some other details are mentioned at the top of each description -- the issue ID in Gemini for reference and the name of the reporter Hm, perhaps one would like to see the submission date as well?

So how would one use that?

  1. This is a simple Visual Studio 2005 project so extract the zip and load it
  2. Add your Gemini SQL database and modify the SQL connection string
  3. Adapt it to your Gemini projects:
  •   configure the Gemini and TFS project name, area
  •   add your mappings of:
    •       item types
    •       project areas
    •       list of assignees
    •       issue / item states
    •       priorities
    •       "activated by" field if necessary

      
I've added comments here and there. Hope those help!

The code is available here.

I would like to thank Mr. Hrissimir Neikov (Telerik Reporting team) who got the idea, wrote the base part and helped improving the tool. As to me, well, this was just a great learning experience!

Yours truly,
Konstantin


Related Posts

Comments

Comments are disabled in preview mode.