diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts index f943b70fe89..30c765f320c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts @@ -29,6 +29,7 @@ import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/wor import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util'; import { type FieldMetadataUpdate } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory'; import { type ObjectMetadataUpdate } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-object.factory'; +import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { type WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage'; @Injectable() @@ -472,6 +473,20 @@ export class WorkspaceMetadataUpdaterService { ...updateItem, }; + // Do not update isSystem for workspaceMember + // TODO to remove after https://github.com/twentyhq/twenty/issues/15688 + const isObjectMetadataUpdate = entityClass === ObjectMetadataEntity; + + if ( + isObjectMetadataUpdate && + oldEntity?.standardId === STANDARD_OBJECT_IDS.workspaceMember && + 'isSystem' in updateItem && + 'isSystem' in oldEntity + ) { + (mergedUpdate as unknown as { isSystem: boolean }).isSystem = + oldEntity.isSystem as boolean; + } + // Omit keys that we don't want to override keysToOmit.forEach((key) => { delete mergedUpdate[key];