Finalize twenty standard app as workspace migration object and fields (#16353)
# Introduction Related to https://github.com/twentyhq/core-team-issues/issues/1995 In this PR we're fixing the remaining object/fields validation errors resulting from standard objects and fields now passing a validation that wasn't when using the sync metadata ## Key Changes - **Field naming**: Renamed `iCalUID` to `iCalUid` for consistent camelCase convention across calendar events - **Enum standardization**: Uppercased enum values for message channels (email→EMAIL), message participants (from→FROM, to→TO, cc→CC, bcc→BCC), and message direction (incoming→INCOMING, outgoing→OUTGOING) - **Label simplification**: Removed example values from workspace member number format labels for cleaner UI - **Migration infrastructure**: Added `isSystemBuild` flag throughout field metadata service pipeline to allow system-level updates of standard fields that bypass normal restrictions ## Migrating the existing data We've created an upgrade command that will identify using the existing object and field standard id field that needs to be updated, even though the sync metadata still in usage could have fix them ( and the goal is to deprecate it by the end of the sprint ) We will call the updateOneField for each of them, we're passing by the field service in order to battle test what are going to be the temporary way to handle standard migrations when we will start deprecating the sync metadata but haven't still refactored the v2 workspace migration to be workspace agnostic ## Twenty eng migration Tested the whole migration + upgrade on twenty eng Here are generated workspace migration Records are handled natively gracefully too ### ICalUid ```json { "status": "success", "workspaceMigration": { "relatedFlatEntityMapsKeys": [ "flatFieldMetadataMaps", "flatIndexMaps", "flatViewFilterMaps", "flatViewGroupMaps", "flatViewMaps", "flatViewFieldMaps", "flatObjectMetadataMaps" ], "actions": [ { "type": "update_field", "fieldMetadataId": "", "objectMetadataId": "", "updates": [ { "from": "iCalUID", "to": "iCalUid", "property": "name" } ] } ], "workspaceId": "" } } ``` ### Incoming Outgoing None as already caps in database somehow ```json { "status": "success", "workspaceMigration": { "relatedFlatEntityMapsKeys": [ "flatFieldMetadataMaps", "flatIndexMaps", "flatViewFilterMaps", "flatViewGroupMaps", "flatViewMaps", "flatViewFieldMaps", "flatObjectMetadataMaps" ], "actions": [], "workspaceId": "" } } ``` ### EMAIL ```json { "status": "success", "workspaceMigration": { "relatedFlatEntityMapsKeys": [ "flatFieldMetadataMaps", "flatIndexMaps", "flatViewFilterMaps", "flatViewGroupMaps", "flatViewMaps", "flatViewFieldMaps", "flatObjectMetadataMaps" ], "actions": [ { "type": "update_field", "fieldMetadataId": "", "objectMetadataId": "", "updates": [ { "from": "'email'", "to": "'EMAIL'", "property": "defaultValue" }, { "from": [ { "color": "green", "id": "", "label": "Email", "position": 0, "value": "email" }, { "color": "blue", "id": "", "label": "SMS", "position": 1, "value": "sms" } ], "to": [ { "color": "green", "id": "", "label": "Email", "position": 0, "value": "EMAIL" }, { "color": "blue", "id": "", "label": "SMS", "position": 1, "value": "SMS" } ], "property": "options" } ] } ], "workspaceId": "e" } } ``` ### MessageParticipantRole ```json { "status": "success", "workspaceMigration": { "relatedFlatEntityMapsKeys": [ "flatFieldMetadataMaps", "flatIndexMaps", "flatViewFilterMaps", "flatViewGroupMaps", "flatViewMaps", "flatViewFieldMaps", "flatObjectMetadataMaps" ], "actions": [ { "type": "update_field", "fieldMetadataId": "", "objectMetadataId": "", "updates": [ { "from": "'from'", "to": "'FROM'", "property": "defaultValue" }, { "from": [ { "color": "green", "id": "", "label": "From", "position": 0, "value": "from" }, { "color": "blue", "id": "", "label": "To", "position": 1, "value": "to" }, { "color": "orange", "id": "", "label": "Cc", "position": 2, "value": "cc" }, { "color": "red", "id": "", "label": "Bcc", "position": 3, "value": "bcc" } ], "to": [ { "color": "green", "id": "", "label": "From", "position": 0, "value": "FROM" }, { "color": "blue", "id": "", "label": "To", "position": 1, "value": "TO" }, { "color": "orange", "id": "", "label": "Cc", "position": 2, "value": "CC" }, { "color": "red", "id": "", "label": "Bcc", "position": 3, "value": "BCC" } ], "property": "options" } ] } ], "workspaceId": "" } } ``` ### Workspace member number format labels ```json { "status": "success", "workspaceMigration": { "relatedFlatEntityMapsKeys": [ "flatFieldMetadataMaps", "flatIndexMaps", "flatViewFilterMaps", "flatViewGroupMaps", "flatViewMaps", "flatViewFieldMaps", "flatObjectMetadataMaps" ], "actions": [ { "type": "update_field", "fieldMetadataId": "", "objectMetadataId": "", "updates": [ { "from": [ { "color": "turquoise", "id": "", "label": "System", "position": 0, "value": "SYSTEM" }, { "color": "blue", "id": "", "label": "Commas and dot (1,234.56)", "position": 1, "value": "COMMAS_AND_DOT" }, { "color": "green", "id": "", "label": "Spaces and comma (1 234,56)", "position": 2, "value": "SPACES_AND_COMMA" }, { "color": "orange", "id": "", "label": "Dots and comma (1.234,56)", "position": 3, "value": "DOTS_AND_COMMA" }, { "color": "purple", "id": "", "label": "Apostrophe and dot (1'234.56)", "position": 4, "value": "APOSTROPHE_AND_DOT" } ], "to": [ { "color": "turquoise", "id": "", "label": "System", "position": 0, "value": "SYSTEM" }, { "color": "blue", "id": "", "label": "Commas and dot", "position": 1, "value": "COMMAS_AND_DOT" }, { "color": "green", "id": "", "label": "Spaces and comma", "position": 2, "value": "SPACES_AND_COMMA" }, { "color": "orange", "id": "", "label": "Dots and comma", "position": 3, "value": "DOTS_AND_COMMA" }, { "color": "purple", "id": "", "label": "Apostrophe and dot", "position": 4, "value": "APOSTROPHE_AND_DOT" } ], "property": "options" } ] } ], "workspaceId": "" } } ```
This commit is contained in:
+3
-3
@@ -9,7 +9,7 @@ type CalendarEventDataSeed = {
|
||||
externalUpdatedAt: string;
|
||||
description: string;
|
||||
location: string;
|
||||
iCalUID: string;
|
||||
iCalUid: string;
|
||||
conferenceSolution: string;
|
||||
conferenceLinkPrimaryLinkLabel: string;
|
||||
conferenceLinkPrimaryLinkUrl: string;
|
||||
@@ -27,7 +27,7 @@ export const CALENDAR_EVENT_DATA_SEED_COLUMNS: (keyof CalendarEventDataSeed)[] =
|
||||
'externalUpdatedAt',
|
||||
'description',
|
||||
'location',
|
||||
'iCalUID',
|
||||
'iCalUid',
|
||||
'conferenceSolution',
|
||||
'conferenceLinkPrimaryLinkLabel',
|
||||
'conferenceLinkPrimaryLinkUrl',
|
||||
@@ -217,7 +217,7 @@ const GENERATE_CALENDAR_EVENT_SEEDS = (): CalendarEventDataSeed[] => {
|
||||
).toISOString(),
|
||||
description: TEMPLATE.description,
|
||||
location: LOCATION,
|
||||
iCalUID: `event${INDEX}@calendar.twentycrm.com`,
|
||||
iCalUid: `event${INDEX}@calendar.twentycrm.com`,
|
||||
conferenceSolution: CONFERENCE_SOLUTION,
|
||||
conferenceLinkPrimaryLinkLabel: CONFERENCE_LINK,
|
||||
conferenceLinkPrimaryLinkUrl: CONFERENCE_LINK,
|
||||
|
||||
+7
-6
@@ -1,6 +1,7 @@
|
||||
import { CONNECTED_ACCOUNT_DATA_SEED_IDS } from 'src/engine/workspace-manager/dev-seeder/data/constants/connected-account-data-seeds.constant';
|
||||
import {
|
||||
MessageChannelSyncStage,
|
||||
MessageChannelType,
|
||||
MessageChannelVisibility,
|
||||
} from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity';
|
||||
|
||||
@@ -10,7 +11,7 @@ type MessageChannelDataSeed = {
|
||||
updatedAt: Date;
|
||||
deletedAt: Date | null;
|
||||
isContactAutoCreationEnabled: boolean;
|
||||
type: string;
|
||||
type: MessageChannelType;
|
||||
connectedAccountId: string;
|
||||
handle: string;
|
||||
isSyncEnabled: boolean;
|
||||
@@ -54,7 +55,7 @@ export const MESSAGE_CHANNEL_DATA_SEEDS: MessageChannelDataSeed[] = [
|
||||
updatedAt: new Date(),
|
||||
deletedAt: null,
|
||||
isContactAutoCreationEnabled: true,
|
||||
type: 'email',
|
||||
type: MessageChannelType.EMAIL,
|
||||
connectedAccountId: CONNECTED_ACCOUNT_DATA_SEED_IDS.TIM,
|
||||
handle: 'tim@apple.dev',
|
||||
isSyncEnabled: true,
|
||||
@@ -67,7 +68,7 @@ export const MESSAGE_CHANNEL_DATA_SEEDS: MessageChannelDataSeed[] = [
|
||||
updatedAt: new Date(),
|
||||
deletedAt: null,
|
||||
isContactAutoCreationEnabled: true,
|
||||
type: 'email',
|
||||
type: MessageChannelType.EMAIL,
|
||||
connectedAccountId: CONNECTED_ACCOUNT_DATA_SEED_IDS.JONY,
|
||||
handle: 'jony.ive@apple.dev',
|
||||
isSyncEnabled: true,
|
||||
@@ -80,7 +81,7 @@ export const MESSAGE_CHANNEL_DATA_SEEDS: MessageChannelDataSeed[] = [
|
||||
updatedAt: new Date(),
|
||||
deletedAt: null,
|
||||
isContactAutoCreationEnabled: true,
|
||||
type: 'email',
|
||||
type: MessageChannelType.EMAIL,
|
||||
connectedAccountId: CONNECTED_ACCOUNT_DATA_SEED_IDS.PHIL,
|
||||
handle: 'phil.schiler@apple.dev',
|
||||
isSyncEnabled: true,
|
||||
@@ -93,7 +94,7 @@ export const MESSAGE_CHANNEL_DATA_SEEDS: MessageChannelDataSeed[] = [
|
||||
updatedAt: new Date(),
|
||||
deletedAt: null,
|
||||
isContactAutoCreationEnabled: true,
|
||||
type: 'email',
|
||||
type: MessageChannelType.EMAIL,
|
||||
connectedAccountId: CONNECTED_ACCOUNT_DATA_SEED_IDS.TIM, // Use TIM's connected account for shared inbox
|
||||
handle: 'support@apple.dev',
|
||||
isSyncEnabled: true,
|
||||
@@ -106,7 +107,7 @@ export const MESSAGE_CHANNEL_DATA_SEEDS: MessageChannelDataSeed[] = [
|
||||
updatedAt: new Date(),
|
||||
deletedAt: null,
|
||||
isContactAutoCreationEnabled: true,
|
||||
type: 'email',
|
||||
type: MessageChannelType.EMAIL,
|
||||
connectedAccountId: CONNECTED_ACCOUNT_DATA_SEED_IDS.TIM, // Use TIM's connected account for shared inbox
|
||||
handle: 'sales@apple.dev',
|
||||
isSyncEnabled: true,
|
||||
|
||||
+6
-2
@@ -1,3 +1,5 @@
|
||||
import { MessageParticipantRole } from 'twenty-shared/types';
|
||||
|
||||
import { MESSAGE_DATA_SEED_IDS } from 'src/engine/workspace-manager/dev-seeder/data/constants/message-data-seeds.constant';
|
||||
import { PERSON_DATA_SEED_IDS } from 'src/engine/workspace-manager/dev-seeder/data/constants/person-data-seeds.constant';
|
||||
import {
|
||||
@@ -14,7 +16,7 @@ export type MessageParticipantDataSeed = {
|
||||
personId: string;
|
||||
displayName: string;
|
||||
handle: string;
|
||||
role: string;
|
||||
role: MessageParticipantRole;
|
||||
messageId: string;
|
||||
};
|
||||
|
||||
@@ -226,7 +228,9 @@ const CREATE_MESSAGE_PARTICIPANTS = (
|
||||
|
||||
for (let I = 0; I < TOTAL_PARTICIPANTS; I++) {
|
||||
const IS_SENDER = I === 0;
|
||||
const ROLE = IS_SENDER ? 'from' : 'to';
|
||||
const ROLE = IS_SENDER
|
||||
? MessageParticipantRole.FROM
|
||||
: MessageParticipantRole.TO;
|
||||
const HANDLE = IS_SENDER ? 'outgoing' : 'incoming';
|
||||
|
||||
// Random date within the last 3 months
|
||||
|
||||
+2
-2
@@ -271,8 +271,8 @@ export const STANDARD_OBJECTS = {
|
||||
location: {
|
||||
universalIdentifier: CALENDAR_EVENT_STANDARD_FIELD_IDS.location,
|
||||
},
|
||||
iCalUID: {
|
||||
universalIdentifier: CALENDAR_EVENT_STANDARD_FIELD_IDS.iCalUID,
|
||||
iCalUid: {
|
||||
universalIdentifier: CALENDAR_EVENT_STANDARD_FIELD_IDS.iCalUid,
|
||||
},
|
||||
conferenceSolution: {
|
||||
universalIdentifier:
|
||||
|
||||
+2
-2
@@ -210,11 +210,11 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
|
||||
},
|
||||
standardFieldMetadataIdByObjectAndFieldName,
|
||||
}),
|
||||
iCalUID: createStandardFieldFlatMetadata({
|
||||
iCalUid: createStandardFieldFlatMetadata({
|
||||
objectName: 'calendarEvent',
|
||||
workspaceId,
|
||||
options: {
|
||||
fieldName: 'iCalUID',
|
||||
fieldName: 'iCalUid',
|
||||
type: FieldMetadataType.TEXT,
|
||||
label: 'iCal UID',
|
||||
description: 'iCal UID',
|
||||
|
||||
+14
-3
@@ -9,6 +9,7 @@ import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/tw
|
||||
import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util';
|
||||
import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util';
|
||||
import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util';
|
||||
import { MessageDirection } from 'src/modules/messaging/common/enums/message-direction.enum';
|
||||
|
||||
export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas =
|
||||
({
|
||||
@@ -128,10 +129,20 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas =
|
||||
description: 'Message Direction',
|
||||
icon: 'IconDirection',
|
||||
isNullable: false,
|
||||
defaultValue: "'incoming'",
|
||||
defaultValue: `'${MessageDirection.INCOMING}'`,
|
||||
options: [
|
||||
{ value: 'incoming', label: 'Incoming', position: 0, color: 'green' },
|
||||
{ value: 'outgoing', label: 'Outgoing', position: 1, color: 'blue' },
|
||||
{
|
||||
value: MessageDirection.INCOMING,
|
||||
label: 'Incoming',
|
||||
position: 0,
|
||||
color: 'green',
|
||||
},
|
||||
{
|
||||
value: MessageDirection.OUTGOING,
|
||||
label: 'Outgoing',
|
||||
position: 1,
|
||||
color: 'blue',
|
||||
},
|
||||
],
|
||||
createdAt,
|
||||
},
|
||||
|
||||
+14
-3
@@ -9,6 +9,7 @@ import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/tw
|
||||
import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util';
|
||||
import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util';
|
||||
import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util';
|
||||
import { MessageChannelType } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity';
|
||||
|
||||
export const buildMessageChannelStandardFlatFieldMetadatas = ({
|
||||
createdAt,
|
||||
@@ -138,10 +139,20 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
|
||||
description: 'Channel Type',
|
||||
icon: 'IconMessage',
|
||||
isNullable: false,
|
||||
defaultValue: "'email'",
|
||||
defaultValue: `'${MessageChannelType.EMAIL}'`,
|
||||
options: [
|
||||
{ value: 'email', label: 'Email', position: 0, color: 'green' },
|
||||
{ value: 'sms', label: 'SMS', position: 1, color: 'blue' },
|
||||
{
|
||||
value: MessageChannelType.EMAIL,
|
||||
label: 'Email',
|
||||
position: 0,
|
||||
color: 'green',
|
||||
},
|
||||
{
|
||||
value: MessageChannelType.SMS,
|
||||
label: 'SMS',
|
||||
position: 1,
|
||||
color: 'blue',
|
||||
},
|
||||
],
|
||||
createdAt,
|
||||
},
|
||||
|
||||
+26
-5
@@ -1,5 +1,6 @@
|
||||
import {
|
||||
FieldMetadataType,
|
||||
MessageParticipantRole,
|
||||
RelationOnDeleteAction,
|
||||
RelationType,
|
||||
} from 'twenty-shared/types';
|
||||
@@ -99,12 +100,32 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({
|
||||
description: 'Role',
|
||||
icon: 'IconAt',
|
||||
isNullable: false,
|
||||
defaultValue: "'from'",
|
||||
defaultValue: `'${MessageParticipantRole.FROM}'`,
|
||||
options: [
|
||||
{ value: 'from', label: 'From', position: 0, color: 'green' },
|
||||
{ value: 'to', label: 'To', position: 1, color: 'blue' },
|
||||
{ value: 'cc', label: 'Cc', position: 2, color: 'orange' },
|
||||
{ value: 'bcc', label: 'Bcc', position: 3, color: 'red' },
|
||||
{
|
||||
value: MessageParticipantRole.FROM,
|
||||
label: 'From',
|
||||
position: 0,
|
||||
color: 'green',
|
||||
},
|
||||
{
|
||||
value: MessageParticipantRole.TO,
|
||||
label: 'To',
|
||||
position: 1,
|
||||
color: 'blue',
|
||||
},
|
||||
{
|
||||
value: MessageParticipantRole.CC,
|
||||
label: 'Cc',
|
||||
position: 2,
|
||||
color: 'orange',
|
||||
},
|
||||
{
|
||||
value: MessageParticipantRole.BCC,
|
||||
label: 'Bcc',
|
||||
position: 3,
|
||||
color: 'red',
|
||||
},
|
||||
],
|
||||
createdAt,
|
||||
},
|
||||
|
||||
+16
-10
@@ -9,6 +9,7 @@ import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/tw
|
||||
import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util';
|
||||
import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util';
|
||||
import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util';
|
||||
import { WorkspaceMemberNumberFormatEnum } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
|
||||
|
||||
export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
|
||||
createdAt,
|
||||
@@ -296,30 +297,35 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
|
||||
icon: 'IconNumbers',
|
||||
isSystem: true,
|
||||
isNullable: false,
|
||||
defaultValue: "'SYSTEM'",
|
||||
defaultValue: `'${WorkspaceMemberNumberFormatEnum.SYSTEM}'`,
|
||||
options: [
|
||||
{ value: 'SYSTEM', label: 'System', position: 0, color: 'turquoise' },
|
||||
{
|
||||
value: 'COMMAS_AND_DOT',
|
||||
label: 'Commas and dot (1,234.56)',
|
||||
value: WorkspaceMemberNumberFormatEnum.SYSTEM,
|
||||
label: 'System',
|
||||
position: 0,
|
||||
color: 'turquoise',
|
||||
},
|
||||
{
|
||||
value: WorkspaceMemberNumberFormatEnum.COMMAS_AND_DOT,
|
||||
label: 'Commas and dot',
|
||||
position: 1,
|
||||
color: 'blue',
|
||||
},
|
||||
{
|
||||
value: 'SPACES_AND_COMMA',
|
||||
label: 'Spaces and comma (1 234,56)',
|
||||
value: WorkspaceMemberNumberFormatEnum.SPACES_AND_COMMA,
|
||||
label: 'Spaces and comma',
|
||||
position: 2,
|
||||
color: 'green',
|
||||
},
|
||||
{
|
||||
value: 'DOTS_AND_COMMA',
|
||||
label: 'Dots and comma (1.234,56)',
|
||||
value: WorkspaceMemberNumberFormatEnum.DOTS_AND_COMMA,
|
||||
label: 'Dots and comma',
|
||||
position: 3,
|
||||
color: 'orange',
|
||||
},
|
||||
{
|
||||
value: 'APOSTROPHE_AND_DOT',
|
||||
label: "Apostrophe and dot (1'234.56)",
|
||||
value: WorkspaceMemberNumberFormatEnum.APOSTROPHE_AND_DOT,
|
||||
label: 'Apostrophe and dot',
|
||||
position: 4,
|
||||
color: 'purple',
|
||||
},
|
||||
|
||||
+8
-2
@@ -146,7 +146,10 @@ export class FlatFieldMetadataValidatorService {
|
||||
|
||||
if (
|
||||
flatFieldMetadataToValidate.isLabelSyncedWithName &&
|
||||
!isFlatFieldMetadataNameSyncedWithLabel(flatFieldMetadataToValidate)
|
||||
!isFlatFieldMetadataNameSyncedWithLabel({
|
||||
flatFieldMetadata: flatFieldMetadataToValidate,
|
||||
isSystemBuild: buildOptions.isSystemBuild,
|
||||
})
|
||||
) {
|
||||
validationResult.errors.push({
|
||||
code: FieldMetadataExceptionCode.FIELD_MUTATION_NOT_ALLOWED,
|
||||
@@ -318,7 +321,10 @@ export class FlatFieldMetadataValidatorService {
|
||||
|
||||
if (
|
||||
flatFieldMetadataToValidate.isLabelSyncedWithName &&
|
||||
!isFlatFieldMetadataNameSyncedWithLabel(flatFieldMetadataToValidate)
|
||||
!isFlatFieldMetadataNameSyncedWithLabel({
|
||||
flatFieldMetadata: flatFieldMetadataToValidate,
|
||||
isSystemBuild: buildOptions.isSystemBuild,
|
||||
})
|
||||
) {
|
||||
validationResult.errors.push({
|
||||
code: FieldMetadataExceptionCode.NAME_NOT_SYNCED_WITH_LABEL,
|
||||
|
||||
+2
@@ -65,6 +65,7 @@ export class FlatObjectMetadataValidatorService {
|
||||
...validateFlatObjectMetadataNameAndLabels({
|
||||
optimisticFlatObjectMetadataMaps,
|
||||
flatObjectMetadataToValidate: updatedFlatObjectMetadata,
|
||||
buildOptions,
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -202,6 +203,7 @@ export class FlatObjectMetadataValidatorService {
|
||||
...validateFlatObjectMetadataNameAndLabels({
|
||||
optimisticFlatObjectMetadataMaps,
|
||||
flatObjectMetadataToValidate,
|
||||
buildOptions,
|
||||
}),
|
||||
);
|
||||
|
||||
|
||||
+1
-1
@@ -102,7 +102,7 @@ export const CALENDAR_EVENT_STANDARD_FIELD_IDS = {
|
||||
externalUpdatedAt: '20202020-b355-4c18-8825-ef42c8a5a755',
|
||||
description: '20202020-52c4-4266-a98f-e90af0b4d271',
|
||||
location: '20202020-641a-4ffe-960d-c3c186d95b17',
|
||||
iCalUID: '20202020-f24b-45f4-b6a3-d2f9fcb98714',
|
||||
iCalUid: '20202020-f24b-45f4-b6a3-d2f9fcb98714',
|
||||
conferenceSolution: '20202020-1c3f-4b5a-b526-5411a82179eb',
|
||||
conferenceLink: '20202020-35da-43ef-9ca0-e936e9dc237b',
|
||||
calendarChannelEventAssociations: '20202020-bdf8-4572-a2cc-ecbb6bcc3a02',
|
||||
|
||||
Reference in New Issue
Block a user