Skip to main content
Properties are the physical buildings and communities that your organization manages. Every ticket, resident, and billing receipt is ultimately tied to a property, making accurate property data essential to all other Condo features.

Building Map

Define sections, floors, and individual units with Condo’s interactive building map editor.

Address Resolution

Addresses are resolved and normalized via an integrated address service to ensure deduplication.

Multiple Types

Supports both apartment buildings (building) and cottage settlements / villages (village).

Import

Bulk-import your property portfolio from Excel files using the built-in export/import tooling.

Property Data Model

A Property record represents a single address managed by an organization. Core fields:
FieldTypeDescription
organizationRelationshipThe managing organization
nameTextHuman-readable property name (optional)
typeSelectbuilding or village
addressTextFull normalized address string
addressMetaJSONStructured address data from the address service
mapJSON (BuildingMap)Full unit map with sections, floors, and units
uninhabitedUnitsCountIntegerNumber of units with no resident assigned
unitsCountIntegerTotal unit count derived from the map
address and addressMeta are both required. The addressMeta object is populated by the external address resolution service and contains structured data (city, street, house number, coordinates, etc.) used for deduplication and display.

Address Resolution

Condo integrates an address service plugin (@open-condo/keystone/plugins/addressService) that validates and normalizes addresses on property creation and update. This prevents duplicate properties with slightly different spellings of the same address. If a property with the same address already exists for the organization, the mutation raises a PROPERTY_ALREADY_EXISTS error identifying the conflicting record.

Building Map

The map field stores a BuildingMap JSON object that describes the full physical layout of the building. This map is used to:
  • Present a visual unit selector when creating tickets
  • Validate unitName and unitType fields on tickets and contacts
  • Display occupancy and section information in the management UI

Map Structure

The map follows a strict JSON schema validated against MapJsonSchema.json. At the top level it contains:
{
  "dv": 1,
  "type": "building",
  "sections": [
    {
      "id": "...",
      "name": "Section 1",
      "type": "section",
      "floors": [
        {
          "id": "...",
          "name": "1",
          "index": 1,
          "units": [
            {
              "id": "...",
              "label": "101",
              "type": "flat"
            }
          ]
        }
      ]
    }
  ],
  "parking": [...]
}
Unit types come from the shared SECTION_TYPES constant and include flat, parking, warehouse, commercial, and others.
Section names, floor indices, and unit labels are extracted server-side via getUnitsFromSections to keep the unitsCount and uninhabitedUnitsCount fields up to date.

Property Types

TypeUse Case
buildingStandard multi-unit apartment building or commercial complex
villageCottage settlement or low-rise residential community
Each type has a corresponding map schema (BuildingMap vs. VillageMap).

Organizations & Properties

A property belongs to exactly one organization. When a resident moves in, the system creates a Resident record linking the resident’s User account to both the Property and the Organization that manages it. When a property is soft-deleted, Condo automatically:
  • Soft-deletes associated TicketPropertyHint records
  • Updates ticket address references via manageTicketPropertyAddressChange
  • Triggers softDeletePropertyScopeProperties to clean up scope assignments

Importing Properties

The ExportPropertiesToExcelService generates an Excel template pre-filled with existing property data. Managers can use this as both an export and an import baseline.
1

Export existing list

Use the Export action in the Properties section to download your current portfolio as Excel.
2

Add new properties

Fill in new rows following the column structure (address, name, type, etc.).
3

Import

Upload the completed file. Condo validates addresses via the address service before creating records.

Property Hints

Organizations can attach TicketPropertyHint records to properties to display guidance text on the ticket creation form. For example, a hint might remind staff of a building’s access code or preferred contact procedure. Hints can be linked to multiple properties at once via TicketPropertyHintProperty join records.

Key Relationships

Property
  └── organization  → Organization
  └── map  → BuildingMap (sections → floors → units)

Ticket  → property
Contact → property
BillingProperty → property (via address match)
NewsItemScope → property

Build docs developers (and LLMs) love