Skip to content

Custom Properties

Extending entities with custom metadata properties.

Overview

Custom properties allow organizations to extend OpenMetadata schemas with additional fields specific to their needs.

Custom Property Definition

Schema: type/customProperty.json

Define a custom property:

{
  "name": "dataClassification",
  "description": "Internal data classification level",
  "propertyType": {
    "name": "enum",
    "values": ["Public", "Internal", "Confidential", "Restricted"]
  }
}

Property Types

String

{
  "name": "projectCode",
  "propertyType": {
    "name": "string"
  }
}

Integer

{
  "name": "retentionDays",
  "propertyType": {
    "name": "integer"
  }
}

Enum

{
  "name": "criticality",
  "propertyType": {
    "name": "enum",
    "values": ["Low", "Medium", "High", "Critical"]
  }
}

Markdown

{
  "name": "processingNotes",
  "propertyType": {
    "name": "markdown"
  }
}

Entity Reference

{
  "name": "dataOwnerTeam",
  "propertyType": {
    "name": "entityReference",
    "entityType": "team"
  }
}

Using Custom Properties

On Tables

{
  "name": "customers",
  "customProperties": {
    "dataClassification": "Confidential",
    "projectCode": "CRM-2024",
    "retentionDays": 2555
  }
}

On Dashboards

{
  "name": "sales_dashboard",
  "customProperties": {
    "refreshFrequency": "hourly",
    "businessUnit": "Sales"
  }
}

Entity Extension

Add custom properties to entity types:

{
  "entityType": "table",
  "customProperties": [
    {
      "name": "costCenter",
      "propertyType": {"name": "string"}
    },
    {
      "name": "dataRetentionPolicy",
      "propertyType": {"name": "enum", "values": ["30days", "90days", "1year", "indefinite"]}
    }
  ]
}

Best Practices

  1. Naming: Use camelCase
  2. Types: Choose appropriate types
  3. Validation: Use enums for controlled values
  4. Documentation: Always add descriptions
  5. Consistency: Use same properties across similar entities
  6. Migration: Plan for property evolution