Understanding Object Identifiers: Anchor and DN

Objects are identified with up to two different identifiers, anchor and dn. An anchor is an immutable (cannot be changed) unique identifier and is mandatory for an object. Which attribute, or attributes, is used for the anchor is defined on the management agent. Which attribute is used for the dn is defined in the schema. The dn is the attribute which other objects will use to refer to this object and it is mutable (can be changed). The dn attribute is despite its name not necessarily in LDAP dn style. If the anchor is also the value used by other objects to reference it, then no DN is needed.

The existence and format of the dn attribute is defined by the MA Capability dnStyle. dnStyle can have the following values:

Value Description

None

The management agent does not have a separate dn attribute. The anchor is used for references between objects. Objects cannot be renamed.

Generic

The management agent has a dn. It can be of type string, integer or binary but it is not in LDAP style. Object renames are allowed.

LDAP

The management agent has a dn and it is of LDAP style. An LDAP style dn allows the interface GetHierarchy to be used and that Provisioning Hierarchy is enabled. Object renames are allowed.

Setting anchor and dn values

The anchor is set either in provisioning code or returned from the connected system during export. If the anchor is a constructed (concatenated) anchor then all components of the anchor must have a value. For Generic and LDAP dnStyle the dn must be set in provisioning code. An object must have an anchor after export. If there isn’t an anchor for an object, an error will be thrown.

The provisioning code will be different depending on the scenario:

  • Example: Connected Data Sources that Expect server to Provide the Anchor Attributes

  • Example: Connected Data Sources that Generate the Anchor Attributes

  • Example: Connected Data Sources that Generate the Anchor Attributes

The MA’s export code will also be different depending on the scenario:

  • Example: Connected Data Sources that Generate the Anchor Attributes

  • Example: Connected Data Source Changes the dn during export

Anchor attributes cannot be changed in provisioning code or EAF once the object has been exported.

The following table lists errors the Sync Engine can return with respect to anchor issues.

Error Description

E_MMS_MA_MULTI_VALUED_ANCHOR_COMPONENT

The anchor attribute is made of multi-valued attributes.

E_MMS_MA_MISSING_ANCHOR_COMPONENT

One of the anchor attributes is empty and was not returned by the connected system during export.

E_MMS_MA_ANCHOR_TOO_LONG

E_MMS_STORE_EXPORT_ASSIGN_DUPLICATE_ANCHOR

During export an anchor was returned already in use.

The following table lists errors the Sync Engine can return with respect to dn issues.

Error Description

E_MMS_MA_INVALID_DN

Returned when the dn is not valid LDAP.

E_MMS_STORE_EXPORT_ASSIGN_DUPLICATE_DN

During export an anchor was returned already in use.

Import changes to anchor and DN

During full and delta import it is possible that a change to an attribute which is making up the anchor is read. If an anchor attribute is changed it is treated as a new object. During Full Import the new object is created and the old object is obsoleted (deleted at the end of Full Import). During Delta Import and if an update to an anchor attribute is received the cs object is transformed into a transient object and the MA Import method will be called with an ObjectFullImport request with the new anchor value. The transient object will be removed by an explicit delete or during Full Import.

If a change to the dn is detected and the dnStyle is Generic or LDAP then this is treated as an object rename.