CoreIdentity¶
A CoreIdentity is a person: an employee, a student, a consultant, an agent. It holds what is true about the human being regardless of what they do — their name, their contact details, their accounts.
What a person does belongs on a CoreRelationship instead. Someone who holds two positions is one CoreIdentity with two relationships, not two identities.
Default attributes¶
All common attributes are available as well
| Type | Attribute | Description |
|---|---|---|
| string | displayName | Display name |
| string | firstName | First name |
| string | lastName | Last name |
| string | mobile | Work mobile phone number |
| string | privateMobile | Private mobile phone number |
| string | Work email address | |
| string | privateEmail | Private email address |
| string | countryCode | Country the person is associated with |
| string | nin | National identity number |
| string | entraObjectId | The Entra Object ID, required for any user accessing the services |
| string | entraUserPrincipalName | The user principal name of the Entra ID account |
| string | entraOnPremisesSamAccountName | The on-premises Active Directory sAMAccountName |
| string | entraOnPremisesDistinguishedName | The on-premises Active Directory distinguished name |
| boolean | entraOnPremisesSyncEnabled | Whether the Entra ID account is synchronized from on-premises AD |
| reference to CoreRelationship | primaryRelationship | The person's main position, where they hold more than one |
Primary relationship¶
A person with several relationships — two part-time positions, or a job alongside an elected role — has no inherent "main" one. primaryRelationship is where you record which it is, so that downstream systems have a single answer for questions like which department to show or which manager to route an approval to.
It is set with a reference attribute flow, pointing at the connector object that becomes the relationship:
@{
'$type' = "reference"
targetAttributeName = "primaryRelationship"
value = @{
'$type' = "asreference"
objectType = "position"
referencedAttribute = "id"
input = @{
'$type' = "attribute"
attribute = "primaryPositionId"
}
}
}
This only works if the source system says which position is primary. Where it does not, leave the attribute unset rather than guessing.
CoreIdentity has no date or multi-valued attributes — those appear on CoreRelationship and CoreOrgUnit.
The Entra attributes¶
The entra* attributes are not something an HR system provides. They are filled in by an Entra ID connector that joins to an identity another connector already created.
entraObjectId matters most: it is the link between a signed-in session and the CoreIdentity, so a person cannot use most Identity Universe features until it is populated.
Identifying a person¶
nin and the anchors are what sync rules normally join on, since they are stable identifiers that survive a change of name or position. A common pattern is to join on the source system's own id first and fall back to the national identity number, so that a person known to two HR systems still becomes one identity — see join priority.