Phabricator/Trello to Phabricator


 * T36 - Migrate Trello data to Phabricator
 * T821 - Trello migration script

Notes on conversion
General discussion in https://secure.phabricator.com/T3179

Export board from Trello

 * You can do it manually from Trello board menu Menu > Share, Print, and Export > Export to JSON
 * 500-line export-trello.py script at P1407. "This script uses a trello enterprise export", but WMF has an enterprise account, just go to https://trello.com/wikimediafoundation/export

Both produce JSON. Both have problems :(

The export from Trello board menu does not include all comments! For example https://trello.com/c/oJHPeRvq/9-split-topic-old-design-ideas the JSON export only has "final-comment", does not have "Issue: where does sidebar go?"!! and does not include the split_topic_normal.svg attachment on the card, perhaps because it's SVG!

Enterprise export -> cburroughs' export-trell
It seems the format of enterprise export change since cburroughs wrote a script? Some cards in Flow_backlog enterprise export don't have a "labels" field, and even in those that have "labels" it's an empty array. Instead, cards have "idLabels" field that references elements in the "labels" array. (Similar to "checklists"? Board export doesn't have this, just "idChecklists" in each card linking to per board "checklists" array. Enterprise export has both?)

cburroughs export_trello.py generates "init-custom": { "std:maniphest:addthis:import-trello-column": "In Development" }, doesn't mean anything to our installation.

FIXED: The enterprise export does not identify the current column of a card It records the changes to cards including updateCard that changes the list of a card, but not where it is currently.

cburroughs export-trello does not do anything with attachments, the comment is    # [u'attachments',  Never used on board doesn't handle type=addAttachmentToCard

Doesn't properly handle checklists, comment is   #  u'idChecklists']   # a bunch of ids for checklists?

Import to Phabricator

 * choice A) Use PHP
 * The same cburroughs did:
 * P1403 to import-attachments.php
 * P1404 import-users.php (not relevant, we just need a mapping, but won't hurt if users have same e-mail in Phabricator as they did in Trello?)
 * P1405 to import-tickets.php (nothing specifically for Trello...)


 * Choice B) HTTP requests
 * basic createtask form at https://phab-01.wmflabs.org/conduit/method/maniphest.createtask/
 * is it a problem the creator will be the person doing the import?
 * have to find other APIs to add comments, attachments


 * Choice C) bugzilla code
 * https://github.com/wikimedia/phabricator-tools/blob/master/README, https://github.com/wikimedia/phabricator-tools/blob/master/bugzilla_create.py
 * Python API requests plus DB manipulation


 * Choice D) Gilles' mingleterminator import script
 * https://gerrit.wikimedia.org/r/#/c/179091/
 * Python API requests

What projects?
Assign to Flow and to Core-features team?

Export
Trello Export JSON as above, File > Save as myboard.json

It's a single line of JSON, so it helps a lot to format it.

The export JSON is probably too big to copy and paste into http://jsonlint.com, so instead use

still converts stuff to Unicode escapes, e.g. "name": "Flow — backlog" to  "name": "Flow \u2014 backlog"

Tip: Use  to explore the JSON.

Conduit (choice B)
The /conduit/method/maniphest.createtask conduit creates a task.

All fields are JSON, thus strings in double quotes and if field is plural, inside  array.
 * copy-paste title of card into Title field inside
 * edit description, copy-paste markup, paste into Description field inside
 * projectPHIds is , more if you want in multiple projects (see ).
 * Priority is 50 for Normal (from create task)
 * not sure about ownerPHID, editPolicy, etc.

No idea how to assign column in workboard in this.

For some automation, SPage (WMF) (talk) made an export script trello_create.py in the  branch of phabricator/tools that provides the title and description ready to copy-paste into this Conduit form. It appends a link to the Trello card to the description, see sample.


 * For more automation, script could print out curl command lines to create cards
 * or directly login to phabricator and issue conduit HTTP requests within the script

Steps

 * 1) In Trello export board as JSON
 * 2) For sanity, make it nicer-formatted. /path/to/flow-current-iteration_lOh4XCy7_fm.json
 * 3) Run python trello_create.py --json=/path/to/flow-current-iteration_lOh4XCy7_fm.json  > /path/to/conduit_fields.txt

Getting projectPHIDs
Instructions to get PHIDs for Conduit

projectPHIDs for Core-Features on is

On phab-01.wmflabs.org, "Flow (test)" is

User PHIDs?
Didn't do this, but could:

Could copy and paste Core-Features members into  to get "phid"    : "PHID-USER-37czexl6ekrvcmp2tyqq", "userName" : "DannyH"

create a mapping of Trello

Tricky bits

 * Checkboxes. I don't see special support for them in cburroughs import-tickets.php
 * Attachments.

Markup
Trello's markdown is different from Phabricator's markup
 * Italics in Trello are, in Phabricator
 * A link in Trello is, in Phabricator it is

Handling the Flow backlog board
We definitely want to migrate Next sprint/story column. Some go straight into Sprint M column, others go into backlog.

Danny created a Send to Phabricator - Collaboration-Team board.
 * 1) Migrate these, add mediawiki-extensions-Flow project as well
 * 2) Priority Low

On 2014-12-03 we archived several columns in Trello Flow backlog board. Note that if you visit a card in one of these columns, there's no indication that the card is archived (a bug in Trello).
 * Bugs to prioritize -- these were all just copy and paste from BZ, which are now cards
 * QA -- Sellello generated these
 * Mobile - TODO list from Jon Robson
 * Testing - another TODO list from Jon Robson


 * Bugs that should be turned into stories - these are in Trello, only 2
 * Needs Design/UX - mostly outdated, but some seem worthwhile
 * Story grooming meeting - Danny has to review
 * Needs acceptance criteria/story grooming - same, Danny has to review

Ideally the conversion script could evaluate Trello cards for significant comments, checklists, or attachments.