Page MenuHomePhabricator

When tagging tasks from one board to another, automatically restore tasks to the same columns
Open, LowPublicFeature

Description

As someone frequently grooming task boards on behalf of teams, I want to automate sorting tasks into matching columns, so that I don't disrupt team workflows or send unwanted notifications.

Teams frequently use Milestones as quarterly Kanban boards/boundaries for work. For instance: https://phabricator.wikimedia.org/project/view/4458/ and https://phabricator.wikimedia.org/project/manage/4717/. When the quarter turns over, some tasks remain, and need to be carried over from one quarterly board to another (assuming the work continues). Typically, the boards have exactly the same columns (when a new Milestone is created, the columns are imported to the new board from the previous in the series). Occasionally, this is not true (a team might iterate a change in process between quarters), but that is atypical.

Right now, this process means batch-editing the tasks (ideally silently), importing columns from the old board to the new board, and then manually "restoring" the tasks to the new-but-the-same columns on the new board. This results in

  • a delay of work,
  • as well as notifications for anyone who has those activated for when tasks change columns.
  • It is also is awkward to do, especially with Milestones. Normally, Phabricator boards can be cross-tagged, so even if a new board is made and meant to be identical in columns and task-locations a user can simply tag the tasks to the new board and use the first board as a reference. With Milestones, the tasks are exclusive between Milestones (because Milestones are also columns), so after a batch-edit (in this case, really a "batch-move") the original layout is destroyed.
    • The only way to have the original reference for tasks-in-columns is to have an untouched tab open separately (since it won't live update, only when the page is refreshed), or take screenshots.

Ideally, there would be a mechanism that would look for identically-named columns between boards (esp Milestones on the same board), and if the column names match (which they would in an "import" scenario) the tasks are automatically distributed to the respective column. In the example links above, the columns are things like "Upcoming" or "Doing" or "Needs QA" etc. This should also respect any silencing command that the batch edit required (e.g. "make-silent --id"), so that silent edits aren't only silent for the changes but also for when the tasks move between columns.

Event Timeline

FYI, I did search for an existing ticket on this topic via https://phabricator.wikimedia.org/search/query/p.FiDV0MH7Yv/#R and did not find anything like it. :)

Right now, this process means batch-editing the tasks (ideally silently), importing columns from the old board to the new board, and then manually "restoring" the tasks to the new-but-the-same columns on the new board.

For the time being, you could move separately per column. In the Column header dropdown, use "Move Tasks to Project...", then set project, then set column.

Interesting. Is this feature reliable? For instance, this recent conversation about the Move Tasks to Column feature: T245308: change "default" column on Parsoid workboard

Also, is there a way to do this silently?

Interesting. Is this feature reliable? For instance, this recent conversation about the Move Tasks to Column feature: T245308: change "default" column on Parsoid workboard

I never understood or investigated how T245308 got actually solved. :-/ However, that's about the "default" column and not about column names?

Also, is there a way to do this silently?

Ah, I guess that will be the blocker here. Not that I know.

Interesting. Is this feature reliable? For instance, this recent conversation about the Move Tasks to Column feature: T245308: change "default" column on Parsoid workboard

I never understood or investigated how T245308 got actually solved. :-/ However, that's about the "default" column and not about column names?

Sorry, I realize I dumped the ticket without context. Specifically, I wanted to point out the comment T245308#5887691, which shows that Move Tasks to Column doesn't always result in expected behavior, and my own followup comment T245308#5890494 to avoid it until we know it works. I wondered if Move Tasks to Project suffered a similar issue, simply because it's accessed similarly.

As for that ticket's "resolution" I think it's probably better categorized as "Declined" since the original request is not feasible. Lani's use-case was figured out, which is why it was set to "Resolved", instead, but if we want to be specific that's probably a miscategorization of a closed ticket.

Also, is there a way to do this silently?

Ah, I guess that will be the blocker here. Not that I know.

Assuming the feature works, that would be a reason to get @Phabricator_maintenance up and running again, as then anything in the GUI would be silent.

I wanted to point out the comment T245308#5887691, which shows that Move Tasks to Column doesn't always result in expected behavior,

Ah! Reminds me of T76152: 503 when batch-editing tasks in Phab. Which might still be an existing issue, now that you pointed out that comment. :-/

and my own followup comment T245308#5890494 to avoid it until we know it works. I wondered if Move Tasks to Project suffered a similar issue, simply because it's accessed similarly.

I don't know but guess it's still an issue, yeah. Meh.

Aklapper changed the subtype of this task from "Task" to "Feature Request".Feb 13 2021, 11:41 AM

I guess implementing this would require changes in src/applications/maniphest/storage/ManiphestTransaction.php when case ManiphestTaskEdgeTransaction::TRANSACTIONTYPE is true, to check each value in array_keys(nonempty($old, array())) and array_keys(nonempty($new, array())) whether both edge arrays contain projects, if true which of those projects are milestones, and if both arrays contain at least one milestone, check that matrix if two projects (one from each array) share the same parent project, and if true check if their workboards have non-hidden (?) columns which have the same name.
I'm not sure how feasible that is, performance-wise.

Pppery renamed this task from Phab feature request: When tagging tasks from one board to another, automatically restore tasks to the same columns to When tagging tasks from one board to another, automatically restore tasks to the same columns.Nov 3 2023, 2:59 AM