I have a large number of contacts across different contact sub-types, imported via CiviMigrate.

The particulars:

I am pulling multiple contact types from the same, flat master table. This means that for example:

Pass 1 : Grabs all students Pass 2: Grabs all teachers Pass 3: Grabs all volunteers

There are naturally some students which became teachers, and were volunteers at some point, so there can be any combination of contact sub-types.

In the "worst" case, I'd end up with 3 contacts, one of each sub-type, that would need to be flattened into a single contact.

I have been matching on first and last name with some success, but there are multiple cases in which this causes the need for manual merge work (people with the same name).

Is there any way to temporarily allow dupe external ID's for the purpose of a later merge?

Now, this all stems from the fact that I can't find any documentation on how to pass multiple contact sub-types at once via CiviMigrate, perhaps there's an angle there?

Thanks! -d

2 Answers 2


I do not think there is a (good) way to use duplictae external IDs in CiviCRM - if you want to use the external ID field to do so. You could however create a custom field, import your external ID in that one and then adapt your matching rules to find duplicates (/civicrm/contact/deduperules?reset=1).

  • When I look at the dropdown for dedupe field selection, I do not see any custom fields. I was thinking of using the existing OpenID field or some other random existing field as a merge-id, but I wanted to know if there was a better way, so I posted the question. Do you see custom fields in the dropdown?
    – Derek
    Oct 12, 2017 at 18:00
  • I can select custom fields when editing / adding a matching rule (tested in CiviCRM 4.7.23)
    – Fabian
    Oct 13, 2017 at 5:30

If you really do want to do it via the External ID, then subtly adjust your ID on each import eg 567-s for the student import, 567-t for teacher import, 567-v for volunteer import

  • 1
    Hmmmm. So you're saying: salt the external id on import purposely and then use the dedupe rule to match on external identifiers for the first X digits of the field...there might be something here, depending I suppose on the range of external ID's I'm working with.
    – Derek
    Oct 12, 2017 at 21:28
  • well 'appending' or 'suffixing' i think but i am not super familiar with salt outside of passwords
    – petednz - fuzion
    Oct 13, 2017 at 0:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.