---
# System prepended metadata

title: Names + Identifiers

---

# 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