diff --git a/packages/cli/src/workflows/workflow.service.ee.ts b/packages/cli/src/workflows/workflow.service.ee.ts index b2ce3630a6..d2d4511dd2 100644 --- a/packages/cli/src/workflows/workflow.service.ee.ts +++ b/packages/cli/src/workflows/workflow.service.ee.ts @@ -343,6 +343,9 @@ export class EnterpriseWorkflowService { } }); + // 9. detach workflow from parent folder in source project + await this.workflowRepository.update({ id: workflow.id }, { parentFolder: null }); + // 9. try to activate it again if it was active if (wasActive) { try { diff --git a/packages/cli/test/integration/workflows/workflows.controller.ee.test.ts b/packages/cli/test/integration/workflows/workflows.controller.ee.test.ts index 7b5f6e1efa..4cd3c51332 100644 --- a/packages/cli/test/integration/workflows/workflows.controller.ee.test.ts +++ b/packages/cli/test/integration/workflows/workflows.controller.ee.test.ts @@ -14,6 +14,7 @@ import { WorkflowRepository } from '@/databases/repositories/workflow.repository import { UserManagementMailer } from '@/user-management/email'; import type { WorkflowWithSharingsMetaDataAndCredentials } from '@/workflows/workflows.types'; import { mockInstance } from '@test/mocking'; +import { createFolder } from '@test-integration/db/folders'; import { affixRoleToSaveCredential, @@ -1619,6 +1620,38 @@ describe('PUT /:workflowId/transfer', () => { expect(activeWorkflowManager.add).toHaveBeenCalledWith(workflow.id, 'update'); }); + test('should detach workflow from parent folder in source project', async () => { + // + // ARRANGE + // + const destinationProject = await createTeamProject('Team Project', member); + + const folder = await createFolder(destinationProject, { name: 'Test Folder' }); + + const workflow = await createWorkflow({ active: true, parentFolder: folder }, member); + + // + // ACT + // + const response = await testServer + .authAgentFor(member) + .put(`/workflows/${workflow.id}/transfer`) + .send({ destinationProjectId: destinationProject.id }) + .expect(200); + + // + // ASSERT + // + expect(response.body).toEqual({}); + + const workflowFromDB = await workflowRepository.findOneOrFail({ + where: { id: workflow.id }, + relations: ['parentFolder'], + }); + + expect(workflowFromDB.parentFolder).toBeNull(); + }); + test('deactivates the workflow if it cannot be added to the active workflow manager again and returns the WorkflowActivationError as data', async () => { // // ARRANGE