# 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
* 
* 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