Streamlining Ticket Migration: A Journey from Assembla to GitHub


In the tech world, adaptability is key. As our startup, Roster Portal, evolved over the years, so did our needs. We started our journey with back in 2011, leveraging its robust source control and ticketing system. For reference on just how old that is, we were using Subversion – not Git back then! However, as time passed, we found ourselves questioning the value proposition of our Assembla subscription, especially as newer, more cost-effective solutions emerged.

After careful consideration, we decided to migrate our ticketing system to, a platform we were already familiar with and one that offered a more economical solution. But migrating years’ worth of data wasn’t a task to be taken lightly. It wasn’t just about moving tickets; it was about preserving our project history, ensuring seamless collaboration, and optimizing our workflow for the future.

The Challenge

The first hurdle was to devise a method to migrate our data efficiently. With over a decade’s worth of tickets, comments, and milestones stored in Assembla, a manual transfer was out of the question. That’s where automation came to the rescue.

Enter the Migration Script

To automate the migration process, I set out to quickly develop a tool that could seamlessly transfer our Assembla data to GitHub. However, this presented a dual opportunity. Not only did I aim to solve our immediate migration needs, but I also wanted to deepen my understanding of Object-Oriented Python, moving beyond mere scripting.

The result? A fast Python script capable of converting an Assembla export file into GitHub issues, complete with comments, milestones, and labels. Leveraging the GitHub CLI made the process remarkably straightforward, eliminating the need to handle lower-level HTTP operations or authentication.

Key Features

1. Data Processing

  • Reads data from an Assembla export file and converts it into Python objects.
  • The export file can be obtained from the Assembla ‘Space Settings – Tools – Tickets (Settings) – Export and Import’ section.

2. GitHub Integration

  • Creates milestones, labels, and tickets (issues) in a specified GitHub repository.
  • Ensures inclusion of comments for tickets in the GitHub issue, preserving valuable context.
  • Assigns tickets to the correct user based on the input data, maintaining accountability.

3. Seamless Transition

  • Handles the closing of tickets and milestones based on the input data, ensuring a smooth transition from Assembla to GitHub.

How to Use

The script is designed to be user-friendly, allowing for easy customization and execution. Detailed instructions, along with a sample Assembla export file and output, can be found in the repository:

The Verdict

In migrating our ticketing system from Assembla to GitHub, we not only saved significant costs but also streamlined our workflow and embraced modern development practices. The journey wasn’t without its challenges, but the result—a leaner, more efficient process—made it all worthwhile.

We exported over 1,000 tickets and 10,000 coments as well as milestones, tags and more. As we continue to evolve, both as a startup and as individual developers, embracing change and innovation remains at the core of our ethos.

Cheers to progress, efficiency, and the relentless pursuit of improvement!

About the Author


Mannan is a software engineering enthusiast and has been madly coding since 2002. When he isn't coding he loves to travel, so you will find both of these topics on this blog.

Leave a Reply

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