Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: for the plan.

Jump to: navigation, search

IdAS EntityId Requirements Discussion Summary


Higgins logo 76Wx100H.jpg

Following are the key design decisions we need to make. We are posting votes as they are made in email. Feel free post your votes/comments directly (with your wiki signature).

Q1: Unique Identifier vs. Attribute Set

Must a Higgins EntityId be a single-part CUID or GUID, or could it be a multi-part key consisting of a set of Attributes?


  • Jim: Yes - it must be a CUID or GUID.
  • David: No - I prefer a multi-part key where the parts of the key might also be unique in a context. An example is a EntityID made up of a uniqueName, uniqueId, nativeName, nativeId. Any part of the of the Entity ID could be used to identify the object.
  • Drummond: Abstain - Single-part IDs are easier, but multi-part keys are useful too.
  • Tony: No.
  • Tom: Yes - it must be a CUID or GUID.
  • Paul: Yes - it must be a CUID or a GUID. With the synonyms proposal (see below) we can give David the multi-part keys he needs (each key-part is a synonym)

Q2: Representation of an EntityId as a Unique Identifier

If an EntityId is a unique identifier, should this be represented as:

  1. A type of Attribute?
  2. An inherent property of an Entity that MAY be exposed as an Attribute?


  • Jim: #2
  • David: #2
  • Drummond: #2
  • Tony: #2
  • Tom: #2
  • Paul: roughly #2

Q3: Cardinality

What is the cardinality of EntityId? (The answer may depend on the answer to #2.)

  1. 0..n?
  2. 0..1?
  3. 1 (whose value may be null)?
  4. None of the above?


  • Jim: Abstain - I tend to want simple.
  • David: #1 or #2 - 0..1 if the EntityId is mutlipart as in Q1. 0..n if it is a string, and then it needs a type.
  • Drummond: #2 or #3 - For comparison's sake, you need to always get the same identifier value. But there should also be a way to get all synonyms.
  • Tony: #1
  • Tom: Abstain - +1 to Jim's feedback.
  • Paul: #2 unless I see a real world use case that requires #1. Presuming such a use-case exists, I can't see any alternative to having 0..1 "canonical" EntityId AND 0..n synonyms. There must be a way to link the synonyms together--the (preferably immutable) canonical EntityId is the way to do this. I don't see how you can have a data model 0..n ids that are all perfectly equal. The most natural thing in the CDM model would be to have 0..1 EntityId and then define an Attribute type in CDM called "synonym" and have all these "other" ids be higgins:synonyms or Context-defined sub-attributes of this

Q4: Mutability

Is the EntityID of an Entity immutable?

  1. Yes?
  2. No?
  3. Depends?


  • Jim: Yes - I believe it must be as soon as we start tying policy to EntityIDs. Either that, or we need to require a way to ensure referential integrity for places where EntityIDs are stored in policy statements.
  • David: Depends - My vote on Q1 was multipart where the decomposition could contain both mutable (uniqueName) and immutable (uniqueId) parts. They both have their use cases. If the EntityID is a string, then 1..n is needed to accomodate mutable, immutable types and if the id can be used in other protocols (compatability with legacy systems).
  • Drummond: Depends - Both immutable and mutable SHOULD be possible. Best practice is to assign 1 immutable in any context and then allow 0..n synonyms (mutable or immutable). But Higgins does not control contexts so it seems like it must be open to either. However there should be a way to ask for an immutable identifier, or ask if an given identifier is mutable.
  • Tony: No position yet.
  • Tom: Yes - +1 to Jim's position.
  • Paul: In the case where we have 0..1 EntityId I'd say #1 (yes). If we have 0..1 EntityId plus 0..n synonyms then I'd say only the entityID must be immutable, the 0..n synonyms may be mutable

Back to the top