diff --git a/packages/twenty-emails/src/emails/workflow-action.email.tsx b/packages/twenty-emails/src/emails/workflow-action.email.tsx
new file mode 100644
index 000000000..2eaa3a451
--- /dev/null
+++ b/packages/twenty-emails/src/emails/workflow-action.email.tsx
@@ -0,0 +1,29 @@
+import { BaseEmail } from 'src/components/BaseEmail';
+import { Title } from 'src/components/Title';
+import { CallToAction } from 'src/components/CallToAction';
+
+type WorkflowActionEmailProps = {
+ dangerousHTML?: string;
+ title?: string;
+ callToAction?: {
+ value: string;
+ href: string;
+ };
+};
+export const WorkflowActionEmail = ({
+ dangerousHTML,
+ title,
+ callToAction,
+}: WorkflowActionEmailProps) => {
+ return (
+
+ {title && }
+ {dangerousHTML && (
+
+ )}
+ {callToAction && (
+
+ )}
+
+ );
+};
diff --git a/packages/twenty-emails/src/index.ts b/packages/twenty-emails/src/index.ts
index ddecb05c8..9fca13d73 100644
--- a/packages/twenty-emails/src/index.ts
+++ b/packages/twenty-emails/src/index.ts
@@ -3,3 +3,4 @@ export * from './emails/delete-inactive-workspaces.email';
export * from './emails/password-reset-link.email';
export * from './emails/password-update-notify.email';
export * from './emails/send-invite-link.email';
+export * from './emails/workflow-action.email';
diff --git a/packages/twenty-front/src/modules/workflow/constants/Actions.ts b/packages/twenty-front/src/modules/workflow/constants/Actions.ts
index 9c094c2d6..53c988420 100644
--- a/packages/twenty-front/src/modules/workflow/constants/Actions.ts
+++ b/packages/twenty-front/src/modules/workflow/constants/Actions.ts
@@ -8,7 +8,7 @@ export const ACTIONS: Array<{
}> = [
{
label: 'Serverless Function',
- type: 'CODE_ACTION',
+ type: 'CODE',
icon: IconSettingsAutomation,
},
];
diff --git a/packages/twenty-front/src/modules/workflow/types/Workflow.ts b/packages/twenty-front/src/modules/workflow/types/Workflow.ts
index c86313588..08f240473 100644
--- a/packages/twenty-front/src/modules/workflow/types/Workflow.ts
+++ b/packages/twenty-front/src/modules/workflow/types/Workflow.ts
@@ -13,7 +13,7 @@ export type WorkflowCodeSettingsType = WorkflowBaseSettingsType & {
serverlessFunctionId: string;
};
-export type WorkflowActionType = 'CODE_ACTION';
+export type WorkflowActionType = 'CODE';
type CommonWorkflowAction = {
id: string;
@@ -22,7 +22,7 @@ type CommonWorkflowAction = {
};
type WorkflowCodeAction = CommonWorkflowAction & {
- type: 'CODE_ACTION';
+ type: 'CODE';
settings: WorkflowCodeSettingsType;
};
diff --git a/packages/twenty-front/src/modules/workflow/utils/__tests__/addCreateStepNodes.test.ts b/packages/twenty-front/src/modules/workflow/utils/__tests__/addCreateStepNodes.test.ts
index e3326c795..d0f46dde3 100644
--- a/packages/twenty-front/src/modules/workflow/utils/__tests__/addCreateStepNodes.test.ts
+++ b/packages/twenty-front/src/modules/workflow/utils/__tests__/addCreateStepNodes.test.ts
@@ -14,7 +14,7 @@ describe('addCreateStepNodes', () => {
{
id: 'step1',
name: 'Step 1',
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
settings: {
errorHandlingOptions: {
@@ -27,7 +27,7 @@ describe('addCreateStepNodes', () => {
{
id: 'step2',
name: 'Step 2',
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
settings: {
errorHandlingOptions: {
diff --git a/packages/twenty-front/src/modules/workflow/utils/__tests__/generateWorkflowDiagram.test.ts b/packages/twenty-front/src/modules/workflow/utils/__tests__/generateWorkflowDiagram.test.ts
index 675470915..ee4643fcb 100644
--- a/packages/twenty-front/src/modules/workflow/utils/__tests__/generateWorkflowDiagram.test.ts
+++ b/packages/twenty-front/src/modules/workflow/utils/__tests__/generateWorkflowDiagram.test.ts
@@ -35,7 +35,7 @@ describe('generateWorkflowDiagram', () => {
{
id: 'step1',
name: 'Step 1',
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
settings: {
errorHandlingOptions: {
@@ -48,7 +48,7 @@ describe('generateWorkflowDiagram', () => {
{
id: 'step2',
name: 'Step 2',
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
settings: {
errorHandlingOptions: {
@@ -88,7 +88,7 @@ describe('generateWorkflowDiagram', () => {
{
id: 'step1',
name: 'Step 1',
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
settings: {
errorHandlingOptions: {
@@ -101,7 +101,7 @@ describe('generateWorkflowDiagram', () => {
{
id: 'step2',
name: 'Step 2',
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
settings: {
errorHandlingOptions: {
diff --git a/packages/twenty-front/src/modules/workflow/utils/__tests__/getWorkflowVersionDiagram.test.ts b/packages/twenty-front/src/modules/workflow/utils/__tests__/getWorkflowVersionDiagram.test.ts
index e7fb4ca55..c730cba29 100644
--- a/packages/twenty-front/src/modules/workflow/utils/__tests__/getWorkflowVersionDiagram.test.ts
+++ b/packages/twenty-front/src/modules/workflow/utils/__tests__/getWorkflowVersionDiagram.test.ts
@@ -60,7 +60,7 @@ describe('getWorkflowVersionDiagram', () => {
},
serverlessFunctionId: 'a5434be2-c10b-465c-acec-46492782a997',
},
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
},
],
diff --git a/packages/twenty-front/src/modules/workflow/utils/__tests__/insertStep.test.ts b/packages/twenty-front/src/modules/workflow/utils/__tests__/insertStep.test.ts
index c9e7b3fb0..ba93aa6c3 100644
--- a/packages/twenty-front/src/modules/workflow/utils/__tests__/insertStep.test.ts
+++ b/packages/twenty-front/src/modules/workflow/utils/__tests__/insertStep.test.ts
@@ -27,7 +27,7 @@ describe('insertStep', () => {
},
serverlessFunctionId: 'a5434be2-c10b-465c-acec-46492782a997',
},
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
};
@@ -65,7 +65,7 @@ describe('insertStep', () => {
},
serverlessFunctionId: 'a5434be2-c10b-465c-acec-46492782a997',
},
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
};
@@ -97,7 +97,7 @@ describe('insertStep', () => {
},
serverlessFunctionId: 'a5434be2-c10b-465c-acec-46492782a997',
},
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
},
{
@@ -110,7 +110,7 @@ describe('insertStep', () => {
},
serverlessFunctionId: 'a5434be2-c10b-465c-acec-46492782a997',
},
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
},
],
@@ -131,7 +131,7 @@ describe('insertStep', () => {
},
serverlessFunctionId: 'a5434be2-c10b-465c-acec-46492782a997',
},
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
};
@@ -167,7 +167,7 @@ describe('insertStep', () => {
},
serverlessFunctionId: 'a5434be2-c10b-465c-acec-46492782a997',
},
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
},
{
@@ -180,7 +180,7 @@ describe('insertStep', () => {
},
serverlessFunctionId: 'a5434be2-c10b-465c-acec-46492782a997',
},
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
},
],
@@ -201,7 +201,7 @@ describe('insertStep', () => {
},
serverlessFunctionId: 'a5434be2-c10b-465c-acec-46492782a997',
},
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
};
diff --git a/packages/twenty-front/src/modules/workflow/utils/__tests__/replaceStep.test.ts b/packages/twenty-front/src/modules/workflow/utils/__tests__/replaceStep.test.ts
index b40c8e8d1..93286c590 100644
--- a/packages/twenty-front/src/modules/workflow/utils/__tests__/replaceStep.test.ts
+++ b/packages/twenty-front/src/modules/workflow/utils/__tests__/replaceStep.test.ts
@@ -13,7 +13,7 @@ describe('replaceStep', () => {
},
serverlessFunctionId: 'first',
},
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
} satisfies WorkflowStep;
const workflowVersionInitial = {
@@ -59,7 +59,7 @@ describe('replaceStep', () => {
},
serverlessFunctionId: 'a5434be2-c10b-465c-acec-46492782a997',
},
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
};
const workflowVersionInitial = {
@@ -79,7 +79,7 @@ describe('replaceStep', () => {
},
serverlessFunctionId: 'a5434be2-c10b-465c-acec-46492782a997',
},
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
},
stepToBeReplaced,
@@ -93,7 +93,7 @@ describe('replaceStep', () => {
},
serverlessFunctionId: 'a5434be2-c10b-465c-acec-46492782a997',
},
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: true,
},
],
diff --git a/packages/twenty-front/src/modules/workflow/utils/generateWorkflowDiagram.ts b/packages/twenty-front/src/modules/workflow/utils/generateWorkflowDiagram.ts
index 80559ff94..ccc7247fe 100644
--- a/packages/twenty-front/src/modules/workflow/utils/generateWorkflowDiagram.ts
+++ b/packages/twenty-front/src/modules/workflow/utils/generateWorkflowDiagram.ts
@@ -50,13 +50,6 @@ export const generateWorkflowDiagram = ({
},
});
- // Recursively generate flow for the next action if it exists
- if (step.type !== 'CODE_ACTION') {
- // processNode(action.nextAction, nodeId, xPos + 150, yPos + 100);
-
- throw new Error('Other types as code actions are not supported yet.');
- }
-
return nodeId;
};
diff --git a/packages/twenty-front/src/modules/workflow/utils/getStepDefaultDefinition.ts b/packages/twenty-front/src/modules/workflow/utils/getStepDefaultDefinition.ts
index 4c831c904..9cb8b27e8 100644
--- a/packages/twenty-front/src/modules/workflow/utils/getStepDefaultDefinition.ts
+++ b/packages/twenty-front/src/modules/workflow/utils/getStepDefaultDefinition.ts
@@ -7,11 +7,11 @@ export const getStepDefaultDefinition = (
const newStepId = v4();
switch (type) {
- case 'CODE_ACTION': {
+ case 'CODE': {
return {
id: newStepId,
name: 'Code',
- type: 'CODE_ACTION',
+ type: 'CODE',
valid: false,
settings: {
serverlessFunctionId: '',
diff --git a/packages/twenty-server/package.json b/packages/twenty-server/package.json
index 3d42d5e78..958f9139b 100644
--- a/packages/twenty-server/package.json
+++ b/packages/twenty-server/package.json
@@ -29,6 +29,7 @@
"cache-manager-redis-yet": "^4.1.2",
"class-validator": "patch:class-validator@0.14.0#./patches/class-validator+0.14.0.patch",
"graphql-middleware": "^6.1.35",
+ "handlebars": "^4.7.8",
"jsdom": "~22.1.0",
"jwt-decode": "^4.0.0",
"langchain": "^0.2.6",
diff --git a/packages/twenty-server/src/app.module.ts b/packages/twenty-server/src/app.module.ts
index 4641f3a04..35af3a3e2 100644
--- a/packages/twenty-server/src/app.module.ts
+++ b/packages/twenty-server/src/app.module.ts
@@ -18,15 +18,14 @@ import { GraphQLConfigModule } from 'src/engine/api/graphql/graphql-config/graph
import { GraphQLConfigService } from 'src/engine/api/graphql/graphql-config/graphql-config.service';
import { MetadataGraphQLApiModule } from 'src/engine/api/graphql/metadata-graphql-api.module';
import { RestApiModule } from 'src/engine/api/rest/rest-api.module';
-import { MessageQueueDriverType } from 'src/engine/integrations/message-queue/interfaces';
-import { MessageQueueModule } from 'src/engine/integrations/message-queue/message-queue.module';
+import { MessageQueueDriverType } from 'src/engine/core-modules/message-queue/interfaces';
+import { MessageQueueModule } from 'src/engine/core-modules/message-queue/message-queue.module';
import { WorkspaceMetadataVersionModule } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.module';
import { GraphQLHydrateRequestFromTokenMiddleware } from 'src/engine/middlewares/graphql-hydrate-request-from-token.middleware';
import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module';
import { ModulesModule } from 'src/modules/modules.module';
import { CoreEngineModule } from './engine/core-modules/core-engine.module';
-import { IntegrationsModule } from './engine/integrations/integrations.module';
@Module({
imports: [
@@ -47,8 +46,6 @@ import { IntegrationsModule } from './engine/integrations/integrations.module';
useClass: GraphQLConfigService,
}),
TwentyORMModule,
- // Integrations module, contains all the integrations with other services
- IntegrationsModule,
// Core engine module, contains all the core modules
CoreEngineModule,
// Modules module, contains all business logic modules
diff --git a/packages/twenty-server/src/command/command.ts b/packages/twenty-server/src/command/command.ts
index 7fbd41034..5e45fde2a 100644
--- a/packages/twenty-server/src/command/command.ts
+++ b/packages/twenty-server/src/command/command.ts
@@ -1,7 +1,7 @@
import { CommandFactory } from 'nest-commander';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
-import { LoggerService } from 'src/engine/integrations/logger/logger.service';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
+import { LoggerService } from 'src/engine/core-modules/logger/logger.service';
import { shouldFilterException } from 'src/engine/utils/global-exception-handler.util';
import { CommandModule } from './command.module';
diff --git a/packages/twenty-server/src/database/commands/data-seed-demo-workspace/crons/start-data-seed-demo-workspace.cron.command.ts b/packages/twenty-server/src/database/commands/data-seed-demo-workspace/crons/start-data-seed-demo-workspace.cron.command.ts
index bdf120095..bc2c1c395 100644
--- a/packages/twenty-server/src/database/commands/data-seed-demo-workspace/crons/start-data-seed-demo-workspace.cron.command.ts
+++ b/packages/twenty-server/src/database/commands/data-seed-demo-workspace/crons/start-data-seed-demo-workspace.cron.command.ts
@@ -2,9 +2,9 @@ import { Command, CommandRunner } from 'nest-commander';
import { dataSeedDemoWorkspaceCronPattern } from 'src/database/commands/data-seed-demo-workspace/crons/data-seed-demo-workspace-cron-pattern';
import { DataSeedDemoWorkspaceJob } from 'src/database/commands/data-seed-demo-workspace/jobs/data-seed-demo-workspace.job';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
@Command({
name: 'workspace-seed-demo:cron:start',
diff --git a/packages/twenty-server/src/database/commands/data-seed-demo-workspace/crons/stop-data-seed-demo-workspace.cron.command.ts b/packages/twenty-server/src/database/commands/data-seed-demo-workspace/crons/stop-data-seed-demo-workspace.cron.command.ts
index 99dd1558b..a5fbf20dd 100644
--- a/packages/twenty-server/src/database/commands/data-seed-demo-workspace/crons/stop-data-seed-demo-workspace.cron.command.ts
+++ b/packages/twenty-server/src/database/commands/data-seed-demo-workspace/crons/stop-data-seed-demo-workspace.cron.command.ts
@@ -2,9 +2,9 @@ import { Command, CommandRunner } from 'nest-commander';
import { dataSeedDemoWorkspaceCronPattern } from 'src/database/commands/data-seed-demo-workspace/crons/data-seed-demo-workspace-cron-pattern';
import { DataSeedDemoWorkspaceJob } from 'src/database/commands/data-seed-demo-workspace/jobs/data-seed-demo-workspace.job';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
@Command({
name: 'workspace-seed-demo:cron:stop',
diff --git a/packages/twenty-server/src/database/commands/data-seed-demo-workspace/data-seed-demo-workspace.module.ts b/packages/twenty-server/src/database/commands/data-seed-demo-workspace/data-seed-demo-workspace.module.ts
index 10d644c03..63a808235 100644
--- a/packages/twenty-server/src/database/commands/data-seed-demo-workspace/data-seed-demo-workspace.module.ts
+++ b/packages/twenty-server/src/database/commands/data-seed-demo-workspace/data-seed-demo-workspace.module.ts
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';
-import { EnvironmentModule } from 'src/engine/integrations/environment/environment.module';
+import { EnvironmentModule } from 'src/engine/core-modules/environment/environment.module';
import { WorkspaceManagerModule } from 'src/engine/workspace-manager/workspace-manager.module';
import { DataSeedDemoWorkspaceService } from 'src/database/commands/data-seed-demo-workspace/services/data-seed-demo-workspace.service';
diff --git a/packages/twenty-server/src/database/commands/data-seed-demo-workspace/jobs/data-seed-demo-workspace.job.ts b/packages/twenty-server/src/database/commands/data-seed-demo-workspace/jobs/data-seed-demo-workspace.job.ts
index 14655209c..af8958518 100644
--- a/packages/twenty-server/src/database/commands/data-seed-demo-workspace/jobs/data-seed-demo-workspace.job.ts
+++ b/packages/twenty-server/src/database/commands/data-seed-demo-workspace/jobs/data-seed-demo-workspace.job.ts
@@ -1,7 +1,7 @@
import { DataSeedDemoWorkspaceService } from 'src/database/commands/data-seed-demo-workspace/services/data-seed-demo-workspace.service';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
@Processor(MessageQueue.cronQueue)
export class DataSeedDemoWorkspaceJob {
diff --git a/packages/twenty-server/src/database/commands/data-seed-demo-workspace/services/data-seed-demo-workspace.service.ts b/packages/twenty-server/src/database/commands/data-seed-demo-workspace/services/data-seed-demo-workspace.service.ts
index 9be19725a..316caecac 100644
--- a/packages/twenty-server/src/database/commands/data-seed-demo-workspace/services/data-seed-demo-workspace.service.ts
+++ b/packages/twenty-server/src/database/commands/data-seed-demo-workspace/services/data-seed-demo-workspace.service.ts
@@ -1,6 +1,6 @@
import { Injectable } from '@nestjs/common';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { WorkspaceManagerService } from 'src/engine/workspace-manager/workspace-manager.service';
import {
deleteCoreSchema,
diff --git a/packages/twenty-server/src/database/commands/data-seed-dev-workspace.command.ts b/packages/twenty-server/src/database/commands/data-seed-dev-workspace.command.ts
index 84277637f..4a6fda198 100644
--- a/packages/twenty-server/src/database/commands/data-seed-dev-workspace.command.ts
+++ b/packages/twenty-server/src/database/commands/data-seed-dev-workspace.command.ts
@@ -32,9 +32,9 @@ import { rawDataSource } from 'src/database/typeorm/raw/raw.datasource';
import { TypeORMService } from 'src/database/typeorm/typeorm.service';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
-import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
-import { InjectCacheStorage } from 'src/engine/integrations/cache-storage/decorators/cache-storage.decorator';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
+import { CacheStorageService } from 'src/engine/core-modules/cache-storage/cache-storage.service';
+import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { FieldMetadataService } from 'src/engine/metadata-modules/field-metadata/field-metadata.service';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
diff --git a/packages/twenty-server/src/database/commands/upgrade-version/0-24/0-24-upgrade-version.module.ts b/packages/twenty-server/src/database/commands/upgrade-version/0-24/0-24-upgrade-version.module.ts
index 689938ba3..556438046 100644
--- a/packages/twenty-server/src/database/commands/upgrade-version/0-24/0-24-upgrade-version.module.ts
+++ b/packages/twenty-server/src/database/commands/upgrade-version/0-24/0-24-upgrade-version.module.ts
@@ -8,7 +8,7 @@ import { TypeORMModule } from 'src/database/typeorm/typeorm.module';
import { KeyValuePair } from 'src/engine/core-modules/key-value-pair/key-value-pair.entity';
import { OnboardingModule } from 'src/engine/core-modules/onboarding/onboarding.module';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { FileStorageModule } from 'src/engine/integrations/file-storage/file-storage.module';
+import { FileStorageModule } from 'src/engine/core-modules/file-storage/file-storage.module';
import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-source.module';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { FieldMetadataModule } from 'src/engine/metadata-modules/field-metadata/field-metadata.module';
diff --git a/packages/twenty-server/src/database/typeorm/typeorm.module.ts b/packages/twenty-server/src/database/typeorm/typeorm.module.ts
index b24fe05ba..15733f0c6 100644
--- a/packages/twenty-server/src/database/typeorm/typeorm.module.ts
+++ b/packages/twenty-server/src/database/typeorm/typeorm.module.ts
@@ -2,7 +2,7 @@ import { Module } from '@nestjs/common';
import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm';
import { typeORMCoreModuleOptions } from 'src/database/typeorm/core/core.datasource';
-import { EnvironmentModule } from 'src/engine/integrations/environment/environment.module';
+import { EnvironmentModule } from 'src/engine/core-modules/environment/environment.module';
import { TypeORMService } from './typeorm.service';
diff --git a/packages/twenty-server/src/database/typeorm/typeorm.service.ts b/packages/twenty-server/src/database/typeorm/typeorm.service.ts
index ca1f9c44c..a56f3580d 100644
--- a/packages/twenty-server/src/database/typeorm/typeorm.service.ts
+++ b/packages/twenty-server/src/database/typeorm/typeorm.service.ts
@@ -2,7 +2,7 @@ import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
import { DataSource } from 'typeorm';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity';
import { User } from 'src/engine/core-modules/user/user.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-config/graphql-config.service.ts b/packages/twenty-server/src/engine/api/graphql/graphql-config/graphql-config.service.ts
index 8c0521173..39dcda62f 100644
--- a/packages/twenty-server/src/engine/api/graphql/graphql-config/graphql-config.service.ts
+++ b/packages/twenty-server/src/engine/api/graphql/graphql-config/graphql-config.service.ts
@@ -20,9 +20,9 @@ import { CoreEngineModule } from 'src/engine/core-modules/core-engine.module';
import { useGraphQLErrorHandlerHook } from 'src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook';
import { User } from 'src/engine/core-modules/user/user.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
-import { useSentryTracing } from 'src/engine/integrations/exception-handler/hooks/use-sentry-tracing';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
+import { useSentryTracing } from 'src/engine/core-modules/exception-handler/hooks/use-sentry-tracing';
import { handleExceptionAndConvertToGraphQLError } from 'src/engine/utils/global-exception-handler.util';
import { renderApolloPlayground } from 'src/engine/utils/render-apollo-playground.util';
diff --git a/packages/twenty-server/src/engine/api/graphql/metadata-graphql-api.module.ts b/packages/twenty-server/src/engine/api/graphql/metadata-graphql-api.module.ts
index 3d0627ce7..f7ac4328f 100644
--- a/packages/twenty-server/src/engine/api/graphql/metadata-graphql-api.module.ts
+++ b/packages/twenty-server/src/engine/api/graphql/metadata-graphql-api.module.ts
@@ -7,9 +7,9 @@ import { GraphQLConfigModule } from 'src/engine/api/graphql/graphql-config/graph
import { metadataModuleFactory } from 'src/engine/api/graphql/metadata.module-factory';
import { DataloaderModule } from 'src/engine/dataloaders/dataloader.module';
import { DataloaderService } from 'src/engine/dataloaders/dataloader.service';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
import { MetadataEngineModule } from 'src/engine/metadata-modules/metadata-engine.module';
import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module';
import { WorkspaceMigrationRunnerModule } from 'src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.module';
diff --git a/packages/twenty-server/src/engine/api/graphql/metadata.module-factory.ts b/packages/twenty-server/src/engine/api/graphql/metadata.module-factory.ts
index 5297b747b..52b75eab3 100644
--- a/packages/twenty-server/src/engine/api/graphql/metadata.module-factory.ts
+++ b/packages/twenty-server/src/engine/api/graphql/metadata.module-factory.ts
@@ -6,9 +6,9 @@ import { useThrottler } from 'src/engine/api/graphql/graphql-config/hooks/use-th
import { MetadataGraphQLApiModule } from 'src/engine/api/graphql/metadata-graphql-api.module';
import { useGraphQLErrorHandlerHook } from 'src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook';
import { DataloaderService } from 'src/engine/dataloaders/dataloader.service';
-import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
+import { CacheStorageService } from 'src/engine/core-modules/cache-storage/cache-storage.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
import { renderApolloPlayground } from 'src/engine/utils/render-apollo-playground.util';
export const metadataModuleFactory = async (
diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/commands/0-20-record-position-backfill.command.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/commands/0-20-record-position-backfill.command.ts
index ddc2f06a4..a5ddfc065 100644
--- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/commands/0-20-record-position-backfill.command.ts
+++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/commands/0-20-record-position-backfill.command.ts
@@ -4,9 +4,9 @@ import {
RecordPositionBackfillJob,
RecordPositionBackfillJobData,
} from 'src/engine/api/graphql/workspace-query-runner/jobs/record-position-backfill.job';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
export type RecordPositionBackfillCommandOptions = {
workspaceId: string;
diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/jobs/call-webhook-jobs.job.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/jobs/call-webhook-jobs.job.ts
index 74e955093..d0bbc6872 100644
--- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/jobs/call-webhook-jobs.job.ts
+++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/jobs/call-webhook-jobs.job.ts
@@ -8,11 +8,11 @@ import {
CallWebhookJob,
CallWebhookJobData,
} from 'src/engine/api/graphql/workspace-query-runner/jobs/call-webhook.job';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import { WebhookWorkspaceEntity } from 'src/modules/webhook/standard-objects/webhook.workspace-entity';
diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/jobs/call-webhook.job.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/jobs/call-webhook.job.ts
index 6e0d7af52..bbaff49a4 100644
--- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/jobs/call-webhook.job.ts
+++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/jobs/call-webhook.job.ts
@@ -1,9 +1,9 @@
import { HttpService } from '@nestjs/axios';
import { Logger } from '@nestjs/common';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
export type CallWebhookJobData = {
targetUrl: string;
diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/jobs/record-position-backfill.job.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/jobs/record-position-backfill.job.ts
index 8619f1182..67cf1dd55 100644
--- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/jobs/record-position-backfill.job.ts
+++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/jobs/record-position-backfill.job.ts
@@ -1,7 +1,7 @@
import { RecordPositionBackfillService } from 'src/engine/api/graphql/workspace-query-runner/services/record-position-backfill-service';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
export type RecordPositionBackfillJobData = {
workspaceId: string;
diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/listeners/entity-events-to-db.listener.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/listeners/entity-events-to-db.listener.ts
index 48e091720..eb9ddbf06 100644
--- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/listeners/entity-events-to-db.listener.ts
+++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/listeners/entity-events-to-db.listener.ts
@@ -1,13 +1,13 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
-import { ObjectRecordUpdateEvent } from 'src/engine/integrations/event-emitter/types/object-record-update.event';
-import { ObjectRecordBaseEvent } from 'src/engine/integrations/event-emitter/types/object-record.base.event';
-import { objectRecordChangedValues } from 'src/engine/integrations/event-emitter/utils/object-record-changed-values';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
+import { ObjectRecordUpdateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-update.event';
+import { ObjectRecordBaseEvent } from 'src/engine/core-modules/event-emitter/types/object-record.base.event';
+import { objectRecordChangedValues } from 'src/engine/core-modules/event-emitter/utils/object-record-changed-values';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { CreateAuditLogFromInternalEvent } from 'src/modules/timeline/jobs/create-audit-log-from-internal-event';
import { UpsertTimelineActivityFromInternalEvent } from 'src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job';
diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/listeners/telemetry.listener.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/listeners/telemetry.listener.ts
index f9609794d..2afa537a6 100644
--- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/listeners/telemetry.listener.ts
+++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/listeners/telemetry.listener.ts
@@ -2,8 +2,8 @@ import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
import { AnalyticsService } from 'src/engine/core-modules/analytics/analytics.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
@Injectable()
diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-runner.service.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-runner.service.ts
index 679f636eb..59ce5ddc8 100644
--- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-runner.service.ts
+++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-runner.service.ts
@@ -1,7 +1,7 @@
import { Injectable, Logger } from '@nestjs/common';
import isEmpty from 'lodash.isempty';
-import { DataSource } from 'typeorm';
+import { DataSource, In } from 'typeorm';
import {
Record as IRecord,
@@ -45,13 +45,13 @@ import {
import { DuplicateService } from 'src/engine/core-modules/duplicate/duplicate.service';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
-import { ObjectRecordUpdateEvent } from 'src/engine/integrations/event-emitter/types/object-record-update.event';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
+import { ObjectRecordUpdateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-update.event';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { assertMutationNotOnRemoteObject } from 'src/engine/metadata-modules/object-metadata/utils/assert-mutation-not-on-remote-object.util';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util';
@@ -505,7 +505,7 @@ export class WorkspaceQueryRunnerService {
args.filter?.id?.in?.forEach((id) => assertIsValidUuid(id));
const existingRecords = await repository.find({
- where: { id: { in: args.filter?.id?.in } },
+ where: { id: In(args.filter?.id?.in) },
});
const mappedRecords = new Map(
existingRecords.map((record) => [record.id, record]),
@@ -625,6 +625,19 @@ export class WorkspaceQueryRunnerService {
});
}
+ const repository =
+ await this.twentyORMGlobalManager.getRepositoryForWorkspace(
+ authContext.workspace.id,
+ objectMetadataItem.nameSingular,
+ );
+
+ const existingRecords = await repository.find({
+ where: { id: In(args.filter?.id?.in) },
+ });
+ const mappedRecords = new Map(
+ existingRecords.map((record) => [record.id, record]),
+ );
+
const result = await this.execute(query, authContext.workspace.id);
const parsedResults = (
@@ -644,17 +657,21 @@ export class WorkspaceQueryRunnerService {
this.workspaceEventEmitter.emit(
`${objectMetadataItem.nameSingular}.deleted`,
- parsedResults.map(
- (record) =>
- ({
- userId: authContext.user?.id,
- recordId: record.id,
- objectMetadata: objectMetadataItem,
- properties: {
- before: this.removeNestedProperties(record),
- },
- }) satisfies ObjectRecordDeleteEvent,
- ),
+ parsedResults.map((record) => {
+ const existingRecord = mappedRecords.get(record.id);
+
+ return {
+ userId: authContext.user?.id,
+ recordId: record.id,
+ objectMetadata: objectMetadataItem,
+ properties: {
+ before: this.removeNestedProperties({
+ ...existingRecord,
+ ...record,
+ }),
+ },
+ } satisfies ObjectRecordDeleteEvent;
+ }),
authContext.workspace.id,
);
diff --git a/packages/twenty-server/src/engine/api/rest/core/query-builder/core-query-builder.factory.ts b/packages/twenty-server/src/engine/api/rest/core/query-builder/core-query-builder.factory.ts
index 90c3069d8..1c30fa89d 100644
--- a/packages/twenty-server/src/engine/api/rest/core/query-builder/core-query-builder.factory.ts
+++ b/packages/twenty-server/src/engine/api/rest/core/query-builder/core-query-builder.factory.ts
@@ -19,7 +19,7 @@ import { parseCoreBatchPath } from 'src/engine/api/rest/core/query-builder/utils
import { parseCorePath } from 'src/engine/api/rest/core/query-builder/utils/path-parsers/parse-core-path.utils';
import { Query } from 'src/engine/api/rest/core/types/query.type';
import { TokenService } from 'src/engine/core-modules/auth/services/token.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
diff --git a/packages/twenty-server/src/engine/api/rest/rest-api.service.ts b/packages/twenty-server/src/engine/api/rest/rest-api.service.ts
index d6b4d2164..128df3f96 100644
--- a/packages/twenty-server/src/engine/api/rest/rest-api.service.ts
+++ b/packages/twenty-server/src/engine/api/rest/rest-api.service.ts
@@ -6,7 +6,7 @@ import { AxiosResponse } from 'axios';
import { Query } from 'src/engine/api/rest/core/types/query.type';
import { getServerUrl } from 'src/utils/get-server-url';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { RestApiException } from 'src/engine/api/rest/errors/RestApiException';
export enum GraphqlApiType {
diff --git a/packages/twenty-server/src/engine/core-modules/ai-sql-query/ai-sql-query.module.ts b/packages/twenty-server/src/engine/core-modules/ai-sql-query/ai-sql-query.module.ts
index f416a0898..0e0e9997c 100644
--- a/packages/twenty-server/src/engine/core-modules/ai-sql-query/ai-sql-query.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/ai-sql-query/ai-sql-query.module.ts
@@ -7,9 +7,9 @@ import { AISQLQueryResolver } from 'src/engine/core-modules/ai-sql-query/ai-sql-
import { AISQLQueryService } from 'src/engine/core-modules/ai-sql-query/ai-sql-query.service';
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
import { WorkspaceQueryRunnerModule } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-runner.module';
-import { LLMChatModelModule } from 'src/engine/integrations/llm-chat-model/llm-chat-model.module';
-import { EnvironmentModule } from 'src/engine/integrations/environment/environment.module';
-import { LLMTracingModule } from 'src/engine/integrations/llm-tracing/llm-tracing.module';
+import { LLMChatModelModule } from 'src/engine/core-modules/llm-chat-model/llm-chat-model.module';
+import { EnvironmentModule } from 'src/engine/core-modules/environment/environment.module';
+import { LLMTracingModule } from 'src/engine/core-modules/llm-tracing/llm-tracing.module';
import { ObjectMetadataModule } from 'src/engine/metadata-modules/object-metadata/object-metadata.module';
import { WorkspaceSyncMetadataModule } from 'src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.module';
@Module({
diff --git a/packages/twenty-server/src/engine/core-modules/ai-sql-query/ai-sql-query.service.ts b/packages/twenty-server/src/engine/core-modules/ai-sql-query/ai-sql-query.service.ts
index 63809b96c..81cd32ec4 100644
--- a/packages/twenty-server/src/engine/core-modules/ai-sql-query/ai-sql-query.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/ai-sql-query/ai-sql-query.service.ts
@@ -11,8 +11,8 @@ import { zodToJsonSchema } from 'zod-to-json-schema';
import { WorkspaceQueryRunnerService } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-runner.service';
import { sqlGenerationPromptTemplate } from 'src/engine/core-modules/ai-sql-query/ai-sql-query.prompt-templates';
import { AISQLQueryResult } from 'src/engine/core-modules/ai-sql-query/dtos/ai-sql-query-result.dto';
-import { LLMChatModelService } from 'src/engine/integrations/llm-chat-model/llm-chat-model.service';
-import { LLMTracingService } from 'src/engine/integrations/llm-tracing/llm-tracing.service';
+import { LLMChatModelService } from 'src/engine/core-modules/llm-chat-model/llm-chat-model.service';
+import { LLMTracingService } from 'src/engine/core-modules/llm-tracing/llm-tracing.service';
import { DEFAULT_LABEL_IDENTIFIER_FIELD_NAME } from 'src/engine/metadata-modules/object-metadata/object-metadata.constants';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service';
diff --git a/packages/twenty-server/src/engine/core-modules/analytics/analytics.resolver.spec.ts b/packages/twenty-server/src/engine/core-modules/analytics/analytics.resolver.spec.ts
index f6f1e07d4..ba23dc9a2 100644
--- a/packages/twenty-server/src/engine/core-modules/analytics/analytics.resolver.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/analytics/analytics.resolver.spec.ts
@@ -1,7 +1,7 @@
import { Test, TestingModule } from '@nestjs/testing';
import { HttpService } from '@nestjs/axios';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { AnalyticsResolver } from './analytics.resolver';
import { AnalyticsService } from './analytics.service';
diff --git a/packages/twenty-server/src/engine/core-modules/analytics/analytics.resolver.ts b/packages/twenty-server/src/engine/core-modules/analytics/analytics.resolver.ts
index 7fcba0c9f..6233ce683 100644
--- a/packages/twenty-server/src/engine/core-modules/analytics/analytics.resolver.ts
+++ b/packages/twenty-server/src/engine/core-modules/analytics/analytics.resolver.ts
@@ -8,7 +8,7 @@ import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorat
import { AuthUser } from 'src/engine/decorators/auth/auth-user.decorator';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { User } from 'src/engine/core-modules/user/user.entity';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { AnalyticsService } from './analytics.service';
import { Analytics } from './analytics.entity';
diff --git a/packages/twenty-server/src/engine/core-modules/analytics/analytics.service.spec.ts b/packages/twenty-server/src/engine/core-modules/analytics/analytics.service.spec.ts
index c2cbd7a2f..a22ede293 100644
--- a/packages/twenty-server/src/engine/core-modules/analytics/analytics.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/analytics/analytics.service.spec.ts
@@ -1,7 +1,7 @@
import { Test, TestingModule } from '@nestjs/testing';
import { HttpService } from '@nestjs/axios';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { AnalyticsService } from './analytics.service';
diff --git a/packages/twenty-server/src/engine/core-modules/analytics/analytics.service.ts b/packages/twenty-server/src/engine/core-modules/analytics/analytics.service.ts
index 73851f71e..085f44378 100644
--- a/packages/twenty-server/src/engine/core-modules/analytics/analytics.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/analytics/analytics.service.ts
@@ -1,7 +1,7 @@
import { Injectable, Logger } from '@nestjs/common';
import { HttpService } from '@nestjs/axios';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
type CreateEventInput = {
type: string;
diff --git a/packages/twenty-server/src/engine/core-modules/auth/auth.resolver.spec.ts b/packages/twenty-server/src/engine/core-modules/auth/auth.resolver.spec.ts
index 30e521f7b..cca5dc1de 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/auth.resolver.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/auth.resolver.spec.ts
@@ -6,7 +6,7 @@ import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { UserService } from 'src/engine/core-modules/user/services/user.service';
import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service';
import { User } from 'src/engine/core-modules/user/user.entity';
-import { CaptchaGuard } from 'src/engine/integrations/captcha/captcha.guard';
+import { CaptchaGuard } from 'src/engine/core-modules/captcha/captcha.guard';
import { AuthResolver } from './auth.resolver';
diff --git a/packages/twenty-server/src/engine/core-modules/auth/auth.resolver.ts b/packages/twenty-server/src/engine/core-modules/auth/auth.resolver.ts
index 298705470..6dbcd832a 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/auth.resolver.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/auth.resolver.ts
@@ -22,7 +22,7 @@ import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { AuthUser } from 'src/engine/decorators/auth/auth-user.decorator';
import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator';
import { JwtAuthGuard } from 'src/engine/guards/jwt.auth.guard';
-import { CaptchaGuard } from 'src/engine/integrations/captcha/captcha.guard';
+import { CaptchaGuard } from 'src/engine/core-modules/captcha/captcha.guard';
import { ChallengeInput } from './dto/challenge.input';
import { ImpersonateInput } from './dto/impersonate.input';
diff --git a/packages/twenty-server/src/engine/core-modules/auth/controllers/google-apis-auth.controller.ts b/packages/twenty-server/src/engine/core-modules/auth/controllers/google-apis-auth.controller.ts
index 783556dbe..330e382b2 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/controllers/google-apis-auth.controller.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/controllers/google-apis-auth.controller.ts
@@ -20,7 +20,7 @@ import { GoogleAPIsService } from 'src/engine/core-modules/auth/services/google-
import { TokenService } from 'src/engine/core-modules/auth/services/token.service';
import { GoogleAPIsRequest } from 'src/engine/core-modules/auth/types/google-api-request.type';
import { OnboardingService } from 'src/engine/core-modules/onboarding/onboarding.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
@Controller('auth/google-apis')
@UseFilters(AuthRestApiExceptionFilter)
diff --git a/packages/twenty-server/src/engine/core-modules/auth/guards/google-apis-oauth-exchange-code-for-token.guard.ts b/packages/twenty-server/src/engine/core-modules/auth/guards/google-apis-oauth-exchange-code-for-token.guard.ts
index 5ef0fcf1d..77c6b41ce 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/guards/google-apis-oauth-exchange-code-for-token.guard.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/guards/google-apis-oauth-exchange-code-for-token.guard.ts
@@ -7,7 +7,7 @@ import {
} from 'src/engine/core-modules/auth/auth.exception';
import { GoogleAPIsOauthExchangeCodeForTokenStrategy } from 'src/engine/core-modules/auth/strategies/google-apis-oauth-exchange-code-for-token.auth.strategy';
import { setRequestExtraParams } from 'src/engine/core-modules/auth/utils/google-apis-set-request-extra-params.util';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
@Injectable()
export class GoogleAPIsOauthExchangeCodeForTokenGuard extends AuthGuard(
diff --git a/packages/twenty-server/src/engine/core-modules/auth/guards/google-apis-oauth-request-code.guard.ts b/packages/twenty-server/src/engine/core-modules/auth/guards/google-apis-oauth-request-code.guard.ts
index fadeb2b1b..04d860d5e 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/guards/google-apis-oauth-request-code.guard.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/guards/google-apis-oauth-request-code.guard.ts
@@ -7,7 +7,7 @@ import {
} from 'src/engine/core-modules/auth/auth.exception';
import { GoogleAPIsOauthRequestCodeStrategy } from 'src/engine/core-modules/auth/strategies/google-apis-oauth-request-code.auth.strategy';
import { setRequestExtraParams } from 'src/engine/core-modules/auth/utils/google-apis-set-request-extra-params.util';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
@Injectable()
export class GoogleAPIsOauthRequestCodeGuard extends AuthGuard('google-apis') {
diff --git a/packages/twenty-server/src/engine/core-modules/auth/guards/google-provider-enabled.guard.ts b/packages/twenty-server/src/engine/core-modules/auth/guards/google-provider-enabled.guard.ts
index ed1db3ac9..b78fa7f64 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/guards/google-provider-enabled.guard.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/guards/google-provider-enabled.guard.ts
@@ -7,7 +7,7 @@ import {
AuthExceptionCode,
} from 'src/engine/core-modules/auth/auth.exception';
import { GoogleStrategy } from 'src/engine/core-modules/auth/strategies/google.auth.strategy';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
@Injectable()
export class GoogleProviderEnabledGuard implements CanActivate {
diff --git a/packages/twenty-server/src/engine/core-modules/auth/guards/microsoft-provider-enabled.guard.ts b/packages/twenty-server/src/engine/core-modules/auth/guards/microsoft-provider-enabled.guard.ts
index 435c0bb04..9594c41bd 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/guards/microsoft-provider-enabled.guard.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/guards/microsoft-provider-enabled.guard.ts
@@ -7,7 +7,7 @@ import {
AuthExceptionCode,
} from 'src/engine/core-modules/auth/auth.exception';
import { MicrosoftStrategy } from 'src/engine/core-modules/auth/strategies/microsoft.auth.strategy';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
@Injectable()
export class MicrosoftProviderEnabledGuard implements CanActivate {
diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/auth.service.spec.ts b/packages/twenty-server/src/engine/core-modules/auth/services/auth.service.spec.ts
index b15cdec24..7b4f1309a 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/services/auth.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/services/auth.service.spec.ts
@@ -5,8 +5,8 @@ import { UserService } from 'src/engine/core-modules/user/services/user.service'
import { WorkspaceManagerService } from 'src/engine/workspace-manager/workspace-manager.service';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { User } from 'src/engine/core-modules/user/user.entity';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { EmailService } from 'src/engine/integrations/email/email.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { EmailService } from 'src/engine/core-modules/email/email.service';
import { SignInUpService } from 'src/engine/core-modules/auth/services/sign-in-up.service';
import { AppToken } from 'src/engine/core-modules/app-token/app-token.entity';
diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/auth.service.ts b/packages/twenty-server/src/engine/core-modules/auth/services/auth.service.ts
index 0830e57fb..cec729573 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/services/auth.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/services/auth.service.ts
@@ -9,7 +9,7 @@ import ms from 'ms';
import { PasswordUpdateNotifyEmail } from 'twenty-emails';
import { Repository } from 'typeorm';
-import { NodeEnvironment } from 'src/engine/integrations/environment/interfaces/node-environment.interface';
+import { NodeEnvironment } from 'src/engine/core-modules/environment/interfaces/node-environment.interface';
import {
AppToken,
@@ -36,8 +36,8 @@ import { WorkspaceMember } from 'src/engine/core-modules/user/dtos/workspace-mem
import { UserService } from 'src/engine/core-modules/user/services/user.service';
import { User } from 'src/engine/core-modules/user/user.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { EmailService } from 'src/engine/integrations/email/email.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EmailService } from 'src/engine/core-modules/email/email.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { TokenService } from './token.service';
diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/google-apis.service.ts b/packages/twenty-server/src/engine/core-modules/auth/services/google-apis.service.ts
index dcee921d2..b20072ed5 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/services/google-apis.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/services/google-apis.service.ts
@@ -3,10 +3,10 @@ import { Injectable } from '@nestjs/common';
import { EntityManager } from 'typeorm';
import { v4 } from 'uuid';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import {
diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.spec.ts b/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.spec.ts
index e3bb7af39..eb2974d9d 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.spec.ts
@@ -8,7 +8,7 @@ import { OnboardingService } from 'src/engine/core-modules/onboarding/onboarding
import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service';
import { User } from 'src/engine/core-modules/user/user.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
describe('SignInUpService', () => {
let service: SignInUpService;
diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.ts b/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.ts
index 450b6e1a0..63286c372 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.ts
@@ -25,7 +25,7 @@ import {
Workspace,
WorkspaceActivationStatus,
} from 'src/engine/core-modules/workspace/workspace.entity';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { getImageBufferFromUrl } from 'src/utils/image';
export type SignInUpServiceInput = {
diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/token.service.spec.ts b/packages/twenty-server/src/engine/core-modules/auth/services/token.service.spec.ts
index 29e2df741..777b1febd 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/services/token.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/services/token.service.spec.ts
@@ -14,8 +14,8 @@ import { JwtAuthStrategy } from 'src/engine/core-modules/auth/strategies/jwt.aut
import { JwtWrapperService } from 'src/engine/core-modules/jwt/services/jwt-wrapper.service';
import { User } from 'src/engine/core-modules/user/user.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { EmailService } from 'src/engine/integrations/email/email.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EmailService } from 'src/engine/core-modules/email/email.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import { TokenService } from './token.service';
diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/token.service.ts b/packages/twenty-server/src/engine/core-modules/auth/services/token.service.ts
index 4cf18c206..2189ddb41 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/services/token.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/services/token.service.ts
@@ -42,8 +42,8 @@ import {
Workspace,
WorkspaceActivationStatus,
} from 'src/engine/core-modules/workspace/workspace.entity';
-import { EmailService } from 'src/engine/integrations/email/email.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EmailService } from 'src/engine/core-modules/email/email.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
diff --git a/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-common.auth.strategy.ts b/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-common.auth.strategy.ts
index 64b69bf35..863692473 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-common.auth.strategy.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-common.auth.strategy.ts
@@ -3,7 +3,7 @@ import { PassportStrategy } from '@nestjs/passport';
import { Strategy } from 'passport-google-oauth20';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
export type GoogleAPIScopeConfig = {
isCalendarEnabled?: boolean;
diff --git a/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-exchange-code-for-token.auth.strategy.ts b/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-exchange-code-for-token.auth.strategy.ts
index 4d5dfe5c2..244b1066d 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-exchange-code-for-token.auth.strategy.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-exchange-code-for-token.auth.strategy.ts
@@ -4,7 +4,7 @@ import { VerifyCallback } from 'passport-google-oauth20';
import { GoogleAPIsOauthCommonStrategy } from 'src/engine/core-modules/auth/strategies/google-apis-oauth-common.auth.strategy';
import { GoogleAPIsRequest } from 'src/engine/core-modules/auth/types/google-api-request.type';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
export type GoogleAPIScopeConfig = {
isCalendarEnabled?: boolean;
diff --git a/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-request-code.auth.strategy.ts b/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-request-code.auth.strategy.ts
index 128ba607c..f93642bc7 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-request-code.auth.strategy.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-request-code.auth.strategy.ts
@@ -1,7 +1,7 @@
import { Injectable } from '@nestjs/common';
import { GoogleAPIsOauthCommonStrategy } from 'src/engine/core-modules/auth/strategies/google-apis-oauth-common.auth.strategy';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
export type GoogleAPIScopeConfig = {
isCalendarEnabled?: boolean;
diff --git a/packages/twenty-server/src/engine/core-modules/auth/strategies/google.auth.strategy.ts b/packages/twenty-server/src/engine/core-modules/auth/strategies/google.auth.strategy.ts
index 6cf51366f..22ba14447 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/strategies/google.auth.strategy.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/strategies/google.auth.strategy.ts
@@ -4,7 +4,7 @@ import { PassportStrategy } from '@nestjs/passport';
import { Request } from 'express';
import { Strategy, VerifyCallback } from 'passport-google-oauth20';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
export type GoogleRequest = Omit<
Request,
diff --git a/packages/twenty-server/src/engine/core-modules/auth/strategies/jwt.auth.strategy.ts b/packages/twenty-server/src/engine/core-modules/auth/strategies/jwt.auth.strategy.ts
index 6f7436357..3a8154004 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/strategies/jwt.auth.strategy.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/strategies/jwt.auth.strategy.ts
@@ -13,7 +13,7 @@ import {
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { User } from 'src/engine/core-modules/user/user.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { ApiKeyWorkspaceEntity } from 'src/modules/api-key/standard-objects/api-key.workspace-entity';
diff --git a/packages/twenty-server/src/engine/core-modules/auth/strategies/microsoft.auth.strategy.ts b/packages/twenty-server/src/engine/core-modules/auth/strategies/microsoft.auth.strategy.ts
index 8eae65a81..48a097734 100644
--- a/packages/twenty-server/src/engine/core-modules/auth/strategies/microsoft.auth.strategy.ts
+++ b/packages/twenty-server/src/engine/core-modules/auth/strategies/microsoft.auth.strategy.ts
@@ -8,7 +8,7 @@ import {
AuthException,
AuthExceptionCode,
} from 'src/engine/core-modules/auth/auth.exception';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
export type MicrosoftRequest = Omit<
Request,
diff --git a/packages/twenty-server/src/engine/core-modules/billing/jobs/update-subscription.job.ts b/packages/twenty-server/src/engine/core-modules/billing/jobs/update-subscription.job.ts
index 45d723329..a91446b1c 100644
--- a/packages/twenty-server/src/engine/core-modules/billing/jobs/update-subscription.job.ts
+++ b/packages/twenty-server/src/engine/core-modules/billing/jobs/update-subscription.job.ts
@@ -3,9 +3,9 @@ import { Logger, Scope } from '@nestjs/common';
import { BillingSubscriptionService } from 'src/engine/core-modules/billing/services/billing-subscription.service';
import { StripeService } from 'src/engine/core-modules/billing/stripe/stripe.service';
import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
export type UpdateSubscriptionJobData = { workspaceId: string };
@Processor({
diff --git a/packages/twenty-server/src/engine/core-modules/billing/listeners/billing-workspace-member.listener.ts b/packages/twenty-server/src/engine/core-modules/billing/listeners/billing-workspace-member.listener.ts
index 0d6f03ef4..13d419850 100644
--- a/packages/twenty-server/src/engine/core-modules/billing/listeners/billing-workspace-member.listener.ts
+++ b/packages/twenty-server/src/engine/core-modules/billing/listeners/billing-workspace-member.listener.ts
@@ -5,11 +5,11 @@ import {
UpdateSubscriptionJob,
UpdateSubscriptionJobData,
} from 'src/engine/core-modules/billing/jobs/update-subscription.job';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
diff --git a/packages/twenty-server/src/engine/core-modules/billing/services/billing-portal.workspace-service.ts b/packages/twenty-server/src/engine/core-modules/billing/services/billing-portal.workspace-service.ts
index d4a7a333f..b63e1fd04 100644
--- a/packages/twenty-server/src/engine/core-modules/billing/services/billing-portal.workspace-service.ts
+++ b/packages/twenty-server/src/engine/core-modules/billing/services/billing-portal.workspace-service.ts
@@ -9,7 +9,7 @@ import { StripeService } from 'src/engine/core-modules/billing/stripe/stripe.ser
import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service';
import { User } from 'src/engine/core-modules/user/user.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { assert } from 'src/utils/assert';
export enum WebhookEvent {
diff --git a/packages/twenty-server/src/engine/core-modules/billing/services/billing-subscription.service.ts b/packages/twenty-server/src/engine/core-modules/billing/services/billing-subscription.service.ts
index 15fb1df71..248d3fa6e 100644
--- a/packages/twenty-server/src/engine/core-modules/billing/services/billing-subscription.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/billing/services/billing-subscription.service.ts
@@ -18,7 +18,7 @@ import { StripeService } from 'src/engine/core-modules/billing/stripe/stripe.ser
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
@Injectable()
export class BillingSubscriptionService {
diff --git a/packages/twenty-server/src/engine/core-modules/billing/services/billing.service.ts b/packages/twenty-server/src/engine/core-modules/billing/services/billing.service.ts
index 455b30cfe..8004d46e5 100644
--- a/packages/twenty-server/src/engine/core-modules/billing/services/billing.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/billing/services/billing.service.ts
@@ -6,7 +6,7 @@ import { SubscriptionStatus } from 'src/engine/core-modules/billing/entities/bil
import { BillingSubscriptionService } from 'src/engine/core-modules/billing/services/billing-subscription.service';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
@Injectable()
export class BillingService {
diff --git a/packages/twenty-server/src/engine/core-modules/billing/stripe/stripe.service.ts b/packages/twenty-server/src/engine/core-modules/billing/stripe/stripe.service.ts
index 7dba53b26..c62eb845f 100644
--- a/packages/twenty-server/src/engine/core-modules/billing/stripe/stripe.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/billing/stripe/stripe.service.ts
@@ -7,7 +7,7 @@ import { AvailableProduct } from 'src/engine/core-modules/billing/interfaces/ava
import { ProductPriceEntity } from 'src/engine/core-modules/billing/dto/product-price.entity';
import { BillingSubscriptionItem } from 'src/engine/core-modules/billing/entities/billing-subscription-item.entity';
import { User } from 'src/engine/core-modules/user/user.entity';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
@Injectable()
export class StripeService {
diff --git a/packages/twenty-server/src/engine/integrations/cache-storage/cache-storage.module-factory.ts b/packages/twenty-server/src/engine/core-modules/cache-storage/cache-storage.module-factory.ts
similarity index 91%
rename from packages/twenty-server/src/engine/integrations/cache-storage/cache-storage.module-factory.ts
rename to packages/twenty-server/src/engine/core-modules/cache-storage/cache-storage.module-factory.ts
index 989469938..ce7cb740a 100644
--- a/packages/twenty-server/src/engine/integrations/cache-storage/cache-storage.module-factory.ts
+++ b/packages/twenty-server/src/engine/core-modules/cache-storage/cache-storage.module-factory.ts
@@ -2,8 +2,8 @@ import { CacheModuleOptions } from '@nestjs/common';
import { redisStore } from 'cache-manager-redis-yet';
-import { CacheStorageType } from 'src/engine/integrations/cache-storage/types/cache-storage-type.enum';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { CacheStorageType } from 'src/engine/core-modules/cache-storage/types/cache-storage-type.enum';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
export const cacheStorageModuleFactory = (
environmentService: EnvironmentService,
diff --git a/packages/twenty-server/src/engine/integrations/cache-storage/cache-storage.module.ts b/packages/twenty-server/src/engine/core-modules/cache-storage/cache-storage.module.ts
similarity index 79%
rename from packages/twenty-server/src/engine/integrations/cache-storage/cache-storage.module.ts
rename to packages/twenty-server/src/engine/core-modules/cache-storage/cache-storage.module.ts
index b2af39062..2308379d0 100644
--- a/packages/twenty-server/src/engine/integrations/cache-storage/cache-storage.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/cache-storage/cache-storage.module.ts
@@ -2,10 +2,10 @@ import { Module, Global, Inject, OnModuleDestroy } from '@nestjs/common';
import { CacheModule, CACHE_MANAGER, Cache } from '@nestjs/cache-manager';
import { ConfigModule } from '@nestjs/config';
-import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { cacheStorageModuleFactory } from 'src/engine/integrations/cache-storage/cache-storage.module-factory';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
+import { CacheStorageService } from 'src/engine/core-modules/cache-storage/cache-storage.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { cacheStorageModuleFactory } from 'src/engine/core-modules/cache-storage/cache-storage.module-factory';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
@Global()
@Module({
diff --git a/packages/twenty-server/src/engine/integrations/cache-storage/cache-storage.service.ts b/packages/twenty-server/src/engine/core-modules/cache-storage/cache-storage.service.ts
similarity index 96%
rename from packages/twenty-server/src/engine/integrations/cache-storage/cache-storage.service.ts
rename to packages/twenty-server/src/engine/core-modules/cache-storage/cache-storage.service.ts
index 6f6bd3e1e..e5195c18a 100644
--- a/packages/twenty-server/src/engine/integrations/cache-storage/cache-storage.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/cache-storage/cache-storage.service.ts
@@ -3,7 +3,7 @@ import { CACHE_MANAGER, Cache } from '@nestjs/cache-manager';
import { RedisCache } from 'cache-manager-redis-yet';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
@Injectable()
export class CacheStorageService {
diff --git a/packages/twenty-server/src/engine/integrations/cache-storage/decorators/cache-storage.decorator.ts b/packages/twenty-server/src/engine/core-modules/cache-storage/decorators/cache-storage.decorator.ts
similarity index 78%
rename from packages/twenty-server/src/engine/integrations/cache-storage/decorators/cache-storage.decorator.ts
rename to packages/twenty-server/src/engine/core-modules/cache-storage/decorators/cache-storage.decorator.ts
index 4782059b2..0cd48cce3 100644
--- a/packages/twenty-server/src/engine/integrations/cache-storage/decorators/cache-storage.decorator.ts
+++ b/packages/twenty-server/src/engine/core-modules/cache-storage/decorators/cache-storage.decorator.ts
@@ -1,6 +1,6 @@
import { Inject } from '@nestjs/common';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
export const InjectCacheStorage = (
cacheStorageNamespace: CacheStorageNamespace,
diff --git a/packages/twenty-server/src/engine/integrations/cache-storage/types/cache-storage-namespace.enum.ts b/packages/twenty-server/src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/cache-storage/types/cache-storage-namespace.enum.ts
rename to packages/twenty-server/src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum.ts
diff --git a/packages/twenty-server/src/engine/integrations/cache-storage/types/cache-storage-type.enum.ts b/packages/twenty-server/src/engine/core-modules/cache-storage/types/cache-storage-type.enum.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/cache-storage/types/cache-storage-type.enum.ts
rename to packages/twenty-server/src/engine/core-modules/cache-storage/types/cache-storage-type.enum.ts
diff --git a/packages/twenty-server/src/engine/integrations/captcha/captcha.constants.ts b/packages/twenty-server/src/engine/core-modules/captcha/captcha.constants.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/captcha/captcha.constants.ts
rename to packages/twenty-server/src/engine/core-modules/captcha/captcha.constants.ts
diff --git a/packages/twenty-server/src/engine/integrations/captcha/captcha.guard.ts b/packages/twenty-server/src/engine/core-modules/captcha/captcha.guard.ts
similarity index 91%
rename from packages/twenty-server/src/engine/integrations/captcha/captcha.guard.ts
rename to packages/twenty-server/src/engine/core-modules/captcha/captcha.guard.ts
index 46bed4fbd..dc4513621 100644
--- a/packages/twenty-server/src/engine/integrations/captcha/captcha.guard.ts
+++ b/packages/twenty-server/src/engine/core-modules/captcha/captcha.guard.ts
@@ -6,7 +6,7 @@ import {
} from '@nestjs/common';
import { GqlExecutionContext } from '@nestjs/graphql';
-import { CaptchaService } from 'src/engine/integrations/captcha/captcha.service';
+import { CaptchaService } from 'src/engine/core-modules/captcha/captcha.service';
@Injectable()
export class CaptchaGuard implements CanActivate {
diff --git a/packages/twenty-server/src/engine/integrations/captcha/captcha.module-factory.ts b/packages/twenty-server/src/engine/core-modules/captcha/captcha.module-factory.ts
similarity index 85%
rename from packages/twenty-server/src/engine/integrations/captcha/captcha.module-factory.ts
rename to packages/twenty-server/src/engine/core-modules/captcha/captcha.module-factory.ts
index fc391f405..c6a1e4c23 100644
--- a/packages/twenty-server/src/engine/integrations/captcha/captcha.module-factory.ts
+++ b/packages/twenty-server/src/engine/core-modules/captcha/captcha.module-factory.ts
@@ -1,8 +1,8 @@
import {
CaptchaDriverOptions,
CaptchaModuleOptions,
-} from 'src/engine/integrations/captcha/interfaces';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+} from 'src/engine/core-modules/captcha/interfaces';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
export const captchaModuleFactory = (
environmentService: EnvironmentService,
diff --git a/packages/twenty-server/src/engine/integrations/captcha/captcha.module.ts b/packages/twenty-server/src/engine/core-modules/captcha/captcha.module.ts
similarity index 76%
rename from packages/twenty-server/src/engine/integrations/captcha/captcha.module.ts
rename to packages/twenty-server/src/engine/core-modules/captcha/captcha.module.ts
index 506e51f42..8c9dd1935 100644
--- a/packages/twenty-server/src/engine/integrations/captcha/captcha.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/captcha/captcha.module.ts
@@ -1,13 +1,13 @@
import { DynamicModule, Global } from '@nestjs/common';
-import { CAPTCHA_DRIVER } from 'src/engine/integrations/captcha/captcha.constants';
-import { CaptchaService } from 'src/engine/integrations/captcha/captcha.service';
-import { GoogleRecaptchaDriver } from 'src/engine/integrations/captcha/drivers/google-recaptcha.driver';
-import { TurnstileDriver } from 'src/engine/integrations/captcha/drivers/turnstile.driver';
+import { CAPTCHA_DRIVER } from 'src/engine/core-modules/captcha/captcha.constants';
+import { CaptchaService } from 'src/engine/core-modules/captcha/captcha.service';
+import { GoogleRecaptchaDriver } from 'src/engine/core-modules/captcha/drivers/google-recaptcha.driver';
+import { TurnstileDriver } from 'src/engine/core-modules/captcha/drivers/turnstile.driver';
import {
CaptchaDriverType,
CaptchaModuleAsyncOptions,
-} from 'src/engine/integrations/captcha/interfaces';
+} from 'src/engine/core-modules/captcha/interfaces';
@Global()
export class CaptchaModule {
diff --git a/packages/twenty-server/src/engine/integrations/captcha/captcha.service.ts b/packages/twenty-server/src/engine/core-modules/captcha/captcha.service.ts
similarity index 71%
rename from packages/twenty-server/src/engine/integrations/captcha/captcha.service.ts
rename to packages/twenty-server/src/engine/core-modules/captcha/captcha.service.ts
index 58af667e0..7a0c85e5d 100644
--- a/packages/twenty-server/src/engine/integrations/captcha/captcha.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/captcha/captcha.service.ts
@@ -1,9 +1,9 @@
import { Inject, Injectable } from '@nestjs/common';
-import { CaptchaDriver } from 'src/engine/integrations/captcha/drivers/interfaces/captcha-driver.interface';
+import { CaptchaDriver } from 'src/engine/core-modules/captcha/drivers/interfaces/captcha-driver.interface';
-import { CAPTCHA_DRIVER } from 'src/engine/integrations/captcha/captcha.constants';
-import { CaptchaValidateResult } from 'src/engine/integrations/captcha/interfaces';
+import { CAPTCHA_DRIVER } from 'src/engine/core-modules/captcha/captcha.constants';
+import { CaptchaValidateResult } from 'src/engine/core-modules/captcha/interfaces';
@Injectable()
export class CaptchaService implements CaptchaDriver {
diff --git a/packages/twenty-server/src/engine/integrations/captcha/drivers/google-recaptcha.driver.ts b/packages/twenty-server/src/engine/core-modules/captcha/drivers/google-recaptcha.driver.ts
similarity index 86%
rename from packages/twenty-server/src/engine/integrations/captcha/drivers/google-recaptcha.driver.ts
rename to packages/twenty-server/src/engine/core-modules/captcha/drivers/google-recaptcha.driver.ts
index 85b766124..008d8705b 100644
--- a/packages/twenty-server/src/engine/integrations/captcha/drivers/google-recaptcha.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/captcha/drivers/google-recaptcha.driver.ts
@@ -1,12 +1,12 @@
import axios, { AxiosInstance } from 'axios';
-import { CaptchaDriver } from 'src/engine/integrations/captcha/drivers/interfaces/captcha-driver.interface';
-import { CaptchaServerResponse } from 'src/engine/integrations/captcha/drivers/interfaces/captcha-server-response';
+import { CaptchaDriver } from 'src/engine/core-modules/captcha/drivers/interfaces/captcha-driver.interface';
+import { CaptchaServerResponse } from 'src/engine/core-modules/captcha/drivers/interfaces/captcha-server-response';
import {
CaptchaDriverOptions,
CaptchaValidateResult,
-} from 'src/engine/integrations/captcha/interfaces';
+} from 'src/engine/core-modules/captcha/interfaces';
export class GoogleRecaptchaDriver implements CaptchaDriver {
private readonly siteKey: string;
diff --git a/packages/twenty-server/src/engine/integrations/captcha/drivers/interfaces/captcha-driver.interface.ts b/packages/twenty-server/src/engine/core-modules/captcha/drivers/interfaces/captcha-driver.interface.ts
similarity index 64%
rename from packages/twenty-server/src/engine/integrations/captcha/drivers/interfaces/captcha-driver.interface.ts
rename to packages/twenty-server/src/engine/core-modules/captcha/drivers/interfaces/captcha-driver.interface.ts
index 532640a79..b40d6f973 100644
--- a/packages/twenty-server/src/engine/integrations/captcha/drivers/interfaces/captcha-driver.interface.ts
+++ b/packages/twenty-server/src/engine/core-modules/captcha/drivers/interfaces/captcha-driver.interface.ts
@@ -1,4 +1,4 @@
-import { CaptchaValidateResult } from 'src/engine/integrations/captcha/interfaces';
+import { CaptchaValidateResult } from 'src/engine/core-modules/captcha/interfaces';
export interface CaptchaDriver {
validate(token: string): Promise;
diff --git a/packages/twenty-server/src/engine/integrations/captcha/drivers/interfaces/captcha-server-response.ts b/packages/twenty-server/src/engine/core-modules/captcha/drivers/interfaces/captcha-server-response.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/captcha/drivers/interfaces/captcha-server-response.ts
rename to packages/twenty-server/src/engine/core-modules/captcha/drivers/interfaces/captcha-server-response.ts
diff --git a/packages/twenty-server/src/engine/integrations/captcha/drivers/turnstile.driver.ts b/packages/twenty-server/src/engine/core-modules/captcha/drivers/turnstile.driver.ts
similarity index 86%
rename from packages/twenty-server/src/engine/integrations/captcha/drivers/turnstile.driver.ts
rename to packages/twenty-server/src/engine/core-modules/captcha/drivers/turnstile.driver.ts
index 5dbe5d3e1..ff21d8f62 100644
--- a/packages/twenty-server/src/engine/integrations/captcha/drivers/turnstile.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/captcha/drivers/turnstile.driver.ts
@@ -1,12 +1,12 @@
import axios, { AxiosInstance } from 'axios';
-import { CaptchaDriver } from 'src/engine/integrations/captcha/drivers/interfaces/captcha-driver.interface';
-import { CaptchaServerResponse } from 'src/engine/integrations/captcha/drivers/interfaces/captcha-server-response';
+import { CaptchaDriver } from 'src/engine/core-modules/captcha/drivers/interfaces/captcha-driver.interface';
+import { CaptchaServerResponse } from 'src/engine/core-modules/captcha/drivers/interfaces/captcha-server-response';
import {
CaptchaDriverOptions,
CaptchaValidateResult,
-} from 'src/engine/integrations/captcha/interfaces';
+} from 'src/engine/core-modules/captcha/interfaces';
export class TurnstileDriver implements CaptchaDriver {
private readonly siteKey: string;
diff --git a/packages/twenty-server/src/engine/integrations/captcha/interfaces/captcha.interface.ts b/packages/twenty-server/src/engine/core-modules/captcha/interfaces/captcha.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/captcha/interfaces/captcha.interface.ts
rename to packages/twenty-server/src/engine/core-modules/captcha/interfaces/captcha.interface.ts
diff --git a/packages/twenty-server/src/engine/core-modules/captcha/interfaces/index.ts b/packages/twenty-server/src/engine/core-modules/captcha/interfaces/index.ts
new file mode 100644
index 000000000..27ebd3e56
--- /dev/null
+++ b/packages/twenty-server/src/engine/core-modules/captcha/interfaces/index.ts
@@ -0,0 +1 @@
+export * from 'src/engine/core-modules/captcha/interfaces/captcha.interface';
diff --git a/packages/twenty-server/src/engine/core-modules/client-config/client-config.entity.ts b/packages/twenty-server/src/engine/core-modules/client-config/client-config.entity.ts
index 478c89da0..eefb2509b 100644
--- a/packages/twenty-server/src/engine/core-modules/client-config/client-config.entity.ts
+++ b/packages/twenty-server/src/engine/core-modules/client-config/client-config.entity.ts
@@ -1,6 +1,6 @@
import { Field, ObjectType } from '@nestjs/graphql';
-import { CaptchaDriverType } from 'src/engine/integrations/captcha/interfaces';
+import { CaptchaDriverType } from 'src/engine/core-modules/captcha/interfaces';
@ObjectType()
class AuthProviders {
diff --git a/packages/twenty-server/src/engine/core-modules/client-config/client-config.resolver.spec.ts b/packages/twenty-server/src/engine/core-modules/client-config/client-config.resolver.spec.ts
index a723405b2..d1ecf6935 100644
--- a/packages/twenty-server/src/engine/core-modules/client-config/client-config.resolver.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/client-config/client-config.resolver.spec.ts
@@ -1,6 +1,6 @@
import { Test, TestingModule } from '@nestjs/testing';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { ClientConfigResolver } from './client-config.resolver';
diff --git a/packages/twenty-server/src/engine/core-modules/client-config/client-config.resolver.ts b/packages/twenty-server/src/engine/core-modules/client-config/client-config.resolver.ts
index c8222a341..54844671b 100644
--- a/packages/twenty-server/src/engine/core-modules/client-config/client-config.resolver.ts
+++ b/packages/twenty-server/src/engine/core-modules/client-config/client-config.resolver.ts
@@ -1,6 +1,6 @@
import { Resolver, Query } from '@nestjs/graphql';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { ClientConfig } from './client-config.entity';
diff --git a/packages/twenty-server/src/engine/core-modules/core-engine.module.ts b/packages/twenty-server/src/engine/core-modules/core-engine.module.ts
index 27312a151..501afd4cb 100644
--- a/packages/twenty-server/src/engine/core-modules/core-engine.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/core-engine.module.ts
@@ -1,4 +1,6 @@
import { Module } from '@nestjs/common';
+import { HttpAdapterHost } from '@nestjs/core';
+import { EventEmitterModule } from '@nestjs/event-emitter';
import { ActorModule } from 'src/engine/core-modules/actor/actor.module';
import { AISQLQueryModule } from 'src/engine/core-modules/ai-sql-query/ai-sql-query.module';
@@ -15,10 +17,32 @@ import { UserModule } from 'src/engine/core-modules/user/user.module';
import { WorkflowTriggerApiModule } from 'src/engine/core-modules/workflow/workflow-trigger-api.module';
import { WorkspaceModule } from 'src/engine/core-modules/workspace/workspace.module';
import { WorkspaceEventEmitterModule } from 'src/engine/workspace-event-emitter/workspace-event-emitter.module';
+import { EnvironmentModule } from 'src/engine/core-modules/environment/environment.module';
+import { FileStorageModule } from 'src/engine/core-modules/file-storage/file-storage.module';
+import { fileStorageModuleFactory } from 'src/engine/core-modules/file-storage/file-storage.module-factory';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { LoggerModule } from 'src/engine/core-modules/logger/logger.module';
+import { loggerModuleFactory } from 'src/engine/core-modules/logger/logger.module-factory';
+import { MessageQueueModule } from 'src/engine/core-modules/message-queue/message-queue.module';
+import { messageQueueModuleFactory } from 'src/engine/core-modules/message-queue/message-queue.module-factory';
+import { ExceptionHandlerModule } from 'src/engine/core-modules/exception-handler/exception-handler.module';
+import { exceptionHandlerModuleFactory } from 'src/engine/core-modules/exception-handler/exception-handler.module-factory';
+import { EmailModule } from 'src/engine/core-modules/email/email.module';
+import { emailModuleFactory } from 'src/engine/core-modules/email/email.module-factory';
+import { CaptchaModule } from 'src/engine/core-modules/captcha/captcha.module';
+import { captchaModuleFactory } from 'src/engine/core-modules/captcha/captcha.module-factory';
+import { CacheStorageModule } from 'src/engine/core-modules/cache-storage/cache-storage.module';
+import { LLMChatModelModule } from 'src/engine/core-modules/llm-chat-model/llm-chat-model.module';
+import { llmChatModelModuleFactory } from 'src/engine/core-modules/llm-chat-model/llm-chat-model.module-factory';
+import { LLMTracingModule } from 'src/engine/core-modules/llm-tracing/llm-tracing.module';
+import { llmTracingModuleFactory } from 'src/engine/core-modules/llm-tracing/llm-tracing.module-factory';
+import { ServerlessModule } from 'src/engine/core-modules/serverless/serverless.module';
+import { serverlessModuleFactory } from 'src/engine/core-modules/serverless/serverless-module.factory';
+import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
-import { AnalyticsModule } from './analytics/analytics.module';
-import { ClientConfigModule } from './client-config/client-config.module';
import { FileModule } from './file/file.module';
+import { ClientConfigModule } from './client-config/client-config.module';
+import { AnalyticsModule } from './analytics/analytics.module';
@Module({
imports: [
@@ -40,6 +64,47 @@ import { FileModule } from './file/file.module';
WorkflowTriggerApiModule,
WorkspaceEventEmitterModule,
ActorModule,
+ EnvironmentModule.forRoot({}),
+ FileStorageModule.forRootAsync({
+ useFactory: fileStorageModuleFactory,
+ inject: [EnvironmentService],
+ }),
+ LoggerModule.forRootAsync({
+ useFactory: loggerModuleFactory,
+ inject: [EnvironmentService],
+ }),
+ MessageQueueModule.registerAsync({
+ useFactory: messageQueueModuleFactory,
+ inject: [EnvironmentService],
+ }),
+ ExceptionHandlerModule.forRootAsync({
+ useFactory: exceptionHandlerModuleFactory,
+ inject: [EnvironmentService, HttpAdapterHost],
+ }),
+ EmailModule.forRoot({
+ useFactory: emailModuleFactory,
+ inject: [EnvironmentService],
+ }),
+ CaptchaModule.forRoot({
+ useFactory: captchaModuleFactory,
+ inject: [EnvironmentService],
+ }),
+ EventEmitterModule.forRoot({
+ wildcard: true,
+ }),
+ CacheStorageModule,
+ LLMChatModelModule.forRoot({
+ useFactory: llmChatModelModuleFactory,
+ inject: [EnvironmentService],
+ }),
+ LLMTracingModule.forRoot({
+ useFactory: llmTracingModuleFactory,
+ inject: [EnvironmentService],
+ }),
+ ServerlessModule.forRootAsync({
+ useFactory: serverlessModuleFactory,
+ inject: [EnvironmentService, FileStorageService],
+ }),
],
exports: [
AnalyticsModule,
diff --git a/packages/twenty-server/src/engine/integrations/email/drivers/interfaces/email-driver.interface.ts b/packages/twenty-server/src/engine/core-modules/email/drivers/interfaces/email-driver.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/email/drivers/interfaces/email-driver.interface.ts
rename to packages/twenty-server/src/engine/core-modules/email/drivers/interfaces/email-driver.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/email/drivers/logger.driver.ts b/packages/twenty-server/src/engine/core-modules/email/drivers/logger.driver.ts
similarity index 90%
rename from packages/twenty-server/src/engine/integrations/email/drivers/logger.driver.ts
rename to packages/twenty-server/src/engine/core-modules/email/drivers/logger.driver.ts
index a3138de0b..c8dd1e345 100644
--- a/packages/twenty-server/src/engine/integrations/email/drivers/logger.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/email/drivers/logger.driver.ts
@@ -2,7 +2,7 @@ import { Logger } from '@nestjs/common';
import { SendMailOptions } from 'nodemailer';
-import { EmailDriver } from 'src/engine/integrations/email/drivers/interfaces/email-driver.interface';
+import { EmailDriver } from 'src/engine/core-modules/email/drivers/interfaces/email-driver.interface';
export class LoggerDriver implements EmailDriver {
private readonly logger = new Logger(LoggerDriver.name);
diff --git a/packages/twenty-server/src/engine/integrations/email/drivers/smtp.driver.ts b/packages/twenty-server/src/engine/core-modules/email/drivers/smtp.driver.ts
similarity index 92%
rename from packages/twenty-server/src/engine/integrations/email/drivers/smtp.driver.ts
rename to packages/twenty-server/src/engine/core-modules/email/drivers/smtp.driver.ts
index 94445854e..5f325170e 100644
--- a/packages/twenty-server/src/engine/integrations/email/drivers/smtp.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/email/drivers/smtp.driver.ts
@@ -3,7 +3,7 @@ import { Logger } from '@nestjs/common';
import { createTransport, Transporter, SendMailOptions } from 'nodemailer';
import SMTPConnection from 'nodemailer/lib/smtp-connection';
-import { EmailDriver } from 'src/engine/integrations/email/drivers/interfaces/email-driver.interface';
+import { EmailDriver } from 'src/engine/core-modules/email/drivers/interfaces/email-driver.interface';
export class SmtpDriver implements EmailDriver {
private readonly logger = new Logger(SmtpDriver.name);
diff --git a/packages/twenty-server/src/engine/integrations/email/email-sender.job.ts b/packages/twenty-server/src/engine/core-modules/email/email-sender.job.ts
similarity index 63%
rename from packages/twenty-server/src/engine/integrations/email/email-sender.job.ts
rename to packages/twenty-server/src/engine/core-modules/email/email-sender.job.ts
index d97117d50..85203d80b 100644
--- a/packages/twenty-server/src/engine/integrations/email/email-sender.job.ts
+++ b/packages/twenty-server/src/engine/core-modules/email/email-sender.job.ts
@@ -1,9 +1,9 @@
import { SendMailOptions } from 'nodemailer';
-import { EmailSenderService } from 'src/engine/integrations/email/email-sender.service';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
+import { EmailSenderService } from 'src/engine/core-modules/email/email-sender.service';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
@Processor(MessageQueue.emailQueue)
export class EmailSenderJob {
diff --git a/packages/twenty-server/src/engine/integrations/email/email-sender.service.ts b/packages/twenty-server/src/engine/core-modules/email/email-sender.service.ts
similarity index 76%
rename from packages/twenty-server/src/engine/integrations/email/email-sender.service.ts
rename to packages/twenty-server/src/engine/core-modules/email/email-sender.service.ts
index 96ec2196f..05306fe54 100644
--- a/packages/twenty-server/src/engine/integrations/email/email-sender.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/email/email-sender.service.ts
@@ -2,9 +2,9 @@ import { Inject, Injectable } from '@nestjs/common';
import { SendMailOptions } from 'nodemailer';
-import { EmailDriver } from 'src/engine/integrations/email/drivers/interfaces/email-driver.interface';
+import { EmailDriver } from 'src/engine/core-modules/email/drivers/interfaces/email-driver.interface';
-import { EMAIL_DRIVER } from 'src/engine/integrations/email/email.constants';
+import { EMAIL_DRIVER } from 'src/engine/core-modules/email/email.constants';
@Injectable()
export class EmailSenderService implements EmailDriver {
diff --git a/packages/twenty-server/src/engine/integrations/email/email.constants.ts b/packages/twenty-server/src/engine/core-modules/email/email.constants.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/email/email.constants.ts
rename to packages/twenty-server/src/engine/core-modules/email/email.constants.ts
diff --git a/packages/twenty-server/src/engine/integrations/email/email.module-factory.ts b/packages/twenty-server/src/engine/core-modules/email/email.module-factory.ts
similarity index 89%
rename from packages/twenty-server/src/engine/integrations/email/email.module-factory.ts
rename to packages/twenty-server/src/engine/core-modules/email/email.module-factory.ts
index 870f30db2..447d857e8 100644
--- a/packages/twenty-server/src/engine/integrations/email/email.module-factory.ts
+++ b/packages/twenty-server/src/engine/core-modules/email/email.module-factory.ts
@@ -1,9 +1,9 @@
import {
EmailDriver,
EmailModuleOptions,
-} from 'src/engine/integrations/email/interfaces/email.interface';
+} from 'src/engine/core-modules/email/interfaces/email.interface';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
export const emailModuleFactory = (
environmentService: EnvironmentService,
diff --git a/packages/twenty-server/src/engine/integrations/email/email.module.ts b/packages/twenty-server/src/engine/core-modules/email/email.module.ts
similarity index 65%
rename from packages/twenty-server/src/engine/integrations/email/email.module.ts
rename to packages/twenty-server/src/engine/core-modules/email/email.module.ts
index f97c246ab..0a6b5c3a5 100644
--- a/packages/twenty-server/src/engine/integrations/email/email.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/email/email.module.ts
@@ -1,12 +1,12 @@
import { DynamicModule, Global } from '@nestjs/common';
-import { EmailModuleAsyncOptions } from 'src/engine/integrations/email/interfaces/email.interface';
+import { EmailModuleAsyncOptions } from 'src/engine/core-modules/email/interfaces/email.interface';
-import { EMAIL_DRIVER } from 'src/engine/integrations/email/email.constants';
-import { LoggerDriver } from 'src/engine/integrations/email/drivers/logger.driver';
-import { SmtpDriver } from 'src/engine/integrations/email/drivers/smtp.driver';
-import { EmailService } from 'src/engine/integrations/email/email.service';
-import { EmailSenderService } from 'src/engine/integrations/email/email-sender.service';
+import { EMAIL_DRIVER } from 'src/engine/core-modules/email/email.constants';
+import { LoggerDriver } from 'src/engine/core-modules/email/drivers/logger.driver';
+import { SmtpDriver } from 'src/engine/core-modules/email/drivers/smtp.driver';
+import { EmailService } from 'src/engine/core-modules/email/email.service';
+import { EmailSenderService } from 'src/engine/core-modules/email/email-sender.service';
@Global()
export class EmailModule {
diff --git a/packages/twenty-server/src/engine/integrations/email/email.service.ts b/packages/twenty-server/src/engine/core-modules/email/email.service.ts
similarity index 70%
rename from packages/twenty-server/src/engine/integrations/email/email.service.ts
rename to packages/twenty-server/src/engine/core-modules/email/email.service.ts
index 79217adb8..6aa24c1e6 100644
--- a/packages/twenty-server/src/engine/integrations/email/email.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/email/email.service.ts
@@ -2,10 +2,10 @@ import { Injectable } from '@nestjs/common';
import { SendMailOptions } from 'nodemailer';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
-import { EmailSenderJob } from 'src/engine/integrations/email/email-sender.job';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
+import { EmailSenderJob } from 'src/engine/core-modules/email/email-sender.job';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
@Injectable()
export class EmailService {
diff --git a/packages/twenty-server/src/engine/integrations/email/interfaces/email.interface.ts b/packages/twenty-server/src/engine/core-modules/email/interfaces/email.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/email/interfaces/email.interface.ts
rename to packages/twenty-server/src/engine/core-modules/email/interfaces/email.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/environment/decorators/__tests__/cast-to-log-level-array.decorator.spec.ts b/packages/twenty-server/src/engine/core-modules/environment/decorators/__tests__/cast-to-log-level-array.decorator.spec.ts
similarity index 96%
rename from packages/twenty-server/src/engine/integrations/environment/decorators/__tests__/cast-to-log-level-array.decorator.spec.ts
rename to packages/twenty-server/src/engine/core-modules/environment/decorators/__tests__/cast-to-log-level-array.decorator.spec.ts
index 43447e2de..a35e03676 100644
--- a/packages/twenty-server/src/engine/integrations/environment/decorators/__tests__/cast-to-log-level-array.decorator.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/environment/decorators/__tests__/cast-to-log-level-array.decorator.spec.ts
@@ -1,6 +1,6 @@
import { plainToClass } from 'class-transformer';
-import { CastToLogLevelArray } from 'src/engine/integrations/environment/decorators/cast-to-log-level-array.decorator';
+import { CastToLogLevelArray } from 'src/engine/core-modules/environment/decorators/cast-to-log-level-array.decorator';
class TestClass {
@CastToLogLevelArray()
diff --git a/packages/twenty-server/src/engine/integrations/environment/decorators/__tests__/cast-to-positive-number.decorator.spec.ts b/packages/twenty-server/src/engine/core-modules/environment/decorators/__tests__/cast-to-positive-number.decorator.spec.ts
similarity index 96%
rename from packages/twenty-server/src/engine/integrations/environment/decorators/__tests__/cast-to-positive-number.decorator.spec.ts
rename to packages/twenty-server/src/engine/core-modules/environment/decorators/__tests__/cast-to-positive-number.decorator.spec.ts
index f3f77fb4c..cf302e0fd 100644
--- a/packages/twenty-server/src/engine/integrations/environment/decorators/__tests__/cast-to-positive-number.decorator.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/environment/decorators/__tests__/cast-to-positive-number.decorator.spec.ts
@@ -1,6 +1,6 @@
import { plainToClass } from 'class-transformer';
-import { CastToPositiveNumber } from 'src/engine/integrations/environment/decorators/cast-to-positive-number.decorator';
+import { CastToPositiveNumber } from 'src/engine/core-modules/environment/decorators/cast-to-positive-number.decorator';
class TestClass {
@CastToPositiveNumber()
diff --git a/packages/twenty-server/src/engine/integrations/environment/decorators/cast-to-boolean.decorator.ts b/packages/twenty-server/src/engine/core-modules/environment/decorators/cast-to-boolean.decorator.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/environment/decorators/cast-to-boolean.decorator.ts
rename to packages/twenty-server/src/engine/core-modules/environment/decorators/cast-to-boolean.decorator.ts
diff --git a/packages/twenty-server/src/engine/integrations/environment/decorators/cast-to-log-level-array.decorator.ts b/packages/twenty-server/src/engine/core-modules/environment/decorators/cast-to-log-level-array.decorator.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/environment/decorators/cast-to-log-level-array.decorator.ts
rename to packages/twenty-server/src/engine/core-modules/environment/decorators/cast-to-log-level-array.decorator.ts
diff --git a/packages/twenty-server/src/engine/integrations/environment/decorators/cast-to-positive-number.decorator.ts b/packages/twenty-server/src/engine/core-modules/environment/decorators/cast-to-positive-number.decorator.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/environment/decorators/cast-to-positive-number.decorator.ts
rename to packages/twenty-server/src/engine/core-modules/environment/decorators/cast-to-positive-number.decorator.ts
diff --git a/packages/twenty-server/src/engine/integrations/environment/decorators/cast-to-string-array.decorator.ts b/packages/twenty-server/src/engine/core-modules/environment/decorators/cast-to-string-array.decorator.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/environment/decorators/cast-to-string-array.decorator.ts
rename to packages/twenty-server/src/engine/core-modules/environment/decorators/cast-to-string-array.decorator.ts
diff --git a/packages/twenty-server/src/engine/integrations/environment/decorators/is-aws-region.decorator.ts b/packages/twenty-server/src/engine/core-modules/environment/decorators/is-aws-region.decorator.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/environment/decorators/is-aws-region.decorator.ts
rename to packages/twenty-server/src/engine/core-modules/environment/decorators/is-aws-region.decorator.ts
diff --git a/packages/twenty-server/src/engine/integrations/environment/decorators/is-duration.decorator.ts b/packages/twenty-server/src/engine/core-modules/environment/decorators/is-duration.decorator.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/environment/decorators/is-duration.decorator.ts
rename to packages/twenty-server/src/engine/core-modules/environment/decorators/is-duration.decorator.ts
diff --git a/packages/twenty-server/src/engine/integrations/environment/decorators/is-strictly-lower-than.decorator.ts b/packages/twenty-server/src/engine/core-modules/environment/decorators/is-strictly-lower-than.decorator.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/environment/decorators/is-strictly-lower-than.decorator.ts
rename to packages/twenty-server/src/engine/core-modules/environment/decorators/is-strictly-lower-than.decorator.ts
diff --git a/packages/twenty-server/src/engine/integrations/environment/environment-variables.ts b/packages/twenty-server/src/engine/core-modules/environment/environment-variables.ts
similarity index 86%
rename from packages/twenty-server/src/engine/integrations/environment/environment-variables.ts
rename to packages/twenty-server/src/engine/core-modules/environment/environment-variables.ts
index ae8c304f7..c676f1539 100644
--- a/packages/twenty-server/src/engine/integrations/environment/environment-variables.ts
+++ b/packages/twenty-server/src/engine/core-modules/environment/environment-variables.ts
@@ -15,30 +15,29 @@ import {
validateSync,
} from 'class-validator';
-import { EmailDriver } from 'src/engine/integrations/email/interfaces/email.interface';
-import { NodeEnvironment } from 'src/engine/integrations/environment/interfaces/node-environment.interface';
-import { LLMChatModelDriver } from 'src/engine/integrations/llm-chat-model/interfaces/llm-chat-model.interface';
-import { LLMTracingDriver } from 'src/engine/integrations/llm-tracing/interfaces/llm-tracing.interface';
+import { EmailDriver } from 'src/engine/core-modules/email/interfaces/email.interface';
+import { NodeEnvironment } from 'src/engine/core-modules/environment/interfaces/node-environment.interface';
+import { LLMChatModelDriver } from 'src/engine/core-modules/llm-chat-model/interfaces/llm-chat-model.interface';
+import { LLMTracingDriver } from 'src/engine/core-modules/llm-tracing/interfaces/llm-tracing.interface';
+import { AwsRegion } from 'src/engine/core-modules/environment/interfaces/aws-region.interface';
+import { SupportDriver } from 'src/engine/core-modules/environment/interfaces/support.interface';
-import { CacheStorageType } from 'src/engine/integrations/cache-storage/types/cache-storage-type.enum';
-import { CaptchaDriverType } from 'src/engine/integrations/captcha/interfaces';
-import { CastToStringArray } from 'src/engine/integrations/environment/decorators/cast-to-string-array.decorator';
-import { IsStrictlyLowerThan } from 'src/engine/integrations/environment/decorators/is-strictly-lower-than.decorator';
-import { ExceptionHandlerDriver } from 'src/engine/integrations/exception-handler/interfaces';
-import { StorageDriverType } from 'src/engine/integrations/file-storage/interfaces';
-import { LoggerDriverType } from 'src/engine/integrations/logger/interfaces';
-import { MessageQueueDriverType } from 'src/engine/integrations/message-queue/interfaces';
-import { ServerlessDriverType } from 'src/engine/integrations/serverless/serverless.interface';
+import { IsDuration } from 'src/engine/core-modules/environment/decorators/is-duration.decorator';
+import { IsAWSRegion } from 'src/engine/core-modules/environment/decorators/is-aws-region.decorator';
+import { CastToPositiveNumber } from 'src/engine/core-modules/environment/decorators/cast-to-positive-number.decorator';
+import { CastToLogLevelArray } from 'src/engine/core-modules/environment/decorators/cast-to-log-level-array.decorator';
+import { CastToBoolean } from 'src/engine/core-modules/environment/decorators/cast-to-boolean.decorator';
+import { CacheStorageType } from 'src/engine/core-modules/cache-storage/types/cache-storage-type.enum';
+import { CaptchaDriverType } from 'src/engine/core-modules/captcha/interfaces';
+import { CastToStringArray } from 'src/engine/core-modules/environment/decorators/cast-to-string-array.decorator';
+import { IsStrictlyLowerThan } from 'src/engine/core-modules/environment/decorators/is-strictly-lower-than.decorator';
+import { ExceptionHandlerDriver } from 'src/engine/core-modules/exception-handler/interfaces';
+import { StorageDriverType } from 'src/engine/core-modules/file-storage/interfaces';
+import { LoggerDriverType } from 'src/engine/core-modules/logger/interfaces';
+import { MessageQueueDriverType } from 'src/engine/core-modules/message-queue/interfaces';
+import { ServerlessDriverType } from 'src/engine/core-modules/serverless/serverless.interface';
import { assert } from 'src/utils/assert';
-import { CastToBoolean } from './decorators/cast-to-boolean.decorator';
-import { CastToLogLevelArray } from './decorators/cast-to-log-level-array.decorator';
-import { CastToPositiveNumber } from './decorators/cast-to-positive-number.decorator';
-import { IsAWSRegion } from './decorators/is-aws-region.decorator';
-import { IsDuration } from './decorators/is-duration.decorator';
-import { AwsRegion } from './interfaces/aws-region.interface';
-import { SupportDriver } from './interfaces/support.interface';
-
export class EnvironmentVariables {
// Misc
@CastToBoolean()
diff --git a/packages/twenty-server/src/engine/integrations/environment/environment.module-definition.ts b/packages/twenty-server/src/engine/core-modules/environment/environment.module-definition.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/environment/environment.module-definition.ts
rename to packages/twenty-server/src/engine/core-modules/environment/environment.module-definition.ts
diff --git a/packages/twenty-server/src/engine/integrations/environment/environment.module.ts b/packages/twenty-server/src/engine/core-modules/environment/environment.module.ts
similarity index 56%
rename from packages/twenty-server/src/engine/integrations/environment/environment.module.ts
rename to packages/twenty-server/src/engine/core-modules/environment/environment.module.ts
index c42fd6ee9..a80214e7d 100644
--- a/packages/twenty-server/src/engine/integrations/environment/environment.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/environment/environment.module.ts
@@ -1,9 +1,9 @@
import { Global, Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
-import { EnvironmentService } from './environment.service';
-import { ConfigurableModuleClass } from './environment.module-definition';
-import { validate } from './environment-variables';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { ConfigurableModuleClass } from 'src/engine/core-modules/environment/environment.module-definition';
+import { validate } from 'src/engine/core-modules/environment/environment-variables';
@Global()
@Module({
diff --git a/packages/twenty-server/src/engine/integrations/environment/environment.service.spec.ts b/packages/twenty-server/src/engine/core-modules/environment/environment.service.spec.ts
similarity index 86%
rename from packages/twenty-server/src/engine/integrations/environment/environment.service.spec.ts
rename to packages/twenty-server/src/engine/core-modules/environment/environment.service.spec.ts
index 9b8c73742..49b35947d 100644
--- a/packages/twenty-server/src/engine/integrations/environment/environment.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/environment/environment.service.spec.ts
@@ -1,7 +1,7 @@
import { Test, TestingModule } from '@nestjs/testing';
import { ConfigService } from '@nestjs/config';
-import { EnvironmentService } from './environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
describe('EnvironmentService', () => {
let service: EnvironmentService;
diff --git a/packages/twenty-server/src/engine/integrations/environment/environment.service.ts b/packages/twenty-server/src/engine/core-modules/environment/environment.service.ts
similarity index 88%
rename from packages/twenty-server/src/engine/integrations/environment/environment.service.ts
rename to packages/twenty-server/src/engine/core-modules/environment/environment.service.ts
index 844024955..3860fdabd 100644
--- a/packages/twenty-server/src/engine/integrations/environment/environment.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/environment/environment.service.ts
@@ -2,7 +2,7 @@
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
-import { EnvironmentVariables } from 'src/engine/integrations/environment/environment-variables';
+import { EnvironmentVariables } from 'src/engine/core-modules/environment/environment-variables';
@Injectable()
export class EnvironmentService {
diff --git a/packages/twenty-server/src/engine/integrations/environment/interfaces/aws-region.interface.ts b/packages/twenty-server/src/engine/core-modules/environment/interfaces/aws-region.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/environment/interfaces/aws-region.interface.ts
rename to packages/twenty-server/src/engine/core-modules/environment/interfaces/aws-region.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/environment/interfaces/node-environment.interface.ts b/packages/twenty-server/src/engine/core-modules/environment/interfaces/node-environment.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/environment/interfaces/node-environment.interface.ts
rename to packages/twenty-server/src/engine/core-modules/environment/interfaces/node-environment.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/environment/interfaces/support.interface.ts b/packages/twenty-server/src/engine/core-modules/environment/interfaces/support.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/environment/interfaces/support.interface.ts
rename to packages/twenty-server/src/engine/core-modules/environment/interfaces/support.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/event-emitter/types/object-record-create.event.ts b/packages/twenty-server/src/engine/core-modules/event-emitter/types/object-record-create.event.ts
similarity index 70%
rename from packages/twenty-server/src/engine/integrations/event-emitter/types/object-record-create.event.ts
rename to packages/twenty-server/src/engine/core-modules/event-emitter/types/object-record-create.event.ts
index 0e3d6e22c..62221beaa 100644
--- a/packages/twenty-server/src/engine/integrations/event-emitter/types/object-record-create.event.ts
+++ b/packages/twenty-server/src/engine/core-modules/event-emitter/types/object-record-create.event.ts
@@ -1,4 +1,4 @@
-import { ObjectRecordBaseEvent } from 'src/engine/integrations/event-emitter/types/object-record.base.event';
+import { ObjectRecordBaseEvent } from 'src/engine/core-modules/event-emitter/types/object-record.base.event';
export class ObjectRecordCreateEvent extends ObjectRecordBaseEvent {
properties: {
diff --git a/packages/twenty-server/src/engine/integrations/event-emitter/types/object-record-delete.event.ts b/packages/twenty-server/src/engine/core-modules/event-emitter/types/object-record-delete.event.ts
similarity index 71%
rename from packages/twenty-server/src/engine/integrations/event-emitter/types/object-record-delete.event.ts
rename to packages/twenty-server/src/engine/core-modules/event-emitter/types/object-record-delete.event.ts
index 01e981bdc..644ab0658 100644
--- a/packages/twenty-server/src/engine/integrations/event-emitter/types/object-record-delete.event.ts
+++ b/packages/twenty-server/src/engine/core-modules/event-emitter/types/object-record-delete.event.ts
@@ -1,4 +1,4 @@
-import { ObjectRecordBaseEvent } from 'src/engine/integrations/event-emitter/types/object-record.base.event';
+import { ObjectRecordBaseEvent } from 'src/engine/core-modules/event-emitter/types/object-record.base.event';
export class ObjectRecordDeleteEvent extends ObjectRecordBaseEvent {
properties: {
diff --git a/packages/twenty-server/src/engine/integrations/event-emitter/types/object-record-update.event.ts b/packages/twenty-server/src/engine/core-modules/event-emitter/types/object-record-update.event.ts
similarity index 77%
rename from packages/twenty-server/src/engine/integrations/event-emitter/types/object-record-update.event.ts
rename to packages/twenty-server/src/engine/core-modules/event-emitter/types/object-record-update.event.ts
index aa4b59e72..66d9f2645 100644
--- a/packages/twenty-server/src/engine/integrations/event-emitter/types/object-record-update.event.ts
+++ b/packages/twenty-server/src/engine/core-modules/event-emitter/types/object-record-update.event.ts
@@ -1,4 +1,4 @@
-import { ObjectRecordBaseEvent } from 'src/engine/integrations/event-emitter/types/object-record.base.event';
+import { ObjectRecordBaseEvent } from 'src/engine/core-modules/event-emitter/types/object-record.base.event';
export class ObjectRecordUpdateEvent extends ObjectRecordBaseEvent {
properties: {
diff --git a/packages/twenty-server/src/engine/integrations/event-emitter/types/object-record.base.event.ts b/packages/twenty-server/src/engine/core-modules/event-emitter/types/object-record.base.event.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/event-emitter/types/object-record.base.event.ts
rename to packages/twenty-server/src/engine/core-modules/event-emitter/types/object-record.base.event.ts
diff --git a/packages/twenty-server/src/engine/integrations/event-emitter/utils/__tests__/object-record-changed-values.spec.ts b/packages/twenty-server/src/engine/core-modules/event-emitter/utils/__tests__/object-record-changed-values.spec.ts
similarity index 96%
rename from packages/twenty-server/src/engine/integrations/event-emitter/utils/__tests__/object-record-changed-values.spec.ts
rename to packages/twenty-server/src/engine/core-modules/event-emitter/utils/__tests__/object-record-changed-values.spec.ts
index 6772e1f87..c9c180669 100644
--- a/packages/twenty-server/src/engine/integrations/event-emitter/utils/__tests__/object-record-changed-values.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/event-emitter/utils/__tests__/object-record-changed-values.spec.ts
@@ -1,6 +1,6 @@
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
-import { objectRecordChangedValues } from 'src/engine/integrations/event-emitter/utils/object-record-changed-values';
+import { objectRecordChangedValues } from 'src/engine/core-modules/event-emitter/utils/object-record-changed-values';
const mockObjectMetadata: ObjectMetadataInterface = {
id: '1',
diff --git a/packages/twenty-server/src/engine/integrations/event-emitter/utils/object-record-changed-properties.util.ts b/packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-changed-properties.util.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/event-emitter/utils/object-record-changed-properties.util.ts
rename to packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-changed-properties.util.ts
diff --git a/packages/twenty-server/src/engine/integrations/event-emitter/utils/object-record-changed-values.ts b/packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-changed-values.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/event-emitter/utils/object-record-changed-values.ts
rename to packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-changed-values.ts
diff --git a/packages/twenty-server/src/engine/integrations/event-emitter/utils/object-record-diff-merge.ts b/packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-diff-merge.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/event-emitter/utils/object-record-diff-merge.ts
rename to packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-diff-merge.ts
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/__tests__/exception-handler.service.spec.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/__tests__/exception-handler.service.spec.ts
similarity index 83%
rename from packages/twenty-server/src/engine/integrations/exception-handler/__tests__/exception-handler.service.spec.ts
rename to packages/twenty-server/src/engine/core-modules/exception-handler/__tests__/exception-handler.service.spec.ts
index bae07ba64..5255347d5 100644
--- a/packages/twenty-server/src/engine/integrations/exception-handler/__tests__/exception-handler.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/exception-handler/__tests__/exception-handler.service.spec.ts
@@ -1,7 +1,7 @@
import { Test, TestingModule } from '@nestjs/testing';
-import { EXCEPTION_HANDLER_DRIVER } from 'src/engine/integrations/exception-handler/exception-handler.constants';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
+import { EXCEPTION_HANDLER_DRIVER } from 'src/engine/core-modules/exception-handler/exception-handler.constants';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
describe('ExceptionHandlerService', () => {
let service: ExceptionHandlerService;
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/drivers/console.driver.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/drivers/console.driver.ts
similarity index 74%
rename from packages/twenty-server/src/engine/integrations/exception-handler/drivers/console.driver.ts
rename to packages/twenty-server/src/engine/core-modules/exception-handler/drivers/console.driver.ts
index f77e02085..8f58ebf84 100644
--- a/packages/twenty-server/src/engine/integrations/exception-handler/drivers/console.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/exception-handler/drivers/console.driver.ts
@@ -1,8 +1,8 @@
/* eslint-disable no-console */
-import { ExceptionHandlerUser } from 'src/engine/integrations/exception-handler/interfaces/exception-handler-user.interface';
-import { ExceptionHandlerOptions } from 'src/engine/integrations/exception-handler/interfaces/exception-handler-options.interface';
+import { ExceptionHandlerUser } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-user.interface';
+import { ExceptionHandlerOptions } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-options.interface';
-import { ExceptionHandlerDriverInterface } from 'src/engine/integrations/exception-handler/interfaces';
+import { ExceptionHandlerDriverInterface } from 'src/engine/core-modules/exception-handler/interfaces';
export class ExceptionHandlerConsoleDriver
implements ExceptionHandlerDriverInterface
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/drivers/sentry.driver.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/drivers/sentry.driver.ts
similarity index 94%
rename from packages/twenty-server/src/engine/integrations/exception-handler/drivers/sentry.driver.ts
rename to packages/twenty-server/src/engine/core-modules/exception-handler/drivers/sentry.driver.ts
index 1ece102d3..6d252c361 100644
--- a/packages/twenty-server/src/engine/integrations/exception-handler/drivers/sentry.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/exception-handler/drivers/sentry.driver.ts
@@ -1,13 +1,13 @@
import * as Sentry from '@sentry/node';
import { ProfilingIntegration } from '@sentry/profiling-node';
-import { ExceptionHandlerUser } from 'src/engine/integrations/exception-handler/interfaces/exception-handler-user.interface';
-import { ExceptionHandlerOptions } from 'src/engine/integrations/exception-handler/interfaces/exception-handler-options.interface';
+import { ExceptionHandlerUser } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-user.interface';
+import { ExceptionHandlerOptions } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-options.interface';
import {
ExceptionHandlerDriverInterface,
ExceptionHandlerSentryDriverFactoryOptions,
-} from 'src/engine/integrations/exception-handler/interfaces';
+} from 'src/engine/core-modules/exception-handler/interfaces';
export class ExceptionHandlerSentryDriver
implements ExceptionHandlerDriverInterface
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.constants.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.constants.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.constants.ts
rename to packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.constants.ts
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.module-definition.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.module-definition.ts
similarity index 75%
rename from packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.module-definition.ts
rename to packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.module-definition.ts
index 2410d6616..fd0d3a1cc 100644
--- a/packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.module-definition.ts
+++ b/packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.module-definition.ts
@@ -1,6 +1,6 @@
import { ConfigurableModuleBuilder } from '@nestjs/common';
-import { ExceptionHandlerModuleOptions } from './interfaces';
+import { ExceptionHandlerModuleOptions } from 'src/engine/core-modules/exception-handler/interfaces';
export const {
ConfigurableModuleClass,
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.module-factory.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.module-factory.ts
similarity index 86%
rename from packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.module-factory.ts
rename to packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.module-factory.ts
index fed287d51..006eb4c6c 100644
--- a/packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.module-factory.ts
+++ b/packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.module-factory.ts
@@ -1,8 +1,8 @@
import { HttpAdapterHost } from '@nestjs/core';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { OPTIONS_TYPE } from 'src/engine/integrations/exception-handler/exception-handler.module-definition';
-import { ExceptionHandlerDriver } from 'src/engine/integrations/exception-handler/interfaces';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { OPTIONS_TYPE } from 'src/engine/core-modules/exception-handler/exception-handler.module-definition';
+import { ExceptionHandlerDriver } from 'src/engine/core-modules/exception-handler/interfaces';
/**
* ExceptionHandler Module factory
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.module.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.module.ts
similarity index 70%
rename from packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.module.ts
rename to packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.module.ts
index 8c4ae87a8..6760018bf 100644
--- a/packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.module.ts
@@ -1,16 +1,15 @@
import { DynamicModule, Global, Module } from '@nestjs/common';
-import { ExceptionHandlerSentryDriver } from 'src/engine/integrations/exception-handler/drivers/sentry.driver';
-import { ExceptionHandlerConsoleDriver } from 'src/engine/integrations/exception-handler/drivers/console.driver';
-
-import { ExceptionHandlerService } from './exception-handler.service';
-import { ExceptionHandlerDriver } from './interfaces';
-import { EXCEPTION_HANDLER_DRIVER } from './exception-handler.constants';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
+import { ExceptionHandlerDriver } from 'src/engine/core-modules/exception-handler/interfaces';
+import { EXCEPTION_HANDLER_DRIVER } from 'src/engine/core-modules/exception-handler/exception-handler.constants';
import {
ConfigurableModuleClass,
OPTIONS_TYPE,
ASYNC_OPTIONS_TYPE,
-} from './exception-handler.module-definition';
+} from 'src/engine/core-modules/exception-handler/exception-handler.module-definition';
+import { ExceptionHandlerConsoleDriver } from 'src/engine/core-modules/exception-handler/drivers/console.driver';
+import { ExceptionHandlerSentryDriver } from 'src/engine/core-modules/exception-handler/drivers/sentry.driver';
@Global()
@Module({
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.service.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.service.ts
similarity index 69%
rename from packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.service.ts
rename to packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.service.ts
index ac46ae346..a532587d7 100644
--- a/packages/twenty-server/src/engine/integrations/exception-handler/exception-handler.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/exception-handler/exception-handler.service.ts
@@ -1,9 +1,9 @@
import { Inject, Injectable } from '@nestjs/common';
-import { ExceptionHandlerOptions } from 'src/engine/integrations/exception-handler/interfaces/exception-handler-options.interface';
+import { ExceptionHandlerOptions } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-options.interface';
-import { ExceptionHandlerDriverInterface } from 'src/engine/integrations/exception-handler/interfaces';
-import { EXCEPTION_HANDLER_DRIVER } from 'src/engine/integrations/exception-handler/exception-handler.constants';
+import { ExceptionHandlerDriverInterface } from 'src/engine/core-modules/exception-handler/interfaces';
+import { EXCEPTION_HANDLER_DRIVER } from 'src/engine/core-modules/exception-handler/exception-handler.constants';
@Injectable()
export class ExceptionHandlerService {
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/hooks/use-sentry-tracing.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/hooks/use-sentry-tracing.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/exception-handler/hooks/use-sentry-tracing.ts
rename to packages/twenty-server/src/engine/core-modules/exception-handler/hooks/use-sentry-tracing.ts
diff --git a/packages/twenty-server/src/engine/core-modules/exception-handler/interfaces/exception-handler-driver.interface.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/interfaces/exception-handler-driver.interface.ts
new file mode 100644
index 000000000..361d867ff
--- /dev/null
+++ b/packages/twenty-server/src/engine/core-modules/exception-handler/interfaces/exception-handler-driver.interface.ts
@@ -0,0 +1,10 @@
+import { ExceptionHandlerOptions } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-options.interface';
+import { ExceptionHandlerUser } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-user.interface';
+
+export interface ExceptionHandlerDriverInterface {
+ captureExceptions(
+ exceptions: ReadonlyArray,
+ options?: ExceptionHandlerOptions,
+ ): string[];
+ captureMessage(message: string, user?: ExceptionHandlerUser): void;
+}
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/interfaces/exception-handler-options.interface.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/interfaces/exception-handler-options.interface.ts
similarity index 63%
rename from packages/twenty-server/src/engine/integrations/exception-handler/interfaces/exception-handler-options.interface.ts
rename to packages/twenty-server/src/engine/core-modules/exception-handler/interfaces/exception-handler-options.interface.ts
index f01c7e169..73dd468ac 100644
--- a/packages/twenty-server/src/engine/integrations/exception-handler/interfaces/exception-handler-options.interface.ts
+++ b/packages/twenty-server/src/engine/core-modules/exception-handler/interfaces/exception-handler-options.interface.ts
@@ -1,6 +1,6 @@
import { OperationTypeNode } from 'graphql';
-import { ExceptionHandlerUser } from './exception-handler-user.interface';
+import { ExceptionHandlerUser } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-user.interface';
export interface ExceptionHandlerOptions {
operation?: {
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/interfaces/exception-handler-user.interface.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/interfaces/exception-handler-user.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/exception-handler/interfaces/exception-handler-user.interface.ts
rename to packages/twenty-server/src/engine/core-modules/exception-handler/interfaces/exception-handler-user.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/interfaces/exception-handler.interface.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/interfaces/exception-handler.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/exception-handler/interfaces/exception-handler.interface.ts
rename to packages/twenty-server/src/engine/core-modules/exception-handler/interfaces/exception-handler.interface.ts
diff --git a/packages/twenty-server/src/engine/core-modules/exception-handler/interfaces/index.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/interfaces/index.ts
new file mode 100644
index 000000000..7ebf9f6c7
--- /dev/null
+++ b/packages/twenty-server/src/engine/core-modules/exception-handler/interfaces/index.ts
@@ -0,0 +1,2 @@
+export * from 'src/engine/core-modules/exception-handler/interfaces/exception-handler.interface';
+export * from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-driver.interface';
diff --git a/packages/twenty-server/src/engine/integrations/file-storage/__tests__/file-storage.service.spec.ts b/packages/twenty-server/src/engine/core-modules/file-storage/__tests__/file-storage.service.spec.ts
similarity index 82%
rename from packages/twenty-server/src/engine/integrations/file-storage/__tests__/file-storage.service.spec.ts
rename to packages/twenty-server/src/engine/core-modules/file-storage/__tests__/file-storage.service.spec.ts
index 4ef268cf6..21210726e 100644
--- a/packages/twenty-server/src/engine/integrations/file-storage/__tests__/file-storage.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/file-storage/__tests__/file-storage.service.spec.ts
@@ -1,7 +1,7 @@
import { Test, TestingModule } from '@nestjs/testing';
-import { STORAGE_DRIVER } from 'src/engine/integrations/file-storage/file-storage.constants';
-import { FileStorageService } from 'src/engine/integrations/file-storage/file-storage.service';
+import { STORAGE_DRIVER } from 'src/engine/core-modules/file-storage/file-storage.constants';
+import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
describe('FileStorageService', () => {
let service: FileStorageService;
diff --git a/packages/twenty-server/src/engine/integrations/file-storage/drivers/interfaces/storage-driver.interface.ts b/packages/twenty-server/src/engine/core-modules/file-storage/drivers/interfaces/storage-driver.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/file-storage/drivers/interfaces/storage-driver.interface.ts
rename to packages/twenty-server/src/engine/core-modules/file-storage/drivers/interfaces/storage-driver.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/file-storage/drivers/local.driver.ts b/packages/twenty-server/src/engine/core-modules/file-storage/drivers/local.driver.ts
similarity index 95%
rename from packages/twenty-server/src/engine/integrations/file-storage/drivers/local.driver.ts
rename to packages/twenty-server/src/engine/core-modules/file-storage/drivers/local.driver.ts
index fdfa3943a..3bbcc5493 100644
--- a/packages/twenty-server/src/engine/integrations/file-storage/drivers/local.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/file-storage/drivers/local.driver.ts
@@ -6,9 +6,8 @@ import { Readable } from 'stream';
import {
FileStorageException,
FileStorageExceptionCode,
-} from 'src/engine/integrations/file-storage/interfaces/file-storage-exception';
-
-import { StorageDriver } from './interfaces/storage-driver.interface';
+} from 'src/engine/core-modules/file-storage/interfaces/file-storage-exception';
+import { StorageDriver } from 'src/engine/core-modules/file-storage/drivers/interfaces/storage-driver.interface';
export interface LocalDriverOptions {
storagePath: string;
diff --git a/packages/twenty-server/src/engine/integrations/file-storage/drivers/s3.driver.ts b/packages/twenty-server/src/engine/core-modules/file-storage/drivers/s3.driver.ts
similarity index 97%
rename from packages/twenty-server/src/engine/integrations/file-storage/drivers/s3.driver.ts
rename to packages/twenty-server/src/engine/core-modules/file-storage/drivers/s3.driver.ts
index 4c4adb6bb..765ded5b0 100644
--- a/packages/twenty-server/src/engine/integrations/file-storage/drivers/s3.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/file-storage/drivers/s3.driver.ts
@@ -18,12 +18,11 @@ import {
import {
FileStorageException,
FileStorageExceptionCode,
-} from 'src/engine/integrations/file-storage/interfaces/file-storage-exception';
+} from 'src/engine/core-modules/file-storage/interfaces/file-storage-exception';
+import { StorageDriver } from 'src/engine/core-modules/file-storage/drivers/interfaces/storage-driver.interface';
import { isDefined } from 'src/utils/is-defined';
-import { StorageDriver } from './interfaces/storage-driver.interface';
-
export interface S3DriverOptions extends S3ClientConfig {
bucketName: string;
endpoint?: string;
diff --git a/packages/twenty-server/src/engine/integrations/file-storage/file-storage.constants.ts b/packages/twenty-server/src/engine/core-modules/file-storage/file-storage.constants.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/file-storage/file-storage.constants.ts
rename to packages/twenty-server/src/engine/core-modules/file-storage/file-storage.constants.ts
diff --git a/packages/twenty-server/src/engine/integrations/file-storage/file-storage.module-definition.ts b/packages/twenty-server/src/engine/core-modules/file-storage/file-storage.module-definition.ts
similarity index 76%
rename from packages/twenty-server/src/engine/integrations/file-storage/file-storage.module-definition.ts
rename to packages/twenty-server/src/engine/core-modules/file-storage/file-storage.module-definition.ts
index 2b81d2cdb..4d453abf4 100644
--- a/packages/twenty-server/src/engine/integrations/file-storage/file-storage.module-definition.ts
+++ b/packages/twenty-server/src/engine/core-modules/file-storage/file-storage.module-definition.ts
@@ -1,6 +1,6 @@
import { ConfigurableModuleBuilder } from '@nestjs/common';
-import { FileStorageModuleOptions } from './interfaces';
+import { FileStorageModuleOptions } from 'src/engine/core-modules/file-storage/interfaces';
export const {
ConfigurableModuleClass,
diff --git a/packages/twenty-server/src/engine/integrations/file-storage/file-storage.module-factory.ts b/packages/twenty-server/src/engine/core-modules/file-storage/file-storage.module-factory.ts
similarity index 93%
rename from packages/twenty-server/src/engine/integrations/file-storage/file-storage.module-factory.ts
rename to packages/twenty-server/src/engine/core-modules/file-storage/file-storage.module-factory.ts
index f28597500..1683645c6 100644
--- a/packages/twenty-server/src/engine/integrations/file-storage/file-storage.module-factory.ts
+++ b/packages/twenty-server/src/engine/core-modules/file-storage/file-storage.module-factory.ts
@@ -1,10 +1,10 @@
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import {
FileStorageModuleOptions,
StorageDriverType,
-} from 'src/engine/integrations/file-storage/interfaces';
+} from 'src/engine/core-modules/file-storage/interfaces';
import { resolveAbsolutePath } from 'src/utils/resolve-absolute-path';
/**
diff --git a/packages/twenty-server/src/engine/integrations/file-storage/file-storage.module.ts b/packages/twenty-server/src/engine/core-modules/file-storage/file-storage.module.ts
similarity index 73%
rename from packages/twenty-server/src/engine/integrations/file-storage/file-storage.module.ts
rename to packages/twenty-server/src/engine/core-modules/file-storage/file-storage.module.ts
index d1f0f64de..7c8a5e683 100644
--- a/packages/twenty-server/src/engine/integrations/file-storage/file-storage.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/file-storage/file-storage.module.ts
@@ -1,14 +1,13 @@
import { DynamicModule, Global } from '@nestjs/common';
-import { FileStorageService } from './file-storage.service';
+import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
import {
FileStorageModuleAsyncOptions,
FileStorageModuleOptions,
-} from './interfaces';
-import { STORAGE_DRIVER } from './file-storage.constants';
-
-import { LocalDriver } from './drivers/local.driver';
-import { S3Driver } from './drivers/s3.driver';
+} from 'src/engine/core-modules/file-storage/interfaces';
+import { STORAGE_DRIVER } from 'src/engine/core-modules/file-storage/file-storage.constants';
+import { LocalDriver } from 'src/engine/core-modules/file-storage/drivers/local.driver';
+import { S3Driver } from 'src/engine/core-modules/file-storage/drivers/s3.driver';
@Global()
export class FileStorageModule {
diff --git a/packages/twenty-server/src/engine/integrations/file-storage/file-storage.service.ts b/packages/twenty-server/src/engine/core-modules/file-storage/file-storage.service.ts
similarity index 83%
rename from packages/twenty-server/src/engine/integrations/file-storage/file-storage.service.ts
rename to packages/twenty-server/src/engine/core-modules/file-storage/file-storage.service.ts
index a6eeb6c20..f23822b8a 100644
--- a/packages/twenty-server/src/engine/integrations/file-storage/file-storage.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/file-storage/file-storage.service.ts
@@ -2,9 +2,9 @@ import { Inject, Injectable } from '@nestjs/common';
import { Readable } from 'stream';
-import { STORAGE_DRIVER } from './file-storage.constants';
+import { StorageDriver } from 'src/engine/core-modules/file-storage/drivers/interfaces/storage-driver.interface';
-import { StorageDriver } from './drivers/interfaces/storage-driver.interface';
+import { STORAGE_DRIVER } from 'src/engine/core-modules/file-storage/file-storage.constants';
@Injectable()
export class FileStorageService implements StorageDriver {
diff --git a/packages/twenty-server/src/engine/integrations/file-storage/interfaces/file-storage-exception.ts b/packages/twenty-server/src/engine/core-modules/file-storage/interfaces/file-storage-exception.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/file-storage/interfaces/file-storage-exception.ts
rename to packages/twenty-server/src/engine/core-modules/file-storage/interfaces/file-storage-exception.ts
diff --git a/packages/twenty-server/src/engine/integrations/file-storage/interfaces/file-storage.interface.ts b/packages/twenty-server/src/engine/core-modules/file-storage/interfaces/file-storage.interface.ts
similarity index 85%
rename from packages/twenty-server/src/engine/integrations/file-storage/interfaces/file-storage.interface.ts
rename to packages/twenty-server/src/engine/core-modules/file-storage/interfaces/file-storage.interface.ts
index 9d85a83ec..cff95d736 100644
--- a/packages/twenty-server/src/engine/integrations/file-storage/interfaces/file-storage.interface.ts
+++ b/packages/twenty-server/src/engine/core-modules/file-storage/interfaces/file-storage.interface.ts
@@ -1,7 +1,7 @@
import { FactoryProvider, ModuleMetadata } from '@nestjs/common';
-import { S3DriverOptions } from 'src/engine/integrations/file-storage/drivers/s3.driver';
-import { LocalDriverOptions } from 'src/engine/integrations/file-storage/drivers/local.driver';
+import { S3DriverOptions } from 'src/engine/core-modules/file-storage/drivers/s3.driver';
+import { LocalDriverOptions } from 'src/engine/core-modules/file-storage/drivers/local.driver';
export enum StorageDriverType {
S3 = 's3',
diff --git a/packages/twenty-server/src/engine/core-modules/file-storage/interfaces/index.ts b/packages/twenty-server/src/engine/core-modules/file-storage/interfaces/index.ts
new file mode 100644
index 000000000..4ab4d7061
--- /dev/null
+++ b/packages/twenty-server/src/engine/core-modules/file-storage/interfaces/index.ts
@@ -0,0 +1 @@
+export * from 'src/engine/core-modules/file-storage/interfaces/file-storage.interface';
diff --git a/packages/twenty-server/src/engine/integrations/file-storage/utils/read-file-content.ts b/packages/twenty-server/src/engine/core-modules/file-storage/utils/read-file-content.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/file-storage/utils/read-file-content.ts
rename to packages/twenty-server/src/engine/core-modules/file-storage/utils/read-file-content.ts
diff --git a/packages/twenty-server/src/engine/core-modules/file/controllers/file.controller.ts b/packages/twenty-server/src/engine/core-modules/file/controllers/file.controller.ts
index 2124c2b17..967df3119 100644
--- a/packages/twenty-server/src/engine/core-modules/file/controllers/file.controller.ts
+++ b/packages/twenty-server/src/engine/core-modules/file/controllers/file.controller.ts
@@ -5,7 +5,7 @@ import { Response } from 'express';
import {
FileStorageException,
FileStorageExceptionCode,
-} from 'src/engine/integrations/file-storage/interfaces/file-storage-exception';
+} from 'src/engine/core-modules/file-storage/interfaces/file-storage-exception';
import {
checkFilePath,
diff --git a/packages/twenty-server/src/engine/core-modules/file/file-upload/file-upload.module.ts b/packages/twenty-server/src/engine/core-modules/file/file-upload/file-upload.module.ts
index d33c45f7a..d0de77e23 100644
--- a/packages/twenty-server/src/engine/core-modules/file/file-upload/file-upload.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/file/file-upload/file-upload.module.ts
@@ -3,7 +3,7 @@ import { Module } from '@nestjs/common';
import { FileUploadResolver } from 'src/engine/core-modules/file/file-upload/resolvers/file-upload.resolver';
import { FileUploadService } from 'src/engine/core-modules/file/file-upload/services/file-upload.service';
import { FileModule } from 'src/engine/core-modules/file/file.module';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
@Module({
imports: [FileModule],
diff --git a/packages/twenty-server/src/engine/core-modules/file/file-upload/services/file-upload.service.ts b/packages/twenty-server/src/engine/core-modules/file/file-upload/services/file-upload.service.ts
index e408178e8..80cd2ffd9 100644
--- a/packages/twenty-server/src/engine/core-modules/file/file-upload/services/file-upload.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/file/file-upload/services/file-upload.service.ts
@@ -9,7 +9,7 @@ import { FileFolder } from 'src/engine/core-modules/file/interfaces/file-folder.
import { settings } from 'src/engine/constants/settings';
import { FileService } from 'src/engine/core-modules/file/services/file.service';
-import { FileStorageService } from 'src/engine/integrations/file-storage/file-storage.service';
+import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
import { getCropSize } from 'src/utils/image';
@Injectable()
diff --git a/packages/twenty-server/src/engine/core-modules/file/file.module.ts b/packages/twenty-server/src/engine/core-modules/file/file.module.ts
index c7d4c838c..73afa1559 100644
--- a/packages/twenty-server/src/engine/core-modules/file/file.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/file/file.module.ts
@@ -2,7 +2,7 @@ import { Module } from '@nestjs/common';
import { FilePathGuard } from 'src/engine/core-modules/file/guards/file-path-guard';
import { JwtModule } from 'src/engine/core-modules/jwt/jwt.module';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { FileController } from './controllers/file.controller';
import { FileService } from './services/file.service';
diff --git a/packages/twenty-server/src/engine/core-modules/file/guards/file-path-guard.ts b/packages/twenty-server/src/engine/core-modules/file/guards/file-path-guard.ts
index db9f466c5..890d060dd 100644
--- a/packages/twenty-server/src/engine/core-modules/file/guards/file-path-guard.ts
+++ b/packages/twenty-server/src/engine/core-modules/file/guards/file-path-guard.ts
@@ -7,7 +7,7 @@ import {
} from '@nestjs/common';
import { JwtWrapperService } from 'src/engine/core-modules/jwt/services/jwt-wrapper.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
@Injectable()
export class FilePathGuard implements CanActivate {
diff --git a/packages/twenty-server/src/engine/core-modules/file/services/file.service.spec.ts b/packages/twenty-server/src/engine/core-modules/file/services/file.service.spec.ts
index 3a6570000..ecc5ee5fa 100644
--- a/packages/twenty-server/src/engine/core-modules/file/services/file.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/file/services/file.service.spec.ts
@@ -1,8 +1,8 @@
import { Test, TestingModule } from '@nestjs/testing';
import { JwtWrapperService } from 'src/engine/core-modules/jwt/services/jwt-wrapper.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { FileStorageService } from 'src/engine/integrations/file-storage/file-storage.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
import { FileService } from './file.service';
diff --git a/packages/twenty-server/src/engine/core-modules/file/services/file.service.ts b/packages/twenty-server/src/engine/core-modules/file/services/file.service.ts
index d56d769f9..a1c59e700 100644
--- a/packages/twenty-server/src/engine/core-modules/file/services/file.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/file/services/file.service.ts
@@ -6,8 +6,8 @@ import { addMilliseconds } from 'date-fns';
import ms from 'ms';
import { JwtWrapperService } from 'src/engine/core-modules/jwt/services/jwt-wrapper.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { FileStorageService } from 'src/engine/integrations/file-storage/file-storage.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
@Injectable()
export class FileService {
diff --git a/packages/twenty-server/src/engine/core-modules/graphql/engine-graphql.module.ts b/packages/twenty-server/src/engine/core-modules/graphql/engine-graphql.module.ts
index ae592e22c..0df672199 100644
--- a/packages/twenty-server/src/engine/core-modules/graphql/engine-graphql.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/graphql/engine-graphql.module.ts
@@ -1,7 +1,7 @@
import { Module } from '@nestjs/common';
import { useGraphQLErrorHandlerHook } from 'src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook';
-import { ExceptionHandlerModule } from 'src/engine/integrations/exception-handler/exception-handler.module';
+import { ExceptionHandlerModule } from 'src/engine/core-modules/exception-handler/exception-handler.module';
@Module({
imports: [ExceptionHandlerModule],
diff --git a/packages/twenty-server/src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook.ts b/packages/twenty-server/src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook.ts
index 9785cde8a..ff466d3f3 100644
--- a/packages/twenty-server/src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook.ts
+++ b/packages/twenty-server/src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook.ts
@@ -11,7 +11,7 @@ import { GraphQLContext } from 'src/engine/api/graphql/graphql-config/interfaces
import { generateGraphQLErrorFromError } from 'src/engine/core-modules/graphql/utils/generate-graphql-error-from-error.util';
import { BaseGraphQLError } from 'src/engine/core-modules/graphql/utils/graphql-errors.util';
import { shouldCaptureException } from 'src/engine/core-modules/graphql/utils/should-capture-exception.util';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
type GraphQLErrorHandlerHookOptions = {
/**
diff --git a/packages/twenty-server/src/engine/core-modules/jwt/jwt.module.ts b/packages/twenty-server/src/engine/core-modules/jwt/jwt.module.ts
index 6acbd76a0..306f1640e 100644
--- a/packages/twenty-server/src/engine/core-modules/jwt/jwt.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/jwt/jwt.module.ts
@@ -3,8 +3,8 @@ import { Module } from '@nestjs/common';
import { JwtModule as NestJwtModule } from '@nestjs/jwt';
import { JwtWrapperService } from 'src/engine/core-modules/jwt/services/jwt-wrapper.service';
-import { EnvironmentModule } from 'src/engine/integrations/environment/environment.module';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentModule } from 'src/engine/core-modules/environment/environment.module';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
const InternalJwtModule = NestJwtModule.registerAsync({
useFactory: async (environmentService: EnvironmentService) => {
diff --git a/packages/twenty-server/src/engine/integrations/llm-chat-model/drivers/interfaces/llm-prompt-template-driver.interface.ts b/packages/twenty-server/src/engine/core-modules/llm-chat-model/drivers/interfaces/llm-prompt-template-driver.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/llm-chat-model/drivers/interfaces/llm-prompt-template-driver.interface.ts
rename to packages/twenty-server/src/engine/core-modules/llm-chat-model/drivers/interfaces/llm-prompt-template-driver.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/llm-chat-model/drivers/openai.driver.ts b/packages/twenty-server/src/engine/core-modules/llm-chat-model/drivers/openai.driver.ts
similarity index 89%
rename from packages/twenty-server/src/engine/integrations/llm-chat-model/drivers/openai.driver.ts
rename to packages/twenty-server/src/engine/core-modules/llm-chat-model/drivers/openai.driver.ts
index 652a854ef..d1510b44d 100644
--- a/packages/twenty-server/src/engine/integrations/llm-chat-model/drivers/openai.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/llm-chat-model/drivers/openai.driver.ts
@@ -1,7 +1,7 @@
import { BaseChatModel } from '@langchain/core/language_models/chat_models';
import { ChatOpenAI } from '@langchain/openai';
-import { LLMChatModelDriver } from 'src/engine/integrations/llm-chat-model/drivers/interfaces/llm-prompt-template-driver.interface';
+import { LLMChatModelDriver } from 'src/engine/core-modules/llm-chat-model/drivers/interfaces/llm-prompt-template-driver.interface';
export class OpenAIDriver implements LLMChatModelDriver {
private chatModel: BaseChatModel;
diff --git a/packages/twenty-server/src/engine/integrations/llm-chat-model/interfaces/llm-chat-model.interface.ts b/packages/twenty-server/src/engine/core-modules/llm-chat-model/interfaces/llm-chat-model.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/llm-chat-model/interfaces/llm-chat-model.interface.ts
rename to packages/twenty-server/src/engine/core-modules/llm-chat-model/interfaces/llm-chat-model.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/llm-chat-model/llm-chat-model.constants.ts b/packages/twenty-server/src/engine/core-modules/llm-chat-model/llm-chat-model.constants.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/llm-chat-model/llm-chat-model.constants.ts
rename to packages/twenty-server/src/engine/core-modules/llm-chat-model/llm-chat-model.constants.ts
diff --git a/packages/twenty-server/src/engine/integrations/llm-chat-model/llm-chat-model.module-factory.ts b/packages/twenty-server/src/engine/core-modules/llm-chat-model/llm-chat-model.module-factory.ts
similarity index 76%
rename from packages/twenty-server/src/engine/integrations/llm-chat-model/llm-chat-model.module-factory.ts
rename to packages/twenty-server/src/engine/core-modules/llm-chat-model/llm-chat-model.module-factory.ts
index 2d91f280c..e0ea03e54 100644
--- a/packages/twenty-server/src/engine/integrations/llm-chat-model/llm-chat-model.module-factory.ts
+++ b/packages/twenty-server/src/engine/core-modules/llm-chat-model/llm-chat-model.module-factory.ts
@@ -1,6 +1,6 @@
-import { LLMChatModelDriver } from 'src/engine/integrations/llm-chat-model/interfaces/llm-chat-model.interface';
+import { LLMChatModelDriver } from 'src/engine/core-modules/llm-chat-model/interfaces/llm-chat-model.interface';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
export const llmChatModelModuleFactory = (
environmentService: EnvironmentService,
diff --git a/packages/twenty-server/src/engine/integrations/llm-chat-model/llm-chat-model.module.ts b/packages/twenty-server/src/engine/core-modules/llm-chat-model/llm-chat-model.module.ts
similarity index 77%
rename from packages/twenty-server/src/engine/integrations/llm-chat-model/llm-chat-model.module.ts
rename to packages/twenty-server/src/engine/core-modules/llm-chat-model/llm-chat-model.module.ts
index 279993f72..518c3389a 100644
--- a/packages/twenty-server/src/engine/integrations/llm-chat-model/llm-chat-model.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/llm-chat-model/llm-chat-model.module.ts
@@ -3,11 +3,11 @@ import { DynamicModule, Global } from '@nestjs/common';
import {
LLMChatModelDriver,
LLMChatModelModuleAsyncOptions,
-} from 'src/engine/integrations/llm-chat-model/interfaces/llm-chat-model.interface';
+} from 'src/engine/core-modules/llm-chat-model/interfaces/llm-chat-model.interface';
-import { LLM_CHAT_MODEL_DRIVER } from 'src/engine/integrations/llm-chat-model/llm-chat-model.constants';
-import { OpenAIDriver } from 'src/engine/integrations/llm-chat-model/drivers/openai.driver';
-import { LLMChatModelService } from 'src/engine/integrations/llm-chat-model/llm-chat-model.service';
+import { LLM_CHAT_MODEL_DRIVER } from 'src/engine/core-modules/llm-chat-model/llm-chat-model.constants';
+import { OpenAIDriver } from 'src/engine/core-modules/llm-chat-model/drivers/openai.driver';
+import { LLMChatModelService } from 'src/engine/core-modules/llm-chat-model/llm-chat-model.service';
@Global()
export class LLMChatModelModule {
diff --git a/packages/twenty-server/src/engine/integrations/llm-chat-model/llm-chat-model.service.ts b/packages/twenty-server/src/engine/core-modules/llm-chat-model/llm-chat-model.service.ts
similarity index 74%
rename from packages/twenty-server/src/engine/integrations/llm-chat-model/llm-chat-model.service.ts
rename to packages/twenty-server/src/engine/core-modules/llm-chat-model/llm-chat-model.service.ts
index 62beea8c6..9a98eeb3c 100644
--- a/packages/twenty-server/src/engine/integrations/llm-chat-model/llm-chat-model.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/llm-chat-model/llm-chat-model.service.ts
@@ -1,8 +1,8 @@
import { Injectable, Inject } from '@nestjs/common';
-import { LLMChatModelDriver } from 'src/engine/integrations/llm-chat-model/drivers/interfaces/llm-prompt-template-driver.interface';
+import { LLMChatModelDriver } from 'src/engine/core-modules/llm-chat-model/drivers/interfaces/llm-prompt-template-driver.interface';
-import { LLM_CHAT_MODEL_DRIVER } from 'src/engine/integrations/llm-chat-model/llm-chat-model.constants';
+import { LLM_CHAT_MODEL_DRIVER } from 'src/engine/core-modules/llm-chat-model/llm-chat-model.constants';
@Injectable()
export class LLMChatModelService {
diff --git a/packages/twenty-server/src/engine/integrations/llm-tracing/drivers/console.driver.ts b/packages/twenty-server/src/engine/core-modules/llm-tracing/drivers/console.driver.ts
similarity index 92%
rename from packages/twenty-server/src/engine/integrations/llm-tracing/drivers/console.driver.ts
rename to packages/twenty-server/src/engine/core-modules/llm-tracing/drivers/console.driver.ts
index 6c1ae4015..754df2586 100644
--- a/packages/twenty-server/src/engine/integrations/llm-tracing/drivers/console.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/llm-tracing/drivers/console.driver.ts
@@ -3,7 +3,7 @@ import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
import { Run } from '@langchain/core/tracers/base';
import { ConsoleCallbackHandler } from '@langchain/core/tracers/console';
-import { LLMTracingDriver } from 'src/engine/integrations/llm-tracing/drivers/interfaces/llm-tracing-driver.interface';
+import { LLMTracingDriver } from 'src/engine/core-modules/llm-tracing/drivers/interfaces/llm-tracing-driver.interface';
class WithMetadataConsoleCallbackHandler extends ConsoleCallbackHandler {
private metadata: Record;
diff --git a/packages/twenty-server/src/engine/integrations/llm-tracing/drivers/interfaces/llm-tracing-driver.interface.ts b/packages/twenty-server/src/engine/core-modules/llm-tracing/drivers/interfaces/llm-tracing-driver.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/llm-tracing/drivers/interfaces/llm-tracing-driver.interface.ts
rename to packages/twenty-server/src/engine/core-modules/llm-tracing/drivers/interfaces/llm-tracing-driver.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/llm-tracing/drivers/langfuse.driver.ts b/packages/twenty-server/src/engine/core-modules/llm-tracing/drivers/langfuse.driver.ts
similarity index 91%
rename from packages/twenty-server/src/engine/integrations/llm-tracing/drivers/langfuse.driver.ts
rename to packages/twenty-server/src/engine/core-modules/llm-tracing/drivers/langfuse.driver.ts
index b9b84aad0..3d44ba970 100644
--- a/packages/twenty-server/src/engine/integrations/llm-tracing/drivers/langfuse.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/llm-tracing/drivers/langfuse.driver.ts
@@ -1,7 +1,7 @@
import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
import CallbackHandler from 'langfuse-langchain';
-import { LLMTracingDriver } from 'src/engine/integrations/llm-tracing/drivers/interfaces/llm-tracing-driver.interface';
+import { LLMTracingDriver } from 'src/engine/core-modules/llm-tracing/drivers/interfaces/llm-tracing-driver.interface';
export interface LangfuseDriverOptions {
secretKey: string;
diff --git a/packages/twenty-server/src/engine/integrations/llm-tracing/interfaces/llm-tracing.interface.ts b/packages/twenty-server/src/engine/core-modules/llm-tracing/interfaces/llm-tracing.interface.ts
similarity index 91%
rename from packages/twenty-server/src/engine/integrations/llm-tracing/interfaces/llm-tracing.interface.ts
rename to packages/twenty-server/src/engine/core-modules/llm-tracing/interfaces/llm-tracing.interface.ts
index a97031499..99dcdbd15 100644
--- a/packages/twenty-server/src/engine/integrations/llm-tracing/interfaces/llm-tracing.interface.ts
+++ b/packages/twenty-server/src/engine/core-modules/llm-tracing/interfaces/llm-tracing.interface.ts
@@ -1,6 +1,6 @@
import { ModuleMetadata, FactoryProvider } from '@nestjs/common';
-import { LangfuseDriverOptions } from 'src/engine/integrations/llm-tracing/drivers/langfuse.driver';
+import { LangfuseDriverOptions } from 'src/engine/core-modules/llm-tracing/drivers/langfuse.driver';
export enum LLMTracingDriver {
Langfuse = 'langfuse',
diff --git a/packages/twenty-server/src/engine/integrations/llm-tracing/llm-tracing.constants.ts b/packages/twenty-server/src/engine/core-modules/llm-tracing/llm-tracing.constants.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/llm-tracing/llm-tracing.constants.ts
rename to packages/twenty-server/src/engine/core-modules/llm-tracing/llm-tracing.constants.ts
diff --git a/packages/twenty-server/src/engine/integrations/llm-tracing/llm-tracing.module-factory.ts b/packages/twenty-server/src/engine/core-modules/llm-tracing/llm-tracing.module-factory.ts
similarity index 88%
rename from packages/twenty-server/src/engine/integrations/llm-tracing/llm-tracing.module-factory.ts
rename to packages/twenty-server/src/engine/core-modules/llm-tracing/llm-tracing.module-factory.ts
index 754158e2a..94abe251e 100644
--- a/packages/twenty-server/src/engine/integrations/llm-tracing/llm-tracing.module-factory.ts
+++ b/packages/twenty-server/src/engine/core-modules/llm-tracing/llm-tracing.module-factory.ts
@@ -1,6 +1,6 @@
-import { LLMTracingDriver } from 'src/engine/integrations/llm-tracing/interfaces/llm-tracing.interface';
+import { LLMTracingDriver } from 'src/engine/core-modules/llm-tracing/interfaces/llm-tracing.interface';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
export const llmTracingModuleFactory = (
environmentService: EnvironmentService,
diff --git a/packages/twenty-server/src/engine/integrations/llm-tracing/llm-tracing.module.ts b/packages/twenty-server/src/engine/core-modules/llm-tracing/llm-tracing.module.ts
similarity index 75%
rename from packages/twenty-server/src/engine/integrations/llm-tracing/llm-tracing.module.ts
rename to packages/twenty-server/src/engine/core-modules/llm-tracing/llm-tracing.module.ts
index 9e9c452e9..045dfbd7c 100644
--- a/packages/twenty-server/src/engine/integrations/llm-tracing/llm-tracing.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/llm-tracing/llm-tracing.module.ts
@@ -3,12 +3,12 @@ import { Global, DynamicModule } from '@nestjs/common';
import {
LLMTracingModuleAsyncOptions,
LLMTracingDriver,
-} from 'src/engine/integrations/llm-tracing/interfaces/llm-tracing.interface';
+} from 'src/engine/core-modules/llm-tracing/interfaces/llm-tracing.interface';
-import { LangfuseDriver } from 'src/engine/integrations/llm-tracing/drivers/langfuse.driver';
-import { ConsoleDriver } from 'src/engine/integrations/llm-tracing/drivers/console.driver';
-import { LLMTracingService } from 'src/engine/integrations/llm-tracing/llm-tracing.service';
-import { LLM_TRACING_DRIVER } from 'src/engine/integrations/llm-tracing/llm-tracing.constants';
+import { LangfuseDriver } from 'src/engine/core-modules/llm-tracing/drivers/langfuse.driver';
+import { ConsoleDriver } from 'src/engine/core-modules/llm-tracing/drivers/console.driver';
+import { LLMTracingService } from 'src/engine/core-modules/llm-tracing/llm-tracing.service';
+import { LLM_TRACING_DRIVER } from 'src/engine/core-modules/llm-tracing/llm-tracing.constants';
@Global()
export class LLMTracingModule {
diff --git a/packages/twenty-server/src/engine/integrations/llm-tracing/llm-tracing.service.ts b/packages/twenty-server/src/engine/core-modules/llm-tracing/llm-tracing.service.ts
similarity index 78%
rename from packages/twenty-server/src/engine/integrations/llm-tracing/llm-tracing.service.ts
rename to packages/twenty-server/src/engine/core-modules/llm-tracing/llm-tracing.service.ts
index 6ff202390..87d7624fb 100644
--- a/packages/twenty-server/src/engine/integrations/llm-tracing/llm-tracing.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/llm-tracing/llm-tracing.service.ts
@@ -2,9 +2,9 @@ import { Injectable, Inject } from '@nestjs/common';
import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
-import { LLMTracingDriver } from 'src/engine/integrations/llm-tracing/drivers/interfaces/llm-tracing-driver.interface';
+import { LLMTracingDriver } from 'src/engine/core-modules/llm-tracing/drivers/interfaces/llm-tracing-driver.interface';
-import { LLM_TRACING_DRIVER } from 'src/engine/integrations/llm-tracing/llm-tracing.constants';
+import { LLM_TRACING_DRIVER } from 'src/engine/core-modules/llm-tracing/llm-tracing.constants';
@Injectable()
export class LLMTracingService {
diff --git a/packages/twenty-server/src/engine/integrations/logger/__tests__/logger.service.spec.ts b/packages/twenty-server/src/engine/core-modules/logger/__tests__/logger.service.spec.ts
similarity index 80%
rename from packages/twenty-server/src/engine/integrations/logger/__tests__/logger.service.spec.ts
rename to packages/twenty-server/src/engine/core-modules/logger/__tests__/logger.service.spec.ts
index b5d6f94c8..0475f386c 100644
--- a/packages/twenty-server/src/engine/integrations/logger/__tests__/logger.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/logger/__tests__/logger.service.spec.ts
@@ -1,7 +1,7 @@
import { Test, TestingModule } from '@nestjs/testing';
-import { LOGGER_DRIVER } from 'src/engine/integrations/logger/logger.constants';
-import { LoggerService } from 'src/engine/integrations/logger/logger.service';
+import { LOGGER_DRIVER } from 'src/engine/core-modules/logger/logger.constants';
+import { LoggerService } from 'src/engine/core-modules/logger/logger.service';
describe('LoggerService', () => {
let service: LoggerService;
diff --git a/packages/twenty-server/src/engine/core-modules/logger/interfaces/index.ts b/packages/twenty-server/src/engine/core-modules/logger/interfaces/index.ts
new file mode 100644
index 000000000..b9de22413
--- /dev/null
+++ b/packages/twenty-server/src/engine/core-modules/logger/interfaces/index.ts
@@ -0,0 +1 @@
+export * from 'src/engine/core-modules/logger/interfaces/logger.interface';
diff --git a/packages/twenty-server/src/engine/integrations/logger/interfaces/logger.interface.ts b/packages/twenty-server/src/engine/core-modules/logger/interfaces/logger.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/logger/interfaces/logger.interface.ts
rename to packages/twenty-server/src/engine/core-modules/logger/interfaces/logger.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/logger/logger.constants.ts b/packages/twenty-server/src/engine/core-modules/logger/logger.constants.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/logger/logger.constants.ts
rename to packages/twenty-server/src/engine/core-modules/logger/logger.constants.ts
diff --git a/packages/twenty-server/src/engine/integrations/logger/logger.module-definition.ts b/packages/twenty-server/src/engine/core-modules/logger/logger.module-definition.ts
similarity index 78%
rename from packages/twenty-server/src/engine/integrations/logger/logger.module-definition.ts
rename to packages/twenty-server/src/engine/core-modules/logger/logger.module-definition.ts
index d896bff74..40af6dfdd 100644
--- a/packages/twenty-server/src/engine/integrations/logger/logger.module-definition.ts
+++ b/packages/twenty-server/src/engine/core-modules/logger/logger.module-definition.ts
@@ -1,6 +1,6 @@
import { ConfigurableModuleBuilder } from '@nestjs/common';
-import { LoggerModuleOptions } from './interfaces';
+import { LoggerModuleOptions } from 'src/engine/core-modules/logger/interfaces';
export const {
ConfigurableModuleClass,
diff --git a/packages/twenty-server/src/engine/integrations/logger/logger.module-factory.ts b/packages/twenty-server/src/engine/core-modules/logger/logger.module-factory.ts
similarity index 85%
rename from packages/twenty-server/src/engine/integrations/logger/logger.module-factory.ts
rename to packages/twenty-server/src/engine/core-modules/logger/logger.module-factory.ts
index aef0bcd62..94b490fdc 100644
--- a/packages/twenty-server/src/engine/integrations/logger/logger.module-factory.ts
+++ b/packages/twenty-server/src/engine/core-modules/logger/logger.module-factory.ts
@@ -1,8 +1,8 @@
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import {
LoggerModuleOptions,
LoggerDriverType,
-} from 'src/engine/integrations/logger/interfaces';
+} from 'src/engine/core-modules/logger/interfaces';
/**
* Logger Module factory
diff --git a/packages/twenty-server/src/engine/integrations/logger/logger.module.ts b/packages/twenty-server/src/engine/core-modules/logger/logger.module.ts
similarity index 83%
rename from packages/twenty-server/src/engine/integrations/logger/logger.module.ts
rename to packages/twenty-server/src/engine/core-modules/logger/logger.module.ts
index 778dbbf54..4822a780b 100644
--- a/packages/twenty-server/src/engine/integrations/logger/logger.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/logger/logger.module.ts
@@ -1,14 +1,13 @@
import { DynamicModule, Global, ConsoleLogger, Module } from '@nestjs/common';
-import { LoggerDriverType } from 'src/engine/integrations/logger/interfaces';
-
-import { LoggerService } from './logger.service';
-import { LOGGER_DRIVER } from './logger.constants';
+import { LoggerService } from 'src/engine/core-modules/logger/logger.service';
+import { LOGGER_DRIVER } from 'src/engine/core-modules/logger/logger.constants';
import {
ASYNC_OPTIONS_TYPE,
ConfigurableModuleClass,
OPTIONS_TYPE,
-} from './logger.module-definition';
+} from 'src/engine/core-modules/logger/logger.module-definition';
+import { LoggerDriverType } from 'src/engine/core-modules/logger/interfaces';
@Global()
@Module({
diff --git a/packages/twenty-server/src/engine/integrations/logger/logger.service.ts b/packages/twenty-server/src/engine/core-modules/logger/logger.service.ts
similarity index 93%
rename from packages/twenty-server/src/engine/integrations/logger/logger.service.ts
rename to packages/twenty-server/src/engine/core-modules/logger/logger.service.ts
index 882a53c17..8d363bb32 100644
--- a/packages/twenty-server/src/engine/integrations/logger/logger.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/logger/logger.service.ts
@@ -5,7 +5,7 @@ import {
LoggerService as LoggerServiceInterface,
} from '@nestjs/common';
-import { LOGGER_DRIVER } from './logger.constants';
+import { LOGGER_DRIVER } from 'src/engine/core-modules/logger/logger.constants';
@Injectable()
export class LoggerService implements LoggerServiceInterface {
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/decorators/message-queue.decorator.ts b/packages/twenty-server/src/engine/core-modules/message-queue/decorators/message-queue.decorator.ts
similarity index 63%
rename from packages/twenty-server/src/engine/integrations/message-queue/decorators/message-queue.decorator.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/decorators/message-queue.decorator.ts
index 5a275d3d5..dd88f4cf6 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/decorators/message-queue.decorator.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/decorators/message-queue.decorator.ts
@@ -1,7 +1,7 @@
import { Inject } from '@nestjs/common';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { getQueueToken } from 'src/engine/integrations/message-queue/utils/get-queue-token.util';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { getQueueToken } from 'src/engine/core-modules/message-queue/utils/get-queue-token.util';
export const InjectMessageQueue = (queueName: MessageQueue) => {
return Inject(getQueueToken(queueName));
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/decorators/process.decorator.ts b/packages/twenty-server/src/engine/core-modules/message-queue/decorators/process.decorator.ts
similarity index 90%
rename from packages/twenty-server/src/engine/integrations/message-queue/decorators/process.decorator.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/decorators/process.decorator.ts
index 214742cb0..62ec636ad 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/decorators/process.decorator.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/decorators/process.decorator.ts
@@ -1,7 +1,7 @@
import { SetMetadata } from '@nestjs/common';
import { isString } from '@nestjs/common/utils/shared.utils';
-import { PROCESS_METADATA } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { PROCESS_METADATA } from 'src/engine/core-modules/message-queue/message-queue.constants';
export interface MessageQueueProcessOptions {
jobName: string;
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/decorators/processor.decorator.ts b/packages/twenty-server/src/engine/core-modules/message-queue/decorators/processor.decorator.ts
similarity index 91%
rename from packages/twenty-server/src/engine/integrations/message-queue/decorators/processor.decorator.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/decorators/processor.decorator.ts
index a244dc4d1..07979b452 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/decorators/processor.decorator.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/decorators/processor.decorator.ts
@@ -1,13 +1,13 @@
import { Scope, SetMetadata } from '@nestjs/common';
import { SCOPE_OPTIONS_METADATA } from '@nestjs/common/constants';
-import { MessageQueueWorkerOptions } from 'src/engine/integrations/message-queue/interfaces/message-queue-worker-options.interface';
+import { MessageQueueWorkerOptions } from 'src/engine/core-modules/message-queue/interfaces/message-queue-worker-options.interface';
import {
MessageQueue,
PROCESSOR_METADATA,
WORKER_METADATA,
-} from 'src/engine/integrations/message-queue/message-queue.constants';
+} from 'src/engine/core-modules/message-queue/message-queue.constants';
export interface MessageQueueProcessorOptions {
/**
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/drivers/bullmq.driver.ts b/packages/twenty-server/src/engine/core-modules/message-queue/drivers/bullmq.driver.ts
similarity index 87%
rename from packages/twenty-server/src/engine/integrations/message-queue/drivers/bullmq.driver.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/drivers/bullmq.driver.ts
index c3324a500..cf4c414c8 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/drivers/bullmq.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/drivers/bullmq.driver.ts
@@ -6,13 +6,12 @@ import { JobsOptions, Queue, QueueOptions, Worker } from 'bullmq';
import {
QueueCronJobOptions,
QueueJobOptions,
-} from 'src/engine/integrations/message-queue/drivers/interfaces/job-options.interface';
-import { MessageQueueJob } from 'src/engine/integrations/message-queue/interfaces/message-queue-job.interface';
-import { MessageQueueWorkerOptions } from 'src/engine/integrations/message-queue/interfaces/message-queue-worker-options.interface';
+} from 'src/engine/core-modules/message-queue/drivers/interfaces/job-options.interface';
+import { MessageQueueJob } from 'src/engine/core-modules/message-queue/interfaces/message-queue-job.interface';
+import { MessageQueueWorkerOptions } from 'src/engine/core-modules/message-queue/interfaces/message-queue-worker-options.interface';
+import { MessageQueueDriver } from 'src/engine/core-modules/message-queue/drivers/interfaces/message-queue-driver.interface';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-
-import { MessageQueueDriver } from './interfaces/message-queue-driver.interface';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
export type BullMQDriverOptions = QueueOptions;
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/drivers/interfaces/job-options.interface.ts b/packages/twenty-server/src/engine/core-modules/message-queue/drivers/interfaces/job-options.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/message-queue/drivers/interfaces/job-options.interface.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/drivers/interfaces/job-options.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/drivers/interfaces/message-queue-driver.interface.ts b/packages/twenty-server/src/engine/core-modules/message-queue/drivers/interfaces/message-queue-driver.interface.ts
similarity index 72%
rename from packages/twenty-server/src/engine/integrations/message-queue/drivers/interfaces/message-queue-driver.interface.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/drivers/interfaces/message-queue-driver.interface.ts
index 1d53837d3..49647c021 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/drivers/interfaces/message-queue-driver.interface.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/drivers/interfaces/message-queue-driver.interface.ts
@@ -1,11 +1,11 @@
import {
QueueCronJobOptions,
QueueJobOptions,
-} from 'src/engine/integrations/message-queue/drivers/interfaces/job-options.interface';
-import { MessageQueueJobData } from 'src/engine/integrations/message-queue/interfaces/message-queue-job.interface';
-import { MessageQueueWorkerOptions } from 'src/engine/integrations/message-queue/interfaces/message-queue-worker-options.interface';
+} from 'src/engine/core-modules/message-queue/drivers/interfaces/job-options.interface';
+import { MessageQueueJobData } from 'src/engine/core-modules/message-queue/interfaces/message-queue-job.interface';
+import { MessageQueueWorkerOptions } from 'src/engine/core-modules/message-queue/interfaces/message-queue-worker-options.interface';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
export interface MessageQueueDriver {
add(
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/drivers/pg-boss.driver.ts b/packages/twenty-server/src/engine/core-modules/message-queue/drivers/pg-boss.driver.ts
similarity index 83%
rename from packages/twenty-server/src/engine/integrations/message-queue/drivers/pg-boss.driver.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/drivers/pg-boss.driver.ts
index 98631bc88..341fbc348 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/drivers/pg-boss.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/drivers/pg-boss.driver.ts
@@ -5,13 +5,12 @@ import PgBoss from 'pg-boss';
import {
QueueCronJobOptions,
QueueJobOptions,
-} from 'src/engine/integrations/message-queue/drivers/interfaces/job-options.interface';
-import { MessageQueueJob } from 'src/engine/integrations/message-queue/interfaces/message-queue-job.interface';
-import { MessageQueueWorkerOptions } from 'src/engine/integrations/message-queue/interfaces/message-queue-worker-options.interface';
+} from 'src/engine/core-modules/message-queue/drivers/interfaces/job-options.interface';
+import { MessageQueueJob } from 'src/engine/core-modules/message-queue/interfaces/message-queue-job.interface';
+import { MessageQueueWorkerOptions } from 'src/engine/core-modules/message-queue/interfaces/message-queue-worker-options.interface';
+import { MessageQueueDriver } from 'src/engine/core-modules/message-queue/drivers/interfaces/message-queue-driver.interface';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-
-import { MessageQueueDriver } from './interfaces/message-queue-driver.interface';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
export type PgBossDriverOptions = PgBoss.ConstructorOptions;
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/drivers/sync.driver.ts b/packages/twenty-server/src/engine/core-modules/message-queue/drivers/sync.driver.ts
similarity index 86%
rename from packages/twenty-server/src/engine/integrations/message-queue/drivers/sync.driver.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/drivers/sync.driver.ts
index b65460687..1d7db2953 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/drivers/sync.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/drivers/sync.driver.ts
@@ -3,11 +3,10 @@ import { Logger } from '@nestjs/common';
import {
MessageQueueJobData,
MessageQueueJob,
-} from 'src/engine/integrations/message-queue/interfaces/message-queue-job.interface';
+} from 'src/engine/core-modules/message-queue/interfaces/message-queue-job.interface';
+import { MessageQueueDriver } from 'src/engine/core-modules/message-queue/drivers/interfaces/message-queue-driver.interface';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-
-import { MessageQueueDriver } from './interfaces/message-queue-driver.interface';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
export class SyncDriver implements MessageQueueDriver {
private readonly logger = new Logger(SyncDriver.name);
diff --git a/packages/twenty-server/src/engine/core-modules/message-queue/interfaces/index.ts b/packages/twenty-server/src/engine/core-modules/message-queue/interfaces/index.ts
new file mode 100644
index 000000000..dfeb67000
--- /dev/null
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/interfaces/index.ts
@@ -0,0 +1 @@
+export * from 'src/engine/core-modules/message-queue/interfaces/message-queue-module-options.interface';
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/interfaces/message-queue-job.interface.ts b/packages/twenty-server/src/engine/core-modules/message-queue/interfaces/message-queue-job.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/message-queue/interfaces/message-queue-job.interface.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/interfaces/message-queue-job.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/interfaces/message-queue-module-options.interface.ts b/packages/twenty-server/src/engine/core-modules/message-queue/interfaces/message-queue-module-options.interface.ts
similarity index 83%
rename from packages/twenty-server/src/engine/integrations/message-queue/interfaces/message-queue-module-options.interface.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/interfaces/message-queue-module-options.interface.ts
index b98990385..55027987a 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/interfaces/message-queue-module-options.interface.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/interfaces/message-queue-module-options.interface.ts
@@ -1,5 +1,5 @@
-import { BullMQDriverOptions } from 'src/engine/integrations/message-queue/drivers/bullmq.driver';
-import { PgBossDriverOptions } from 'src/engine/integrations/message-queue/drivers/pg-boss.driver';
+import { BullMQDriverOptions } from 'src/engine/core-modules/message-queue/drivers/bullmq.driver';
+import { PgBossDriverOptions } from 'src/engine/core-modules/message-queue/drivers/pg-boss.driver';
export enum MessageQueueDriverType {
PgBoss = 'pg-boss',
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/interfaces/message-queue-worker-options.interface.ts b/packages/twenty-server/src/engine/core-modules/message-queue/interfaces/message-queue-worker-options.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/message-queue/interfaces/message-queue-worker-options.interface.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/interfaces/message-queue-worker-options.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/jobs.module.ts b/packages/twenty-server/src/engine/core-modules/message-queue/jobs.module.ts
similarity index 96%
rename from packages/twenty-server/src/engine/integrations/message-queue/jobs.module.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/jobs.module.ts
index 6516455d5..7c78a1fd9 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/jobs.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/jobs.module.ts
@@ -14,8 +14,8 @@ import { UserModule } from 'src/engine/core-modules/user/user.module';
import { HandleWorkspaceMemberDeletedJob } from 'src/engine/core-modules/workspace/handle-workspace-member-deleted.job';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { WorkspaceModule } from 'src/engine/core-modules/workspace/workspace.module';
-import { EmailSenderJob } from 'src/engine/integrations/email/email-sender.job';
-import { EmailModule } from 'src/engine/integrations/email/email.module';
+import { EmailSenderJob } from 'src/engine/core-modules/email/email-sender.job';
+import { EmailModule } from 'src/engine/core-modules/email/email.module';
import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-source.module';
import { ObjectMetadataModule } from 'src/engine/metadata-modules/object-metadata/object-metadata.module';
import { CleanInactiveWorkspaceJob } from 'src/engine/workspace-manager/workspace-cleaner/crons/clean-inactive-workspace.job';
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/message-queue-core.module.ts b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue-core.module.ts
similarity index 84%
rename from packages/twenty-server/src/engine/integrations/message-queue/message-queue-core.module.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/message-queue-core.module.ts
index 6c785e235..fb4b7dd6c 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/message-queue-core.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue-core.module.ts
@@ -6,23 +6,23 @@ import {
Provider,
} from '@nestjs/common';
-import { MessageQueueDriver } from 'src/engine/integrations/message-queue/drivers/interfaces/message-queue-driver.interface';
+import { MessageQueueDriver } from 'src/engine/core-modules/message-queue/drivers/interfaces/message-queue-driver.interface';
-import { MessageQueueDriverType } from 'src/engine/integrations/message-queue/interfaces';
+import { MessageQueueDriverType } from 'src/engine/core-modules/message-queue/interfaces';
import {
MessageQueue,
QUEUE_DRIVER,
-} from 'src/engine/integrations/message-queue/message-queue.constants';
-import { PgBossDriver } from 'src/engine/integrations/message-queue/drivers/pg-boss.driver';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
-import { BullMQDriver } from 'src/engine/integrations/message-queue/drivers/bullmq.driver';
-import { SyncDriver } from 'src/engine/integrations/message-queue/drivers/sync.driver';
-import { getQueueToken } from 'src/engine/integrations/message-queue/utils/get-queue-token.util';
+} from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { PgBossDriver } from 'src/engine/core-modules/message-queue/drivers/pg-boss.driver';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
+import { BullMQDriver } from 'src/engine/core-modules/message-queue/drivers/bullmq.driver';
+import { SyncDriver } from 'src/engine/core-modules/message-queue/drivers/sync.driver';
+import { getQueueToken } from 'src/engine/core-modules/message-queue/utils/get-queue-token.util';
import {
ASYNC_OPTIONS_TYPE,
ConfigurableModuleClass,
OPTIONS_TYPE,
-} from 'src/engine/integrations/message-queue/message-queue.module-definition';
+} from 'src/engine/core-modules/message-queue/message-queue.module-definition';
@Global()
@Module({})
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/message-queue-metadata.accessor.ts b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue-metadata.accessor.ts
similarity index 77%
rename from packages/twenty-server/src/engine/integrations/message-queue/message-queue-metadata.accessor.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/message-queue-metadata.accessor.ts
index a63c3f16e..2dce32e82 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/message-queue-metadata.accessor.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue-metadata.accessor.ts
@@ -2,12 +2,12 @@
import { Injectable, Type } from '@nestjs/common';
import { Reflector } from '@nestjs/core';
-import { MessageQueueProcessOptions } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { MessageQueueProcessorOptions } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
+import { MessageQueueProcessOptions } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { MessageQueueProcessorOptions } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
import {
PROCESSOR_METADATA,
PROCESS_METADATA,
-} from 'src/engine/integrations/message-queue/message-queue.constants';
+} from 'src/engine/core-modules/message-queue/message-queue.constants';
@Injectable()
export class MessageQueueMetadataAccessor {
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/message-queue.constants.ts b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.constants.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/message-queue/message-queue.constants.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/message-queue.constants.ts
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/message-queue.explorer.ts b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.explorer.ts
similarity index 91%
rename from packages/twenty-server/src/engine/integrations/message-queue/message-queue.explorer.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/message-queue.explorer.ts
index 30e73f6bb..6e20445eb 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/message-queue.explorer.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.explorer.ts
@@ -9,19 +9,18 @@ import { Module } from '@nestjs/core/injector/module';
import { Injector } from '@nestjs/core/injector/injector';
import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';
-import { MessageQueueWorkerOptions } from 'src/engine/integrations/message-queue/interfaces/message-queue-worker-options.interface';
+import { MessageQueueWorkerOptions } from 'src/engine/core-modules/message-queue/interfaces/message-queue-worker-options.interface';
import {
MessageQueueJob,
MessageQueueJobData,
-} from 'src/engine/integrations/message-queue/interfaces/message-queue-job.interface';
+} from 'src/engine/core-modules/message-queue/interfaces/message-queue-job.interface';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
-import { getQueueToken } from 'src/engine/integrations/message-queue/utils/get-queue-token.util';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
+import { MessageQueueMetadataAccessor } from 'src/engine/core-modules/message-queue/message-queue-metadata.accessor';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
+import { getQueueToken } from 'src/engine/core-modules/message-queue/utils/get-queue-token.util';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
import { shouldFilterException } from 'src/engine/utils/global-exception-handler.util';
-import { MessageQueueMetadataAccessor } from './message-queue-metadata.accessor';
-
interface ProcessorGroup {
instance: object;
host: Module;
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/message-queue.module-definition.ts b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.module-definition.ts
similarity index 80%
rename from packages/twenty-server/src/engine/integrations/message-queue/message-queue.module-definition.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/message-queue.module-definition.ts
index b7a437032..ed24da317 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/message-queue.module-definition.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.module-definition.ts
@@ -1,6 +1,6 @@
import { ConfigurableModuleBuilder } from '@nestjs/common';
-import { MessageQueueModuleOptions } from 'src/engine/integrations/message-queue/interfaces';
+import { MessageQueueModuleOptions } from 'src/engine/core-modules/message-queue/interfaces';
export const {
ConfigurableModuleClass,
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/message-queue.module-factory.ts b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.module-factory.ts
similarity index 92%
rename from packages/twenty-server/src/engine/integrations/message-queue/message-queue.module-factory.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/message-queue.module-factory.ts
index 4aad6714b..ad18f6cd8 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/message-queue.module-factory.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.module-factory.ts
@@ -1,8 +1,8 @@
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import {
MessageQueueDriverType,
MessageQueueModuleOptions,
-} from 'src/engine/integrations/message-queue/interfaces';
+} from 'src/engine/core-modules/message-queue/interfaces';
/**
* MessageQueue Module factory
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/message-queue.module.ts b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.module.ts
similarity index 74%
rename from packages/twenty-server/src/engine/integrations/message-queue/message-queue.module.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/message-queue.module.ts
index ee7fb385b..428be7caa 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/message-queue.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.module.ts
@@ -1,13 +1,13 @@
import { DynamicModule, Global, Module } from '@nestjs/common';
import { DiscoveryModule } from '@nestjs/core';
-import { MessageQueueCoreModule } from 'src/engine/integrations/message-queue/message-queue-core.module';
-import { MessageQueueMetadataAccessor } from 'src/engine/integrations/message-queue/message-queue-metadata.accessor';
-import { MessageQueueExplorer } from 'src/engine/integrations/message-queue/message-queue.explorer';
+import { MessageQueueCoreModule } from 'src/engine/core-modules/message-queue/message-queue-core.module';
+import { MessageQueueMetadataAccessor } from 'src/engine/core-modules/message-queue/message-queue-metadata.accessor';
+import { MessageQueueExplorer } from 'src/engine/core-modules/message-queue/message-queue.explorer';
import {
ASYNC_OPTIONS_TYPE,
OPTIONS_TYPE,
-} from 'src/engine/integrations/message-queue/message-queue.module-definition';
+} from 'src/engine/core-modules/message-queue/message-queue.module-definition';
@Global()
@Module({})
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/services/__tests__/message-queue-task-assigned.service.spec.ts b/packages/twenty-server/src/engine/core-modules/message-queue/services/__tests__/message-queue-task-assigned.service.spec.ts
similarity index 85%
rename from packages/twenty-server/src/engine/integrations/message-queue/services/__tests__/message-queue-task-assigned.service.spec.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/services/__tests__/message-queue-task-assigned.service.spec.ts
index 31e2b66ae..f579767a0 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/services/__tests__/message-queue-task-assigned.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/services/__tests__/message-queue-task-assigned.service.spec.ts
@@ -1,12 +1,12 @@
import { Test, TestingModule } from '@nestjs/testing';
-import { MessageQueueDriver } from 'src/engine/integrations/message-queue/drivers/interfaces/message-queue-driver.interface';
+import { MessageQueueDriver } from 'src/engine/core-modules/message-queue/drivers/interfaces/message-queue-driver.interface';
import {
QUEUE_DRIVER,
MessageQueue,
-} from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+} from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
describe('MessageQueueTaskAssigned queue', () => {
let service: MessageQueueService;
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/services/message-queue.service.ts b/packages/twenty-server/src/engine/core-modules/message-queue/services/message-queue.service.ts
similarity index 78%
rename from packages/twenty-server/src/engine/integrations/message-queue/services/message-queue.service.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/services/message-queue.service.ts
index 6460e112d..2030ca8dd 100644
--- a/packages/twenty-server/src/engine/integrations/message-queue/services/message-queue.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/message-queue/services/message-queue.service.ts
@@ -3,18 +3,18 @@ import { Inject, Injectable } from '@nestjs/common';
import {
QueueCronJobOptions,
QueueJobOptions,
-} from 'src/engine/integrations/message-queue/drivers/interfaces/job-options.interface';
-import { MessageQueueDriver } from 'src/engine/integrations/message-queue/drivers/interfaces/message-queue-driver.interface';
+} from 'src/engine/core-modules/message-queue/drivers/interfaces/job-options.interface';
+import { MessageQueueDriver } from 'src/engine/core-modules/message-queue/drivers/interfaces/message-queue-driver.interface';
import {
MessageQueueJobData,
MessageQueueJob,
-} from 'src/engine/integrations/message-queue/interfaces/message-queue-job.interface';
-import { MessageQueueWorkerOptions } from 'src/engine/integrations/message-queue/interfaces/message-queue-worker-options.interface';
+} from 'src/engine/core-modules/message-queue/interfaces/message-queue-job.interface';
+import { MessageQueueWorkerOptions } from 'src/engine/core-modules/message-queue/interfaces/message-queue-worker-options.interface';
import {
MessageQueue,
QUEUE_DRIVER,
-} from 'src/engine/integrations/message-queue/message-queue.constants';
+} from 'src/engine/core-modules/message-queue/message-queue.constants';
@Injectable()
export class MessageQueueService {
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/utils/get-queue-token.util.ts b/packages/twenty-server/src/engine/core-modules/message-queue/utils/get-queue-token.util.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/message-queue/utils/get-queue-token.util.ts
rename to packages/twenty-server/src/engine/core-modules/message-queue/utils/get-queue-token.util.ts
diff --git a/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.spec.ts b/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.spec.ts
index b2252b0c6..7e6f2d26e 100644
--- a/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.spec.ts
@@ -3,7 +3,7 @@ import { Test, TestingModule } from '@nestjs/testing';
import { OpenApiService } from 'src/engine/core-modules/open-api/open-api.service';
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { TokenService } from 'src/engine/core-modules/auth/services/token.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
describe('OpenApiService', () => {
let service: OpenApiService;
diff --git a/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.ts b/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.ts
index bdcd710fa..49e7ed9ac 100644
--- a/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.ts
@@ -33,7 +33,7 @@ import {
getFindOneResponse200,
getUpdateOneResponse200,
} from 'src/engine/core-modules/open-api/utils/responses.utils';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { capitalize } from 'src/utils/capitalize';
import { getServerUrl } from 'src/utils/get-server-url';
diff --git a/packages/twenty-server/src/engine/core-modules/postgres-credentials/postgres-credentials.module.ts b/packages/twenty-server/src/engine/core-modules/postgres-credentials/postgres-credentials.module.ts
index fcb2bbdd4..9034a9a1b 100644
--- a/packages/twenty-server/src/engine/core-modules/postgres-credentials/postgres-credentials.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/postgres-credentials/postgres-credentials.module.ts
@@ -4,7 +4,7 @@ import { TypeOrmModule } from '@nestjs/typeorm';
import { PostgresCredentials } from 'src/engine/core-modules/postgres-credentials/postgres-credentials.entity';
import { PostgresCredentialsResolver } from 'src/engine/core-modules/postgres-credentials/postgres-credentials.resolver';
import { PostgresCredentialsService } from 'src/engine/core-modules/postgres-credentials/postgres-credentials.service';
-import { EnvironmentModule } from 'src/engine/integrations/environment/environment.module';
+import { EnvironmentModule } from 'src/engine/core-modules/environment/environment.module';
@Module({
imports: [
diff --git a/packages/twenty-server/src/engine/core-modules/postgres-credentials/postgres-credentials.service.ts b/packages/twenty-server/src/engine/core-modules/postgres-credentials/postgres-credentials.service.ts
index 790c36ab2..de8e78244 100644
--- a/packages/twenty-server/src/engine/core-modules/postgres-credentials/postgres-credentials.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/postgres-credentials/postgres-credentials.service.ts
@@ -12,7 +12,7 @@ import {
import { NotFoundError } from 'src/engine/core-modules/graphql/utils/graphql-errors.util';
import { PostgresCredentialsDTO } from 'src/engine/core-modules/postgres-credentials/dtos/postgres-credentials.dto';
import { PostgresCredentials } from 'src/engine/core-modules/postgres-credentials/postgres-credentials.entity';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
export class PostgresCredentialsService {
constructor(
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/base-serverless.driver.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/base-serverless.driver.ts
similarity index 71%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/base-serverless.driver.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/base-serverless.driver.ts
index bce3c8e42..e7abc6743 100644
--- a/packages/twenty-server/src/engine/integrations/serverless/drivers/base-serverless.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/serverless/drivers/base-serverless.driver.ts
@@ -1,9 +1,9 @@
-import { FileStorageService } from 'src/engine/integrations/file-storage/file-storage.service';
-import { readFileContent } from 'src/engine/integrations/file-storage/utils/read-file-content';
-import { SOURCE_FILE_NAME } from 'src/engine/integrations/serverless/drivers/constants/source-file-name';
-import { compileTypescript } from 'src/engine/integrations/serverless/drivers/utils/compile-typescript';
+import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
+import { readFileContent } from 'src/engine/core-modules/file-storage/utils/read-file-content';
+import { SOURCE_FILE_NAME } from 'src/engine/core-modules/serverless/drivers/constants/source-file-name';
+import { compileTypescript } from 'src/engine/core-modules/serverless/drivers/utils/compile-typescript';
import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity';
-import { getServerlessFolder } from 'src/engine/integrations/serverless/utils/serverless-get-folder.utils';
+import { getServerlessFolder } from 'src/engine/core-modules/serverless/utils/serverless-get-folder.utils';
export class BaseServerlessDriver {
async getCompiledCode(
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/constants/build-file-name.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/build-file-name.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/constants/build-file-name.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/build-file-name.ts
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/constants/common-layer-name.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/common-layer-name.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/constants/common-layer-name.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/common-layer-name.ts
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/constants/serverless-tmpdir-folder.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/serverless-tmpdir-folder.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/constants/serverless-tmpdir-folder.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/serverless-tmpdir-folder.ts
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/constants/source-file-name.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/source-file-name.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/constants/source-file-name.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/source-file-name.ts
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/interfaces/serverless-driver.interface.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/interfaces/serverless-driver.interface.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/interfaces/serverless-driver.interface.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/interfaces/serverless-driver.interface.ts
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/lambda.driver.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/lambda.driver.ts
similarity index 95%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/lambda.driver.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/lambda.driver.ts
index b61101b74..747a0763d 100644
--- a/packages/twenty-server/src/engine/integrations/serverless/drivers/lambda.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/serverless/drivers/lambda.driver.ts
@@ -25,7 +25,7 @@ import { UpdateFunctionCodeCommandInput } from '@aws-sdk/client-lambda/dist-type
import {
ServerlessDriver,
ServerlessExecuteResult,
-} from 'src/engine/integrations/serverless/drivers/interfaces/serverless-driver.interface';
+} from 'src/engine/core-modules/serverless/drivers/interfaces/serverless-driver.interface';
import {
ServerlessFunctionEntity,
@@ -34,18 +34,18 @@ import {
import {
LambdaBuildDirectoryManager,
NODE_LAYER_SUBFOLDER,
-} from 'src/engine/integrations/serverless/drivers/utils/lambda-build-directory-manager';
-import { FileStorageService } from 'src/engine/integrations/file-storage/file-storage.service';
-import { BaseServerlessDriver } from 'src/engine/integrations/serverless/drivers/base-serverless.driver';
-import { createZipFile } from 'src/engine/integrations/serverless/drivers/utils/create-zip-file';
+} from 'src/engine/core-modules/serverless/drivers/utils/lambda-build-directory-manager';
+import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
+import { BaseServerlessDriver } from 'src/engine/core-modules/serverless/drivers/base-serverless.driver';
+import { createZipFile } from 'src/engine/core-modules/serverless/drivers/utils/create-zip-file';
import { ServerlessFunctionExecutionStatus } from 'src/engine/metadata-modules/serverless-function/dtos/serverless-function-execution-result.dto';
import {
ServerlessFunctionException,
ServerlessFunctionExceptionCode,
} from 'src/engine/metadata-modules/serverless-function/serverless-function.exception';
import { isDefined } from 'src/utils/is-defined';
-import { COMMON_LAYER_NAME } from 'src/engine/integrations/serverless/drivers/constants/common-layer-name';
-import { copyAndBuildDependencies } from 'src/engine/integrations/serverless/drivers/utils/copy-and-build-dependencies';
+import { COMMON_LAYER_NAME } from 'src/engine/core-modules/serverless/drivers/constants/common-layer-name';
+import { copyAndBuildDependencies } from 'src/engine/core-modules/serverless/drivers/utils/copy-and-build-dependencies';
export interface LambdaDriverOptions extends LambdaClientConfig {
fileStorageService: FileStorageService;
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/layers/1/package.json b/packages/twenty-server/src/engine/core-modules/serverless/drivers/layers/1/package.json
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/layers/1/package.json
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/layers/1/package.json
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/layers/1/yarn.lock b/packages/twenty-server/src/engine/core-modules/serverless/drivers/layers/1/yarn.lock
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/layers/1/yarn.lock
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/layers/1/yarn.lock
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/layers/engine/.yarn/releases/yarn-4.4.0.cjs b/packages/twenty-server/src/engine/core-modules/serverless/drivers/layers/engine/.yarn/releases/yarn-4.4.0.cjs
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/layers/engine/.yarn/releases/yarn-4.4.0.cjs
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/layers/engine/.yarn/releases/yarn-4.4.0.cjs
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/layers/engine/.yarnrc.yml b/packages/twenty-server/src/engine/core-modules/serverless/drivers/layers/engine/.yarnrc.yml
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/layers/engine/.yarnrc.yml
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/layers/engine/.yarnrc.yml
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/layers/last-layer-version.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/layers/last-layer-version.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/layers/last-layer-version.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/layers/last-layer-version.ts
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/local.driver.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/local.driver.ts
similarity index 90%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/local.driver.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/local.driver.ts
index 194e45f22..00772cfd2 100644
--- a/packages/twenty-server/src/engine/integrations/serverless/drivers/local.driver.ts
+++ b/packages/twenty-server/src/engine/core-modules/serverless/drivers/local.driver.ts
@@ -4,27 +4,27 @@ import { join } from 'path';
import { v4 } from 'uuid';
-import { FileStorageExceptionCode } from 'src/engine/integrations/file-storage/interfaces/file-storage-exception';
+import { FileStorageExceptionCode } from 'src/engine/core-modules/file-storage/interfaces/file-storage-exception';
import {
ServerlessDriver,
ServerlessExecuteError,
ServerlessExecuteResult,
-} from 'src/engine/integrations/serverless/drivers/interfaces/serverless-driver.interface';
+} from 'src/engine/core-modules/serverless/drivers/interfaces/serverless-driver.interface';
-import { FileStorageService } from 'src/engine/integrations/file-storage/file-storage.service';
-import { readFileContent } from 'src/engine/integrations/file-storage/utils/read-file-content';
-import { BaseServerlessDriver } from 'src/engine/integrations/serverless/drivers/base-serverless.driver';
-import { BUILD_FILE_NAME } from 'src/engine/integrations/serverless/drivers/constants/build-file-name';
-import { getServerlessFolder } from 'src/engine/integrations/serverless/utils/serverless-get-folder.utils';
+import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
+import { readFileContent } from 'src/engine/core-modules/file-storage/utils/read-file-content';
+import { BaseServerlessDriver } from 'src/engine/core-modules/serverless/drivers/base-serverless.driver';
+import { BUILD_FILE_NAME } from 'src/engine/core-modules/serverless/drivers/constants/build-file-name';
+import { getServerlessFolder } from 'src/engine/core-modules/serverless/utils/serverless-get-folder.utils';
import { ServerlessFunctionExecutionStatus } from 'src/engine/metadata-modules/serverless-function/dtos/serverless-function-execution-result.dto';
import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity';
import {
ServerlessFunctionException,
ServerlessFunctionExceptionCode,
} from 'src/engine/metadata-modules/serverless-function/serverless-function.exception';
-import { COMMON_LAYER_NAME } from 'src/engine/integrations/serverless/drivers/constants/common-layer-name';
-import { copyAndBuildDependencies } from 'src/engine/integrations/serverless/drivers/utils/copy-and-build-dependencies';
-import { SERVERLESS_TMPDIR_FOLDER } from 'src/engine/integrations/serverless/drivers/constants/serverless-tmpdir-folder';
+import { COMMON_LAYER_NAME } from 'src/engine/core-modules/serverless/drivers/constants/common-layer-name';
+import { copyAndBuildDependencies } from 'src/engine/core-modules/serverless/drivers/utils/copy-and-build-dependencies';
+import { SERVERLESS_TMPDIR_FOLDER } from 'src/engine/core-modules/serverless/drivers/constants/serverless-tmpdir-folder';
export interface LocalDriverOptions {
fileStorageService: FileStorageService;
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/utils/compile-typescript.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/compile-typescript.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/utils/compile-typescript.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/compile-typescript.ts
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/utils/copy-and-build-dependencies.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/copy-and-build-dependencies.ts
similarity index 88%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/utils/copy-and-build-dependencies.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/copy-and-build-dependencies.ts
index ab50e6a8a..0a7581bb8 100644
--- a/packages/twenty-server/src/engine/integrations/serverless/drivers/utils/copy-and-build-dependencies.ts
+++ b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/copy-and-build-dependencies.ts
@@ -3,7 +3,7 @@ import { promisify } from 'util';
import { exec } from 'child_process';
import { join } from 'path';
-import { getLayerDependenciesDirName } from 'src/engine/integrations/serverless/drivers/utils/get-layer-dependencies-dir-name';
+import { getLayerDependenciesDirName } from 'src/engine/core-modules/serverless/drivers/utils/get-layer-dependencies-dir-name';
const execPromise = promisify(exec);
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/utils/create-zip-file.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/create-zip-file.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/utils/create-zip-file.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/create-zip-file.ts
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/utils/get-last-layer-dependencies.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/get-last-layer-dependencies.ts
similarity index 82%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/utils/get-last-layer-dependencies.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/get-last-layer-dependencies.ts
index a7c484d09..75eba8888 100644
--- a/packages/twenty-server/src/engine/integrations/serverless/drivers/utils/get-last-layer-dependencies.ts
+++ b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/get-last-layer-dependencies.ts
@@ -1,7 +1,7 @@
import fs from 'fs/promises';
import { join } from 'path';
-import { getLayerDependenciesDirName } from 'src/engine/integrations/serverless/drivers/utils/get-layer-dependencies-dir-name';
+import { getLayerDependenciesDirName } from 'src/engine/core-modules/serverless/drivers/utils/get-layer-dependencies-dir-name';
export type LayerDependencies = {
packageJson: { dependencies: object };
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/utils/get-layer-dependencies-dir-name.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/get-layer-dependencies-dir-name.ts
similarity index 86%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/utils/get-layer-dependencies-dir-name.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/get-layer-dependencies-dir-name.ts
index ce29b7e43..3c6ee4e8b 100644
--- a/packages/twenty-server/src/engine/integrations/serverless/drivers/utils/get-layer-dependencies-dir-name.ts
+++ b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/get-layer-dependencies-dir-name.ts
@@ -1,6 +1,6 @@
import path from 'path';
-import { LAST_LAYER_VERSION } from 'src/engine/integrations/serverless/drivers/layers/last-layer-version';
+import { LAST_LAYER_VERSION } from 'src/engine/core-modules/serverless/drivers/layers/last-layer-version';
// Can only be used in src/engine/integrations/serverless/drivers/utils folder
export const getLayerDependenciesDirName = (
diff --git a/packages/twenty-server/src/engine/integrations/serverless/drivers/utils/lambda-build-directory-manager.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/lambda-build-directory-manager.ts
similarity index 94%
rename from packages/twenty-server/src/engine/integrations/serverless/drivers/utils/lambda-build-directory-manager.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/lambda-build-directory-manager.ts
index 00b150b5d..b67811f97 100644
--- a/packages/twenty-server/src/engine/integrations/serverless/drivers/utils/lambda-build-directory-manager.ts
+++ b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/lambda-build-directory-manager.ts
@@ -3,7 +3,7 @@ import * as fs from 'fs/promises';
import { v4 } from 'uuid';
-import { SERVERLESS_TMPDIR_FOLDER } from 'src/engine/integrations/serverless/drivers/constants/serverless-tmpdir-folder';
+import { SERVERLESS_TMPDIR_FOLDER } from 'src/engine/core-modules/serverless/drivers/constants/serverless-tmpdir-folder';
export const NODE_LAYER_SUBFOLDER = 'nodejs';
diff --git a/packages/twenty-server/src/engine/integrations/serverless/serverless-module.factory.ts b/packages/twenty-server/src/engine/core-modules/serverless/serverless-module.factory.ts
similarity index 89%
rename from packages/twenty-server/src/engine/integrations/serverless/serverless-module.factory.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/serverless-module.factory.ts
index 12bec8fe0..e8c2d7baa 100644
--- a/packages/twenty-server/src/engine/integrations/serverless/serverless-module.factory.ts
+++ b/packages/twenty-server/src/engine/core-modules/serverless/serverless-module.factory.ts
@@ -1,11 +1,11 @@
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { FileStorageService } from 'src/engine/integrations/file-storage/file-storage.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
import {
ServerlessDriverType,
ServerlessModuleOptions,
-} from 'src/engine/integrations/serverless/serverless.interface';
+} from 'src/engine/core-modules/serverless/serverless.interface';
export const serverlessModuleFactory = async (
environmentService: EnvironmentService,
diff --git a/packages/twenty-server/src/engine/integrations/serverless/serverless.constants.ts b/packages/twenty-server/src/engine/core-modules/serverless/serverless.constants.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/serverless.constants.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/serverless.constants.ts
diff --git a/packages/twenty-server/src/engine/integrations/serverless/serverless.interface.ts b/packages/twenty-server/src/engine/core-modules/serverless/serverless.interface.ts
similarity index 85%
rename from packages/twenty-server/src/engine/integrations/serverless/serverless.interface.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/serverless.interface.ts
index c1c4fb661..be2cbb694 100644
--- a/packages/twenty-server/src/engine/integrations/serverless/serverless.interface.ts
+++ b/packages/twenty-server/src/engine/core-modules/serverless/serverless.interface.ts
@@ -1,7 +1,7 @@
import { FactoryProvider, ModuleMetadata } from '@nestjs/common';
-import { LocalDriverOptions } from 'src/engine/integrations/serverless/drivers/local.driver';
-import { LambdaDriverOptions } from 'src/engine/integrations/serverless/drivers/lambda.driver';
+import { LocalDriverOptions } from 'src/engine/core-modules/serverless/drivers/local.driver';
+import { LambdaDriverOptions } from 'src/engine/core-modules/serverless/drivers/lambda.driver';
export enum ServerlessDriverType {
Lambda = 'lambda',
diff --git a/packages/twenty-server/src/engine/integrations/serverless/serverless.module.ts b/packages/twenty-server/src/engine/core-modules/serverless/serverless.module.ts
similarity index 73%
rename from packages/twenty-server/src/engine/integrations/serverless/serverless.module.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/serverless.module.ts
index f65034f3d..de6378807 100644
--- a/packages/twenty-server/src/engine/integrations/serverless/serverless.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/serverless/serverless.module.ts
@@ -1,13 +1,13 @@
import { DynamicModule, Global } from '@nestjs/common';
-import { LambdaDriver } from 'src/engine/integrations/serverless/drivers/lambda.driver';
-import { LocalDriver } from 'src/engine/integrations/serverless/drivers/local.driver';
-import { SERVERLESS_DRIVER } from 'src/engine/integrations/serverless/serverless.constants';
+import { LambdaDriver } from 'src/engine/core-modules/serverless/drivers/lambda.driver';
+import { LocalDriver } from 'src/engine/core-modules/serverless/drivers/local.driver';
+import { SERVERLESS_DRIVER } from 'src/engine/core-modules/serverless/serverless.constants';
import {
ServerlessDriverType,
ServerlessModuleAsyncOptions,
-} from 'src/engine/integrations/serverless/serverless.interface';
-import { ServerlessService } from 'src/engine/integrations/serverless/serverless.service';
+} from 'src/engine/core-modules/serverless/serverless.interface';
+import { ServerlessService } from 'src/engine/core-modules/serverless/serverless.service';
@Global()
export class ServerlessModule {
diff --git a/packages/twenty-server/src/engine/integrations/serverless/serverless.service.ts b/packages/twenty-server/src/engine/core-modules/serverless/serverless.service.ts
similarity index 89%
rename from packages/twenty-server/src/engine/integrations/serverless/serverless.service.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/serverless.service.ts
index b83c44060..ee8fc93b4 100644
--- a/packages/twenty-server/src/engine/integrations/serverless/serverless.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/serverless/serverless.service.ts
@@ -3,9 +3,9 @@ import { Inject, Injectable } from '@nestjs/common';
import {
ServerlessDriver,
ServerlessExecuteResult,
-} from 'src/engine/integrations/serverless/drivers/interfaces/serverless-driver.interface';
+} from 'src/engine/core-modules/serverless/drivers/interfaces/serverless-driver.interface';
-import { SERVERLESS_DRIVER } from 'src/engine/integrations/serverless/serverless.constants';
+import { SERVERLESS_DRIVER } from 'src/engine/core-modules/serverless/serverless.constants';
import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity';
@Injectable()
diff --git a/packages/twenty-server/src/engine/integrations/serverless/utils/serverless-get-folder.utils.ts b/packages/twenty-server/src/engine/core-modules/serverless/utils/serverless-get-folder.utils.ts
similarity index 100%
rename from packages/twenty-server/src/engine/integrations/serverless/utils/serverless-get-folder.utils.ts
rename to packages/twenty-server/src/engine/core-modules/serverless/utils/serverless-get-folder.utils.ts
diff --git a/packages/twenty-server/src/engine/core-modules/throttler/throttler.service.ts b/packages/twenty-server/src/engine/core-modules/throttler/throttler.service.ts
index 5805db89a..55dac4c38 100644
--- a/packages/twenty-server/src/engine/core-modules/throttler/throttler.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/throttler/throttler.service.ts
@@ -4,9 +4,9 @@ import {
ThrottlerException,
ThrottlerExceptionCode,
} from 'src/engine/core-modules/throttler/throttler.exception';
-import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
-import { InjectCacheStorage } from 'src/engine/integrations/cache-storage/decorators/cache-storage.decorator';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
+import { CacheStorageService } from 'src/engine/core-modules/cache-storage/cache-storage.service';
+import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
@Injectable()
export class ThrottlerService {
diff --git a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts b/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts
index cc2727b3a..69972542b 100644
--- a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts
@@ -8,7 +8,7 @@ import { TypeORMService } from 'src/database/typeorm/typeorm.service';
import { UserWorkspace } from 'src/engine/core-modules/user-workspace/user-workspace.entity';
import { User } from 'src/engine/core-modules/user/user.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { WorkspaceEventEmitter } from 'src/engine/workspace-event-emitter/workspace-event-emitter';
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
diff --git a/packages/twenty-server/src/engine/core-modules/user/services/user.service.ts b/packages/twenty-server/src/engine/core-modules/user/services/user.service.ts
index aec142d26..9dc75ed16 100644
--- a/packages/twenty-server/src/engine/core-modules/user/services/user.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/user/services/user.service.ts
@@ -12,7 +12,7 @@ import {
Workspace,
WorkspaceActivationStatus,
} from 'src/engine/core-modules/workspace/workspace.entity';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import { WorkspaceEventEmitter } from 'src/engine/workspace-event-emitter/workspace-event-emitter';
diff --git a/packages/twenty-server/src/engine/core-modules/user/user.resolver.ts b/packages/twenty-server/src/engine/core-modules/user/user.resolver.ts
index c77bb690b..872ab7321 100644
--- a/packages/twenty-server/src/engine/core-modules/user/user.resolver.ts
+++ b/packages/twenty-server/src/engine/core-modules/user/user.resolver.ts
@@ -17,7 +17,7 @@ import { FileUpload, GraphQLUpload } from 'graphql-upload';
import { Repository } from 'typeorm';
import { FileFolder } from 'src/engine/core-modules/file/interfaces/file-folder.interface';
-import { SupportDriver } from 'src/engine/integrations/environment/interfaces/support.interface';
+import { SupportDriver } from 'src/engine/core-modules/environment/interfaces/support.interface';
import { FileUploadService } from 'src/engine/core-modules/file/file-upload/services/file-upload.service';
import { FileService } from 'src/engine/core-modules/file/services/file.service';
@@ -32,7 +32,7 @@ import { AuthUser } from 'src/engine/decorators/auth/auth-user.decorator';
import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator';
import { DemoEnvGuard } from 'src/engine/guards/demo.env.guard';
import { JwtAuthGuard } from 'src/engine/guards/jwt.auth.guard';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { streamToBuffer } from 'src/utils/stream-to-buffer';
const getHMACKey = (email?: string, key?: string | null) => {
diff --git a/packages/twenty-server/src/engine/core-modules/workflow/filters/workflow-trigger-graphql-api-exception.filter.ts b/packages/twenty-server/src/engine/core-modules/workflow/filters/workflow-trigger-graphql-api-exception.filter.ts
index 1bbfdc273..a274ccd43 100644
--- a/packages/twenty-server/src/engine/core-modules/workflow/filters/workflow-trigger-graphql-api-exception.filter.ts
+++ b/packages/twenty-server/src/engine/core-modules/workflow/filters/workflow-trigger-graphql-api-exception.filter.ts
@@ -7,7 +7,7 @@ import {
import {
WorkflowTriggerException,
WorkflowTriggerExceptionCode,
-} from 'src/modules/workflow/workflow-trigger/workflow-trigger.exception';
+} from 'src/modules/workflow/workflow-trigger/exceptions/workflow-trigger.exception';
@Catch(WorkflowTriggerException)
export class WorkflowTriggerGraphqlApiExceptionFilter
diff --git a/packages/twenty-server/src/engine/core-modules/workflow/workflow-trigger.resolver.ts b/packages/twenty-server/src/engine/core-modules/workflow/workflow-trigger.resolver.ts
index 630832a18..ef2c735a3 100644
--- a/packages/twenty-server/src/engine/core-modules/workflow/workflow-trigger.resolver.ts
+++ b/packages/twenty-server/src/engine/core-modules/workflow/workflow-trigger.resolver.ts
@@ -8,7 +8,7 @@ import { WorkflowTriggerGraphqlApiExceptionFilter } from 'src/engine/core-module
import { AuthUser } from 'src/engine/decorators/auth/auth-user.decorator';
import { AuthWorkspaceMemberId } from 'src/engine/decorators/auth/auth-workspace-member-id.decorator';
import { JwtAuthGuard } from 'src/engine/guards/jwt.auth.guard';
-import { WorkflowTriggerWorkspaceService } from 'src/modules/workflow/workflow-trigger/workflow-trigger.workspace-service';
+import { WorkflowTriggerWorkspaceService } from 'src/modules/workflow/workflow-trigger/workspace-services/workflow-trigger.workspace-service';
@Resolver()
@UseGuards(JwtAuthGuard)
diff --git a/packages/twenty-server/src/engine/core-modules/workspace/handle-workspace-member-deleted.job.ts b/packages/twenty-server/src/engine/core-modules/workspace/handle-workspace-member-deleted.job.ts
index 7e3bce067..8d1193073 100644
--- a/packages/twenty-server/src/engine/core-modules/workspace/handle-workspace-member-deleted.job.ts
+++ b/packages/twenty-server/src/engine/core-modules/workspace/handle-workspace-member-deleted.job.ts
@@ -1,7 +1,7 @@
import { WorkspaceService } from 'src/engine/core-modules/workspace/services/workspace.service';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
export type HandleWorkspaceMemberDeletedJobData = {
workspaceId: string;
diff --git a/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.spec.ts b/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.spec.ts
index 4f3bd8008..2b1c4c171 100644
--- a/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.spec.ts
@@ -8,8 +8,8 @@ import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/use
import { UserService } from 'src/engine/core-modules/user/services/user.service';
import { User } from 'src/engine/core-modules/user/user.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { EmailService } from 'src/engine/integrations/email/email.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EmailService } from 'src/engine/core-modules/email/email.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { WorkspaceManagerService } from 'src/engine/workspace-manager/workspace-manager.service';
import { WorkspaceService } from './workspace.service';
diff --git a/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts b/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts
index 57344c77c..70dbdf576 100644
--- a/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts
@@ -19,8 +19,8 @@ import {
Workspace,
WorkspaceActivationStatus,
} from 'src/engine/core-modules/workspace/workspace.entity';
-import { EmailService } from 'src/engine/integrations/email/email.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EmailService } from 'src/engine/core-modules/email/email.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { WorkspaceManagerService } from 'src/engine/workspace-manager/workspace-manager.service';
// eslint-disable-next-line @nx/workspace-inject-workspace-repository
diff --git a/packages/twenty-server/src/engine/core-modules/workspace/workspace-workspace-member.listener.ts b/packages/twenty-server/src/engine/core-modules/workspace/workspace-workspace-member.listener.ts
index fbc01935d..ad3c2b7ee 100644
--- a/packages/twenty-server/src/engine/core-modules/workspace/workspace-workspace-member.listener.ts
+++ b/packages/twenty-server/src/engine/core-modules/workspace/workspace-workspace-member.listener.ts
@@ -6,11 +6,11 @@ import {
HandleWorkspaceMemberDeletedJob,
HandleWorkspaceMemberDeletedJobData,
} from 'src/engine/core-modules/workspace/handle-workspace-member-deleted.job';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
-import { ObjectRecordUpdateEvent } from 'src/engine/integrations/event-emitter/types/object-record-update.event';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
+import { ObjectRecordUpdateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-update.event';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
diff --git a/packages/twenty-server/src/engine/guards/demo.env.guard.ts b/packages/twenty-server/src/engine/guards/demo.env.guard.ts
index 49fe9ae47..5a64ff235 100644
--- a/packages/twenty-server/src/engine/guards/demo.env.guard.ts
+++ b/packages/twenty-server/src/engine/guards/demo.env.guard.ts
@@ -5,7 +5,7 @@ import {
} from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { getRequest } from 'src/utils/extract-request';
@Injectable()
diff --git a/packages/twenty-server/src/engine/integrations/captcha/interfaces/index.ts b/packages/twenty-server/src/engine/integrations/captcha/interfaces/index.ts
deleted file mode 100644
index bd85706d7..000000000
--- a/packages/twenty-server/src/engine/integrations/captcha/interfaces/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './captcha.interface';
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/interfaces/exception-handler-driver.interface.ts b/packages/twenty-server/src/engine/integrations/exception-handler/interfaces/exception-handler-driver.interface.ts
deleted file mode 100644
index 4c8af5c20..000000000
--- a/packages/twenty-server/src/engine/integrations/exception-handler/interfaces/exception-handler-driver.interface.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { ExceptionHandlerOptions } from './exception-handler-options.interface';
-import { ExceptionHandlerUser } from './exception-handler-user.interface';
-
-export interface ExceptionHandlerDriverInterface {
- captureExceptions(
- exceptions: ReadonlyArray,
- options?: ExceptionHandlerOptions,
- ): string[];
- captureMessage(message: string, user?: ExceptionHandlerUser): void;
-}
diff --git a/packages/twenty-server/src/engine/integrations/exception-handler/interfaces/index.ts b/packages/twenty-server/src/engine/integrations/exception-handler/interfaces/index.ts
deleted file mode 100644
index f3c1acc40..000000000
--- a/packages/twenty-server/src/engine/integrations/exception-handler/interfaces/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './exception-handler.interface';
-export * from './exception-handler-driver.interface';
diff --git a/packages/twenty-server/src/engine/integrations/file-storage/interfaces/index.ts b/packages/twenty-server/src/engine/integrations/file-storage/interfaces/index.ts
deleted file mode 100644
index 6abeadb10..000000000
--- a/packages/twenty-server/src/engine/integrations/file-storage/interfaces/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './file-storage.interface';
diff --git a/packages/twenty-server/src/engine/integrations/integrations.module.ts b/packages/twenty-server/src/engine/integrations/integrations.module.ts
deleted file mode 100644
index e0a02b92a..000000000
--- a/packages/twenty-server/src/engine/integrations/integrations.module.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-import { Module } from '@nestjs/common';
-import { HttpAdapterHost } from '@nestjs/core';
-import { EventEmitterModule } from '@nestjs/event-emitter';
-
-import { CacheStorageModule } from 'src/engine/integrations/cache-storage/cache-storage.module';
-import { CaptchaModule } from 'src/engine/integrations/captcha/captcha.module';
-import { captchaModuleFactory } from 'src/engine/integrations/captcha/captcha.module-factory';
-import { EmailModule } from 'src/engine/integrations/email/email.module';
-import { emailModuleFactory } from 'src/engine/integrations/email/email.module-factory';
-import { ExceptionHandlerModule } from 'src/engine/integrations/exception-handler/exception-handler.module';
-import { exceptionHandlerModuleFactory } from 'src/engine/integrations/exception-handler/exception-handler.module-factory';
-import { fileStorageModuleFactory } from 'src/engine/integrations/file-storage/file-storage.module-factory';
-import { FileStorageService } from 'src/engine/integrations/file-storage/file-storage.service';
-import { LLMChatModelModule } from 'src/engine/integrations/llm-chat-model/llm-chat-model.module';
-import { llmChatModelModuleFactory } from 'src/engine/integrations/llm-chat-model/llm-chat-model.module-factory';
-import { LLMTracingModule } from 'src/engine/integrations/llm-tracing/llm-tracing.module';
-import { llmTracingModuleFactory } from 'src/engine/integrations/llm-tracing/llm-tracing.module-factory';
-import { loggerModuleFactory } from 'src/engine/integrations/logger/logger.module-factory';
-import { messageQueueModuleFactory } from 'src/engine/integrations/message-queue/message-queue.module-factory';
-import { serverlessModuleFactory } from 'src/engine/integrations/serverless/serverless-module.factory';
-import { ServerlessModule } from 'src/engine/integrations/serverless/serverless.module';
-
-import { EnvironmentModule } from './environment/environment.module';
-import { EnvironmentService } from './environment/environment.service';
-import { FileStorageModule } from './file-storage/file-storage.module';
-import { LoggerModule } from './logger/logger.module';
-import { MessageQueueModule } from './message-queue/message-queue.module';
-
-@Module({
- imports: [
- EnvironmentModule.forRoot({}),
- FileStorageModule.forRootAsync({
- useFactory: fileStorageModuleFactory,
- inject: [EnvironmentService],
- }),
- LoggerModule.forRootAsync({
- useFactory: loggerModuleFactory,
- inject: [EnvironmentService],
- }),
- MessageQueueModule.registerAsync({
- useFactory: messageQueueModuleFactory,
- inject: [EnvironmentService],
- }),
- ExceptionHandlerModule.forRootAsync({
- useFactory: exceptionHandlerModuleFactory,
- inject: [EnvironmentService, HttpAdapterHost],
- }),
- EmailModule.forRoot({
- useFactory: emailModuleFactory,
- inject: [EnvironmentService],
- }),
- CaptchaModule.forRoot({
- useFactory: captchaModuleFactory,
- inject: [EnvironmentService],
- }),
- EventEmitterModule.forRoot({
- wildcard: true,
- }),
- CacheStorageModule,
- LLMChatModelModule.forRoot({
- useFactory: llmChatModelModuleFactory,
- inject: [EnvironmentService],
- }),
- LLMTracingModule.forRoot({
- useFactory: llmTracingModuleFactory,
- inject: [EnvironmentService],
- }),
- ServerlessModule.forRootAsync({
- useFactory: serverlessModuleFactory,
- inject: [EnvironmentService, FileStorageService],
- }),
- ],
- exports: [],
- providers: [],
-})
-export class IntegrationsModule {}
diff --git a/packages/twenty-server/src/engine/integrations/logger/interfaces/index.ts b/packages/twenty-server/src/engine/integrations/logger/interfaces/index.ts
deleted file mode 100644
index 2e75a7e00..000000000
--- a/packages/twenty-server/src/engine/integrations/logger/interfaces/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './logger.interface';
diff --git a/packages/twenty-server/src/engine/integrations/message-queue/interfaces/index.ts b/packages/twenty-server/src/engine/integrations/message-queue/interfaces/index.ts
deleted file mode 100644
index 4fdb52388..000000000
--- a/packages/twenty-server/src/engine/integrations/message-queue/interfaces/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './message-queue-module-options.interface';
diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-field-metadata-default-value.validator.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-field-metadata-default-value.validator.ts
index f68aea19e..977358788 100644
--- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-field-metadata-default-value.validator.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-field-metadata-default-value.validator.ts
@@ -14,7 +14,7 @@ import {
FieldMetadataType,
} from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { validateDefaultValueForType } from 'src/engine/metadata-modules/field-metadata/utils/validate-default-value-for-type.util';
-import { LoggerService } from 'src/engine/integrations/logger/logger.service';
+import { LoggerService } from 'src/engine/core-modules/logger/logger.service';
@Injectable()
@ValidatorConstraint({ name: 'isFieldMetadataDefaultValue', async: true })
diff --git a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-server.service.ts b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-server.service.ts
index d1c241827..8538eabcb 100644
--- a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-server.service.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-server.service.ts
@@ -10,7 +10,7 @@ import {
RemoteServerEntity,
RemoteServerType,
} from 'src/engine/metadata-modules/remote-server/remote-server.entity';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { encryptText } from 'src/engine/core-modules/auth/auth.util';
import {
validateObjectAgainstInjections,
diff --git a/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.module.ts b/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.module.ts
index 02c76f596..f1b700d3d 100644
--- a/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.module.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.module.ts
@@ -13,7 +13,7 @@ import { FileUploadModule } from 'src/engine/core-modules/file/file-upload/file-
import { FileModule } from 'src/engine/core-modules/file/file.module';
import { ThrottlerModule } from 'src/engine/core-modules/throttler/throttler.module';
import { JwtAuthGuard } from 'src/engine/guards/jwt.auth.guard';
-import { ServerlessModule } from 'src/engine/integrations/serverless/serverless.module';
+import { ServerlessModule } from 'src/engine/core-modules/serverless/serverless.module';
import { ServerlessFunctionDTO } from 'src/engine/metadata-modules/serverless-function/dtos/serverless-function.dto';
import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity';
import { ServerlessFunctionResolver } from 'src/engine/metadata-modules/serverless-function/serverless-function.resolver';
diff --git a/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.service.ts b/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.service.ts
index 340754047..d7c591eb0 100644
--- a/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.service.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.service.ts
@@ -5,16 +5,16 @@ import { TypeOrmQueryService } from '@ptc-org/nestjs-query-typeorm';
import { FileUpload } from 'graphql-upload';
import { Repository } from 'typeorm';
-import { FileStorageExceptionCode } from 'src/engine/integrations/file-storage/interfaces/file-storage-exception';
-import { ServerlessExecuteResult } from 'src/engine/integrations/serverless/drivers/interfaces/serverless-driver.interface';
+import { FileStorageExceptionCode } from 'src/engine/core-modules/file-storage/interfaces/file-storage-exception';
+import { ServerlessExecuteResult } from 'src/engine/core-modules/serverless/drivers/interfaces/serverless-driver.interface';
import { ThrottlerService } from 'src/engine/core-modules/throttler/throttler.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { FileStorageService } from 'src/engine/integrations/file-storage/file-storage.service';
-import { readFileContent } from 'src/engine/integrations/file-storage/utils/read-file-content';
-import { SOURCE_FILE_NAME } from 'src/engine/integrations/serverless/drivers/constants/source-file-name';
-import { ServerlessService } from 'src/engine/integrations/serverless/serverless.service';
-import { getServerlessFolder } from 'src/engine/integrations/serverless/utils/serverless-get-folder.utils';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
+import { readFileContent } from 'src/engine/core-modules/file-storage/utils/read-file-content';
+import { SOURCE_FILE_NAME } from 'src/engine/core-modules/serverless/drivers/constants/source-file-name';
+import { ServerlessService } from 'src/engine/core-modules/serverless/serverless.service';
+import { getServerlessFolder } from 'src/engine/core-modules/serverless/utils/serverless-get-folder.utils';
import { CreateServerlessFunctionFromFileInput } from 'src/engine/metadata-modules/serverless-function/dtos/create-serverless-function-from-file.input';
import { UpdateServerlessFunctionInput } from 'src/engine/metadata-modules/serverless-function/dtos/update-serverless-function.input';
import {
@@ -27,8 +27,8 @@ import {
} from 'src/engine/metadata-modules/serverless-function/serverless-function.exception';
import { serverlessFunctionCreateHash } from 'src/engine/metadata-modules/serverless-function/utils/serverless-function-create-hash.utils';
import { isDefined } from 'src/utils/is-defined';
-import { getLastLayerDependencies } from 'src/engine/integrations/serverless/drivers/utils/get-last-layer-dependencies';
-import { LAST_LAYER_VERSION } from 'src/engine/integrations/serverless/drivers/layers/last-layer-version';
+import { getLastLayerDependencies } from 'src/engine/core-modules/serverless/drivers/utils/get-last-layer-dependencies';
+import { LAST_LAYER_VERSION } from 'src/engine/core-modules/serverless/drivers/layers/last-layer-version';
@Injectable()
export class ServerlessFunctionService extends TypeOrmQueryService {
diff --git a/packages/twenty-server/src/engine/middlewares/graphql-hydrate-request-from-token.middleware.ts b/packages/twenty-server/src/engine/middlewares/graphql-hydrate-request-from-token.middleware.ts
index c510f3e4a..8da811992 100644
--- a/packages/twenty-server/src/engine/middlewares/graphql-hydrate-request-from-token.middleware.ts
+++ b/packages/twenty-server/src/engine/middlewares/graphql-hydrate-request-from-token.middleware.ts
@@ -5,7 +5,7 @@ import { NextFunction, Request, Response } from 'express';
import { AuthGraphqlApiExceptionFilter } from 'src/engine/core-modules/auth/filters/auth-graphql-api-exception.filter';
import { TokenService } from 'src/engine/core-modules/auth/services/token.service';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
import { WorkspaceMetadataVersionService } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.service';
import { handleExceptionAndConvertToGraphQLError } from 'src/engine/utils/global-exception-handler.util';
diff --git a/packages/twenty-server/src/engine/twenty-orm/factories/workspace-datasource.factory.ts b/packages/twenty-server/src/engine/twenty-orm/factories/workspace-datasource.factory.ts
index 5bf311096..32065b91e 100644
--- a/packages/twenty-server/src/engine/twenty-orm/factories/workspace-datasource.factory.ts
+++ b/packages/twenty-server/src/engine/twenty-orm/factories/workspace-datasource.factory.ts
@@ -3,7 +3,7 @@ import { InjectRepository } from '@nestjs/typeorm';
import { EntitySchema, Repository } from 'typeorm';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { WorkspaceMetadataVersionService } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.service';
diff --git a/packages/twenty-server/src/engine/utils/global-exception-handler.util.ts b/packages/twenty-server/src/engine/utils/global-exception-handler.util.ts
index 7bb281278..3a938d4ce 100644
--- a/packages/twenty-server/src/engine/utils/global-exception-handler.util.ts
+++ b/packages/twenty-server/src/engine/utils/global-exception-handler.util.ts
@@ -2,7 +2,7 @@ import { HttpException } from '@nestjs/common';
import { GraphQLError } from 'graphql';
-import { ExceptionHandlerUser } from 'src/engine/integrations/exception-handler/interfaces/exception-handler-user.interface';
+import { ExceptionHandlerUser } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-user.interface';
import {
AuthenticationError,
@@ -15,7 +15,7 @@ import {
TimeoutError,
ValidationError,
} from 'src/engine/core-modules/graphql/utils/graphql-errors.util';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
const graphQLPredefinedExceptions = {
400: ValidationError,
diff --git a/packages/twenty-server/src/engine/workspace-cache-storage/workspace-cache-storage.service.ts b/packages/twenty-server/src/engine/workspace-cache-storage/workspace-cache-storage.service.ts
index c15991fe6..b20f880e4 100644
--- a/packages/twenty-server/src/engine/workspace-cache-storage/workspace-cache-storage.service.ts
+++ b/packages/twenty-server/src/engine/workspace-cache-storage/workspace-cache-storage.service.ts
@@ -2,9 +2,9 @@ import { Injectable } from '@nestjs/common';
import { EntitySchemaOptions } from 'typeorm';
-import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
-import { InjectCacheStorage } from 'src/engine/integrations/cache-storage/decorators/cache-storage.decorator';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
+import { CacheStorageService } from 'src/engine/core-modules/cache-storage/cache-storage.service';
+import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
enum WorkspaceCacheKeys {
diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/clean-inactive-workspaces.command.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/clean-inactive-workspaces.command.ts
index 79b805c60..744f37bfb 100644
--- a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/clean-inactive-workspaces.command.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/clean-inactive-workspaces.command.ts
@@ -1,8 +1,8 @@
import { Command, CommandRunner, Option } from 'nest-commander';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { CleanInactiveWorkspaceJob } from 'src/engine/workspace-manager/workspace-cleaner/crons/clean-inactive-workspace.job';
export type CleanInactiveWorkspacesCommandOptions = {
diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/start-clean-inactive-workspaces.cron.command.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/start-clean-inactive-workspaces.cron.command.ts
index daee64136..d93cbf6b3 100644
--- a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/start-clean-inactive-workspaces.cron.command.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/start-clean-inactive-workspaces.cron.command.ts
@@ -1,8 +1,8 @@
import { Command, CommandRunner } from 'nest-commander';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { cleanInactiveWorkspaceCronPattern } from 'src/engine/workspace-manager/workspace-cleaner/crons/clean-inactive-workspace.cron.pattern';
import { CleanInactiveWorkspaceJob } from 'src/engine/workspace-manager/workspace-cleaner/crons/clean-inactive-workspace.job';
diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/stop-clean-inactive-workspaces.cron.command.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/stop-clean-inactive-workspaces.cron.command.ts
index 0fa47c6fb..fa0fd6668 100644
--- a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/stop-clean-inactive-workspaces.cron.command.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/stop-clean-inactive-workspaces.cron.command.ts
@@ -1,8 +1,8 @@
import { Command, CommandRunner } from 'nest-commander';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { cleanInactiveWorkspaceCronPattern } from 'src/engine/workspace-manager/workspace-cleaner/crons/clean-inactive-workspace.cron.pattern';
import { CleanInactiveWorkspaceJob } from 'src/engine/workspace-manager/workspace-cleaner/crons/clean-inactive-workspace.job';
diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/crons/clean-inactive-workspace.job.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/crons/clean-inactive-workspace.job.ts
index ea492334a..0ebd5a207 100644
--- a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/crons/clean-inactive-workspace.job.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/crons/clean-inactive-workspace.job.ts
@@ -11,11 +11,11 @@ import { In, Repository } from 'typeorm';
import { TypeORMService } from 'src/database/typeorm/typeorm.service';
import { UserService } from 'src/engine/core-modules/user/services/user.service';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { EmailService } from 'src/engine/integrations/email/email.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { EmailService } from 'src/engine/core-modules/email/email.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-status/services/workspace-status.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-status/services/workspace-status.service.ts
index 28b4d035a..c60a27244 100644
--- a/packages/twenty-server/src/engine/workspace-manager/workspace-status/services/workspace-status.service.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/workspace-status/services/workspace-status.service.ts
@@ -10,7 +10,7 @@ import {
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
@Injectable()
export class WorkspaceStatusService {
diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-status/workspace-manager.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-status/workspace-manager.module.ts
index ac39a9e0c..62999ecce 100644
--- a/packages/twenty-server/src/engine/workspace-manager/workspace-status/workspace-manager.module.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/workspace-status/workspace-manager.module.ts
@@ -4,7 +4,7 @@ import { TypeOrmModule } from '@nestjs/typeorm';
import { BillingSubscription } from 'src/engine/core-modules/billing/entities/billing-subscription.entity';
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { EnvironmentModule } from 'src/engine/integrations/environment/environment.module';
+import { EnvironmentModule } from 'src/engine/core-modules/environment/environment.module';
import { WorkspaceStatusService } from 'src/engine/workspace-manager/workspace-status/services/workspace-status.service';
@Module({
diff --git a/packages/twenty-server/src/main.ts b/packages/twenty-server/src/main.ts
index 47df9c69a..af97bdb34 100644
--- a/packages/twenty-server/src/main.ts
+++ b/packages/twenty-server/src/main.ts
@@ -9,11 +9,11 @@ import { useContainer } from 'class-validator';
import { graphqlUploadExpress } from 'graphql-upload';
import { ApplyCorsToExceptions } from 'src/utils/apply-cors-to-exceptions';
+import { LoggerService } from 'src/engine/core-modules/logger/logger.service';
import { AppModule } from './app.module';
import { settings } from './engine/constants/settings';
-import { LoggerService } from './engine/integrations/logger/logger.service';
import { generateFrontConfig } from './utils/generate-front-config';
const bootstrap = async () => {
diff --git a/packages/twenty-server/src/modules/calendar/blocklist-manager/jobs/blocklist-item-delete-calendar-events.job.ts b/packages/twenty-server/src/modules/calendar/blocklist-manager/jobs/blocklist-item-delete-calendar-events.job.ts
index be172d0b1..f21e87d76 100644
--- a/packages/twenty-server/src/modules/calendar/blocklist-manager/jobs/blocklist-item-delete-calendar-events.job.ts
+++ b/packages/twenty-server/src/modules/calendar/blocklist-manager/jobs/blocklist-item-delete-calendar-events.job.ts
@@ -2,10 +2,10 @@ import { Logger, Scope } from '@nestjs/common';
import { And, Any, ILike, In, Not, Or } from 'typeorm';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { BlocklistWorkspaceEntity } from 'src/modules/blocklist/standard-objects/blocklist.workspace-entity';
diff --git a/packages/twenty-server/src/modules/calendar/blocklist-manager/jobs/blocklist-reimport-calendar-events.job.ts b/packages/twenty-server/src/modules/calendar/blocklist-manager/jobs/blocklist-reimport-calendar-events.job.ts
index 494136ab2..434a6aa53 100644
--- a/packages/twenty-server/src/modules/calendar/blocklist-manager/jobs/blocklist-reimport-calendar-events.job.ts
+++ b/packages/twenty-server/src/modules/calendar/blocklist-manager/jobs/blocklist-reimport-calendar-events.job.ts
@@ -2,10 +2,10 @@ import { Scope } from '@nestjs/common';
import { Not } from 'typeorm';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { BlocklistWorkspaceEntity } from 'src/modules/blocklist/standard-objects/blocklist.workspace-entity';
diff --git a/packages/twenty-server/src/modules/calendar/blocklist-manager/listeners/calendar-blocklist.listener.ts b/packages/twenty-server/src/modules/calendar/blocklist-manager/listeners/calendar-blocklist.listener.ts
index 9010dc185..886321725 100644
--- a/packages/twenty-server/src/modules/calendar/blocklist-manager/listeners/calendar-blocklist.listener.ts
+++ b/packages/twenty-server/src/modules/calendar/blocklist-manager/listeners/calendar-blocklist.listener.ts
@@ -1,12 +1,12 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
-import { ObjectRecordUpdateEvent } from 'src/engine/integrations/event-emitter/types/object-record-update.event';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
+import { ObjectRecordUpdateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-update.event';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { BlocklistWorkspaceEntity } from 'src/modules/blocklist/standard-objects/blocklist.workspace-entity';
import {
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-cleaner/jobs/delete-connected-account-associated-calendar-data.job.ts b/packages/twenty-server/src/modules/calendar/calendar-event-cleaner/jobs/delete-connected-account-associated-calendar-data.job.ts
index 481814595..cd8409ea8 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-cleaner/jobs/delete-connected-account-associated-calendar-data.job.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-cleaner/jobs/delete-connected-account-associated-calendar-data.job.ts
@@ -1,8 +1,8 @@
import { Logger } from '@nestjs/common';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { CalendarEventCleanerService } from 'src/modules/calendar/calendar-event-cleaner/services/calendar-event-cleaner.service';
export type DeleteConnectedAccountAssociatedCalendarDataJobData = {
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-cleaner/listeners/calendar-event-cleaner-connected-account.listener.ts b/packages/twenty-server/src/modules/calendar/calendar-event-cleaner/listeners/calendar-event-cleaner-connected-account.listener.ts
index 0c14b6b60..387dc0743 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-cleaner/listeners/calendar-event-cleaner-connected-account.listener.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-cleaner/listeners/calendar-event-cleaner-connected-account.listener.ts
@@ -1,10 +1,10 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import {
DeleteConnectedAccountAssociatedCalendarDataJob,
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-event-list-fetch.cron.command.ts b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-event-list-fetch.cron.command.ts
index 87d139aa4..3fd865ad6 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-event-list-fetch.cron.command.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-event-list-fetch.cron.command.ts
@@ -1,8 +1,8 @@
import { Command, CommandRunner } from 'nest-commander';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { CalendarEventListFetchCronJob } from 'src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-event-list-fetch.cron.job';
const CALENDAR_EVENTS_IMPORT_CRON_PATTERN = '*/5 * * * *';
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-ongoing-stale.cron.command.ts b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-ongoing-stale.cron.command.ts
index 3164e0a76..bc903f877 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-ongoing-stale.cron.command.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-ongoing-stale.cron.command.ts
@@ -1,8 +1,8 @@
import { Command, CommandRunner } from 'nest-commander';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { CalendarOngoingStaleCronJob } from 'src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-ongoing-stale.cron.job';
const CALENDAR_ONGOING_STALE_CRON_PATTERN = '0 * * * *';
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-event-list-fetch.cron.job.ts b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-event-list-fetch.cron.job.ts
index 9d5f88f42..89836b514 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-event-list-fetch.cron.job.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-event-list-fetch.cron.job.ts
@@ -6,12 +6,12 @@ import {
Workspace,
WorkspaceActivationStatus,
} from 'src/engine/core-modules/workspace/workspace.entity';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import {
CalendarEventListFetchJob,
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-ongoing-stale.cron.job.ts b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-ongoing-stale.cron.job.ts
index d3e5370b5..d163c782d 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-ongoing-stale.cron.job.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-ongoing-stale.cron.job.ts
@@ -6,12 +6,12 @@ import {
Workspace,
WorkspaceActivationStatus,
} from 'src/engine/core-modules/workspace/workspace.entity';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import {
CalendarOngoingStaleJob,
CalendarOngoingStaleJobData,
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/drivers/google-calendar/google-calendar-driver.module.ts b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/drivers/google-calendar/google-calendar-driver.module.ts
index 46b209ef9..d76a6642d 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/drivers/google-calendar/google-calendar-driver.module.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/drivers/google-calendar/google-calendar-driver.module.ts
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';
-import { EnvironmentModule } from 'src/engine/integrations/environment/environment.module';
+import { EnvironmentModule } from 'src/engine/core-modules/environment/environment.module';
import { GoogleCalendarClientProvider } from 'src/modules/calendar/calendar-event-import-manager/drivers/google-calendar/providers/google-calendar.provider';
import { GoogleCalendarGetEventsService } from 'src/modules/calendar/calendar-event-import-manager/drivers/google-calendar/services/google-calendar-get-events.service';
import { OAuth2ClientManagerModule } from 'src/modules/connected-account/oauth2-client-manager/oauth2-client-manager.module';
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/jobs/calendar-event-list-fetch.job.ts b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/jobs/calendar-event-list-fetch.job.ts
index 402661b93..406e71702 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/jobs/calendar-event-list-fetch.job.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/jobs/calendar-event-list-fetch.job.ts
@@ -1,8 +1,8 @@
import { Scope } from '@nestjs/common';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { CalendarEventsImportService } from 'src/modules/calendar/calendar-event-import-manager/services/calendar-events-import.service';
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/jobs/calendar-ongoing-stale.job.ts b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/jobs/calendar-ongoing-stale.job.ts
index ee579d44f..0ddd02960 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/jobs/calendar-ongoing-stale.job.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/jobs/calendar-ongoing-stale.job.ts
@@ -2,9 +2,9 @@ import { Logger, Scope } from '@nestjs/common';
import { In } from 'typeorm';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { isSyncStale } from 'src/modules/calendar/calendar-event-import-manager/utils/is-sync-stale.util';
import { CalendarChannelSyncStatusService } from 'src/modules/calendar/common/services/calendar-channel-sync-status.service';
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/services/calendar-save-events.service.ts b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/services/calendar-save-events.service.ts
index 3f22e0c78..8c71c73f1 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/services/calendar-save-events.service.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/services/calendar-save-events.service.ts
@@ -2,9 +2,9 @@ import { Injectable } from '@nestjs/common';
import { Any } from 'typeorm';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { WorkspaceEventEmitter } from 'src/engine/workspace-event-emitter/workspace-event-emitter';
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-create-company-and-contact-after-sync.job.ts b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-create-company-and-contact-after-sync.job.ts
index 877fa0f45..1aadb2088 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-create-company-and-contact-after-sync.job.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-create-company-and-contact-after-sync.job.ts
@@ -2,9 +2,9 @@ import { Logger, Scope } from '@nestjs/common';
import { IsNull } from 'typeorm';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity';
import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity';
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-event-participant-match-participant.job.ts b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-event-participant-match-participant.job.ts
index be60d5e65..134244814 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-event-participant-match-participant.job.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-event-participant-match-participant.job.ts
@@ -4,9 +4,9 @@ import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity';
import { MatchParticipantService } from 'src/modules/match-participant/match-participant.service';
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-event-participant-unmatch-participant.job.ts b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-event-participant-unmatch-participant.job.ts
index 3c41ab2a1..9d3af1486 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-event-participant-unmatch-participant.job.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-event-participant-unmatch-participant.job.ts
@@ -1,8 +1,8 @@
import { Scope } from '@nestjs/common';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity';
import { MatchParticipantService } from 'src/modules/match-participant/match-participant.service';
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/listeners/calendar-event-participant-person.listener.ts b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/listeners/calendar-event-participant-person.listener.ts
index 49389974f..47f0d16e8 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/listeners/calendar-event-participant-person.listener.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/listeners/calendar-event-participant-person.listener.ts
@@ -1,12 +1,12 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
-import { ObjectRecordUpdateEvent } from 'src/engine/integrations/event-emitter/types/object-record-update.event';
-import { objectRecordChangedProperties as objectRecordUpdateEventChangedProperties } from 'src/engine/integrations/event-emitter/utils/object-record-changed-properties.util';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
+import { ObjectRecordUpdateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-update.event';
+import { objectRecordChangedProperties as objectRecordUpdateEventChangedProperties } from 'src/engine/core-modules/event-emitter/utils/object-record-changed-properties.util';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import {
CalendarEventParticipantMatchParticipantJob,
diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/listeners/calendar-event-participant-workspace-member.listener.ts b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/listeners/calendar-event-participant-workspace-member.listener.ts
index 6016c78c9..31d292124 100644
--- a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/listeners/calendar-event-participant-workspace-member.listener.ts
+++ b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/listeners/calendar-event-participant-workspace-member.listener.ts
@@ -1,12 +1,12 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
-import { ObjectRecordUpdateEvent } from 'src/engine/integrations/event-emitter/types/object-record-update.event';
-import { objectRecordChangedProperties as objectRecordUpdateEventChangedProperties } from 'src/engine/integrations/event-emitter/utils/object-record-changed-properties.util';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
+import { ObjectRecordUpdateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-update.event';
+import { objectRecordChangedProperties as objectRecordUpdateEventChangedProperties } from 'src/engine/core-modules/event-emitter/utils/object-record-changed-properties.util';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import {
CalendarEventParticipantMatchParticipantJob,
diff --git a/packages/twenty-server/src/modules/calendar/common/services/calendar-channel-sync-status.service.ts b/packages/twenty-server/src/modules/calendar/common/services/calendar-channel-sync-status.service.ts
index dfa8ac279..b7149b4ba 100644
--- a/packages/twenty-server/src/modules/calendar/common/services/calendar-channel-sync-status.service.ts
+++ b/packages/twenty-server/src/modules/calendar/common/services/calendar-channel-sync-status.service.ts
@@ -2,9 +2,9 @@ import { Injectable } from '@nestjs/common';
import { Any } from 'typeorm';
-import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
-import { InjectCacheStorage } from 'src/engine/integrations/cache-storage/decorators/cache-storage.decorator';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
+import { CacheStorageService } from 'src/engine/core-modules/cache-storage/cache-storage.service';
+import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import {
CalendarChannelSyncStage,
diff --git a/packages/twenty-server/src/modules/connected-account/listeners/connected-account.listener.ts b/packages/twenty-server/src/modules/connected-account/listeners/connected-account.listener.ts
index 455721d81..da8bededd 100644
--- a/packages/twenty-server/src/modules/connected-account/listeners/connected-account.listener.ts
+++ b/packages/twenty-server/src/modules/connected-account/listeners/connected-account.listener.ts
@@ -1,7 +1,7 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { AccountsToReconnectService } from 'src/modules/connected-account/services/accounts-to-reconnect.service';
diff --git a/packages/twenty-server/src/modules/connected-account/oauth2-client-manager/drivers/google/google-oauth2-client-manager.service.ts b/packages/twenty-server/src/modules/connected-account/oauth2-client-manager/drivers/google/google-oauth2-client-manager.service.ts
index ef577eafc..e5020f254 100644
--- a/packages/twenty-server/src/modules/connected-account/oauth2-client-manager/drivers/google/google-oauth2-client-manager.service.ts
+++ b/packages/twenty-server/src/modules/connected-account/oauth2-client-manager/drivers/google/google-oauth2-client-manager.service.ts
@@ -3,7 +3,7 @@ import { Injectable } from '@nestjs/common';
import { OAuth2Client } from 'google-auth-library';
import { google } from 'googleapis';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
@Injectable()
export class GoogleOAuth2ClientManagerService {
diff --git a/packages/twenty-server/src/modules/connected-account/query-hooks/connected-account-delete-one.pre-query.hook.ts b/packages/twenty-server/src/modules/connected-account/query-hooks/connected-account-delete-one.pre-query.hook.ts
index 0812c0e33..c04999bea 100644
--- a/packages/twenty-server/src/modules/connected-account/query-hooks/connected-account-delete-one.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/connected-account/query-hooks/connected-account-delete-one.pre-query.hook.ts
@@ -3,7 +3,7 @@ import { DeleteOneResolverArgs } from 'src/engine/api/graphql/workspace-resolver
import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { WorkspaceEventEmitter } from 'src/engine/workspace-event-emitter/workspace-event-emitter';
import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity';
diff --git a/packages/twenty-server/src/modules/connected-account/refresh-access-token-manager/drivers/google/services/google-api-refresh-access-token.service.ts b/packages/twenty-server/src/modules/connected-account/refresh-access-token-manager/drivers/google/services/google-api-refresh-access-token.service.ts
index 3a5d015be..0afb78d71 100644
--- a/packages/twenty-server/src/modules/connected-account/refresh-access-token-manager/drivers/google/services/google-api-refresh-access-token.service.ts
+++ b/packages/twenty-server/src/modules/connected-account/refresh-access-token-manager/drivers/google/services/google-api-refresh-access-token.service.ts
@@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
import axios from 'axios';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
@Injectable()
export class GoogleAPIRefreshAccessTokenService {
diff --git a/packages/twenty-server/src/modules/contact-creation-manager/jobs/create-company-and-contact.job.ts b/packages/twenty-server/src/modules/contact-creation-manager/jobs/create-company-and-contact.job.ts
index 0a00c1ec9..a9024bb5b 100644
--- a/packages/twenty-server/src/modules/contact-creation-manager/jobs/create-company-and-contact.job.ts
+++ b/packages/twenty-server/src/modules/contact-creation-manager/jobs/create-company-and-contact.job.ts
@@ -1,6 +1,6 @@
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type';
import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
import { CreateCompanyAndContactService } from 'src/modules/contact-creation-manager/services/create-company-and-contact.service';
diff --git a/packages/twenty-server/src/modules/contact-creation-manager/listeners/auto-companies-and-contacts-creation-calendar-channel.listener.ts b/packages/twenty-server/src/modules/contact-creation-manager/listeners/auto-companies-and-contacts-creation-calendar-channel.listener.ts
index 5dd7497d0..50a24f1d1 100644
--- a/packages/twenty-server/src/modules/contact-creation-manager/listeners/auto-companies-and-contacts-creation-calendar-channel.listener.ts
+++ b/packages/twenty-server/src/modules/contact-creation-manager/listeners/auto-companies-and-contacts-creation-calendar-channel.listener.ts
@@ -1,11 +1,11 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
-import { ObjectRecordUpdateEvent } from 'src/engine/integrations/event-emitter/types/object-record-update.event';
-import { objectRecordChangedProperties } from 'src/engine/integrations/event-emitter/utils/object-record-changed-properties.util';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordUpdateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-update.event';
+import { objectRecordChangedProperties } from 'src/engine/core-modules/event-emitter/utils/object-record-changed-properties.util';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import {
CalendarCreateCompanyAndContactAfterSyncJob,
diff --git a/packages/twenty-server/src/modules/contact-creation-manager/listeners/auto-companies-and-contacts-creation-message-channel.listener.ts b/packages/twenty-server/src/modules/contact-creation-manager/listeners/auto-companies-and-contacts-creation-message-channel.listener.ts
index ac2511f74..6ed36b4be 100644
--- a/packages/twenty-server/src/modules/contact-creation-manager/listeners/auto-companies-and-contacts-creation-message-channel.listener.ts
+++ b/packages/twenty-server/src/modules/contact-creation-manager/listeners/auto-companies-and-contacts-creation-message-channel.listener.ts
@@ -1,11 +1,11 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
-import { ObjectRecordUpdateEvent } from 'src/engine/integrations/event-emitter/types/object-record-update.event';
-import { objectRecordChangedProperties } from 'src/engine/integrations/event-emitter/utils/object-record-changed-properties.util';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordUpdateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-update.event';
+import { objectRecordChangedProperties } from 'src/engine/core-modules/event-emitter/utils/object-record-changed-properties.util';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity';
import {
diff --git a/packages/twenty-server/src/modules/contact-creation-manager/services/create-company-and-contact.service.ts b/packages/twenty-server/src/modules/contact-creation-manager/services/create-company-and-contact.service.ts
index db6a6328b..62ca1e4b4 100644
--- a/packages/twenty-server/src/modules/contact-creation-manager/services/create-company-and-contact.service.ts
+++ b/packages/twenty-server/src/modules/contact-creation-manager/services/create-company-and-contact.service.ts
@@ -5,7 +5,7 @@ import chunk from 'lodash.chunk';
import compact from 'lodash.compact';
import { Any, EntityManager, Repository } from 'typeorm';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
diff --git a/packages/twenty-server/src/modules/mail-sender/workflow-actions/send-email.workflow-action.ts b/packages/twenty-server/src/modules/mail-sender/workflow-actions/send-email.workflow-action.ts
new file mode 100644
index 000000000..3a17c77cf
--- /dev/null
+++ b/packages/twenty-server/src/modules/mail-sender/workflow-actions/send-email.workflow-action.ts
@@ -0,0 +1,77 @@
+import { Injectable, Logger } from '@nestjs/common';
+
+import { z } from 'zod';
+import Handlebars from 'handlebars';
+import { JSDOM } from 'jsdom';
+import DOMPurify from 'dompurify';
+import { WorkflowActionEmail } from 'twenty-emails';
+import { render } from '@react-email/components';
+
+import { WorkflowActionResult } from 'src/modules/workflow/workflow-executor/types/workflow-action-result.type';
+import { WorkflowSendEmailStep } from 'src/modules/workflow/workflow-executor/types/workflow-action.type';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
+import { EmailService } from 'src/engine/core-modules/email/email.service';
+
+@Injectable()
+export class SendEmailWorkflowAction {
+ private readonly logger = new Logger(SendEmailWorkflowAction.name);
+ constructor(
+ private readonly environmentService: EnvironmentService,
+ private readonly emailService: EmailService,
+ ) {}
+
+ async execute({
+ step,
+ payload,
+ }: {
+ step: WorkflowSendEmailStep;
+ payload: {
+ email: string;
+ [key: string]: string;
+ };
+ }): Promise {
+ try {
+ const emailSchema = z.string().trim().email('Invalid email');
+
+ const result = emailSchema.safeParse(payload.email);
+
+ if (!result.success) {
+ this.logger.warn(`Email '${payload.email}' invalid`);
+
+ return { result: { success: false } };
+ }
+
+ const mainText = Handlebars.compile(step.settings.template)(payload);
+
+ const window = new JSDOM('').window;
+ const purify = DOMPurify(window);
+ const safeHTML = purify.sanitize(mainText || '');
+
+ const email = WorkflowActionEmail({
+ dangerousHTML: safeHTML,
+ title: step.settings.title,
+ callToAction: step.settings.callToAction,
+ });
+ const html = render(email, {
+ pretty: true,
+ });
+ const text = render(email, {
+ plainText: true,
+ });
+
+ await this.emailService.send({
+ from: `${this.environmentService.get(
+ 'EMAIL_FROM_NAME',
+ )} <${this.environmentService.get('EMAIL_FROM_ADDRESS')}>`,
+ to: payload.email,
+ subject: step.settings.subject || '',
+ text,
+ html,
+ });
+
+ return { result: { success: true } };
+ } catch (error) {
+ return { error };
+ }
+ }
+}
diff --git a/packages/twenty-server/src/modules/messaging/blocklist-manager/jobs/messaging-blocklist-item-delete-messages.job.ts b/packages/twenty-server/src/modules/messaging/blocklist-manager/jobs/messaging-blocklist-item-delete-messages.job.ts
index b9396eb83..8fedb4c73 100644
--- a/packages/twenty-server/src/modules/messaging/blocklist-manager/jobs/messaging-blocklist-item-delete-messages.job.ts
+++ b/packages/twenty-server/src/modules/messaging/blocklist-manager/jobs/messaging-blocklist-item-delete-messages.job.ts
@@ -2,10 +2,10 @@ import { Logger, Scope } from '@nestjs/common';
import { And, Any, ILike, In, Not, Or } from 'typeorm';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { BlocklistWorkspaceEntity } from 'src/modules/blocklist/standard-objects/blocklist.workspace-entity';
diff --git a/packages/twenty-server/src/modules/messaging/blocklist-manager/jobs/messaging-blocklist-reimport-messages.job.ts b/packages/twenty-server/src/modules/messaging/blocklist-manager/jobs/messaging-blocklist-reimport-messages.job.ts
index 0d2a76794..0b84b473c 100644
--- a/packages/twenty-server/src/modules/messaging/blocklist-manager/jobs/messaging-blocklist-reimport-messages.job.ts
+++ b/packages/twenty-server/src/modules/messaging/blocklist-manager/jobs/messaging-blocklist-reimport-messages.job.ts
@@ -2,10 +2,10 @@ import { Scope } from '@nestjs/common';
import { Not } from 'typeorm';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { BlocklistWorkspaceEntity } from 'src/modules/blocklist/standard-objects/blocklist.workspace-entity';
diff --git a/packages/twenty-server/src/modules/messaging/blocklist-manager/listeners/messaging-blocklist.listener.ts b/packages/twenty-server/src/modules/messaging/blocklist-manager/listeners/messaging-blocklist.listener.ts
index db2ded2d4..d232e9040 100644
--- a/packages/twenty-server/src/modules/messaging/blocklist-manager/listeners/messaging-blocklist.listener.ts
+++ b/packages/twenty-server/src/modules/messaging/blocklist-manager/listeners/messaging-blocklist.listener.ts
@@ -1,12 +1,12 @@
import { Injectable, Scope } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
-import { ObjectRecordUpdateEvent } from 'src/engine/integrations/event-emitter/types/object-record-update.event';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
+import { ObjectRecordUpdateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-update.event';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { BlocklistWorkspaceEntity } from 'src/modules/blocklist/standard-objects/blocklist.workspace-entity';
import {
diff --git a/packages/twenty-server/src/modules/messaging/common/services/message-channel-sync-status.service.ts b/packages/twenty-server/src/modules/messaging/common/services/message-channel-sync-status.service.ts
index bc29575c5..d21b73fb0 100644
--- a/packages/twenty-server/src/modules/messaging/common/services/message-channel-sync-status.service.ts
+++ b/packages/twenty-server/src/modules/messaging/common/services/message-channel-sync-status.service.ts
@@ -2,9 +2,9 @@ import { Injectable } from '@nestjs/common';
import { Any } from 'typeorm';
-import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
-import { InjectCacheStorage } from 'src/engine/integrations/cache-storage/decorators/cache-storage.decorator';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
+import { CacheStorageService } from 'src/engine/core-modules/cache-storage/cache-storage.service';
+import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { AccountsToReconnectService } from 'src/modules/connected-account/services/accounts-to-reconnect.service';
import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
diff --git a/packages/twenty-server/src/modules/messaging/message-cleaner/jobs/messaging-connected-account-deletion-cleanup.job.ts b/packages/twenty-server/src/modules/messaging/message-cleaner/jobs/messaging-connected-account-deletion-cleanup.job.ts
index c9cc4e9e9..2523c1804 100644
--- a/packages/twenty-server/src/modules/messaging/message-cleaner/jobs/messaging-connected-account-deletion-cleanup.job.ts
+++ b/packages/twenty-server/src/modules/messaging/message-cleaner/jobs/messaging-connected-account-deletion-cleanup.job.ts
@@ -1,9 +1,9 @@
import { Logger, Scope } from '@nestjs/common';
import { MessagingMessageCleanerService } from 'src/modules/messaging/message-cleaner/services/messaging-message-cleaner.service';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
export type MessagingConnectedAccountDeletionCleanupJobData = {
workspaceId: string;
diff --git a/packages/twenty-server/src/modules/messaging/message-cleaner/listeners/messaging-message-cleaner-connected-account.listener.ts b/packages/twenty-server/src/modules/messaging/message-cleaner/listeners/messaging-message-cleaner-connected-account.listener.ts
index 8caf65c58..8e837cce6 100644
--- a/packages/twenty-server/src/modules/messaging/message-cleaner/listeners/messaging-message-cleaner-connected-account.listener.ts
+++ b/packages/twenty-server/src/modules/messaging/message-cleaner/listeners/messaging-message-cleaner-connected-account.listener.ts
@@ -1,10 +1,10 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
import {
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/commands/messaging-single-message-import.command.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/commands/messaging-single-message-import.command.ts
index c55465f7d..77e4f776f 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/commands/messaging-single-message-import.command.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/commands/messaging-single-message-import.command.ts
@@ -1,8 +1,8 @@
import { Command, CommandRunner, Option } from 'nest-commander';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import {
MessagingAddSingleMessageToCacheForImportJob,
MessagingAddSingleMessageToCacheForImportJobData,
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-message-list-fetch.cron.command.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-message-list-fetch.cron.command.ts
index d8e2253bd..a6dc37e7b 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-message-list-fetch.cron.command.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-message-list-fetch.cron.command.ts
@@ -1,8 +1,8 @@
import { Command, CommandRunner } from 'nest-commander';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { MessagingMessageListFetchCronJob } from 'src/modules/messaging/message-import-manager/crons/jobs/messaging-message-list-fetch.cron.job';
const MESSAGING_MESSAGE_LIST_FETCH_CRON_PATTERN = '*/5 * * * *';
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-messages-import.cron.command.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-messages-import.cron.command.ts
index 11ef7211d..03196cd83 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-messages-import.cron.command.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-messages-import.cron.command.ts
@@ -1,8 +1,8 @@
import { Command, CommandRunner } from 'nest-commander';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { MessagingMessagesImportCronJob } from 'src/modules/messaging/message-import-manager/crons/jobs/messaging-messages-import.cron.job';
const MESSAGING_MESSAGES_IMPORT_CRON_PATTERN = '*/1 * * * *';
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-ongoing-stale.cron.command.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-ongoing-stale.cron.command.ts
index ed77d7955..5986a33ce 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-ongoing-stale.cron.command.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-ongoing-stale.cron.command.ts
@@ -1,8 +1,8 @@
import { Command, CommandRunner } from 'nest-commander';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { MessagingOngoingStaleCronJob } from 'src/modules/messaging/message-import-manager/crons/jobs/messaging-ongoing-stale.cron.job';
const MESSAGING_ONGOING_STALE_CRON_PATTERN = '0 * * * *';
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-message-list-fetch.cron.job.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-message-list-fetch.cron.job.ts
index 43ca1ae75..b3f433fee 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-message-list-fetch.cron.job.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-message-list-fetch.cron.job.ts
@@ -6,12 +6,12 @@ import {
Workspace,
WorkspaceActivationStatus,
} from 'src/engine/core-modules/workspace/workspace.entity';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import {
MessageChannelSyncStage,
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-messages-import.cron.job.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-messages-import.cron.job.ts
index f22783294..efcbc54ca 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-messages-import.cron.job.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-messages-import.cron.job.ts
@@ -6,12 +6,12 @@ import {
Workspace,
WorkspaceActivationStatus,
} from 'src/engine/core-modules/workspace/workspace.entity';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import {
MessageChannelSyncStage,
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-ongoing-stale.cron.job.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-ongoing-stale.cron.job.ts
index 08ca244cc..f3b6b96fc 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-ongoing-stale.cron.job.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-ongoing-stale.cron.job.ts
@@ -6,12 +6,12 @@ import {
Workspace,
WorkspaceActivationStatus,
} from 'src/engine/core-modules/workspace/workspace.entity';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import {
MessagingOngoingStaleJob,
MessagingOngoingStaleJobData,
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/messaging-gmail-driver.module.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/messaging-gmail-driver.module.ts
index 8229618a2..3fc555a87 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/messaging-gmail-driver.module.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/messaging-gmail-driver.module.ts
@@ -4,7 +4,7 @@ import { TypeOrmModule } from '@nestjs/typeorm';
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module';
-import { EnvironmentModule } from 'src/engine/integrations/environment/environment.module';
+import { EnvironmentModule } from 'src/engine/core-modules/environment/environment.module';
import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module';
import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module';
import { BlocklistWorkspaceEntity } from 'src/modules/blocklist/standard-objects/blocklist.workspace-entity';
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-add-single-message-to-cache-for-import.job.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-add-single-message-to-cache-for-import.job.ts
index 3f2c2a537..a37c38371 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-add-single-message-to-cache-for-import.job.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-add-single-message-to-cache-for-import.job.ts
@@ -1,9 +1,9 @@
-import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
-import { InjectCacheStorage } from 'src/engine/integrations/cache-storage/decorators/cache-storage.decorator';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { CacheStorageService } from 'src/engine/core-modules/cache-storage/cache-storage.service';
+import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
export type MessagingAddSingleMessageToCacheForImportJobData = {
messageExternalId: string;
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-clean-cache.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-clean-cache.ts
index 24e048ce0..38e3ec8cf 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-clean-cache.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-clean-cache.ts
@@ -1,11 +1,11 @@
import { Logger } from '@nestjs/common';
-import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
-import { InjectCacheStorage } from 'src/engine/integrations/cache-storage/decorators/cache-storage.decorator';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { CacheStorageService } from 'src/engine/core-modules/cache-storage/cache-storage.service';
+import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
export type MessagingCleanCacheJobData = {
workspaceId: string;
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-message-list-fetch.job.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-message-list-fetch.job.ts
index a51bd35a0..cc66a1ff5 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-message-list-fetch.job.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-message-list-fetch.job.ts
@@ -1,8 +1,8 @@
import { Logger, Scope } from '@nestjs/common';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { ConnectedAccountRepository } from 'src/modules/connected-account/repositories/connected-account.repository';
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-messages-import.job.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-messages-import.job.ts
index f62dc3a1b..a22e1b26a 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-messages-import.job.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-messages-import.job.ts
@@ -1,8 +1,8 @@
import { Scope } from '@nestjs/common';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { ConnectedAccountRepository } from 'src/modules/connected-account/repositories/connected-account.repository';
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-ongoing-stale.job.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-ongoing-stale.job.ts
index 6f5166d26..f8ec658d3 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-ongoing-stale.job.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/jobs/messaging-ongoing-stale.job.ts
@@ -2,9 +2,9 @@ import { Logger, Scope } from '@nestjs/common';
import { In } from 'typeorm';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { MessageChannelSyncStatusService } from 'src/modules/messaging/common/services/message-channel-sync-status.service';
import {
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/listeners/messaging-import-manager-message-channel.listener.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/listeners/messaging-import-manager-message-channel.listener.ts
index b81118d3a..513e2672a 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/listeners/messaging-import-manager-message-channel.listener.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/listeners/messaging-import-manager-message-channel.listener.ts
@@ -1,10 +1,10 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity';
import {
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-full-message-list-fetch.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-full-message-list-fetch.service.ts
index 549e90ad0..c4652b5e6 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-full-message-list-fetch.service.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-full-message-list-fetch.service.ts
@@ -2,9 +2,9 @@ import { Injectable } from '@nestjs/common';
import { Any } from 'typeorm';
-import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
-import { InjectCacheStorage } from 'src/engine/integrations/cache-storage/decorators/cache-storage.decorator';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
+import { CacheStorageService } from 'src/engine/core-modules/cache-storage/cache-storage.service';
+import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
import { MessageChannelSyncStatusService } from 'src/modules/messaging/common/services/message-channel-sync-status.service';
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-messages-import.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-messages-import.service.ts
index d13e80f03..fec045528 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-messages-import.service.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-messages-import.service.ts
@@ -1,8 +1,8 @@
import { Injectable, Logger } from '@nestjs/common';
-import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
-import { InjectCacheStorage } from 'src/engine/integrations/cache-storage/decorators/cache-storage.decorator';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
+import { CacheStorageService } from 'src/engine/core-modules/cache-storage/cache-storage.service';
+import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { BlocklistRepository } from 'src/modules/blocklist/repositories/blocklist.repository';
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-partial-message-list-fetch.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-partial-message-list-fetch.service.ts
index d7bded110..14fc98a63 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-partial-message-list-fetch.service.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-partial-message-list-fetch.service.ts
@@ -2,9 +2,9 @@ import { Injectable, Logger } from '@nestjs/common';
import { Any } from 'typeorm';
-import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
-import { InjectCacheStorage } from 'src/engine/integrations/cache-storage/decorators/cache-storage.decorator';
-import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum';
+import { CacheStorageService } from 'src/engine/core-modules/cache-storage/cache-storage.service';
+import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
import { MessageChannelSyncStatusService } from 'src/modules/messaging/common/services/message-channel-sync-status.service';
diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.ts
index 79f93b3e0..4080dc08f 100644
--- a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.ts
+++ b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.ts
@@ -2,9 +2,9 @@ import { Injectable } from '@nestjs/common';
import { EntityManager } from 'typeorm';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
diff --git a/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/message-participant-match-participant.job.ts b/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/message-participant-match-participant.job.ts
index 9b3f4b6bf..a72f4671b 100644
--- a/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/message-participant-match-participant.job.ts
+++ b/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/message-participant-match-participant.job.ts
@@ -1,8 +1,8 @@
import { Scope } from '@nestjs/common';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { MatchParticipantService } from 'src/modules/match-participant/match-participant.service';
import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-participant.workspace-entity';
diff --git a/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/message-participant-unmatch-participant.job.ts b/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/message-participant-unmatch-participant.job.ts
index 78f2b80d8..8d7cc46b2 100644
--- a/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/message-participant-unmatch-participant.job.ts
+++ b/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/message-participant-unmatch-participant.job.ts
@@ -1,8 +1,8 @@
import { Scope } from '@nestjs/common';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { MatchParticipantService } from 'src/modules/match-participant/match-participant.service';
import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-participant.workspace-entity';
diff --git a/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/messaging-create-company-and-contact-after-sync.job.ts b/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/messaging-create-company-and-contact-after-sync.job.ts
index e6b7c59f2..8529ebaef 100644
--- a/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/messaging-create-company-and-contact-after-sync.job.ts
+++ b/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/messaging-create-company-and-contact-after-sync.job.ts
@@ -2,9 +2,9 @@ import { Logger } from '@nestjs/common';
import { Any, IsNull } from 'typeorm';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
diff --git a/packages/twenty-server/src/modules/messaging/message-participant-manager/listeners/message-participant-person.listener.ts b/packages/twenty-server/src/modules/messaging/message-participant-manager/listeners/message-participant-person.listener.ts
index 8e42990c9..86b3a0289 100644
--- a/packages/twenty-server/src/modules/messaging/message-participant-manager/listeners/message-participant-person.listener.ts
+++ b/packages/twenty-server/src/modules/messaging/message-participant-manager/listeners/message-participant-person.listener.ts
@@ -1,12 +1,12 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
-import { ObjectRecordUpdateEvent } from 'src/engine/integrations/event-emitter/types/object-record-update.event';
-import { objectRecordChangedProperties as objectRecordUpdateEventChangedProperties } from 'src/engine/integrations/event-emitter/utils/object-record-changed-properties.util';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
+import { ObjectRecordUpdateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-update.event';
+import { objectRecordChangedProperties as objectRecordUpdateEventChangedProperties } from 'src/engine/core-modules/event-emitter/utils/object-record-changed-properties.util';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import {
MessageParticipantMatchParticipantJob,
diff --git a/packages/twenty-server/src/modules/messaging/message-participant-manager/listeners/message-participant-workspace-member.listener.ts b/packages/twenty-server/src/modules/messaging/message-participant-manager/listeners/message-participant-workspace-member.listener.ts
index aeec32548..6d093a1cc 100644
--- a/packages/twenty-server/src/modules/messaging/message-participant-manager/listeners/message-participant-workspace-member.listener.ts
+++ b/packages/twenty-server/src/modules/messaging/message-participant-manager/listeners/message-participant-workspace-member.listener.ts
@@ -8,12 +8,12 @@ import {
Workspace,
WorkspaceActivationStatus,
} from 'src/engine/core-modules/workspace/workspace.entity';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
-import { ObjectRecordUpdateEvent } from 'src/engine/integrations/event-emitter/types/object-record-update.event';
-import { objectRecordChangedProperties as objectRecordUpdateEventChangedProperties } from 'src/engine/integrations/event-emitter/utils/object-record-changed-properties.util';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
+import { ObjectRecordUpdateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-update.event';
+import { objectRecordChangedProperties as objectRecordUpdateEventChangedProperties } from 'src/engine/core-modules/event-emitter/utils/object-record-changed-properties.util';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import {
MessageParticipantMatchParticipantJob,
diff --git a/packages/twenty-server/src/modules/messaging/monitoring/crons/commands/messaging-message-channel-sync-status-monitoring.cron.command.ts b/packages/twenty-server/src/modules/messaging/monitoring/crons/commands/messaging-message-channel-sync-status-monitoring.cron.command.ts
index d90fd0b5b..cf2c65484 100644
--- a/packages/twenty-server/src/modules/messaging/monitoring/crons/commands/messaging-message-channel-sync-status-monitoring.cron.command.ts
+++ b/packages/twenty-server/src/modules/messaging/monitoring/crons/commands/messaging-message-channel-sync-status-monitoring.cron.command.ts
@@ -1,8 +1,8 @@
import { Command, CommandRunner } from 'nest-commander';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { MessagingMessageChannelSyncStatusMonitoringCronJob } from 'src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron';
const MESSAGING_MESSAGE_CHANNEL_SYNC_STATUS_MONITORING_CRON_PATTERN =
diff --git a/packages/twenty-server/src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron.ts b/packages/twenty-server/src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron.ts
index 94ac094ff..83552b856 100644
--- a/packages/twenty-server/src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron.ts
+++ b/packages/twenty-server/src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron.ts
@@ -8,9 +8,9 @@ import {
Workspace,
WorkspaceActivationStatus,
} from 'src/engine/core-modules/workspace/workspace.entity';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity';
import { MessagingTelemetryService } from 'src/modules/messaging/monitoring/services/messaging-telemetry.service';
diff --git a/packages/twenty-server/src/modules/messaging/monitoring/services/messaging-telemetry.service.ts b/packages/twenty-server/src/modules/messaging/monitoring/services/messaging-telemetry.service.ts
index 0234f7fbc..efe5ae6b4 100644
--- a/packages/twenty-server/src/modules/messaging/monitoring/services/messaging-telemetry.service.ts
+++ b/packages/twenty-server/src/modules/messaging/monitoring/services/messaging-telemetry.service.ts
@@ -1,7 +1,7 @@
import { Injectable } from '@nestjs/common';
import { AnalyticsService } from 'src/engine/core-modules/analytics/analytics.service';
-import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
+import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
type MessagingTelemetryTrackInput = {
eventName: string;
diff --git a/packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executors/code-action-executor.ts b/packages/twenty-server/src/modules/serverless/workflow-actions/code.workflow-action.ts
similarity index 66%
rename from packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executors/code-action-executor.ts
rename to packages/twenty-server/src/modules/serverless/workflow-actions/code.workflow-action.ts
index 1627ef1db..1e42dcf81 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executors/code-action-executor.ts
+++ b/packages/twenty-server/src/modules/serverless/workflow-actions/code.workflow-action.ts
@@ -2,16 +2,15 @@ import { Injectable } from '@nestjs/common';
import { ServerlessFunctionService } from 'src/engine/metadata-modules/serverless-function/serverless-function.service';
import { ScopedWorkspaceContextFactory } from 'src/engine/twenty-orm/factories/scoped-workspace-context.factory';
-import { WorkflowResult } from 'src/modules/workflow/common/types/workflow-result.type';
-import { WorkflowCodeStep } from 'src/modules/workflow/common/types/workflow-step.type';
+import { WorkflowActionResult } from 'src/modules/workflow/workflow-executor/types/workflow-action-result.type';
+import { WorkflowCodeStep } from 'src/modules/workflow/workflow-executor/types/workflow-action.type';
import {
WorkflowStepExecutorException,
WorkflowStepExecutorExceptionCode,
-} from 'src/modules/workflow/workflow-step-executor/workflow-step-executor.exception';
-import { WorkflowStepExecutor } from 'src/modules/workflow/workflow-step-executor/workflow-step-executor.interface';
+} from 'src/modules/workflow/workflow-executor/exceptions/workflow-step-executor.exception';
@Injectable()
-export class CodeActionExecutor implements WorkflowStepExecutor {
+export class CodeWorkflowAction {
constructor(
private readonly serverlessFunctionService: ServerlessFunctionService,
private readonly scopedWorkspaceContextFactory: ScopedWorkspaceContextFactory,
@@ -23,7 +22,7 @@ export class CodeActionExecutor implements WorkflowStepExecutor {
}: {
step: WorkflowCodeStep;
payload?: object;
- }): Promise {
+ }): Promise {
const { workspaceId } = this.scopedWorkspaceContextFactory.create();
if (!workspaceId) {
@@ -40,6 +39,10 @@ export class CodeActionExecutor implements WorkflowStepExecutor {
payload || {},
);
- return { data: result.data, ...(result.error && { error: result.error }) };
+ if (result.error) {
+ return { error: result.error };
+ }
+
+ return { result: result.data || {} };
}
}
diff --git a/packages/twenty-server/src/modules/timeline/jobs/create-audit-log-from-internal-event.ts b/packages/twenty-server/src/modules/timeline/jobs/create-audit-log-from-internal-event.ts
index d820020d3..b831c0c38 100644
--- a/packages/twenty-server/src/modules/timeline/jobs/create-audit-log-from-internal-event.ts
+++ b/packages/twenty-server/src/modules/timeline/jobs/create-audit-log-from-internal-event.ts
@@ -1,7 +1,7 @@
-import { ObjectRecordBaseEvent } from 'src/engine/integrations/event-emitter/types/object-record.base.event';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { ObjectRecordBaseEvent } from 'src/engine/core-modules/event-emitter/types/object-record.base.event';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { AuditLogRepository } from 'src/modules/timeline/repositiories/audit-log.repository';
diff --git a/packages/twenty-server/src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job.ts b/packages/twenty-server/src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job.ts
index c73479745..89d372163 100644
--- a/packages/twenty-server/src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job.ts
+++ b/packages/twenty-server/src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job.ts
@@ -1,7 +1,7 @@
-import { ObjectRecordBaseEvent } from 'src/engine/integrations/event-emitter/types/object-record.base.event';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { ObjectRecordBaseEvent } from 'src/engine/core-modules/event-emitter/types/object-record.base.event';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { TimelineActivityService } from 'src/modules/timeline/services/timeline-activity.service';
diff --git a/packages/twenty-server/src/modules/timeline/repositiories/timeline-activity.repository.ts b/packages/twenty-server/src/modules/timeline/repositiories/timeline-activity.repository.ts
index 1ab962ea9..ec858797e 100644
--- a/packages/twenty-server/src/modules/timeline/repositiories/timeline-activity.repository.ts
+++ b/packages/twenty-server/src/modules/timeline/repositiories/timeline-activity.repository.ts
@@ -5,7 +5,7 @@ import { EntityManager } from 'typeorm';
import { Record } from 'src/engine/api/graphql/workspace-query-builder/interfaces/record.interface';
import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service';
-import { objectRecordDiffMerge } from 'src/engine/integrations/event-emitter/utils/object-record-diff-merge';
+import { objectRecordDiffMerge } from 'src/engine/core-modules/event-emitter/utils/object-record-diff-merge';
@Injectable()
export class TimelineActivityRepository {
diff --git a/packages/twenty-server/src/modules/timeline/services/timeline-activity.service.ts b/packages/twenty-server/src/modules/timeline/services/timeline-activity.service.ts
index 963a65d5f..12dfe5a52 100644
--- a/packages/twenty-server/src/modules/timeline/services/timeline-activity.service.ts
+++ b/packages/twenty-server/src/modules/timeline/services/timeline-activity.service.ts
@@ -1,6 +1,6 @@
import { Injectable } from '@nestjs/common';
-import { ObjectRecordBaseEventWithNameAndWorkspaceId } from 'src/engine/integrations/event-emitter/types/object-record.base.event';
+import { ObjectRecordBaseEventWithNameAndWorkspaceId } from 'src/engine/core-modules/event-emitter/types/object-record.base.event';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service';
import { TimelineActivityRepository } from 'src/modules/timeline/repositiories/timeline-activity.repository';
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-query-validation.exception.ts b/packages/twenty-server/src/modules/workflow/common/exceptions/workflow-query-validation.exception.ts
similarity index 100%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-query-validation.exception.ts
rename to packages/twenty-server/src/modules/workflow/common/exceptions/workflow-query-validation.exception.ts
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/workflow-create-many.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-create-many.pre-query.hook.ts
similarity index 93%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/workflow-create-many.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-create-many.pre-query.hook.ts
index cb6f6d943..ecff415a8 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/workflow-create-many.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-create-many.pre-query.hook.ts
@@ -3,7 +3,7 @@ import { CreateManyResolverArgs } from 'src/engine/api/graphql/workspace-resolve
import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
-import { assertWorkflowStatusesNotSetOrEmpty } from 'src/modules/workflow/common/query-hooks/workflow/utils/assert-workflow-statuses-not-set-or-empty';
+import { assertWorkflowStatusesNotSetOrEmpty } from 'src/modules/workflow/common/utils/assert-workflow-statuses-not-set-or-empty';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
@WorkspaceQueryHook(`workflow.createMany`)
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/workflow-create-one.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-create-one.pre-query.hook.ts
similarity index 92%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/workflow-create-one.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-create-one.pre-query.hook.ts
index 923713649..f00b9515b 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/workflow-create-one.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-create-one.pre-query.hook.ts
@@ -3,7 +3,7 @@ import { CreateOneResolverArgs } from 'src/engine/api/graphql/workspace-resolver
import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
-import { assertWorkflowStatusesNotSetOrEmpty } from 'src/modules/workflow/common/query-hooks/workflow/utils/assert-workflow-statuses-not-set-or-empty';
+import { assertWorkflowStatusesNotSetOrEmpty } from 'src/modules/workflow/common/utils/assert-workflow-statuses-not-set-or-empty';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
@WorkspaceQueryHook(`workflow.createOne`)
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-query-hook.module.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-query-hook.module.ts
index 7601f628c..e8ebaa724 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-query-hook.module.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-query-hook.module.ts
@@ -1,19 +1,19 @@
import { Module } from '@nestjs/common';
-import { WorkflowRunCreateManyPreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-run/workflow-run-create-many.pre-query.hook';
-import { WorkflowRunCreateOnePreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-run/workflow-run-create-one.pre-query.hook';
-import { WorkflowVersionValidationWorkspaceService } from 'src/modules/workflow/common/query-hooks/workflow-version/services/workflow-version-validation.workspace-service';
-import { WorkflowVersionCreateManyPreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-version/workflow-version-create-many.pre-query.hook';
-import { WorkflowVersionCreateOnePreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-version/workflow-version-create-one.pre-query.hook';
-import { WorkflowVersionDeleteManyPreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-version/workflow-version-delete-many.pre-query.hook';
-import { WorkflowVersionDeleteOnePreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-version/workflow-version-delete-one.pre-query.hook';
-import { WorkflowVersionUpdateManyPreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-version/workflow-version-update-many.pre-query.hook';
-import { WorkflowVersionUpdateOnePreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-version/workflow-version-update-one.pre-query.hook';
-import { WorkflowCreateManyPreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow/workflow-create-many.pre-query.hook';
-import { WorkflowCreateOnePreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow/workflow-create-one.pre-query.hook';
-import { WorkflowUpdateManyPreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow/workflow-update-many.pre-query.hook';
-import { WorkflowUpdateOnePreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow/workflow-update-one.pre-query.hook';
-import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/services/workflow-common.workspace-service';
+import { WorkflowRunCreateManyPreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-run-create-many.pre-query.hook';
+import { WorkflowRunCreateOnePreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-run-create-one.pre-query.hook';
+import { WorkflowVersionValidationWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-version-validation.workspace-service';
+import { WorkflowVersionCreateManyPreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-version-create-many.pre-query.hook';
+import { WorkflowVersionCreateOnePreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-version-create-one.pre-query.hook';
+import { WorkflowVersionDeleteManyPreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-version-delete-many.pre-query.hook';
+import { WorkflowVersionDeleteOnePreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-version-delete-one.pre-query.hook';
+import { WorkflowVersionUpdateManyPreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-version-update-many.pre-query.hook';
+import { WorkflowVersionUpdateOnePreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-version-update-one.pre-query.hook';
+import { WorkflowCreateManyPreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-create-many.pre-query.hook';
+import { WorkflowCreateOnePreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-create-one.pre-query.hook';
+import { WorkflowUpdateManyPreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-update-many.pre-query.hook';
+import { WorkflowUpdateOnePreQueryHook } from 'src/modules/workflow/common/query-hooks/workflow-update-one.pre-query.hook';
+import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
@Module({
providers: [
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-create-many.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-create-many.pre-query.hook.ts
similarity index 92%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-create-many.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-create-many.pre-query.hook.ts
index d12dd3166..b598f43a7 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-create-many.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-create-many.pre-query.hook.ts
@@ -5,7 +5,7 @@ import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runne
import {
WorkflowQueryValidationException,
WorkflowQueryValidationExceptionCode,
-} from 'src/modules/workflow/common/query-hooks/workflow-query-validation.exception';
+} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception';
import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity';
@WorkspaceQueryHook(`workflowRun.createMany`)
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-create-one.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-create-one.pre-query.hook.ts
similarity index 92%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-create-one.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-create-one.pre-query.hook.ts
index f8620b11b..0f1039477 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-create-one.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-create-one.pre-query.hook.ts
@@ -5,7 +5,7 @@ import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runne
import {
WorkflowQueryValidationException,
WorkflowQueryValidationExceptionCode,
-} from 'src/modules/workflow/common/query-hooks/workflow-query-validation.exception';
+} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception';
import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity';
@WorkspaceQueryHook(`workflowRun.createOne`)
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-delete-many.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-delete-many.pre-query.hook.ts
similarity index 92%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-delete-many.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-delete-many.pre-query.hook.ts
index da9dbbaac..4f791dcad 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-delete-many.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-delete-many.pre-query.hook.ts
@@ -5,7 +5,7 @@ import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runne
import {
WorkflowQueryValidationException,
WorkflowQueryValidationExceptionCode,
-} from 'src/modules/workflow/common/query-hooks/workflow-query-validation.exception';
+} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception';
import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity';
@WorkspaceQueryHook(`workflowRun.deleteMany`)
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-delete-one.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-delete-one.pre-query.hook.ts
similarity index 90%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-delete-one.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-delete-one.pre-query.hook.ts
index dcfb87744..29bd27814 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-delete-one.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-delete-one.pre-query.hook.ts
@@ -5,7 +5,7 @@ import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runne
import {
WorkflowQueryValidationException,
WorkflowQueryValidationExceptionCode,
-} from 'src/modules/workflow/common/query-hooks/workflow-query-validation.exception';
+} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception';
@WorkspaceQueryHook(`workflowRun.deleteOne`)
export class WorkflowRunDeleteOnePreQueryHook
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-update-many.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-update-many.pre-query.hook.ts
similarity index 92%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-update-many.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-update-many.pre-query.hook.ts
index 5b1342ed8..ceb835b42 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-update-many.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-update-many.pre-query.hook.ts
@@ -5,7 +5,7 @@ import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runne
import {
WorkflowQueryValidationException,
WorkflowQueryValidationExceptionCode,
-} from 'src/modules/workflow/common/query-hooks/workflow-query-validation.exception';
+} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception';
import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity';
@WorkspaceQueryHook(`workflowRun.updateMany`)
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-update-one.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-update-one.pre-query.hook.ts
similarity index 92%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-update-one.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-update-one.pre-query.hook.ts
index f33f1783c..385da0f9d 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run/workflow-run-update-one.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-run-update-one.pre-query.hook.ts
@@ -5,7 +5,7 @@ import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runne
import {
WorkflowQueryValidationException,
WorkflowQueryValidationExceptionCode,
-} from 'src/modules/workflow/common/query-hooks/workflow-query-validation.exception';
+} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception';
import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity';
@WorkspaceQueryHook(`workflowRun.updateOne`)
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/workflow-update-many.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-update-many.pre-query.hook.ts
similarity index 92%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/workflow-update-many.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-update-many.pre-query.hook.ts
index e18e1d017..fa802edb2 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/workflow-update-many.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-update-many.pre-query.hook.ts
@@ -5,7 +5,7 @@ import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runne
import {
WorkflowQueryValidationException,
WorkflowQueryValidationExceptionCode,
-} from 'src/modules/workflow/common/query-hooks/workflow-query-validation.exception';
+} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
@WorkspaceQueryHook(`workflow.updateMany`)
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/workflow-update-one.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-update-one.pre-query.hook.ts
similarity index 93%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/workflow-update-one.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-update-one.pre-query.hook.ts
index 096c8044e..0c57c119c 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/workflow-update-one.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-update-one.pre-query.hook.ts
@@ -3,7 +3,7 @@ import { UpdateOneResolverArgs } from 'src/engine/api/graphql/workspace-resolver
import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
-import { assertWorkflowStatusesNotSet } from 'src/modules/workflow/common/query-hooks/workflow/utils/assert-workflow-statuses-not-set';
+import { assertWorkflowStatusesNotSet } from 'src/modules/workflow/common/utils/assert-workflow-statuses-not-set';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
@WorkspaceQueryHook(`workflow.updateOne`)
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-create-many.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-create-many.pre-query.hook.ts
similarity index 93%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-create-many.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-create-many.pre-query.hook.ts
index 8d27ac88b..51849295a 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-create-many.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-create-many.pre-query.hook.ts
@@ -6,7 +6,7 @@ import {
import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
-import { WorkflowVersionValidationWorkspaceService } from 'src/modules/workflow/common/query-hooks/workflow-version/services/workflow-version-validation.workspace-service';
+import { WorkflowVersionValidationWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-version-validation.workspace-service';
import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
@WorkspaceQueryHook(`workflowVersion.createMany`)
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-create-one.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-create-one.pre-query.hook.ts
similarity index 92%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-create-one.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-create-one.pre-query.hook.ts
index 98d5c9d05..0741ec96d 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-create-one.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-create-one.pre-query.hook.ts
@@ -3,7 +3,7 @@ import { CreateOneResolverArgs } from 'src/engine/api/graphql/workspace-resolver
import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
-import { WorkflowVersionValidationWorkspaceService } from 'src/modules/workflow/common/query-hooks/workflow-version/services/workflow-version-validation.workspace-service';
+import { WorkflowVersionValidationWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-version-validation.workspace-service';
import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
@WorkspaceQueryHook(`workflowVersion.createOne`)
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-delete-many.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-delete-many.pre-query.hook.ts
similarity index 92%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-delete-many.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-delete-many.pre-query.hook.ts
index f47e11472..35279e1e3 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-delete-many.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-delete-many.pre-query.hook.ts
@@ -5,7 +5,7 @@ import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runne
import {
WorkflowQueryValidationException,
WorkflowQueryValidationExceptionCode,
-} from 'src/modules/workflow/common/query-hooks/workflow-query-validation.exception';
+} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception';
import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
@WorkspaceQueryHook(`workflowVersion.deleteMany`)
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-delete-one.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-delete-one.pre-query.hook.ts
similarity index 91%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-delete-one.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-delete-one.pre-query.hook.ts
index f4cd1a48f..75304e77e 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-delete-one.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-delete-one.pre-query.hook.ts
@@ -3,7 +3,7 @@ import { DeleteOneResolverArgs } from 'src/engine/api/graphql/workspace-resolver
import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
-import { WorkflowVersionValidationWorkspaceService } from 'src/modules/workflow/common/query-hooks/workflow-version/services/workflow-version-validation.workspace-service';
+import { WorkflowVersionValidationWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-version-validation.workspace-service';
@WorkspaceQueryHook(`workflowVersion.deleteOne`)
export class WorkflowVersionDeleteOnePreQueryHook
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-update-many.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-update-many.pre-query.hook.ts
similarity index 92%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-update-many.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-update-many.pre-query.hook.ts
index beba6071f..5a8e52060 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-update-many.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-update-many.pre-query.hook.ts
@@ -5,7 +5,7 @@ import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runne
import {
WorkflowQueryValidationException,
WorkflowQueryValidationExceptionCode,
-} from 'src/modules/workflow/common/query-hooks/workflow-query-validation.exception';
+} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception';
import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
@WorkspaceQueryHook(`workflowVersion.updateMany`)
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-update-one.pre-query.hook.ts b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-update-one.pre-query.hook.ts
similarity index 92%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-update-one.pre-query.hook.ts
rename to packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-update-one.pre-query.hook.ts
index a8421cc11..584e834d8 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/workflow-version-update-one.pre-query.hook.ts
+++ b/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version-update-one.pre-query.hook.ts
@@ -3,7 +3,7 @@ import { UpdateOneResolverArgs } from 'src/engine/api/graphql/workspace-resolver
import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
-import { WorkflowVersionValidationWorkspaceService } from 'src/modules/workflow/common/query-hooks/workflow-version/services/workflow-version-validation.workspace-service';
+import { WorkflowVersionValidationWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-version-validation.workspace-service';
import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
@WorkspaceQueryHook(`workflowVersion.updateOne`)
diff --git a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-version.workspace-entity.ts b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-version.workspace-entity.ts
index 8149cfcc3..80545fe78 100644
--- a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-version.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-version.workspace-entity.ts
@@ -21,8 +21,8 @@ import {
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
-import { WorkflowStep } from 'src/modules/workflow/common/types/workflow-step.type';
-import { WorkflowTrigger } from 'src/modules/workflow/common/types/workflow-trigger.type';
+import { WorkflowStep } from 'src/modules/workflow/workflow-executor/types/workflow-action.type';
+import { WorkflowTrigger } from 'src/modules/workflow/workflow-trigger/types/workflow-trigger.type';
export enum WorkflowVersionStatus {
DRAFT = 'DRAFT',
diff --git a/packages/twenty-server/src/modules/workflow/common/types/workflow-result.type.ts b/packages/twenty-server/src/modules/workflow/common/types/workflow-result.type.ts
deleted file mode 100644
index 613ad5a99..000000000
--- a/packages/twenty-server/src/modules/workflow/common/types/workflow-result.type.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-type WorkflowError = {
- errorType: string;
- errorMessage: string;
- stackTrace: string;
-};
-
-export type WorkflowResult = {
- data: object | null;
- error?: WorkflowError;
-};
diff --git a/packages/twenty-server/src/modules/workflow/common/types/workflow-settings.type.ts b/packages/twenty-server/src/modules/workflow/common/types/workflow-settings.type.ts
deleted file mode 100644
index dde3025df..000000000
--- a/packages/twenty-server/src/modules/workflow/common/types/workflow-settings.type.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-type BaseWorkflowSettings = {
- errorHandlingOptions: {
- retryOnFailure: {
- value: boolean;
- };
- continueOnFailure: {
- value: boolean;
- };
- };
-};
-
-export type WorkflowCodeSettings = BaseWorkflowSettings & {
- serverlessFunctionId: string;
-};
diff --git a/packages/twenty-server/src/modules/workflow/common/types/workflow-step.type.ts b/packages/twenty-server/src/modules/workflow/common/types/workflow-step.type.ts
deleted file mode 100644
index ef3c70696..000000000
--- a/packages/twenty-server/src/modules/workflow/common/types/workflow-step.type.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { WorkflowCodeSettings } from 'src/modules/workflow/common/types/workflow-settings.type';
-
-export enum WorkflowStepType {
- CODE_ACTION = 'CODE_ACTION',
-}
-
-type BaseWorkflowStep = {
- id: string;
- name: string;
- valid: boolean;
-};
-
-export type WorkflowCodeStep = BaseWorkflowStep & {
- type: WorkflowStepType.CODE_ACTION;
- settings: WorkflowCodeSettings;
-};
-
-export type WorkflowStep = WorkflowCodeStep;
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/utils/assert-workflow-statuses-not-set-or-empty.ts b/packages/twenty-server/src/modules/workflow/common/utils/assert-workflow-statuses-not-set-or-empty.ts
similarity index 85%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/utils/assert-workflow-statuses-not-set-or-empty.ts
rename to packages/twenty-server/src/modules/workflow/common/utils/assert-workflow-statuses-not-set-or-empty.ts
index 1bead1592..ca9b73197 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/utils/assert-workflow-statuses-not-set-or-empty.ts
+++ b/packages/twenty-server/src/modules/workflow/common/utils/assert-workflow-statuses-not-set-or-empty.ts
@@ -1,7 +1,7 @@
import {
WorkflowQueryValidationException,
WorkflowQueryValidationExceptionCode,
-} from 'src/modules/workflow/common/query-hooks/workflow-query-validation.exception';
+} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception';
import { WorkflowStatus } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
export const assertWorkflowStatusesNotSetOrEmpty = (
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/utils/assert-workflow-statuses-not-set.ts b/packages/twenty-server/src/modules/workflow/common/utils/assert-workflow-statuses-not-set.ts
similarity index 84%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/utils/assert-workflow-statuses-not-set.ts
rename to packages/twenty-server/src/modules/workflow/common/utils/assert-workflow-statuses-not-set.ts
index 0949551c2..e16f026c7 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow/utils/assert-workflow-statuses-not-set.ts
+++ b/packages/twenty-server/src/modules/workflow/common/utils/assert-workflow-statuses-not-set.ts
@@ -1,7 +1,7 @@
import {
WorkflowQueryValidationException,
WorkflowQueryValidationExceptionCode,
-} from 'src/modules/workflow/common/query-hooks/workflow-query-validation.exception';
+} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception';
import { WorkflowStatus } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
export const assertWorkflowStatusesNotSet = (
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/utils/assert-workflow-version-is-draft.util.ts b/packages/twenty-server/src/modules/workflow/common/utils/assert-workflow-version-is-draft.util.ts
similarity index 77%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/utils/assert-workflow-version-is-draft.util.ts
rename to packages/twenty-server/src/modules/workflow/common/utils/assert-workflow-version-is-draft.util.ts
index 2604f63fb..6c55ef5c5 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/utils/assert-workflow-version-is-draft.util.ts
+++ b/packages/twenty-server/src/modules/workflow/common/utils/assert-workflow-version-is-draft.util.ts
@@ -1,12 +1,12 @@
import {
WorkflowQueryValidationException,
WorkflowQueryValidationExceptionCode,
-} from 'src/modules/workflow/common/query-hooks/workflow-query-validation.exception';
+} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception';
import {
WorkflowVersionStatus,
WorkflowVersionWorkspaceEntity,
} from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
-import { WorkflowTrigger } from 'src/modules/workflow/common/types/workflow-trigger.type';
+import { WorkflowTrigger } from 'src/modules/workflow/workflow-trigger/types/workflow-trigger.type';
export const assertWorkflowVersionIsDraft = (
workflowVersion: Omit & {
diff --git a/packages/twenty-server/src/modules/workflow/common/workflow-common.module.ts b/packages/twenty-server/src/modules/workflow/common/workflow-common.module.ts
index bc9b9a9f0..fc23aa8ff 100644
--- a/packages/twenty-server/src/modules/workflow/common/workflow-common.module.ts
+++ b/packages/twenty-server/src/modules/workflow/common/workflow-common.module.ts
@@ -1,7 +1,7 @@
import { Module } from '@nestjs/common';
import { WorkflowQueryHookModule } from 'src/modules/workflow/common/query-hooks/workflow-query-hook.module';
-import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/services/workflow-common.workspace-service';
+import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
@Module({
imports: [WorkflowQueryHookModule],
diff --git a/packages/twenty-server/src/modules/workflow/common/services/workflow-common.workspace-service.ts b/packages/twenty-server/src/modules/workflow/common/workspace-services/workflow-common.workspace-service.ts
similarity index 90%
rename from packages/twenty-server/src/modules/workflow/common/services/workflow-common.workspace-service.ts
rename to packages/twenty-server/src/modules/workflow/common/workspace-services/workflow-common.workspace-service.ts
index 6cc0478e2..a1db5af0d 100644
--- a/packages/twenty-server/src/modules/workflow/common/services/workflow-common.workspace-service.ts
+++ b/packages/twenty-server/src/modules/workflow/common/workspace-services/workflow-common.workspace-service.ts
@@ -2,11 +2,11 @@ import { Injectable } from '@nestjs/common';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
-import { WorkflowTrigger } from 'src/modules/workflow/common/types/workflow-trigger.type';
+import { WorkflowTrigger } from 'src/modules/workflow/workflow-trigger/types/workflow-trigger.type';
import {
WorkflowTriggerException,
WorkflowTriggerExceptionCode,
-} from 'src/modules/workflow/workflow-trigger/workflow-trigger.exception';
+} from 'src/modules/workflow/workflow-trigger/exceptions/workflow-trigger.exception';
@Injectable()
export class WorkflowCommonWorkspaceService {
diff --git a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/services/workflow-version-validation.workspace-service.ts b/packages/twenty-server/src/modules/workflow/common/workspace-services/workflow-version-validation.workspace-service.ts
similarity index 92%
rename from packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/services/workflow-version-validation.workspace-service.ts
rename to packages/twenty-server/src/modules/workflow/common/workspace-services/workflow-version-validation.workspace-service.ts
index 114cc3f47..1a9054ccc 100644
--- a/packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/services/workflow-version-validation.workspace-service.ts
+++ b/packages/twenty-server/src/modules/workflow/common/workspace-services/workflow-version-validation.workspace-service.ts
@@ -10,9 +10,9 @@ import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import {
WorkflowQueryValidationException,
WorkflowQueryValidationExceptionCode,
-} from 'src/modules/workflow/common/query-hooks/workflow-query-validation.exception';
-import { assertWorkflowVersionIsDraft } from 'src/modules/workflow/common/query-hooks/workflow-version/utils/assert-workflow-version-is-draft.util';
-import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/services/workflow-common.workspace-service';
+} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception';
+import { assertWorkflowVersionIsDraft } from 'src/modules/workflow/common/utils/assert-workflow-version-is-draft.util';
+import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
import {
WorkflowVersionStatus,
WorkflowVersionWorkspaceEntity,
diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-executor.exception.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/exceptions/workflow-executor.exception.ts
similarity index 100%
rename from packages/twenty-server/src/modules/workflow/workflow-executor/workflow-executor.exception.ts
rename to packages/twenty-server/src/modules/workflow/workflow-executor/exceptions/workflow-executor.exception.ts
diff --git a/packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executor.exception.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/exceptions/workflow-step-executor.exception.ts
similarity index 100%
rename from packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executor.exception.ts
rename to packages/twenty-server/src/modules/workflow/workflow-executor/exceptions/workflow-step-executor.exception.ts
diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/factories/workflow-action.factory.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/factories/workflow-action.factory.ts
new file mode 100644
index 000000000..5c23d81d3
--- /dev/null
+++ b/packages/twenty-server/src/modules/workflow/workflow-executor/factories/workflow-action.factory.ts
@@ -0,0 +1,33 @@
+import { Injectable } from '@nestjs/common';
+
+import { WorkflowAction } from 'src/modules/workflow/workflow-executor/interfaces/workflow-action.interface';
+
+import { WorkflowActionType } from 'src/modules/workflow/workflow-executor/types/workflow-action.type';
+import {
+ WorkflowStepExecutorException,
+ WorkflowStepExecutorExceptionCode,
+} from 'src/modules/workflow/workflow-executor/exceptions/workflow-step-executor.exception';
+import { CodeWorkflowAction } from 'src/modules/serverless/workflow-actions/code.workflow-action';
+import { SendEmailWorkflowAction } from 'src/modules/mail-sender/workflow-actions/send-email.workflow-action';
+
+@Injectable()
+export class WorkflowActionFactory {
+ constructor(
+ private readonly codeWorkflowAction: CodeWorkflowAction,
+ private readonly sendEmailWorkflowAction: SendEmailWorkflowAction,
+ ) {}
+
+ get(stepType: WorkflowActionType): WorkflowAction {
+ switch (stepType) {
+ case WorkflowActionType.CODE:
+ return this.codeWorkflowAction;
+ case WorkflowActionType.SEND_EMAIL:
+ return this.sendEmailWorkflowAction;
+ default:
+ throw new WorkflowStepExecutorException(
+ `Workflow step executor not found for step type '${stepType}'`,
+ WorkflowStepExecutorExceptionCode.INVALID_STEP_TYPE,
+ );
+ }
+ }
+}
diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/interfaces/workflow-action.interface.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/interfaces/workflow-action.interface.ts
new file mode 100644
index 000000000..47b481949
--- /dev/null
+++ b/packages/twenty-server/src/modules/workflow/workflow-executor/interfaces/workflow-action.interface.ts
@@ -0,0 +1,12 @@
+import { WorkflowActionResult } from 'src/modules/workflow/workflow-executor/types/workflow-action-result.type';
+import { WorkflowStep } from 'src/modules/workflow/workflow-executor/types/workflow-action.type';
+
+export interface WorkflowAction {
+ execute({
+ step,
+ payload,
+ }: {
+ step: WorkflowStep;
+ payload?: object;
+ }): Promise;
+}
diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/types/workflow-action-result.type.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/types/workflow-action-result.type.ts
new file mode 100644
index 000000000..b856dfb75
--- /dev/null
+++ b/packages/twenty-server/src/modules/workflow/workflow-executor/types/workflow-action-result.type.ts
@@ -0,0 +1,10 @@
+type WorkflowActionError = {
+ errorType: string;
+ errorMessage: string;
+ stackTrace: string;
+};
+
+export type WorkflowActionResult = {
+ result?: object;
+ error?: WorkflowActionError;
+};
diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/types/workflow-action.type.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/types/workflow-action.type.ts
new file mode 100644
index 000000000..aeacb3377
--- /dev/null
+++ b/packages/twenty-server/src/modules/workflow/workflow-executor/types/workflow-action.type.ts
@@ -0,0 +1,27 @@
+import {
+ WorkflowCodeStepSettings,
+ WorkflowSendEmailStepSettings,
+} from 'src/modules/workflow/workflow-executor/types/workflow-step-settings.type';
+
+export enum WorkflowActionType {
+ CODE = 'CODE',
+ SEND_EMAIL = 'SEND_EMAIL',
+}
+
+type BaseWorkflowStep = {
+ id: string;
+ name: string;
+ valid: boolean;
+};
+
+export type WorkflowCodeStep = BaseWorkflowStep & {
+ type: WorkflowActionType.CODE;
+ settings: WorkflowCodeStepSettings;
+};
+
+export type WorkflowSendEmailStep = BaseWorkflowStep & {
+ type: WorkflowActionType.SEND_EMAIL;
+ settings: WorkflowSendEmailStepSettings;
+};
+
+export type WorkflowStep = WorkflowCodeStep | WorkflowSendEmailStep;
diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/types/workflow-step-settings.type.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/types/workflow-step-settings.type.ts
new file mode 100644
index 000000000..99b334d0f
--- /dev/null
+++ b/packages/twenty-server/src/modules/workflow/workflow-executor/types/workflow-step-settings.type.ts
@@ -0,0 +1,24 @@
+type BaseWorkflowStepSettings = {
+ errorHandlingOptions: {
+ retryOnFailure: {
+ value: boolean;
+ };
+ continueOnFailure: {
+ value: boolean;
+ };
+ };
+};
+
+export type WorkflowCodeStepSettings = BaseWorkflowStepSettings & {
+ serverlessFunctionId: string;
+};
+
+export type WorkflowSendEmailStepSettings = BaseWorkflowStepSettings & {
+ subject?: string;
+ template?: string;
+ title?: string;
+ callToAction?: {
+ value: string;
+ href: string;
+ };
+};
diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-executor.module.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-executor.module.ts
index d01b7aa11..0f68b2917 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-executor.module.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-executor.module.ts
@@ -1,12 +1,22 @@
import { Module } from '@nestjs/common';
import { WorkflowCommonModule } from 'src/modules/workflow/common/workflow-common.module';
-import { WorkflowExecutorWorkspaceService } from 'src/modules/workflow/workflow-executor/workflow-executor.workspace-service';
-import { WorkflowStepExecutorModule } from 'src/modules/workflow/workflow-step-executor/workflow-step-executor.module';
+import { WorkflowExecutorWorkspaceService } from 'src/modules/workflow/workflow-executor/workspace-services/workflow-executor.workspace-service';
+import { WorkflowActionFactory } from 'src/modules/workflow/workflow-executor/factories/workflow-action.factory';
+import { CodeWorkflowAction } from 'src/modules/serverless/workflow-actions/code.workflow-action';
+import { SendEmailWorkflowAction } from 'src/modules/mail-sender/workflow-actions/send-email.workflow-action';
+import { ServerlessFunctionModule } from 'src/engine/metadata-modules/serverless-function/serverless-function.module';
+import { ScopedWorkspaceContextFactory } from 'src/engine/twenty-orm/factories/scoped-workspace-context.factory';
@Module({
- imports: [WorkflowCommonModule, WorkflowStepExecutorModule],
- providers: [WorkflowExecutorWorkspaceService],
+ imports: [WorkflowCommonModule, ServerlessFunctionModule],
+ providers: [
+ WorkflowExecutorWorkspaceService,
+ ScopedWorkspaceContextFactory,
+ WorkflowActionFactory,
+ CodeWorkflowAction,
+ SendEmailWorkflowAction,
+ ],
exports: [WorkflowExecutorWorkspaceService],
})
export class WorkflowExecutorModule {}
diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-executor.workspace-service.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/workspace-services/workflow-executor.workspace-service.ts
similarity index 71%
rename from packages/twenty-server/src/modules/workflow/workflow-executor/workflow-executor.workspace-service.ts
rename to packages/twenty-server/src/modules/workflow/workflow-executor/workspace-services/workflow-executor.workspace-service.ts
index b157a8d14..593543047 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-executor.workspace-service.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-executor/workspace-services/workflow-executor.workspace-service.ts
@@ -1,24 +1,22 @@
import { Injectable } from '@nestjs/common';
-import { WorkflowStep } from 'src/modules/workflow/common/types/workflow-step.type';
+import { WorkflowStep } from 'src/modules/workflow/workflow-executor/types/workflow-action.type';
import {
WorkflowExecutorException,
WorkflowExecutorExceptionCode,
-} from 'src/modules/workflow/workflow-executor/workflow-executor.exception';
-import { WorkflowStepExecutorFactory } from 'src/modules/workflow/workflow-step-executor/workflow-step-executor.factory';
+} from 'src/modules/workflow/workflow-executor/exceptions/workflow-executor.exception';
+import { WorkflowActionFactory } from 'src/modules/workflow/workflow-executor/factories/workflow-action.factory';
const MAX_RETRIES_ON_FAILURE = 3;
export type WorkflowExecutionOutput = {
- data?: object;
+ result?: object;
error?: object;
};
@Injectable()
export class WorkflowExecutorWorkspaceService {
- constructor(
- private readonly workflowStepExecutorFactory: WorkflowStepExecutorFactory,
- ) {}
+ constructor(private readonly workflowActionFactory: WorkflowActionFactory) {}
async execute({
currentStepIndex,
@@ -33,26 +31,24 @@ export class WorkflowExecutorWorkspaceService {
}): Promise {
if (currentStepIndex >= steps.length) {
return {
- data: payload,
+ result: payload,
};
}
const step = steps[currentStepIndex];
- const workflowStepExecutor = this.workflowStepExecutorFactory.get(
- step.type,
- );
+ const workflowAction = this.workflowActionFactory.get(step.type);
- const result = await workflowStepExecutor.execute({
+ const result = await workflowAction.execute({
step,
payload,
});
- if (result.data) {
+ if (result.result) {
return await this.execute({
currentStepIndex: currentStepIndex + 1,
steps,
- payload: result.data,
+ payload: result.result,
});
}
diff --git a/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.exception.ts b/packages/twenty-server/src/modules/workflow/workflow-runner/exceptions/workflow-run.exception.ts
similarity index 100%
rename from packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.exception.ts
rename to packages/twenty-server/src/modules/workflow/workflow-runner/exceptions/workflow-run.exception.ts
diff --git a/packages/twenty-server/src/modules/workflow/workflow-runner/jobs/run-workflow.job.ts b/packages/twenty-server/src/modules/workflow/workflow-runner/jobs/run-workflow.job.ts
index 1630b14c1..0ca2a3107 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-runner/jobs/run-workflow.job.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-runner/jobs/run-workflow.job.ts
@@ -1,12 +1,12 @@
import { Scope } from '@nestjs/common';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/services/workflow-common.workspace-service';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
import { WorkflowRunStatus } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity';
-import { WorkflowExecutorWorkspaceService } from 'src/modules/workflow/workflow-executor/workflow-executor.workspace-service';
-import { WorkflowRunWorkspaceService } from 'src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service';
+import { WorkflowExecutorWorkspaceService } from 'src/modules/workflow/workflow-executor/workspace-services/workflow-executor.workspace-service';
+import { WorkflowRunWorkspaceService } from 'src/modules/workflow/workflow-runner/workspace-services/workflow-run.workspace-service';
export type RunWorkflowJobData = {
workspaceId: string;
diff --git a/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.module.ts b/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.module.ts
deleted file mode 100644
index 55a987bc9..000000000
--- a/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.module.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Module } from '@nestjs/common';
-
-import { WorkflowCommonModule } from 'src/modules/workflow/common/workflow-common.module';
-import { WorkflowRunWorkspaceService } from 'src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service';
-
-@Module({
- imports: [WorkflowCommonModule],
- providers: [WorkflowRunWorkspaceService],
- exports: [WorkflowRunWorkspaceService],
-})
-export class WorkflowRunModule {}
diff --git a/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-runner.module.ts b/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-runner.module.ts
index bf33e5b21..72871ae83 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-runner.module.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-runner.module.ts
@@ -3,12 +3,16 @@ import { Module } from '@nestjs/common';
import { WorkflowCommonModule } from 'src/modules/workflow/common/workflow-common.module';
import { WorkflowExecutorModule } from 'src/modules/workflow/workflow-executor/workflow-executor.module';
import { RunWorkflowJob } from 'src/modules/workflow/workflow-runner/jobs/run-workflow.job';
-import { WorkflowRunModule } from 'src/modules/workflow/workflow-runner/workflow-run/workflow-run.module';
-import { WorkflowRunnerWorkspaceService } from 'src/modules/workflow/workflow-runner/workflow-runner.workspace-service';
+import { WorkflowRunnerWorkspaceService } from 'src/modules/workflow/workflow-runner/workspace-services/workflow-runner.workspace-service';
+import { WorkflowRunWorkspaceService } from 'src/modules/workflow/workflow-runner/workspace-services/workflow-run.workspace-service';
@Module({
- imports: [WorkflowRunModule, WorkflowCommonModule, WorkflowExecutorModule],
- providers: [WorkflowRunnerWorkspaceService, RunWorkflowJob],
+ imports: [WorkflowCommonModule, WorkflowExecutorModule],
+ providers: [
+ WorkflowRunnerWorkspaceService,
+ WorkflowRunWorkspaceService,
+ RunWorkflowJob,
+ ],
exports: [WorkflowRunnerWorkspaceService],
})
export class WorkflowRunnerModule {}
diff --git a/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service.ts b/packages/twenty-server/src/modules/workflow/workflow-runner/workspace-services/workflow-run.workspace-service.ts
similarity index 95%
rename from packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service.ts
rename to packages/twenty-server/src/modules/workflow/workflow-runner/workspace-services/workflow-run.workspace-service.ts
index 126984f01..00162c595 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-runner/workspace-services/workflow-run.workspace-service.ts
@@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
import { ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
-import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/services/workflow-common.workspace-service';
+import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
import {
WorkflowRunStatus,
WorkflowRunWorkspaceEntity,
@@ -10,7 +10,7 @@ import {
import {
WorkflowRunException,
WorkflowRunExceptionCode,
-} from 'src/modules/workflow/workflow-runner/workflow-run/workflow-run.exception';
+} from 'src/modules/workflow/workflow-runner/exceptions/workflow-run.exception';
@Injectable()
export class WorkflowRunWorkspaceService {
diff --git a/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-runner.workspace-service.ts b/packages/twenty-server/src/modules/workflow/workflow-runner/workspace-services/workflow-runner.workspace-service.ts
similarity index 82%
rename from packages/twenty-server/src/modules/workflow/workflow-runner/workflow-runner.workspace-service.ts
rename to packages/twenty-server/src/modules/workflow/workflow-runner/workspace-services/workflow-runner.workspace-service.ts
index bc43bd1b5..e0e0020b1 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-runner.workspace-service.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-runner/workspace-services/workflow-runner.workspace-service.ts
@@ -1,14 +1,14 @@
import { Injectable } from '@nestjs/common';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type';
import {
RunWorkflowJob,
RunWorkflowJobData,
} from 'src/modules/workflow/workflow-runner/jobs/run-workflow.job';
-import { WorkflowRunWorkspaceService } from 'src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service';
+import { WorkflowRunWorkspaceService } from 'src/modules/workflow/workflow-runner/workspace-services/workflow-run.workspace-service';
@Injectable()
export class WorkflowRunnerWorkspaceService {
diff --git a/packages/twenty-server/src/modules/workflow/workflow-status/workflow-status.constants.ts b/packages/twenty-server/src/modules/workflow/workflow-status/constants/workflow-status.constants.ts
similarity index 100%
rename from packages/twenty-server/src/modules/workflow/workflow-status/workflow-status.constants.ts
rename to packages/twenty-server/src/modules/workflow/workflow-status/constants/workflow-status.constants.ts
diff --git a/packages/twenty-server/src/modules/workflow/workflow-status/workflow-status.enums.ts b/packages/twenty-server/src/modules/workflow/workflow-status/enums/workflow-status.enum.ts
similarity index 100%
rename from packages/twenty-server/src/modules/workflow/workflow-status/workflow-status.enums.ts
rename to packages/twenty-server/src/modules/workflow/workflow-status/enums/workflow-status.enum.ts
diff --git a/packages/twenty-server/src/modules/workflow/workflow-status/jobs/workflow-statuses-update.job.ts b/packages/twenty-server/src/modules/workflow/workflow-status/jobs/workflow-statuses-update.job.ts
index 9cf1e7a39..4f4ce5886 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-status/jobs/workflow-statuses-update.job.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-status/jobs/workflow-statuses-update.job.ts
@@ -1,8 +1,8 @@
import { Scope } from '@nestjs/common';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { WorkflowVersionStatus } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
diff --git a/packages/twenty-server/src/modules/workflow/workflow-status/listeners/workflow-version-status.listener.ts b/packages/twenty-server/src/modules/workflow/workflow-status/listeners/workflow-version-status.listener.ts
index f9fe6aa1b..b8e3c9619 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-status/listeners/workflow-version-status.listener.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-status/listeners/workflow-version-status.listener.ts
@@ -1,11 +1,11 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import {
WorkflowVersionStatus,
diff --git a/packages/twenty-server/src/modules/workflow/workflow-status/utils/get-status-combination-from-array.util.ts b/packages/twenty-server/src/modules/workflow/workflow-status/utils/get-status-combination-from-array.util.ts
index 1df699db4..267b4a681 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-status/utils/get-status-combination-from-array.util.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-status/utils/get-status-combination-from-array.util.ts
@@ -7,8 +7,8 @@ import {
DEACTIVATED_AND_DRAFT_STATUSES,
DEACTIVATED_STATUSES,
DRAFT_STATUSES,
-} from 'src/modules/workflow/workflow-status/workflow-status.constants';
-import { WorkflowStatusCombination } from 'src/modules/workflow/workflow-status/workflow-status.enums';
+} from 'src/modules/workflow/workflow-status/constants/workflow-status.constants';
+import { WorkflowStatusCombination } from 'src/modules/workflow/workflow-status/enums/workflow-status.enum';
export const getStatusCombinationFromArray = (
statuses: WorkflowStatus[],
diff --git a/packages/twenty-server/src/modules/workflow/workflow-status/utils/get-status-combination-from-update.util.ts b/packages/twenty-server/src/modules/workflow/workflow-status/utils/get-status-combination-from-update.util.ts
index ecf0fe2f9..634133990 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-status/utils/get-status-combination-from-update.util.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-status/utils/get-status-combination-from-update.util.ts
@@ -1,5 +1,5 @@
import { WorkflowVersionStatus } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
-import { WorkflowStatusCombination } from 'src/modules/workflow/workflow-status/workflow-status.enums';
+import { WorkflowStatusCombination } from 'src/modules/workflow/workflow-status/enums/workflow-status.enum';
export const getStatusCombinationFromUpdate = (
previousCombination: WorkflowStatusCombination,
diff --git a/packages/twenty-server/src/modules/workflow/workflow-status/utils/get-statuses-from-combination.util.ts b/packages/twenty-server/src/modules/workflow/workflow-status/utils/get-statuses-from-combination.util.ts
index e8f65beae..72c53862e 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-status/utils/get-statuses-from-combination.util.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-status/utils/get-statuses-from-combination.util.ts
@@ -6,8 +6,8 @@ import {
DEACTIVATED_STATUSES,
DRAFT_STATUSES,
NO_STATUSES,
-} from 'src/modules/workflow/workflow-status/workflow-status.constants';
-import { WorkflowStatusCombination } from 'src/modules/workflow/workflow-status/workflow-status.enums';
+} from 'src/modules/workflow/workflow-status/constants/workflow-status.constants';
+import { WorkflowStatusCombination } from 'src/modules/workflow/workflow-status/enums/workflow-status.enum';
export const getWorkflowStatusesFromCombination = (
combination: WorkflowStatusCombination,
diff --git a/packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executor.factory.ts b/packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executor.factory.ts
deleted file mode 100644
index 72f46451e..000000000
--- a/packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executor.factory.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { Injectable } from '@nestjs/common';
-
-import { WorkflowStepType } from 'src/modules/workflow/common/types/workflow-step.type';
-import {
- WorkflowStepExecutorException,
- WorkflowStepExecutorExceptionCode,
-} from 'src/modules/workflow/workflow-step-executor/workflow-step-executor.exception';
-import { WorkflowStepExecutor } from 'src/modules/workflow/workflow-step-executor/workflow-step-executor.interface';
-import { CodeActionExecutor } from 'src/modules/workflow/workflow-step-executor/workflow-step-executors/code-action-executor';
-
-@Injectable()
-export class WorkflowStepExecutorFactory {
- constructor(private readonly codeActionExecutor: CodeActionExecutor) {}
-
- get(stepType: WorkflowStepType): WorkflowStepExecutor {
- switch (stepType) {
- case WorkflowStepType.CODE_ACTION:
- return this.codeActionExecutor;
- default:
- throw new WorkflowStepExecutorException(
- `Workflow step executor not found for step type '${stepType}'`,
- WorkflowStepExecutorExceptionCode.INVALID_STEP_TYPE,
- );
- }
- }
-}
diff --git a/packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executor.interface.ts b/packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executor.interface.ts
deleted file mode 100644
index 169ebc2ca..000000000
--- a/packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executor.interface.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { WorkflowResult } from 'src/modules/workflow/common/types/workflow-result.type';
-import { WorkflowStep } from 'src/modules/workflow/common/types/workflow-step.type';
-
-export interface WorkflowStepExecutor {
- execute({
- step,
- payload,
- }: {
- step: WorkflowStep;
- payload?: object;
- }): Promise;
-}
diff --git a/packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executor.module.ts b/packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executor.module.ts
deleted file mode 100644
index 293a3614b..000000000
--- a/packages/twenty-server/src/modules/workflow/workflow-step-executor/workflow-step-executor.module.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { Module } from '@nestjs/common';
-
-import { ServerlessFunctionModule } from 'src/engine/metadata-modules/serverless-function/serverless-function.module';
-import { ScopedWorkspaceContextFactory } from 'src/engine/twenty-orm/factories/scoped-workspace-context.factory';
-import { WorkflowStepExecutorFactory } from 'src/modules/workflow/workflow-step-executor/workflow-step-executor.factory';
-import { CodeActionExecutor } from 'src/modules/workflow/workflow-step-executor/workflow-step-executors/code-action-executor';
-
-@Module({
- imports: [ServerlessFunctionModule],
- providers: [
- WorkflowStepExecutorFactory,
- CodeActionExecutor,
- ScopedWorkspaceContextFactory,
- ],
- exports: [WorkflowStepExecutorFactory],
-})
-export class WorkflowStepExecutorModule {}
diff --git a/packages/twenty-server/src/modules/workflow/workflow-trigger/database-event-trigger/database-event-trigger.service.ts b/packages/twenty-server/src/modules/workflow/workflow-trigger/database-event-trigger/database-event-trigger.service.ts
index 4db20d091..da8affbb6 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-trigger/database-event-trigger/database-event-trigger.service.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-trigger/database-event-trigger/database-event-trigger.service.ts
@@ -4,7 +4,7 @@ import { EntityManager } from 'typeorm';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { WorkflowEventListenerWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-event-listener.workspace-entity';
-import { WorkflowDatabaseEventTrigger } from 'src/modules/workflow/common/types/workflow-trigger.type';
+import { WorkflowDatabaseEventTrigger } from 'src/modules/workflow/workflow-trigger/types/workflow-trigger.type';
@Injectable()
export class DatabaseEventTriggerService {
diff --git a/packages/twenty-server/src/modules/workflow/workflow-trigger/database-event-trigger/listeners/database-event-trigger.listener.ts b/packages/twenty-server/src/modules/workflow/workflow-trigger/database-event-trigger/listeners/database-event-trigger.listener.ts
index a19a99098..e5b62d59a 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-trigger/database-event-trigger/listeners/database-event-trigger.listener.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-trigger/database-event-trigger/listeners/database-event-trigger.listener.ts
@@ -3,12 +3,12 @@ import { OnEvent } from '@nestjs/event-emitter';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
-import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event';
-import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event';
-import { ObjectRecordUpdateEvent } from 'src/engine/integrations/event-emitter/types/object-record-update.event';
-import { InjectMessageQueue } from 'src/engine/integrations/message-queue/decorators/message-queue.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
-import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
+import { ObjectRecordCreateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-create.event';
+import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/types/object-record-delete.event';
+import { ObjectRecordUpdateEvent } from 'src/engine/core-modules/event-emitter/types/object-record-update.event';
+import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
+import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { WorkflowEventListenerWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-event-listener.workspace-entity';
diff --git a/packages/twenty-server/src/modules/workflow/workflow-trigger/workflow-trigger.exception.ts b/packages/twenty-server/src/modules/workflow/workflow-trigger/exceptions/workflow-trigger.exception.ts
similarity index 100%
rename from packages/twenty-server/src/modules/workflow/workflow-trigger/workflow-trigger.exception.ts
rename to packages/twenty-server/src/modules/workflow/workflow-trigger/exceptions/workflow-trigger.exception.ts
diff --git a/packages/twenty-server/src/modules/workflow/workflow-trigger/jobs/workflow-event-trigger.job.ts b/packages/twenty-server/src/modules/workflow/workflow-trigger/jobs/workflow-event-trigger.job.ts
index 465204bd4..12391290f 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-trigger/jobs/workflow-event-trigger.job.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-trigger/jobs/workflow-event-trigger.job.ts
@@ -1,8 +1,8 @@
import { Scope } from '@nestjs/common';
-import { Process } from 'src/engine/integrations/message-queue/decorators/process.decorator';
-import { Processor } from 'src/engine/integrations/message-queue/decorators/processor.decorator';
-import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
+import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
+import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
+import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import {
@@ -10,11 +10,11 @@ import {
WorkflowVersionWorkspaceEntity,
} from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
-import { WorkflowRunnerWorkspaceService } from 'src/modules/workflow/workflow-runner/workflow-runner.workspace-service';
+import { WorkflowRunnerWorkspaceService } from 'src/modules/workflow/workflow-runner/workspace-services/workflow-runner.workspace-service';
import {
WorkflowTriggerException,
WorkflowTriggerExceptionCode,
-} from 'src/modules/workflow/workflow-trigger/workflow-trigger.exception';
+} from 'src/modules/workflow/workflow-trigger/exceptions/workflow-trigger.exception';
export type WorkflowEventTriggerJobData = {
workspaceId: string;
diff --git a/packages/twenty-server/src/modules/workflow/common/types/workflow-trigger.type.ts b/packages/twenty-server/src/modules/workflow/workflow-trigger/types/workflow-trigger.type.ts
similarity index 100%
rename from packages/twenty-server/src/modules/workflow/common/types/workflow-trigger.type.ts
rename to packages/twenty-server/src/modules/workflow/workflow-trigger/types/workflow-trigger.type.ts
diff --git a/packages/twenty-server/src/modules/workflow/workflow-trigger/utils/assert-version-can-be-activated.util.ts b/packages/twenty-server/src/modules/workflow/workflow-trigger/utils/assert-version-can-be-activated.util.ts
index a75e77323..ba31ffc96 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-trigger/utils/assert-version-can-be-activated.util.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-trigger/utils/assert-version-can-be-activated.util.ts
@@ -6,11 +6,11 @@ import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-ob
import {
WorkflowTrigger,
WorkflowTriggerType,
-} from 'src/modules/workflow/common/types/workflow-trigger.type';
+} from 'src/modules/workflow/workflow-trigger/types/workflow-trigger.type';
import {
WorkflowTriggerException,
WorkflowTriggerExceptionCode,
-} from 'src/modules/workflow/workflow-trigger/workflow-trigger.exception';
+} from 'src/modules/workflow/workflow-trigger/exceptions/workflow-trigger.exception';
export function assertVersionCanBeActivated(
workflowVersion: Omit & {
diff --git a/packages/twenty-server/src/modules/workflow/workflow-trigger/workflow-trigger.module.ts b/packages/twenty-server/src/modules/workflow/workflow-trigger/workflow-trigger.module.ts
index dbf7e6feb..ecd72856d 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-trigger/workflow-trigger.module.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-trigger/workflow-trigger.module.ts
@@ -5,7 +5,7 @@ import { WorkflowCommonModule } from 'src/modules/workflow/common/workflow-commo
import { WorkflowRunnerModule } from 'src/modules/workflow/workflow-runner/workflow-runner.module';
import { DatabaseEventTriggerModule } from 'src/modules/workflow/workflow-trigger/database-event-trigger/database-event-trigger.module';
import { WorkflowEventTriggerJob } from 'src/modules/workflow/workflow-trigger/jobs/workflow-event-trigger.job';
-import { WorkflowTriggerWorkspaceService } from 'src/modules/workflow/workflow-trigger/workflow-trigger.workspace-service';
+import { WorkflowTriggerWorkspaceService } from 'src/modules/workflow/workflow-trigger/workspace-services/workflow-trigger.workspace-service';
@Module({
imports: [
diff --git a/packages/twenty-server/src/modules/workflow/workflow-trigger/workflow-trigger.workspace-service.ts b/packages/twenty-server/src/modules/workflow/workflow-trigger/workspace-services/workflow-trigger.workspace-service.ts
similarity index 97%
rename from packages/twenty-server/src/modules/workflow/workflow-trigger/workflow-trigger.workspace-service.ts
rename to packages/twenty-server/src/modules/workflow/workflow-trigger/workspace-services/workflow-trigger.workspace-service.ts
index 4e02b8b88..47d252766 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-trigger/workflow-trigger.workspace-service.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-trigger/workspace-services/workflow-trigger.workspace-service.ts
@@ -8,7 +8,7 @@ import { ScopedWorkspaceContextFactory } from 'src/engine/twenty-orm/factories/s
import { WorkspaceRepository } from 'src/engine/twenty-orm/repository/workspace.repository';
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
import { WorkspaceEventEmitter } from 'src/engine/workspace-event-emitter/workspace-event-emitter';
-import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/services/workflow-common.workspace-service';
+import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
import {
WorkflowVersionStatus,
WorkflowVersionWorkspaceEntity,
@@ -17,15 +17,15 @@ import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-ob
import {
WorkflowTrigger,
WorkflowTriggerType,
-} from 'src/modules/workflow/common/types/workflow-trigger.type';
-import { WorkflowRunnerWorkspaceService } from 'src/modules/workflow/workflow-runner/workflow-runner.workspace-service';
+} from 'src/modules/workflow/workflow-trigger/types/workflow-trigger.type';
+import { WorkflowRunnerWorkspaceService } from 'src/modules/workflow/workflow-runner/workspace-services/workflow-runner.workspace-service';
import { WorkflowVersionStatusUpdate } from 'src/modules/workflow/workflow-status/jobs/workflow-statuses-update.job';
import { DatabaseEventTriggerService } from 'src/modules/workflow/workflow-trigger/database-event-trigger/database-event-trigger.service';
import { assertVersionCanBeActivated } from 'src/modules/workflow/workflow-trigger/utils/assert-version-can-be-activated.util';
import {
WorkflowTriggerException,
WorkflowTriggerExceptionCode,
-} from 'src/modules/workflow/workflow-trigger/workflow-trigger.exception';
+} from 'src/modules/workflow/workflow-trigger/exceptions/workflow-trigger.exception';
@Injectable()
export class WorkflowTriggerWorkspaceService {
diff --git a/packages/twenty-server/src/queue-worker/queue-worker.module.ts b/packages/twenty-server/src/queue-worker/queue-worker.module.ts
index bef26e3a9..3b8589080 100644
--- a/packages/twenty-server/src/queue-worker/queue-worker.module.ts
+++ b/packages/twenty-server/src/queue-worker/queue-worker.module.ts
@@ -1,14 +1,14 @@
import { Module } from '@nestjs/common';
-import { IntegrationsModule } from 'src/engine/integrations/integrations.module';
-import { JobsModule } from 'src/engine/integrations/message-queue/jobs.module';
-import { MessageQueueModule } from 'src/engine/integrations/message-queue/message-queue.module';
+import { JobsModule } from 'src/engine/core-modules/message-queue/jobs.module';
+import { MessageQueueModule } from 'src/engine/core-modules/message-queue/message-queue.module';
import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module';
import { WorkspaceEventEmitterModule } from 'src/engine/workspace-event-emitter/workspace-event-emitter.module';
+import { CoreEngineModule } from 'src/engine/core-modules/core-engine.module';
@Module({
imports: [
- IntegrationsModule,
+ CoreEngineModule,
MessageQueueModule.registerExplorer(),
WorkspaceEventEmitterModule,
JobsModule,
diff --git a/packages/twenty-server/src/queue-worker/queue-worker.ts b/packages/twenty-server/src/queue-worker/queue-worker.ts
index d38f49d30..71cc36ad7 100644
--- a/packages/twenty-server/src/queue-worker/queue-worker.ts
+++ b/packages/twenty-server/src/queue-worker/queue-worker.ts
@@ -1,7 +1,7 @@
import { NestFactory } from '@nestjs/core';
-import { ExceptionHandlerService } from 'src/engine/integrations/exception-handler/exception-handler.service';
-import { LoggerService } from 'src/engine/integrations/logger/logger.service';
+import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
+import { LoggerService } from 'src/engine/core-modules/logger/logger.service';
import { shouldFilterException } from 'src/engine/utils/global-exception-handler.util';
import { QueueWorkerModule } from 'src/queue-worker/queue-worker.module';
diff --git a/yarn.lock b/yarn.lock
index 846d206ac..73add1cfa 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -29402,7 +29402,7 @@ __metadata:
languageName: node
linkType: hard
-"handlebars@npm:^4.7.7":
+"handlebars@npm:^4.7.7, handlebars@npm:^4.7.8":
version: 4.7.8
resolution: "handlebars@npm:4.7.8"
dependencies:
@@ -47171,6 +47171,7 @@ __metadata:
cache-manager-redis-yet: "npm:^4.1.2"
class-validator: "patch:class-validator@0.14.0#./patches/class-validator+0.14.0.patch"
graphql-middleware: "npm:^6.1.35"
+ handlebars: "npm:^4.7.8"
jsdom: "npm:~22.1.0"
jwt-decode: "npm:^4.0.0"
langchain: "npm:^0.2.6"