# Names + Identifiers With the move to global identifiers based on UUIDs, the topic of how to both identify and name key entities in the domain model needs addressing. Drivers: - Simple identifiers based on numbers were very convenient for testing - Multiple ecoverses brings with it new naming constraints - Looking up a challenge / opportunity etc by ID needs to restrict to within the context of the containing Ecoverse (to allow later for private ecoverses) ## Design * Every entity in the platform as a unique UUID * Global namespace * There is a top level namespace which contains the following entities: * Users * Organisations * Ecoverses * Ecoverse namespaces * Each ecoverse is a new namespace * The following entities have names within that namespace: * Challenge, Opportunity, Project * Each entity that has a name that needs to be unique within a given namespace is "Nameable" * Each Nameable entity has the following fields: * Name: this is restricted to 25 characters, and follows rules as are applied on github * The `name` field is used for the URL * ![](https://i.imgur.com/tVqCdl0.png) * Note: this means combining the name and textID fields are are currently used into a single field * ## Implementation: * TextID is renamed to be "Name" * The curent `name` and `textID` are merged * `Name` field has the following properties: * 25 character limit * allowed characters: a-z, A-Z, 0-9, - * Must start with a letter (to create regex rule) * Business logic updated to check for name uniqueness, and provide queries to check for uniqueness within a given scope * All queries where an ID is supplied for a `Nameable` entity can also take the `name` * Names **can** be updated eventually (not initially), but with a warning re URLs being affected etc