Hello Andreu,
There are multiple parts involved in a solution. You´d need to decide how the input for choosing the source part would work (you could work with additional attributes or, since R3.9 with variables as inputs). In the app REI3 Tasks, you can take a look at the task
form. In there is the option to move a sub task to another parent - here an attribute is used to select the new parent and then the actual logic is happening when you save the change via a trigger function.
Then you´d need to write the actual copy logic, this is a backend function that executes SQL (SELECT from source, INSERT INTO target). In REI3 Organizations, you can take a look at the function set_team_contacts_by_department
, here you see an example of how data is read and new records are created.
We (Lean Softworks) also offer crash courses, if you want to quickly get stuff like that done.