This question is about Dynamics CRM but is valid for every system that allows merging entities.

Having data related to a contact in multiple external systems, how would you know which contact the data is related to?

  • Using ContactId works until that contact is merged - then the associated data could point to a non-existing contact (we have 100.000 duplicates)
  • Using EMailAddress1 works until it's changed

None of the solutions above seem good. Contacts are not assigned unique usernames.

I'm currently planning on using EMailAddress1 as the key gluing data for a contact between systems together, updating it in all systems when it's changed, but am curious if someone have had the same problem and solved it in a better way.

有帮助吗?

解决方案

When you have entities in system A and some related data in a second, decoupled system B, and you need to update the data in system B depending on changes to entities in system A, system A needs to provide certain mechanics for this, otherwise you are stuck. System A needs either

  1. an event mechanic where system B is actively informed about certain changes in A, or

  2. a history mechanism where B can query changes happened in A afterwards

(or both, of course). 1 will allow to implement a synchronous update, 2 will allow the implementation of an asynchronous update (for example, in certain time intervals like once a day). Both kind of approaches should utilize non-business keys for identifying and distingushing between entities (and since an email address is clearly a business information which can change during the lifetime of a contact, it is seldom suitable for this purpose). So another requirement on system A is to provide non-business keys which are never ever changed any more after an entity is created.

I do not know much about "Dynamics CRM", but I would be astonished if it does not provide the historic information about the lifetime of each contact, so when contact "Foo" with ContactId 123 was created by merging contacts "Bar1" and "Bar2" with ContactIds 42 and 43, an external system holding data associated with "Bar1" and "Bar2" can scan over all newly created contacts withing the last 24 hours, detect that "Foo" was created by a merge of "Bar1" and "Bar2" and update the associated data accordingly.

许可以下: CC-BY-SA归因
scroll top