Anyone attempted to migrate from Pivotal to Taiga?

Hi everyone!

An org I work with has been using PivotalTracker.com for about 12 years for project management.

Recently Broadcom bought VMware (who owned Pivotal Tracker), and practically immediately announced they’d shut down Pivotal Tracker in April 2025. (Broadcom are shutting down lots of VMware products as part of this acquirement)

Taiga even gets a mention in HackerNews about it as people look for alternatives: Pivotal Tracker will shut down | Hacker News . So if the Taiga developers wanted to aid in rapid adoption of Taiga in the face of Pivotal shutting down, I bet there are a lot of people who would be interested!

I am able to export Pivotal projects to CSV, but I’m a little overwhelmed trying to work out how I might import that data into Taiga.

Thought I would ask first here in case someone else is going through the same migration to Taiga from Pivotal and maybe is smarter than me, and figured out how to do it! Presumably via the Taiga API…

1 Like

P.S I exported a Pivotal project, the format in CSV is like this:

Id,Title,Labels,Iteration,Iteration Start,Iteration End,Type,Estimate,Priority,Current State,Created at,Accepted at,Deadline,Requested By,Description,URL,Owned By,Owned By,Owned By,Owned By,
Owned By,Blocker,Blocker Status,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Commen
t,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comm
ent,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Co
mment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,
Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Commen
t,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Comment,Task,Task Status,Task,Task Status,Task,Task Status,Task,Task Status,Task,Task Status,Task,Task Status,Task,Task Stat
us,Task,Task Status,Task,Task Status,Task,Task Status,Task,Task Status,Task,Task Status,Task,Task Status,Task,Task Status,Task,Task Status,Task,Task Status,Task,Task Status,Task,Task Status,
Task,Task Status,Task,Task Status,Task,Task Status,Task,Task Status,Pull Request,Pull Request,Pull Request,Pull Request,Pull Request,Pull Request,Pull Request,Pull Request,Pull Request,Pull 
Request,Pull Request,Pull Request,Pull Request,Pull Request

It’s a bit weird all those Comment and Pull Request columns but I guess it varies per story depending on how many such attributes that story has.

I could probably write some python to iterate over however many Comment (or other repeated fields) there are and POST to the Taiga API as comments with that data, if someone could give me some guidance on, at the very least, creating Taiga Stories using an equivalent for these main fields from Pivotal:

Id
Title
Labels
Iteration
Iteration Start
Iteration End
Type
Estimate
Priority
Current State
Created at
Accepted at
Deadline
Requested By
Description
URL
Owned By
Blocker
Blocker Status

Whoa! I just saw this in the Taiga code:

So it’s already possible, perhaps. I am learning how to use the taiga-manage.sh script to call this importer. It seems to mostly be working (has imported hundreds of epics, stories, comments, history, tags - amazing!), though it blew up at least once like this:

Traceback (most recent call last):
  File "/taiga-back/manage.py", line 17, in <module>
    execute_from_command_line(sys.argv)
  File "/opt/venv/lib/python3.11/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/opt/venv/lib/python3.11/site-packages/django/core/management/__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/opt/venv/lib/python3.11/site-packages/django/core/management/base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/opt/venv/lib/python3.11/site-packages/django/core/management/base.py", line 398, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/taiga-back/taiga/importers/management/commands/import_from_pivotal.py", line 78, in handle
    importer.import_project(project_id, options)
  File "/taiga-back/taiga/importers/pivotal/importer.py", line 83, in import_project
    self._import_user_stories_data(project_data, project, options)
  File "/taiga-back/taiga/importers/pivotal/importer.py", line 400, in _import_user_stories_data
    self._import_comments(project_data, us, story, options)
  File "/taiga-back/taiga/importers/pivotal/importer.py", line 484, in _import_comments
    user=users_bindings.get(comment['person']['id'], User(full_name=comment['person']['name'])),
                            ~~~~~~~^^^^^^^^^^
KeyError: 'person'
1 Like

Thank you for sharing. I did a web search for “export PivotalTracker to” and ended up here. I only have one project, but will take a look at the script, thanks.
Were you able to make it work for your projects?

Hi there!

That code is quite old and has not been updated in a long time (indeed, it’s not enabled on https://tree.taiga.io)

As it is now, there is no automatic import from Pivotal.

You should be able to use our API to import your projects, in any case.

Hope this helps,

Best regards!

Hi @zantoka and @Charlie

Despite what Charlie says, the importer code does seem to be working ok for us. We have not made the formal switch from Pivotal to Taiga yet, but our initial attempts at importing projects seem to have gone well.

It’s not perfect - but it doesn’t seem to be lacking any important data either…

The only change I had to make was a single corner-case where the commenter id seemed to be ‘unknown’ in Pivotal and this caused a KeyError in Taiga’s importer code (and short-circuited the importing of that project, unless you allow some sort of ‘skip’ or workaround). I submitted a PR for it: Pivotal importer fixes by mig5 · Pull Request #176 · taigaio/taiga-back · GitHub

Hi!

That’s great to hear! We will review the PR, thanks a lot! We won’t be (probably) adding it to the interface, as we fill that would require a more in depth revision and maintenance of the importer, but it could be great help for people from the CLI.

Best regards!

1 Like