diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionCreateRecord.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionCreateRecord.tsx
index 8bf20ab16..9a48c0244 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionCreateRecord.tsx
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionCreateRecord.tsx
@@ -2,7 +2,9 @@ import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilte
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
import { formatFieldMetadataItemAsFieldDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition';
import { FormFieldInput } from '@/object-record/record-field/components/FormFieldInput';
+import { isFieldRelation } from '@/object-record/record-field/types/guards/isFieldRelation';
import { Select } from '@/ui/input/components/Select';
+import { GenericDropdownContentWidth } from '@/ui/layout/dropdown/constants/GenericDropdownContentWidth';
import { useViewOrDefaultViewFromPrefetchedViews } from '@/views/hooks/useViewOrDefaultViewFromPrefetchedViews';
import { WorkflowCreateRecordAction } from '@/workflow/types/Workflow';
import { WorkflowStepBody } from '@/workflow/workflow-steps/components/WorkflowStepBody';
@@ -10,14 +12,14 @@ import { WorkflowStepHeader } from '@/workflow/workflow-steps/components/Workflo
import { useWorkflowActionHeader } from '@/workflow/workflow-steps/workflow-actions/hooks/useWorkflowActionHeader';
import { shouldDisplayFormField } from '@/workflow/workflow-steps/workflow-actions/utils/shouldDisplayFormField';
import { WorkflowVariablePicker } from '@/workflow/workflow-variables/components/WorkflowVariablePicker';
+import { useTheme } from '@emotion/react';
import { useEffect, useState } from 'react';
import { isDefined } from 'twenty-shared/utils';
import { HorizontalSeparator, useIcons } from 'twenty-ui/display';
import { SelectOption } from 'twenty-ui/input';
import { JsonValue } from 'type-fest';
import { useDebouncedCallback } from 'use-debounce';
-import { GenericDropdownContentWidth } from '@/ui/layout/dropdown/constants/GenericDropdownContentWidth';
-import { useTheme } from '@emotion/react';
+import { RelationType } from '~/generated-metadata/graphql';
type WorkflowEditActionCreateRecordProps = {
action: WorkflowCreateRecordAction;
@@ -31,9 +33,13 @@ type WorkflowEditActionCreateRecordProps = {
};
};
+type RelationManyToOneField = {
+ id: string;
+};
+
type CreateRecordFormData = {
objectName: string;
- [field: string]: unknown;
+ [field: string]: RelationManyToOneField | JsonValue;
};
const sortByViewFieldPosition = (
@@ -77,6 +83,7 @@ export const WorkflowEditActionCreateRecord = ({
objectName: action.settings.input.objectName,
...action.settings.input.objectRecord,
});
+
const isFormDisabled = actionOptions.readonly;
const objectNameSingular = formData.objectName;
@@ -123,9 +130,27 @@ export const WorkflowEditActionCreateRecord = ({
fieldName: keyof CreateRecordFormData,
updatedValue: JsonValue,
) => {
+ const fieldDefinition = inlineFieldDefinitions?.find(
+ (definition) => definition.metadata.fieldName === fieldName,
+ );
+
+ if (!isDefined(fieldDefinition)) {
+ return;
+ }
+
+ const isFieldRelationManyToOne =
+ isFieldRelation(fieldDefinition) &&
+ fieldDefinition.metadata.relationType === RelationType.MANY_TO_ONE;
+
+ const fieldValue = isFieldRelationManyToOne
+ ? {
+ id: updatedValue,
+ }
+ : updatedValue;
+
const newFormData: CreateRecordFormData = {
...formData,
- [fieldName]: updatedValue,
+ [fieldName]: fieldValue,
};
setFormData(newFormData);
@@ -211,16 +236,26 @@ export const WorkflowEditActionCreateRecord = ({
- {inlineFieldDefinitions?.map((field) => {
- const currentValue = formData[field.metadata.fieldName] as JsonValue;
+ {inlineFieldDefinitions?.map((fieldDefinition) => {
+ const isFieldRelationManyToOne =
+ isFieldRelation(fieldDefinition) &&
+ fieldDefinition.metadata.relationType === RelationType.MANY_TO_ONE;
+
+ const currentValue = isFieldRelationManyToOne
+ ? (
+ formData[
+ fieldDefinition.metadata.fieldName
+ ] as RelationManyToOneField
+ )?.id
+ : (formData[fieldDefinition.metadata.fieldName] as JsonValue);
return (
{
- handleFieldChange(field.metadata.fieldName, value);
+ handleFieldChange(fieldDefinition.metadata.fieldName, value);
}}
VariablePicker={WorkflowVariablePicker}
readonly={isFormDisabled}
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionUpdateRecord.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionUpdateRecord.tsx
index 6af70f234..f40638a00 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionUpdateRecord.tsx
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionUpdateRecord.tsx
@@ -7,20 +7,20 @@ import { formatFieldMetadataItemAsFieldDefinition } from '@/object-metadata/util
import { FormFieldInput } from '@/object-record/record-field/components/FormFieldInput';
import { FormSingleRecordPicker } from '@/object-record/record-field/form-types/components/FormSingleRecordPicker';
import { isFieldRelation } from '@/object-record/record-field/types/guards/isFieldRelation';
+import { GenericDropdownContentWidth } from '@/ui/layout/dropdown/constants/GenericDropdownContentWidth';
import { WorkflowFieldsMultiSelect } from '@/workflow/components/WorkflowEditUpdateEventFieldsMultiSelect';
import { WorkflowStepBody } from '@/workflow/workflow-steps/components/WorkflowStepBody';
import { WorkflowStepHeader } from '@/workflow/workflow-steps/components/WorkflowStepHeader';
import { useWorkflowActionHeader } from '@/workflow/workflow-steps/workflow-actions/hooks/useWorkflowActionHeader';
import { shouldDisplayFormField } from '@/workflow/workflow-steps/workflow-actions/utils/shouldDisplayFormField';
import { WorkflowVariablePicker } from '@/workflow/workflow-variables/components/WorkflowVariablePicker';
+import { useTheme } from '@emotion/react';
import { isDefined } from 'twenty-shared/utils';
import { HorizontalSeparator, useIcons } from 'twenty-ui/display';
import { SelectOption } from 'twenty-ui/input';
import { JsonValue } from 'type-fest';
import { useDebouncedCallback } from 'use-debounce';
import { RelationType } from '~/generated-metadata/graphql';
-import { useTheme } from '@emotion/react';
-import { GenericDropdownContentWidth } from '@/ui/layout/dropdown/constants/GenericDropdownContentWidth';
type WorkflowEditActionUpdateRecordProps = {
action: WorkflowUpdateRecordAction;
@@ -65,6 +65,7 @@ export const WorkflowEditActionUpdateRecord = ({
fieldsToUpdate: action.settings.input.fieldsToUpdate ?? [],
...action.settings.input.objectRecord,
});
+
const isFormDisabled = actionOptions.readonly;
const handleFieldChange = (
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/shouldDisplayFormField.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/shouldDisplayFormField.ts
index d05d2c0f0..1ef227b36 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/shouldDisplayFormField.ts
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/shouldDisplayFormField.ts
@@ -41,24 +41,30 @@ export const shouldDisplayFormField = ({
isTypeAllowedForAction =
fieldMetadataItem.type !== FieldMetadataType.RELATION ||
fieldMetadataItem.settings?.['relationType'] === 'MANY_TO_ONE';
- break;
+ return (
+ isTypeAllowedForAction &&
+ !fieldMetadataItem.isSystem &&
+ fieldMetadataItem.isActive
+ );
case 'UPDATE_RECORD':
isTypeAllowedForAction =
COMMON_DISPLAYABLE_FIELD_TYPES.includes(fieldMetadataItem.type) ||
fieldMetadataItem.settings?.['relationType'] === 'MANY_TO_ONE';
- break;
+ return (
+ isTypeAllowedForAction &&
+ !fieldMetadataItem.isSystem &&
+ fieldMetadataItem.isActive
+ );
case 'FIND_RECORDS':
isTypeAllowedForAction = FIND_RECORDS_DISPLAYABLE_FIELD_TYPES.includes(
fieldMetadataItem.type,
);
- break;
+ return (
+ isTypeAllowedForAction &&
+ (!fieldMetadataItem.isSystem || isIdField) &&
+ fieldMetadataItem.isActive
+ );
default:
throw new Error(`Action "${actionType}" is not supported`);
}
-
- return (
- isTypeAllowedForAction &&
- (!fieldMetadataItem.isSystem || isIdField) &&
- fieldMetadataItem.isActive
- );
};
diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-versions-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-versions-all.view.ts
index 581d1b011..92ad8d4e3 100644
--- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-versions-all.view.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-versions-all.view.ts
@@ -75,7 +75,7 @@ export const workflowVersionsAllView = (
field.standardId === WORKFLOW_VERSION_STANDARD_FIELD_IDS.runs,
)?.id ?? '',
position: 4,
- isVisible: true,
+ isVisible: false,
size: 150,
},
],