Skip to content

4.0 Migration Guide

In this document we describe the steps that should be taken to migrate from orchestrator-core v3 to v4.

About 4.0

Removed caching of domain models

In this release we have removed the caching of domain models. Domain models will always be loaded from the database.

Added Target.VALIDATE

In this release, a new workflow target, VALIDATE, has been added for validation workflows. Previously, the SYSTEM target was used for validation workflows, which implied that they were expected to run in a system context. However, this was not appropriate for all validation workflows. To address this, the new VALIDATE target has been introduced specifically for validation workflows. The SYSTEM target is now reserved exclusively for system workflows.

The change of the SYSTEM target to VALIDATE is a breaking change, as it will break any workflows that are using the SYSTEM target for validation workflows. You will need to update your workflows to use the VALIDATE target instead.

In the Steps section below we describe how to update your workflows to use the new VALIDATE target.

Steps

To use 4.0.0, all workflows must have run to completion. The cache_domain_models step no longer is part of the codebase therefore in flight workflows will fail.

After running the migration (2025-05-08_cdf8758831d4_add_is_task_to_workflow.py), the workflow table should look like this:

| workflow_id                          | name                       | target | is_task | description                                                             | created_at                        | deleted_at |
|--------------------------------------|----------------------------|--------|---------|-------------------------------------------------------------------------|-----------------------------------|------------|
| ded79954-f16e-422b-a204-7770a59757e8 | modify_note                | MODIFY | FALSE   | Modify Note                                                             | 2025-05-01 09:57:28.033504 +00:00 | <null>     |
| ca6a76ff-dd4e-4f66-9fb0-cee1878f0d20 | task_clean_up_tasks        | SYSTEM | FALSE   | Clean up old tasks                                                      | 2025-05-01 09:57:28.033504 +00:00 | <null>     |
| 40058c3d-0c95-47f4-a75f-93719299c5be | task_resume_workflows      | SYSTEM | FALSE   | Resume all workflows that are stuck on tasks with the status 'waiting'  | 2025-05-01 09:57:28.033504 +00:00 | <null>     |
| 33b5520e-85d4-4ca1-8713-d26f7de5b7a5 | task_validate_products     | SYSTEM | FALSE   | Validate products                                                       | 2025-05-01 09:57:28.033504 +00:00 | <null>     |
| 94d4889e-6bb6-4724-a9d2-f21696fe6f43 | task_validate_product_type | SYSTEM | FALSE   | Validate all subscriptions of Product Type                              | 2025-05-01 09:57:28.033504 +00:00 | <null>     |
| 0c4f3b8d-2a1e-4b5f-9a7c-6d8e0f1b2c3d | validate_some_thing        | SYSTEM | FALSE   | Validate The thing                                                      | 2025-05-01 09:57:28.033504 +00:00 | <null>     |
| f4b0a2c1-5d3e-4c8f-9b6d-7a2e5f3b8c4e | validate_another_thing     | SYSTEM | FALSE   | Validate Another thing                                                  | 2025-05-01 09:57:28.033504 +00:00 | <null>     |

The target in this table is no longer valid for the validate_some_thing and validate_another_thing workflows. You will need to update the target to VALIDATE for these workflows. You will also need to update the is_task column to TRUE for all targets that are SYSTEM or VALIDATE. This is because the is_task column is used to determine if a workflow is a task or not. If the is_task column is set to FALSE, the workflow will not be run as a task. Tasks are SYSTEM or VALIDATE workflows that are run in the context of a system.

Example on how to update the target and is_task for all workflows that start with validate_:

UPDATE workflow
SET target = 'VALIDATE', is_task = TRUE
WHERE name LIKE 'validate_%';

Example on how to update the target and is_task for all workflows that are SYSTEM or VALIDATE:

UPDATE workflow
SET is_task = TRUE
WHERE target IN ('SYSTEM', 'VALIDATE');

This will update the target for all workflows that are SYSTEM or VALIDATE and set the is_task column to TRUE.

This is a breaking change, so you will need to test your workflows after making this change to ensure that they are working as expected.