Skip to content

Draft: User mapping - Create relation contributors in Direct Transfer

What does this MR do and why?

This MR creates a new relation export file for user_contributions. In order to export user contributions as a single relation, we need to cache all referenced user_ids as they are exported during other relations. In order to do that, the UserContributionsExportWorker was created to wait until all other exports finish before querying for Users with the cached user_ids. That query is assigned to the exportable as user_contributions, then passed to the existing RelationExportService.

Because we can't accurately export user contributions until all other exports finish, we also can't create placeholder users on the import side with the right names and usernames. However, when it's time to import the user_contributions, we can simply update existing Import::SourceUsers and their placeholder users to have the right name, email and username if they've already been created. The import side would be handled in User mapping - Integration with Direct Transfer (#443557).

MR acceptance checklist

Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

How to set up and validate locally

Numbered steps to set up and validate the change are strongly suggested.

Run BulkImports::ExportService locally and inspect the export file

Related to #454522

Edited by Sam Word

Merge request reports