ContactManager link IDs and comparison to other IDs

ContactManager entities that implement the ABLinkable delegate, such as ABContactTag, ABContactAddress, and ABContact and its subentities, have a LinkID property. This property uniquely identifies an ABLinkable entity instance for integration use, such as with Guidewire core applications. It is similar to the PublicID property in Guidewire core applications, which those applications can use as a primary key value for entities in external systems. However, because ContactManager is the system of record for contacts across the core applications, ContactManager must ensure that a contact or address be uniquely identifiable across all Guidewire applications. Therefore, unlike a PublicID, a LinkID cannot be changed.

If the core application does not specify an External_UniqueID when it calls ContactManager to create a new contact, ContactManager creates the LinkID for a new entity. If the core application does specify the unique ID when it sends a create request, ContactManager populates the LinkID with the External_UniqueID specified in the XmlBackedInstance data.

ContactManager passes the LinkID back to the core applications. A core application can use the return value either to identify the local version of the contact already created or to populate the equivalent AddressBookUID property.

Note: The unique ID passed to ContactManager for any ABLinkable entity in the ABContact graph might already exist on an entity of that type. If ContactManager detects that one of these entities, including retired entities, already use this ID, ContactManager throws a DuplicateKeyException for the call to createContact. In this case, the contact is not created in ContactManager. It is up to the calling application to recover from this state, either by providing a new unique ID or allowing ContactManager to create a unique ID.

The AddressBookUID property is the core application version of the ContactManager LinkID property. AddressBookUID properties and LinkID properties are mapped between core applications and ContactManager in the ContactMapper classes.

The following table compares the various types of IDs related to contacts:

Type of ID

Description

LinkID

The name for the internal ID that ContactManager uses for each ABContact entity and subentity

PublicID

The standard Guidewire public record ID that can be changed as needed.

AddressBookUID

In Guidewire core applications, this property of the Contact entity is the internal ID for a contact entity that is stored in ContactManager. If you are using a Guidewire core application and ContactManager together, an address book UID and a link ID have the same value. If you integrate with a different external contact management system, the address book UID has the same value as the internal ID of an object in that external application.

See also