[BREAKING_CHANGE] Deprecate remaining entities standardId (#17639)

# Introduction
Following https://github.com/twentyhq/twenty/pull/17632 and
https://github.com/twentyhq/twenty/pull/17572
This PR deprecates the agent, skill, field metadata and role
`standardId` in favor of the `universalIdentifier` usage

## Note
- Removed previous standard ids declaration modules
- Twenty-sdk now re-exports the `STANDARD_OBJECTS` universalIdentifier
hashmap constant
- deleted some sync-metadata deadcode too ( mainly types )
This commit is contained in:
Paul Rastoin
2026-02-03 09:06:24 +01:00
committed by GitHub
parent cfdcc0065c
commit d35d5c0463
118 changed files with 534 additions and 2279 deletions
@@ -1,5 +1,6 @@
import { Field, HideField, InputType } from '@nestjs/graphql';
import { Type } from 'class-transformer';
import {
IsBoolean,
IsNotEmpty,
@@ -12,7 +13,6 @@ import {
type FieldMetadataSettings,
type FieldMetadataType,
} from 'twenty-shared/types';
import { Type } from 'class-transformer';
import { IsValidMetadataName } from 'src/engine/decorators/metadata/is-valid-metadata-name.decorator';
@@ -61,9 +61,6 @@ export class CreateObjectInput {
@HideField()
applicationId?: string;
@HideField()
standardId?: string;
@HideField()
universalIdentifier?: string;
@@ -8,10 +8,6 @@ import { v4 } from 'uuid';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util';
import {
BASE_OBJECT_STANDARD_FIELD_IDS,
CUSTOM_OBJECT_STANDARD_FIELD_IDS,
} from 'src/engine/workspace-manager/workspace-migration/constant/standard-field-ids';
type BuildDefaultFlatFieldMetadataForCustomObjectArgs = {
workspaceId: string;
@@ -55,7 +51,6 @@ export const buildDefaultFlatFieldMetadatasForCustomObject = ({
objectMetadataId,
universalIdentifier: idFieldId,
workspaceId,
standardId: BASE_OBJECT_STANDARD_FIELD_IDS.id,
name: 'id',
label: 'Id',
icon: 'Icon123',
@@ -105,7 +100,6 @@ export const buildDefaultFlatFieldMetadatasForCustomObject = ({
objectMetadataId,
universalIdentifier: nameFieldId!,
workspaceId,
standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.name,
name: 'name',
label: 'Name',
icon: 'IconAbc',
@@ -152,7 +146,6 @@ export const buildDefaultFlatFieldMetadatasForCustomObject = ({
objectMetadataId,
universalIdentifier: createdAtFieldId,
workspaceId,
standardId: BASE_OBJECT_STANDARD_FIELD_IDS.createdAt,
name: 'createdAt',
label: 'Creation date',
icon: 'IconCalendar',
@@ -199,7 +192,6 @@ export const buildDefaultFlatFieldMetadatasForCustomObject = ({
objectMetadataId,
universalIdentifier: updatedAtFieldId,
workspaceId,
standardId: BASE_OBJECT_STANDARD_FIELD_IDS.updatedAt,
name: 'updatedAt',
label: 'Last update',
icon: 'IconCalendarClock',
@@ -246,7 +238,6 @@ export const buildDefaultFlatFieldMetadatasForCustomObject = ({
objectMetadataId,
universalIdentifier: deletedAtFieldId,
workspaceId,
standardId: BASE_OBJECT_STANDARD_FIELD_IDS.deletedAt,
name: 'deletedAt',
label: 'Deleted at',
icon: 'IconCalendarClock',
@@ -293,7 +284,6 @@ export const buildDefaultFlatFieldMetadatasForCustomObject = ({
objectMetadataId,
universalIdentifier: createdByFieldId,
workspaceId,
standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.createdBy,
name: 'createdBy',
label: 'Created by',
icon: 'IconCreativeCommonsSa',
@@ -339,7 +329,6 @@ export const buildDefaultFlatFieldMetadatasForCustomObject = ({
objectMetadataId,
universalIdentifier: updatedByFieldId,
workspaceId,
standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.updatedBy,
name: 'updatedBy',
label: 'Updated by',
icon: 'IconUserCircle',
@@ -385,7 +374,6 @@ export const buildDefaultFlatFieldMetadatasForCustomObject = ({
objectMetadataId,
universalIdentifier: positionFieldId,
workspaceId,
standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.position,
name: 'position',
label: 'Position',
icon: 'IconHierarchy2',
@@ -438,7 +426,6 @@ export const buildDefaultFlatFieldMetadatasForCustomObject = ({
objectMetadataId,
universalIdentifier: searchVectorFieldId,
workspaceId,
standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.searchVector,
name: 'searchVector',
label: 'Search vector',
icon: 'IconSearch',
@@ -1,5 +1,6 @@
import { FieldMetadataType } from 'twenty-shared/types';
import { capitalize, isDefined } from 'twenty-shared/utils';
import { STANDARD_OBJECTS } from 'twenty-shared/metadata';
import { type FeatureFlagMap } from 'src/engine/core-modules/feature-flag/interfaces/feature-flag-map.interface';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
@@ -16,13 +17,7 @@ import {
ObjectMetadataException,
ObjectMetadataExceptionCode,
} from 'src/engine/metadata-modules/object-metadata/object-metadata.exception';
import {
CUSTOM_OBJECT_STANDARD_FIELD_IDS,
ATTACHMENT_STANDARD_FIELD_IDS,
TIMELINE_ACTIVITY_STANDARD_FIELD_IDS,
} from 'src/engine/workspace-manager/workspace-migration/constant/standard-field-ids';
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-migration/constant/standard-object-icons';
import { type STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant';
const DEFAULT_RELATIONS_OBJECTS_STANDARD_IDS = [
'timelineActivity',
@@ -33,9 +28,10 @@ const DEFAULT_RELATIONS_OBJECTS_STANDARD_IDS = [
] as const satisfies (keyof typeof STANDARD_OBJECTS)[];
const morphIdByRelationObjectNameSingular = {
timelineActivity: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
timelineActivity:
STANDARD_OBJECTS.timelineActivity.morphIds.targetMorphId.morphId,
favorite: null,
attachment: ATTACHMENT_STANDARD_FIELD_IDS.targetMorphId,
attachment: STANDARD_OBJECTS.attachment.morphIds.targetMorphId.morphId,
noteTarget: null,
taskTarget: null,
} satisfies Record<
@@ -121,18 +117,6 @@ export const buildDefaultRelationFlatFieldMetadatasForCustomObject = ({
flatEntityId: targetFlatObjectMetadataId,
});
const standardId =
CUSTOM_OBJECT_STANDARD_FIELD_IDS[
targetFlatObjectMetadata.namePlural as keyof typeof CUSTOM_OBJECT_STANDARD_FIELD_IDS
];
if (!isDefined(standardId)) {
throw new ObjectMetadataException(
`Standard field ID not found for target object ${targetFlatObjectMetadata.namePlural}`,
ObjectMetadataExceptionCode.INTERNAL_SERVER_ERROR,
);
}
const icon =
STANDARD_OBJECT_ICONS[
targetFlatObjectMetadata.nameSingular as keyof typeof STANDARD_OBJECT_ICONS
@@ -167,7 +151,6 @@ export const buildDefaultRelationFlatFieldMetadatasForCustomObject = ({
name: targetFlatObjectMetadata.namePlural,
label: capitalize(targetFlatObjectMetadata.labelPlural),
objectMetadataId: sourceFlatObjectMetadata.id,
standardId,
isSystem: true,
relationCreationPayload: {
type: RelationType.ONE_TO_MANY,