# Plugin Entity Registration {#plugin-entity-registration}


Register custom database entities from plugins.


## Dynamic Entity Registration {#dynamic-entity-registration}


Plugins can add entities to the Gauzy schema without modifying core code:

```typescript
import { TypeOrmModule } from "@nestjs/typeorm";
import { MikroOrmModule } from "@mikro-orm/nestjs";

@Module({
  imports: [
    TypeOrmModule.forFeature([MyPluginEntity]),
    MikroOrmModule.forFeature([MyPluginEntity]),
  ],
  providers: [MyPluginService],
})
export class MyPluginModule {}
```


## Defining Plugin Entities {#defining-plugin-entities}


```typescript
import { MultiORMEntity, MultiORMColumn, MultiORMManyToOne } from "@gauzy/core";
import { TenantOrganizationBaseEntity } from "@gauzy/core";

@MultiORMEntity("my_plugin_data")
export class MyPluginEntity extends TenantOrganizationBaseEntity {
  @MultiORMColumn()
  name: string;

  @MultiORMColumn({ nullable: true })
  description?: string;

  @MultiORMManyToOne(() => Employee)
  employee?: Employee;

  @MultiORMColumn({ nullable: true })
  employeeId?: string;
}
```


## Migration for Plugin Entities {#migration-for-plugin-entities}


Generate a migration for the new entity:

```bash
yarn typeorm migration:generate -n AddMyPluginTable
```

This creates:

```typescript
export class AddMyPluginTable1709635260000 implements MigrationInterface {
  async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`
      CREATE TABLE "my_plugin_data" (
        "id" uuid NOT NULL DEFAULT uuid_generate_v4(),
        "tenantId" uuid NOT NULL,
        "organizationId" uuid NOT NULL,
        "name" varchar NOT NULL,
        "description" varchar,
        "employeeId" uuid,
        PRIMARY KEY ("id")
      )
    `);
  }

  async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`DROP TABLE "my_plugin_data"`);
  }
}
```


## Related Pages {#related-pages}


- [Plugin Dev Quickstart](https://sourcey-gauzy.pages.dev/plugins-built-in/plugin-dev-quickstart/index.md) — getting started
- [Plugin Lifecycle](https://sourcey-gauzy.pages.dev/plugins-built-in/plugin-lifecycle/index.md) — lifecycle hooks
- [Entity Inheritance](https://sourcey-gauzy.pages.dev/architecture/entity-inheritance/index.md) — base entities
