•  
      epic #9563 Move artifacts from one tracker to another (base)
    Summary
    Move artifacts from one tracker to another (base)
    Empty

    Executive summary

    Sometimes bugs, todo, etc are posted in the wrong tracker and we want to move them around in another tracker (possibly in another project).

    Challenge for Tuleap: as trackers can be really different: how do we manage to move things around.

    Feature is intended to move an artifact from one tracker to another while keeping the original artifact id and a minimal amount of information to make it useful.

    Non goals: support move in any kind of situation where trackers differs completly or scary things like moving a user story with parent epic and bunch of tasks to a sprint tracker.

    Proposal

    User that attempt to move must be admin of both source and destination trackers. Permissions might be relaxed later on.

    First step would support the ability to move across trackers (within or cross project) while keeping:

    • Artifact id
    • Submitted date
    • Submitter user
    • Then, based on Semantics (assuming that Semantics are defined in source and destination trackers)
      • Title
      • Description
      • Status
        • With duck typing (ie. is strings are matching) otherwise => None
      • Assigned to
        • Move "as much as possible", if a user is not part of the target group, he is silently ignored.
      • Initial effort (as long as source and destination target fields have the same type)
        • Both int: take value
        • Both fload: take value
        • Both selectbox: duck typing (as status)
        • Both computed field: take value
    • Follow-up comments (with actual comments, not fields changes)
      • With contents, user and dates

    General note: if for whatever reason the move is not possible, there should be a very clear error message given to user.

    All other informations from source artifact will be lost forever.

    Edge cases

    Constraints on destination, like destination fields that are required but no value on source (also applies for workflow, field dependencies, etc):

    • The value is imported "as is".
    • Once imported, when someone will try to update the artifact they will have to pick-up a value for required fields that are empty
    • It's the same behaviour than when tracker admin set a new constraint on field with existing data in the tracker

    Management of links is source of issues. Only cross references are kept (art #id):

    • artifact with links (either forward or reverse) cannot be moved.
    • artifact connected to FRS releases cannot be moved.

    Informations related to artifact are lost

    • Notification preferences
    • ...

    Global ranking (artifacts relative priority) is conserved.

    As move is a destructive operation, the limits set on Delete operations (see story #11196) are applied on move. The threshold will count move and delete as same operation.

    Need

    • Propose a UI to
      • Chose move action
      • Select the target tracker
      • Intermediate screen for move (esp. to show what matches and what will be lost)

    Technical & functional details

    We intend to leverage on XML export/import, the global process for move should be:

    1. XML export of artifact (with current computed value for computed fields)
    2. Delete in DB (need to check current impl to ensure everything is purged, including visited items, computation caches, etc)
    3. Transform XML to match target tracker structure + limitation set above
    4. Import XML with existing ID

    Those 4 steps enclosed in a transaction to ensure consistency.

    Note: the XML export artifact can be saved somewhere (maybe handled by archivedeleteditems plugin) for an possible re-import.

    Progress
    Empty
    Empty
    Closed
    Details
    #9563
    Manuel Vacelet (vaceletm)
    2022-05-04 15:21
    2016-10-10 17:07
    Attachments
    References

    Follow-ups

    User avatar
    • Summary
      -Move artifacts from one tracker to another 
      +Move artifacts from one tracker to another (base) 
    • Status changed from Planned to Closed
    • Category set to
    User avatar
    Matevz Langus (matevy)2021-02-08 15:15
    Hi,

    we are also interested. How many bags of 💰 are you looking for? Maybe we, all interested users can put the bags together?
    User avatar
    Rick (rick4ls)2020-08-17 15:51

    Ah, thanks for the explanation. When I find a 💰  I will contact you :)


    • Permissions set to all_users
    User avatar

    Mainly lack of 💰, only the first part was fund.

    It's either a problem of find 💰 to finish it or to have someone willing to contribute.

    User avatar
    Rick (rick4ls)2020-08-17 15:42
    I can see that this functionality has not yet been completed, what was the reason for this? I would really like such an addition.
    User avatar
    Is any information written in the Follow-up in the destination artifact relating to the move?
    User avatar

    XML import doesn't allow to import a user that is not part of a selected group. Worst, in case of a multiselect box, 1 missing user makes the whole selection invalid. Hence here, we do a pre-check of user validity and only import the one that matches the selection.


    • Description
      Something went wrong, the follow up content couldn't be loaded
      Only formatting have been changed, you should switch to markup to see the changes
    User avatar
    • Description
      Something went wrong, the follow up content couldn't be loaded
      Only formatting have been changed, you should switch to markup to see the changes
    User avatar
    • Description
      Something went wrong, the follow up content couldn't be loaded
      Only formatting have been changed, you should switch to markup to see the changes
    User avatar
    • Description
      Something went wrong, the follow up content couldn't be loaded
      Only formatting have been changed, you should switch to markup to see the changes
    User avatar
    Joris MASSON (jmasson)2018-03-29 09:41
    • Description
      Something went wrong, the follow up content couldn't be loaded
      Only formatting have been changed, you should switch to markup to see the changes
    User avatar
    • Description
      Something went wrong, the follow up content couldn't be loaded
      Only formatting have been changed, you should switch to markup to see the changes
    User avatar
    When an artifact cannot be moved since it has links to FRS or other type of links, an error message must be displayed stating why the artifact cannot be moved.
    User avatar

    Update to match intend express by @stephanbill and @pcar 

     

     


    • Description
      Something went wrong, the follow up content couldn't be loaded
      Only formatting have been changed, you should switch to markup to see the changes
    User avatar

    FYI, I started to mockup a draft. The idea is the same for copy and move.

    1. First we ask where the user wants to put the artifact by selecting a project and a tracker (via a modal).
    2. Next :
      • if he's chosen copy : he's redirected to the actual copy screen where he can change all the values
      • if he's chosen move : he's redirected to the moved artifact