Forks and joins are control points in an integration that
let you specify the behaviour of a task (also known as the task's execution strategy) based on the
task's incoming and outgoing conditions.
If you have enabled the canvas view, you can
configure the fork and join execution policies directly in the task configuration pane.
Fork
A fork is a control point for the outgoingedges of a task. It lets you specify the
execution strategy for the immediate next tasks. You can click on a fork to open the Fork configuration pane and configure any one of the following
execution strategies for a task:
Run all match: Runs all the immediate next tasks whose edge conditions
evaluate to true.
Run first match: Runs the immediate next task (in no specific order) whose
edge conditions evaluate to true. For example, if there are three immediate next tasks
and the edge conditions for any task (in no specific order) evaluate to true, then that
task is run.
The following image shows how to configure fork for a task in the old canvas view:
If you have enabled the canvas view, you can
configure the fork execution policy directly in the task configuration pane.
Join
A join is a control point for the incoming edges of a task. It lets you
specify the execution strategy for the current task. When there are multiple incoming edges
for a task, you can specify the conditions for which the task runs. You can click on a join to open the Join configuration pane and configure any one of the following
execution strategies for a task:
When all tasks and conditions succeed: Runs the task when all tasks and
conditions are met, that is, all the upstream dependent tasks run successfully and the edge conditions of all tasks evaluate to true. If any of the upstream tasks or edge conditions fail, the task is not run.
When all succeed: Runs the task if all its prerequisites are
met, that is, all the upstream dependent tasks run successfully. If any of the
upstream tasks fail, the task is not run.
When any succeed: Runs the task if any one of its prerequisites
are met, that is, at least one of the dependent tasks runs successfully. If all of the
previous tasks fail, the task is not run.
The following image shows how to configure edge for a task in the old canvas view:
If you have enabled the canvas view, you can
configure the edge execution strategy directly in the task configuration pane.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-26 UTC."],[[["\u003cp\u003eForks and joins are control points in an integration that determine a task's execution based on its incoming and outgoing conditions.\u003c/p\u003e\n"],["\u003cp\u003eA fork manages the execution strategy for the immediate next tasks based on the outgoing edges.\u003c/p\u003e\n"],["\u003cp\u003eA join manages the execution strategy for the current task based on the incoming edges.\u003c/p\u003e\n"],["\u003cp\u003eYou can configure fork and join execution policies directly in the task configuration pane if the new canvas view is enabled.\u003c/p\u003e\n"],["\u003cp\u003eExecution strategies for tasks include running all matches, running the first match, running when all tasks and conditions succeed, running when all succeed, or running when any succeed.\u003c/p\u003e\n"]]],[],null,["# Forks and joins\n\nSee the [supported connectors](/integration-connectors/docs/connector-reference-overview) for Application Integration.\n\nForks and joins\n===============\n\nForks and joins are control points in an integration that\nlet you specify the behaviour of a task (also known as the task's execution strategy) based on the\ntask's incoming and outgoing conditions.\n\nIf you have enabled the [canvas view](/application-integration/docs/canvas-view), you can\nconfigure the fork and join execution policies directly in the task configuration pane.\n\nFork\n----\n\nA fork is a control point for the *outgoing* [edges](/application-integration/docs/edge-overview) of a task. It lets you specify the\nexecution strategy for the immediate next tasks. You can click on a fork to open the **Fork configuration pane** and configure any one of the following\nexecution strategies for a task:\n\n- **Run all match**: Runs all the immediate next tasks whose edge conditions evaluate to true.\n- **Run first match**: Runs the immediate next task (in no specific order) whose edge conditions evaluate to true. For example, if there are three immediate next tasks and the edge conditions for any task (in no specific order) evaluate to true, then that task is run.\n\nThe following image shows how to configure fork for a task in the old canvas view:\n\nIf you have enabled the [canvas view](/application-integration/docs/canvas-view), you can\nconfigure the fork execution policy directly in the task configuration pane.\n\nJoin\n----\n\nA join is a control point for the *incoming [edges](/application-integration/docs/edge-overview)* of a task. It lets you\nspecify the execution strategy for the current task. When there are multiple incoming edges\nfor a task, you can specify the conditions for which the task runs. You can click on a join to open the **Join configuration pane** and configure any one of the following\nexecution strategies for a task:\n\n- **When all tasks and conditions succeed**: Runs the task when all tasks and conditions are met, that is, all the upstream dependent tasks run successfully and the edge conditions of all tasks evaluate to true. If any of the upstream tasks or edge conditions fail, the task is not run.\n- **When all succeed**: Runs the task if all its prerequisites are met, that is, all the upstream dependent tasks run successfully. If any of the upstream tasks fail, the task is not run.\n- **When any succeed**: Runs the task if any one of its prerequisites are met, that is, at least one of the dependent tasks runs successfully. If all of the previous tasks fail, the task is not run.\n\nThe following image shows how to configure edge for a task in the old canvas view:\n\nIf you have enabled the [canvas view](/application-integration/docs/canvas-view), you can\nconfigure the edge execution strategy directly in the task configuration pane.\n\nQuotas and limits\n-----------------\n\nFor information about quotas and limits, see [Quotas and limits](/application-integration/docs/quotas).\n\nWhat's next\n-----------\n\n- Learn about [all tasks and triggers](/application-integration/docs/all-triggers-tasks).\n- Learn how to [test and publish an integration](/application-integration/docs/test-publish-integrations).\n\n- Learn about [error handling](/application-integration/docs/error-handling-strategy).\n- Learn about [integration execution logs](/application-integration/docs/introduction-logs)."]]