-
Answer
Yes — moving issues between projects already exists, but only from the issue list (batch operations), not from the issue detail side panel.
How to move today
- Open the project's Issues list
- Select one or more issues (or use a query)
- Open the batch/actions menu
- Choose Move Selected Issues To... or Move All Queried Issues To...
- Pick the destination project and confirm by typing
yes
This requires issue management permission on the source project. Destination projects must have issue management enabled and be accessible to you.
Comments, discussion history, attachments, links between issues (by internal id), votes, watches, etc. stay on the same issue record — the move updates the issue's project and assigns a new number in the destination project. A project-change activity is recorded on the issue.
Docs also mention this flow in the service desk tutorial (tickets opened in a default project can be moved later).
Detail-page UX you described
There is no "Move issue" control next to the copy-reference button in the side info panel today (
EntityReferencePanelonly shows the reference + copy icon).Feasibility of that UX: high / relatively small. Backend support already exists (
IssueService.move(...)), and the list UI already usesProjectSelector+ confirm modal. Adding an icon with tooltip "Move issue" beside the copy button that opens the same project selector would mainly be UI wiring on the issue side panel — not a new data model.Important caveat on references
Your requirement that references from other issues, PRs, and commit messages keep working after the move is not fully met by the current move behavior:
What is preserved today What is not Issue entity id, comments, attachments, issue↔issue links by id Old project#number/KEY-numberreferences elsewhere#numbermentions inside the moved issues' own description/comments (rewritten for the batch being moved)Commit messages (immutable) mentioning the old reference Opening the old URL / old reference in source project (no redirect stub is left behind) On move, the issue gets a new number in the destination project. External text that still says
oldProject#123orOLDKEY-123will not resolve to the moved issue.
Clarifying questions
1. Is the existing list-based move enough for your use case, or do you still want the detail-page control?
A. List-based move is enough — no product change needed
B. Still want the side-panel "Move issue" icon + project selector as described
C. Want both documented clearly, and the side-panel control as a convenienceOption Pros Cons A No work; capability already ships Worse discoverability from the issue page B Matches the UX you sketched; small incremental UI work on top of existing backend Duplicates list capability; still inherits current reference limitations unless we also address Q2 C Best of both; docs reduce "is this possible?" questions Slightly more scope (docs + UI) Recommendation: C if this comes up often; otherwise B if you mainly care about the detail-page shortcut.
2. How strict is the "preserve all external references" requirement?
A. Current behavior is acceptable (discussion preserved; old textual refs may break)
B. Must keep old references working via a redirect/stub at the old project+number (and ideally old URL) pointing to the new location
C. Must rewrite references across other issues/PR descriptions/comments (commits still can't be rewritten)
D. Prefer keeping the same number when possible (e.g. if unused in destination) plus redirects for any number changeOption Pros Cons A Already implemented; simplest Breaks old project#n/KEY-nlinks and commit refsB Commit messages and old links keep resolving; standard approach (similar to GitHub transfer) More design/implementation (stub entity or redirect table, URL handling, permissions on stub) C Markdown in OneDev stays accurate Misses commits; scanning/updating all text is complex and can be surprising; partial by nature D Fewer broken same-number links when destination allows it Numbers often collide across projects; still need redirects when renumbering Recommendation: B (redirect/stub) if reference integrity is "very important" as stated — that is the only approach that can cover commit messages. A if the main pain is misfiled issues with little external linking yet.
3. If we add the side-panel control, who should be allowed to use it?
A. Same as today: users with issue management on the source project
B. Also require issue management (or create-issue) on the destination project
C. Broader: any user who can edit the issueOption Pros Cons A Consistent with current batch move Destination may lack manage rights expectations B Safer cross-project moves Slightly stricter than today's list UI C More convenient for assignees Easy to move issues out of a project without admin oversight Recommendation: B for a detail-page control (clear intent + safer), or keep A for parity with the existing list action.
4. After you answer above, what should we do next?
A. Close this question — existing list move is sufficient
B. Open/convert to an Improvement for the side-panel UX only (current move semantics)
C. Open/convert to an Improvement for side-panel UX and stronger reference preservation (per Q2)
D. Something else (please describe)Please reply with your choices (e.g.
1B, 2B, 3B, 4C). Once you confirm, we can either close this question or escalate for implementation planning. -
- This is not correct. There is an operations menu but there is no batch actions menu. In any case This is counterintuitive to move from the Issues list because when you move from the actual issue itself into the Issues list, you lose the context of exactly which issue you are talking about. This leaves us vulnerable to user errors where they end up moving the wrong issue.
- B is the minimum requirement. I would you like to ALSO implement option C, which would make this product a world-class product, however I prefer to leave the architectural approval for option C to @robin
- b
- D. We are awaiting the decision from Robin. Following the decision, if there are no outstanding unanswered questions, please create a fresh issue with the detailed set of requirements and architectural decisions made, as well as motivations and so on, and then close this issue.
-
Thanks for the correction — you're right. On the Issues list the move actions live under the Operations menu (
Move Selected Issues To.../Move All Queried Issues To...), not a separate "batch actions" menu. Sorry for the inaccurate wording.Agreed on the UX concern: leaving the issue detail to find and re-select the issue in the list loses context and makes it easy to move the wrong issue. A detail-page "Move issue" control next to the copy-reference icon remains the right product direction.
Recorded choices so far
# Choice Notes 1 Detail-page control Operations-menu list move is insufficient / error-prone for this use case 2 B minimum; C also desired Redirect/stub for old project+number (and old URL) is required. Cross-entity reference rewrite (issues/PR text) preferred for product quality, but architectural approval for C is left to @robin 3 B Require issue management on source and appropriate rights on destination 4 D Awaiting @robin's decision; then create a fresh implementation issue with full requirements/architecture/motivations and close this question @robin — please decide on reference preservation architecture:
- Redirect/stub (required minimum): After move, should old
project#number/KEY-numberand old issue URLs resolve via a stub/redirect to the new location? Any constraints on stub lifetime, permissions, or whether the old number stays reserved in the source project? - Rewrite references (optional / world-class): Should we also rewrite textual references in other issues' and PRs' descriptions/comments (knowing commits remain immutable)? Approve, defer, or reject for a first version?
- Anything else that should be locked before we open the implementation issue?
No code changes from this question until that decision; we'll open the requirements issue afterward as requested.
- Redirect/stub (required minimum): After move, should old
-
My apologies there is a move operation action.
-
No worries — thanks for confirming. The Operations menu move is the existing path; your earlier points still stand (detail-page control preferred for context/safety, redirect/stub as minimum, rewrite left to @robin, destination rights as discussed). Still awaiting @robin's decision before opening the implementation issue.
-
| Type |
Question
|
| Priority |
Normal
|
| Assignee | |
| Labels |
No labels
|
Is there currently a way to move the currently displayed issue to another project?
How feasible is it to build this capability?
The UX element should be in the side info panel next to the copy button to copy the reference to this issue. Try not to use up any additional vertical space. Just have an icon with a tooltip that says "Move issue". And when the user clicks on it then have the standard drop-down list for the project selector.
The motivation behind this is that an issue may be created and there may be some discussion on that issue. It's realized too late that the issue should belong in a different project. We want to preserve the discussion and all of the comments and so on.
It's also very important that all references to this issue from other issues, pull requests, and commit messages are preserved so that they link to the destination project when the issue is moved.
Don't assume. Ask clarifying questions if needed.