Entity data store
The EntityDataStore enables storing data in web-apps.
- Local store allows you to store data throughout a user session (e.g. for multiple steps of ControlPanels)
- Persistent store allows you to store data for future user sessions (keep data after refreshing or logging out).
The EntityDataStore is a container of entities with the same properties (structured). Imagine an Excel table with multiple rows and columns. The rows represent the entities and the columns represent the properties per entity.
The EntityDataStore defines the structure of the data (e.g. “property-a” must be of type “Number”) and contains all the entities. It’s possible to filter the EntityDataStore by properties to find only the entities that match.
Entities contain the values for the specified properties.
Since the entities are just data and not visible in the user interface, often they’re used with the EntityTable block to display, select and delete entities in the user interface. In this case you can:
- Insert an entity with a ControlPanel.
- Select an entity by clicking a button in the EntityTable.
- Update the values in an existing entity with a ControlPanel.
Nesting entities
Nested entities (type: Reference) allow you to have multiple levels of data within each other and are updated independently. This allows multiple people to edit separate nested entities without overwriting each other’s changes.
For example, a project entity can contain multiple solar panel entities with different dimensions. When a user adds or edits a solar panel entity, then only that entity is adjusted.

Terminology
Think of the EntityDataStore as a tree of data:
- The root of the tree is the lowest (main) level containing branches of nested entities.
- A tree branch is a nested entity, which can contain additional nested entities (additional branches).
In the example below, a building (root) can have multiple roofs (branch), and each roof can have different MEP equipment (sub-branch) and solar panels (sub-branch).

Entities can be inserted, selected, updated and filtered on all available levels.
The properties of the nested entities are defined in the EntityTypes. In the previous example, some of the different EntityTypes are roofs, walls, solar panels. Each of these EntityTypes can have different properties to define the entity.
ℹ️ ObjectSchema vs. ReferenceSchema
- Entity properties of type “ObjectSchema” also store data as a JSON object. However, when any value in the entity gets changed, the whole entity is updated.
- Entity properties of type “ReferenceSchema” are seen as separate “documents”, so they can be updated independently (e.g. via an EntityTable).
See the EntityDataStore configuration docs for more information.