•  
      epic #9563 Move artifacts from one tracker to another
    Summary
    Move artifacts from one tracker to another
    Open

    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.

    Patricia Carrasco (pcar), Yannis ROSSETTO (rossettoy), Marie Ange Garnier (marieange), Stephan Bill (stephanbill)
    Details
    #9563
    Manuel Vacelet (vaceletm)
    2018-07-18 09:33
    2016-10-10 17:07
    Attachments
    References

    Follow-ups

    • User avatar

      It's not done today.

    • 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
    • User avatar
    • User avatar
    • User avatar
    • User avatar
    • User avatar
    • User avatar
    • User avatar
      • Description
    • User avatar
      • Description
    • User avatar
      • Description
    • User avatar
      • Description
    • User avatar
      • Description
    • 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
      • CC list Stephan Bill (stephanbill), Patricia Carrasco (pcar) added
    • User avatar
      @ximran Hi,
      Work on this subject has not really moved forward since last year.
    • User avatar
      @bdauton @vaceletm I just setup Tuleap and was wondering if there is any progress in moving the artifacts between trackers or projects.
    • 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

    • User avatar
    • User avatar
    • User avatar