ื“ืœื’ ืœืชื•ื›ืŸ ื”ืจืืฉื™

Custom Entity Fields

Extend entities with custom fields without modifying core code.

Overviewโ€‹

Custom entity fields allow tenants to add additional metadata fields to standard entities (Employee, Organization, etc.) without modifying the database schema directly.

How It Worksโ€‹

  1. Custom field definitions are stored as configuration
  2. Field values are stored in a JSON column or related table
  3. Custom fields are returned alongside standard entity data

Supported Field Typesโ€‹

TypeDescription
TextSingle-line text input
TextAreaMulti-line text
NumberNumeric value
BooleanTrue/false toggle
DateDate picker
SelectDropdown selection

Implementationโ€‹

Custom fields use the CustomEntityFields decorator system:

@MultiORMEntity("employee")
export class Employee extends TenantOrganizationBaseEntity {
// Standard fields...

@MultiORMColumn({ type: "json", nullable: true })
customFields?: Record<string, any>;
}

Multi-ORM Considerationsโ€‹

When using custom entity fields with MikroORM, ensure the MultiORM decorators are correctly applied. MikroORM 6.x has stricter metadata validation โ€” see the Known Issues section.

Known Issueโ€‹

MikroORM 6.x may throw errors with custom entity decorators on TypeORM-only entities. The fix involves conditional decorator application based on DB_ORM:

// Conditionally apply based on active ORM
if (process.env.DB_ORM === "mikro-orm") {
// Apply MikroORM decorator
} else {
// Apply TypeORM decorator
}