Use record.copy functionality to create new Messages , tasks and calls from existing sub-records attached to the source Entity.
Attach the newly created messages tasks or calls to the new or the destined entity record.
Delete the source messages, tasks and call sub records.