Skip to content

Use getMergedTo in civiimport when the contact has been deleted from trash#36322

Open
larssandergreen wants to merge 1 commit into
civicrm:masterfrom
larssandergreen:mergedto_civiiimport
Open

Use getMergedTo in civiimport when the contact has been deleted from trash#36322
larssandergreen wants to merge 1 commit into
civicrm:masterfrom
larssandergreen:mergedto_civiiimport

Conversation

@larssandergreen

Copy link
Copy Markdown
Contributor

Before

If you import with civiimport to a contact id that was merged away and then deleted from trash, you'll get an import error.

After

Import will be to the merged to contact for the deleted contact, assuming the merge happened after #36290.

Technical Details

No change to importing contacts.

In order to make this work, I re-ordered operations so that we check for a merged to contact before validating the contact type, which makes more sense since we care about the contact type of the contact we are actually importing to not the original contact id (though it would be rare that they differed).
This re-ordering also fixes the rare case where you were importing with both contact id and external id and your external id had been moved to a new contact by merging (previously you got an error, now it imports to the new contact as expected).

I maintained the two different exceptions for slightly different cases: 1) you're trying to import to a contact id that's in the trash and wasn't merged to another contact and 2) you're trying to import to a contact id that doesn't exist at all and wasn't merged to another contact. Not sure if we need two, but this maintains existing behaviour.

@civibot

civibot Bot commented Jul 24, 2026

Copy link
Copy Markdown

🤖 Thank you for contributing to CiviCRM! ❤️ We will need to test and review this PR. 👷

Introduction for new contributors...
  • If this is your first PR, an admin will greenlight automated testing with the command ok to test or add to whitelist.
  • A series of tests will automatically run. You can see the results at the bottom of this page (if there are any problems, it will include a link to see what went wrong).
  • A demo site will be built where anyone can try out a version of CiviCRM that includes your changes.
  • If this process needs to be repeated, an admin will issue the command test this please to rerun tests and build a new demo site.
  • Before this PR can be merged, it needs to be reviewed. Please keep in mind that reviewers are volunteers, and their response time can vary from a few hours to a few weeks depending on their availability and their knowledge of this particular part of CiviCRM.
  • A great way to speed up this process is to "trade reviews" with someone - find an open PR that you feel able to review, and leave a comment like "I'm reviewing this now, could you please review mine?" (include a link to yours). You don't have to wait for a response to get started (and you don't have to stop at one!) the more you review, the faster this process goes for everyone 😄
  • To ensure that you are credited properly in the final release notes, please add yourself to contributor-key.yml
  • For more information about contributing, see CONTRIBUTING.md.
PR commands & links...
  • /rebase <branch-name> will rebase your branch and change the base of the PR.
  • /squash will combine all commits (keeping only the first commit messsage).
  • /port <branch-name> will create a copy of this PR against a different branch.
  • /lintroll will automatically fix linting errors, amending commits as needed.
  • retest this please will rerun the tests and rebuild the demo site.
  • 📖 Review standards
  • 🗒️ Review template (brief or verbose)

➡️ Online demo of this PR 🔗

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant